cxgb4vf: Check if rx checksum offload is enabled, while reading hardware calculated...
authorHariprasad Shenai <hariprasad@chelsio.com>
Wed, 7 May 2014 12:31:04 +0000 (18:01 +0530)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 May 2014 16:47:46 +0000 (12:47 -0400)
Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4vf/sge.c

index 9cfa4b4bb089d398a1b687a71d32f0856d15fa47..adebbf849cdbfab8c3f639a97ae80077aec84493 100644 (file)
@@ -1510,7 +1510,8 @@ int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp,
 {
        struct sk_buff *skb;
        const struct cpl_rx_pkt *pkt = (void *)rsp;
-       bool csum_ok = pkt->csum_calc && !pkt->err_vec;
+       bool csum_ok = pkt->csum_calc && !pkt->err_vec &&
+                      (rspq->netdev->features & NETIF_F_RXCSUM);
        struct sge_eth_rxq *rxq = container_of(rspq, struct sge_eth_rxq, rspq);
 
        /*
@@ -1538,8 +1539,8 @@ int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp,
        skb_record_rx_queue(skb, rspq->idx);
        rxq->stats.pkts++;
 
-       if (csum_ok && (rspq->netdev->features & NETIF_F_RXCSUM) &&
-           !pkt->err_vec && (be32_to_cpu(pkt->l2info) & (RXF_UDP|RXF_TCP))) {
+       if (csum_ok && !pkt->err_vec &&
+           (be32_to_cpu(pkt->l2info) & (RXF_UDP|RXF_TCP))) {
                if (!pkt->ip_frag)
                        skb->ip_summed = CHECKSUM_UNNECESSARY;
                else {