diff options
author | Hariprasad Shenai <hariprasad@chelsio.com> | 2014-05-07 08:31:04 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-05-12 12:47:46 -0400 |
commit | c3136f5540b62f7a0ada3cbbd7345889a4879f23 (patch) | |
tree | bcc258b6661912df8b75a6e6077114dfc7b4e41c | |
parent | cca2822d37f419280b8cca27a4a6220e47afb77f (diff) |
cxgb4vf: Check if rx checksum offload is enabled, while reading hardware calculated checksum
Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c index 9cfa4b4bb089..adebbf849cdb 100644 --- a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c +++ b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c | |||
@@ -1510,7 +1510,8 @@ int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp, | |||
1510 | { | 1510 | { |
1511 | struct sk_buff *skb; | 1511 | struct sk_buff *skb; |
1512 | const struct cpl_rx_pkt *pkt = (void *)rsp; | 1512 | const struct cpl_rx_pkt *pkt = (void *)rsp; |
1513 | bool csum_ok = pkt->csum_calc && !pkt->err_vec; | 1513 | bool csum_ok = pkt->csum_calc && !pkt->err_vec && |
1514 | (rspq->netdev->features & NETIF_F_RXCSUM); | ||
1514 | struct sge_eth_rxq *rxq = container_of(rspq, struct sge_eth_rxq, rspq); | 1515 | struct sge_eth_rxq *rxq = container_of(rspq, struct sge_eth_rxq, rspq); |
1515 | 1516 | ||
1516 | /* | 1517 | /* |
@@ -1538,8 +1539,8 @@ int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp, | |||
1538 | skb_record_rx_queue(skb, rspq->idx); | 1539 | skb_record_rx_queue(skb, rspq->idx); |
1539 | rxq->stats.pkts++; | 1540 | rxq->stats.pkts++; |
1540 | 1541 | ||
1541 | if (csum_ok && (rspq->netdev->features & NETIF_F_RXCSUM) && | 1542 | if (csum_ok && !pkt->err_vec && |
1542 | !pkt->err_vec && (be32_to_cpu(pkt->l2info) & (RXF_UDP|RXF_TCP))) { | 1543 | (be32_to_cpu(pkt->l2info) & (RXF_UDP|RXF_TCP))) { |
1543 | if (!pkt->ip_frag) | 1544 | if (!pkt->ip_frag) |
1544 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1545 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
1545 | else { | 1546 | else { |