diff options
| author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-09-02 16:07:41 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-09-02 22:06:22 -0400 |
| commit | bc8acf2c8c3e43fcc192762a9f964b3e9a17748b (patch) | |
| tree | e3a91392771a22390e59c24fcb7bad3045ce17d1 | |
| parent | 7162f6691e9d39d8d866574687cddb3f1ec65d72 (diff) | |
drivers/net: avoid some skb->ip_summed initializations
fresh skbs have ip_summed set to CHECKSUM_NONE (0)
We can avoid setting again skb->ip_summed to CHECKSUM_NONE in drivers.
Introduce skb_checksum_none_assert() helper so that we keep this
assertion documented in driver sources.
Change most occurrences of :
skb->ip_summed = CHECKSUM_NONE;
by :
skb_checksum_none_assert(skb);
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
56 files changed, 86 insertions, 67 deletions
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c index 4a4f6b81e32d..237d4ea5a416 100644 --- a/drivers/net/8139cp.c +++ b/drivers/net/8139cp.c | |||
| @@ -561,7 +561,7 @@ rx_status_loop: | |||
| 561 | if (cp_rx_csum_ok(status)) | 561 | if (cp_rx_csum_ok(status)) |
| 562 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 562 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 563 | else | 563 | else |
| 564 | skb->ip_summed = CHECKSUM_NONE; | 564 | skb_checksum_none_assert(skb); |
| 565 | 565 | ||
| 566 | skb_put(skb, len); | 566 | skb_put(skb, len); |
| 567 | 567 | ||
diff --git a/drivers/net/acenic.c b/drivers/net/acenic.c index b9a591604e5b..41d9911202d0 100644 --- a/drivers/net/acenic.c +++ b/drivers/net/acenic.c | |||
| @@ -2033,7 +2033,7 @@ static void ace_rx_int(struct net_device *dev, u32 rxretprd, u32 rxretcsm) | |||
| 2033 | skb->csum = htons(csum); | 2033 | skb->csum = htons(csum); |
| 2034 | skb->ip_summed = CHECKSUM_COMPLETE; | 2034 | skb->ip_summed = CHECKSUM_COMPLETE; |
| 2035 | } else { | 2035 | } else { |
| 2036 | skb->ip_summed = CHECKSUM_NONE; | 2036 | skb_checksum_none_assert(skb); |
| 2037 | } | 2037 | } |
| 2038 | 2038 | ||
| 2039 | /* send it up */ | 2039 | /* send it up */ |
diff --git a/drivers/net/atl1c/atl1c_main.c b/drivers/net/atl1c/atl1c_main.c index 61f1634ab3f8..553230eb365c 100644 --- a/drivers/net/atl1c/atl1c_main.c +++ b/drivers/net/atl1c/atl1c_main.c | |||
| @@ -1719,7 +1719,7 @@ static inline void atl1c_rx_checksum(struct atl1c_adapter *adapter, | |||
| 1719 | * cannot figure out if the packet is fragmented or not, | 1719 | * cannot figure out if the packet is fragmented or not, |
| 1720 | * so we tell the KERNEL CHECKSUM_NONE | 1720 | * so we tell the KERNEL CHECKSUM_NONE |
| 1721 | */ | 1721 | */ |
| 1722 | skb->ip_summed = CHECKSUM_NONE; | 1722 | skb_checksum_none_assert(skb); |
| 1723 | } | 1723 | } |
| 1724 | 1724 | ||
| 1725 | static int atl1c_alloc_rx_buffer(struct atl1c_adapter *adapter, const int ringid) | 1725 | static int atl1c_alloc_rx_buffer(struct atl1c_adapter *adapter, const int ringid) |
diff --git a/drivers/net/atl1e/atl1e_main.c b/drivers/net/atl1e/atl1e_main.c index 1ae44bb26317..56ace3fbe40d 100644 --- a/drivers/net/atl1e/atl1e_main.c +++ b/drivers/net/atl1e/atl1e_main.c | |||
| @@ -1331,7 +1331,7 @@ static inline void atl1e_rx_checksum(struct atl1e_adapter *adapter, | |||
| 1331 | u16 pkt_flags; | 1331 | u16 pkt_flags; |
| 1332 | u16 err_flags; | 1332 | u16 err_flags; |
| 1333 | 1333 | ||
| 1334 | skb->ip_summed = CHECKSUM_NONE; | 1334 | skb_checksum_none_assert(skb); |
| 1335 | pkt_flags = prrs->pkt_flag; | 1335 | pkt_flags = prrs->pkt_flag; |
| 1336 | err_flags = prrs->err_flag; | 1336 | err_flags = prrs->err_flag; |
| 1337 | if (((pkt_flags & RRS_IS_IPV4) || (pkt_flags & RRS_IS_IPV6)) && | 1337 | if (((pkt_flags & RRS_IS_IPV4) || (pkt_flags & RRS_IS_IPV6)) && |
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c index 5837b0184d4b..e1e0171d6e62 100644 --- a/drivers/net/atlx/atl1.c +++ b/drivers/net/atlx/atl1.c | |||
| @@ -1805,7 +1805,7 @@ static void atl1_rx_checksum(struct atl1_adapter *adapter, | |||
| 1805 | * the higher layers and let it be sorted out there. | 1805 | * the higher layers and let it be sorted out there. |
| 1806 | */ | 1806 | */ |
| 1807 | 1807 | ||
| 1808 | skb->ip_summed = CHECKSUM_NONE; | 1808 | skb_checksum_none_assert(skb); |
| 1809 | 1809 | ||
| 1810 | if (unlikely(rrd->pkt_flg & PACKET_FLAG_ERR)) { | 1810 | if (unlikely(rrd->pkt_flg & PACKET_FLAG_ERR)) { |
| 1811 | if (rrd->err_flg & (ERR_FLAG_CRC | ERR_FLAG_TRUNC | | 1811 | if (rrd->err_flg & (ERR_FLAG_CRC | ERR_FLAG_TRUNC | |
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 37617abc1647..7342308718a0 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
| @@ -818,7 +818,7 @@ static int b44_rx(struct b44 *bp, int budget) | |||
| 818 | copy_skb->data, len); | 818 | copy_skb->data, len); |
| 819 | skb = copy_skb; | 819 | skb = copy_skb; |
| 820 | } | 820 | } |
| 821 | skb->ip_summed = CHECKSUM_NONE; | 821 | skb_checksum_none_assert(skb); |
| 822 | skb->protocol = eth_type_trans(skb, bp->dev); | 822 | skb->protocol = eth_type_trans(skb, bp->dev); |
| 823 | netif_receive_skb(skb); | 823 | netif_receive_skb(skb); |
| 824 | received++; | 824 | received++; |
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index 9db10fec8235..dcee7a20c0b9 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
| @@ -1016,7 +1016,7 @@ static void be_rx_compl_process(struct be_adapter *adapter, | |||
| 1016 | skb_fill_rx_data(adapter, skb, rxcp, num_rcvd); | 1016 | skb_fill_rx_data(adapter, skb, rxcp, num_rcvd); |
| 1017 | 1017 | ||
| 1018 | if (do_pkt_csum(rxcp, adapter->rx_csum)) | 1018 | if (do_pkt_csum(rxcp, adapter->rx_csum)) |
| 1019 | skb->ip_summed = CHECKSUM_NONE; | 1019 | skb_checksum_none_assert(skb); |
| 1020 | else | 1020 | else |
| 1021 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1021 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 1022 | 1022 | ||
diff --git a/drivers/net/bna/bnad.c b/drivers/net/bna/bnad.c index 79c4c2441449..44adc7aefddc 100644 --- a/drivers/net/bna/bnad.c +++ b/drivers/net/bna/bnad.c | |||
| @@ -510,7 +510,7 @@ bnad_poll_cq(struct bnad *bnad, struct bna_ccb *ccb, int budget) | |||
| 510 | (flags & BNA_CQ_EF_L4_CKSUM_OK))) | 510 | (flags & BNA_CQ_EF_L4_CKSUM_OK))) |
| 511 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 511 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 512 | else | 512 | else |
| 513 | skb->ip_summed = CHECKSUM_NONE; | 513 | skb_checksum_none_assert(skb); |
| 514 | 514 | ||
| 515 | rcb->rxq->rx_packets++; | 515 | rcb->rxq->rx_packets++; |
| 516 | rcb->rxq->rx_bytes += skb->len; | 516 | rcb->rxq->rx_bytes += skb->len; |
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index a0e02aa42214..4ff76e38e788 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
| @@ -3218,7 +3218,7 @@ bnx2_rx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget) | |||
| 3218 | 3218 | ||
| 3219 | } | 3219 | } |
| 3220 | 3220 | ||
| 3221 | skb->ip_summed = CHECKSUM_NONE; | 3221 | skb_checksum_none_assert(skb); |
| 3222 | if (bp->rx_csum && | 3222 | if (bp->rx_csum && |
| 3223 | (status & (L2_FHDR_STATUS_TCP_SEGMENT | | 3223 | (status & (L2_FHDR_STATUS_TCP_SEGMENT | |
| 3224 | L2_FHDR_STATUS_UDP_DATAGRAM))) { | 3224 | L2_FHDR_STATUS_UDP_DATAGRAM))) { |
diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c index da96d1a18c20..0e4caf411905 100644 --- a/drivers/net/bnx2x/bnx2x_cmn.c +++ b/drivers/net/bnx2x/bnx2x_cmn.c | |||
| @@ -623,7 +623,7 @@ reuse_rx: | |||
| 623 | /* Set Toeplitz hash for a none-LRO skb */ | 623 | /* Set Toeplitz hash for a none-LRO skb */ |
| 624 | bnx2x_set_skb_rxhash(bp, cqe, skb); | 624 | bnx2x_set_skb_rxhash(bp, cqe, skb); |
| 625 | 625 | ||
| 626 | skb->ip_summed = CHECKSUM_NONE; | 626 | skb_checksum_none_assert(skb); |
| 627 | if (bp->rx_csum) { | 627 | if (bp->rx_csum) { |
| 628 | if (likely(BNX2X_RX_CSUM_OK(cqe))) | 628 | if (likely(BNX2X_RX_CSUM_OK(cqe))) |
| 629 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 629 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
diff --git a/drivers/net/cassini.c b/drivers/net/cassini.c index 28c88eeec757..32aaadc4734f 100644 --- a/drivers/net/cassini.c +++ b/drivers/net/cassini.c | |||
| @@ -2149,7 +2149,7 @@ end_copy_pkt: | |||
| 2149 | skb->csum = csum_unfold(~csum); | 2149 | skb->csum = csum_unfold(~csum); |
| 2150 | skb->ip_summed = CHECKSUM_COMPLETE; | 2150 | skb->ip_summed = CHECKSUM_COMPLETE; |
| 2151 | } else | 2151 | } else |
| 2152 | skb->ip_summed = CHECKSUM_NONE; | 2152 | skb_checksum_none_assert(skb); |
| 2153 | return len; | 2153 | return len; |
| 2154 | } | 2154 | } |
| 2155 | 2155 | ||
diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c index f01cfdb995de..1950b9a20ecd 100644 --- a/drivers/net/chelsio/sge.c +++ b/drivers/net/chelsio/sge.c | |||
| @@ -1388,7 +1388,7 @@ static void sge_rx(struct sge *sge, struct freelQ *fl, unsigned int len) | |||
| 1388 | ++st->rx_cso_good; | 1388 | ++st->rx_cso_good; |
| 1389 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1389 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 1390 | } else | 1390 | } else |
| 1391 | skb->ip_summed = CHECKSUM_NONE; | 1391 | skb_checksum_none_assert(skb); |
| 1392 | 1392 | ||
| 1393 | if (unlikely(adapter->vlan_grp && p->vlan_valid)) { | 1393 | if (unlikely(adapter->vlan_grp && p->vlan_valid)) { |
| 1394 | st->vlan_xtract++; | 1394 | st->vlan_xtract++; |
diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c index 5a5af1ca7541..fec939f8f65f 100644 --- a/drivers/net/cpmac.c +++ b/drivers/net/cpmac.c | |||
| @@ -391,7 +391,7 @@ static struct sk_buff *cpmac_rx_one(struct cpmac_priv *priv, | |||
| 391 | if (likely(skb)) { | 391 | if (likely(skb)) { |
| 392 | skb_put(desc->skb, desc->datalen); | 392 | skb_put(desc->skb, desc->datalen); |
| 393 | desc->skb->protocol = eth_type_trans(desc->skb, priv->dev); | 393 | desc->skb->protocol = eth_type_trans(desc->skb, priv->dev); |
| 394 | desc->skb->ip_summed = CHECKSUM_NONE; | 394 | skb_checksum_none_assert(desc->skb); |
| 395 | priv->dev->stats.rx_packets++; | 395 | priv->dev->stats.rx_packets++; |
| 396 | priv->dev->stats.rx_bytes += desc->datalen; | 396 | priv->dev->stats.rx_bytes += desc->datalen; |
| 397 | result = desc->skb; | 397 | result = desc->skb; |
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index 8ff96c6f6de5..c5a142bea5e9 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c | |||
| @@ -2022,7 +2022,7 @@ static void rx_eth(struct adapter *adap, struct sge_rspq *rq, | |||
| 2022 | qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++; | 2022 | qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++; |
| 2023 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 2023 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 2024 | } else | 2024 | } else |
| 2025 | skb->ip_summed = CHECKSUM_NONE; | 2025 | skb_checksum_none_assert(skb); |
| 2026 | skb_record_rx_queue(skb, qs - &adap->sge.qs[0]); | 2026 | skb_record_rx_queue(skb, qs - &adap->sge.qs[0]); |
| 2027 | 2027 | ||
| 2028 | if (unlikely(p->vlan_valid)) { | 2028 | if (unlikely(p->vlan_valid)) { |
diff --git a/drivers/net/cxgb4/sge.c b/drivers/net/cxgb4/sge.c index 6ddb3bb0ce67..9967f3debce7 100644 --- a/drivers/net/cxgb4/sge.c +++ b/drivers/net/cxgb4/sge.c | |||
| @@ -1605,7 +1605,7 @@ int t4_ethrx_handler(struct sge_rspq *q, const __be64 *rsp, | |||
| 1605 | rxq->stats.rx_cso++; | 1605 | rxq->stats.rx_cso++; |
| 1606 | } | 1606 | } |
| 1607 | } else | 1607 | } else |
| 1608 | skb->ip_summed = CHECKSUM_NONE; | 1608 | skb_checksum_none_assert(skb); |
| 1609 | 1609 | ||
| 1610 | if (unlikely(pkt->vlan_ex)) { | 1610 | if (unlikely(pkt->vlan_ex)) { |
| 1611 | struct vlan_group *grp = pi->vlan_grp; | 1611 | struct vlan_group *grp = pi->vlan_grp; |
diff --git a/drivers/net/cxgb4vf/sge.c b/drivers/net/cxgb4vf/sge.c index e00fd9c36e8b..f10864ddafbe 100644 --- a/drivers/net/cxgb4vf/sge.c +++ b/drivers/net/cxgb4vf/sge.c | |||
| @@ -1534,7 +1534,7 @@ int t4vf_ethrx_handler(struct sge_rspq *rspq, const __be64 *rsp, | |||
| 1534 | } | 1534 | } |
| 1535 | rxq->stats.rx_cso++; | 1535 | rxq->stats.rx_cso++; |
| 1536 | } else | 1536 | } else |
| 1537 | skb->ip_summed = CHECKSUM_NONE; | 1537 | skb_checksum_none_assert(skb); |
| 1538 | 1538 | ||
| 1539 | if (unlikely(pkt->vlan_ex)) { | 1539 | if (unlikely(pkt->vlan_ex)) { |
| 1540 | struct vlan_group *grp = pi->vlan_grp; | 1540 | struct vlan_group *grp = pi->vlan_grp; |
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c index 4fd6b2b4554b..9f6aeefa06bf 100644 --- a/drivers/net/dm9000.c +++ b/drivers/net/dm9000.c | |||
| @@ -1056,7 +1056,7 @@ dm9000_rx(struct net_device *dev) | |||
| 1056 | if ((((rxbyte & 0x1c) << 3) & rxbyte) == 0) | 1056 | if ((((rxbyte & 0x1c) << 3) & rxbyte) == 0) |
| 1057 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1057 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 1058 | else | 1058 | else |
| 1059 | skb->ip_summed = CHECKSUM_NONE; | 1059 | skb_checksum_none_assert(skb); |
| 1060 | } | 1060 | } |
| 1061 | netif_rx(skb); | 1061 | netif_rx(skb); |
| 1062 | dev->stats.rx_packets++; | 1062 | dev->stats.rx_packets++; |
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 3e8ac4baae1b..17f5867b5d9b 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
| @@ -3552,7 +3552,8 @@ static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, | |||
| 3552 | struct e1000_hw *hw = &adapter->hw; | 3552 | struct e1000_hw *hw = &adapter->hw; |
| 3553 | u16 status = (u16)status_err; | 3553 | u16 status = (u16)status_err; |
| 3554 | u8 errors = (u8)(status_err >> 24); | 3554 | u8 errors = (u8)(status_err >> 24); |
| 3555 | skb->ip_summed = CHECKSUM_NONE; | 3555 | |
| 3556 | skb_checksum_none_assert(skb); | ||
| 3556 | 3557 | ||
| 3557 | /* 82543 or newer only */ | 3558 | /* 82543 or newer only */ |
| 3558 | if (unlikely(hw->mac_type < e1000_82543)) return; | 3559 | if (unlikely(hw->mac_type < e1000_82543)) return; |
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index 5f3eac6432cb..c9b66f4727e4 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c | |||
| @@ -475,7 +475,8 @@ static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, | |||
| 475 | { | 475 | { |
| 476 | u16 status = (u16)status_err; | 476 | u16 status = (u16)status_err; |
| 477 | u8 errors = (u8)(status_err >> 24); | 477 | u8 errors = (u8)(status_err >> 24); |
| 478 | skb->ip_summed = CHECKSUM_NONE; | 478 | |
| 479 | skb_checksum_none_assert(skb); | ||
| 479 | 480 | ||
| 480 | /* Ignore Checksum bit is set */ | 481 | /* Ignore Checksum bit is set */ |
| 481 | if (status & E1000_RXD_STAT_IXSM) | 482 | if (status & E1000_RXD_STAT_IXSM) |
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index e6048d6ab0ea..f30adbf86bb2 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
| @@ -2654,7 +2654,7 @@ static inline void gfar_rx_checksum(struct sk_buff *skb, struct rxfcb *fcb) | |||
| 2654 | if ((fcb->flags & RXFCB_CSUM_MASK) == (RXFCB_CIP | RXFCB_CTU)) | 2654 | if ((fcb->flags & RXFCB_CSUM_MASK) == (RXFCB_CIP | RXFCB_CTU)) |
| 2655 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 2655 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 2656 | else | 2656 | else |
| 2657 | skb->ip_summed = CHECKSUM_NONE; | 2657 | skb_checksum_none_assert(skb); |
| 2658 | } | 2658 | } |
| 2659 | 2659 | ||
| 2660 | 2660 | ||
diff --git a/drivers/net/greth.c b/drivers/net/greth.c index fbeaf70d1727..27d6960ce09e 100644 --- a/drivers/net/greth.c +++ b/drivers/net/greth.c | |||
| @@ -893,7 +893,7 @@ static int greth_rx_gbit(struct net_device *dev, int limit) | |||
| 893 | if (greth->flags & GRETH_FLAG_RX_CSUM && hw_checksummed(status)) | 893 | if (greth->flags & GRETH_FLAG_RX_CSUM && hw_checksummed(status)) |
| 894 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 894 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 895 | else | 895 | else |
| 896 | skb->ip_summed = CHECKSUM_NONE; | 896 | skb_checksum_none_assert(skb); |
| 897 | 897 | ||
| 898 | skb->protocol = eth_type_trans(skb, dev); | 898 | skb->protocol = eth_type_trans(skb, dev); |
| 899 | dev->stats.rx_packets++; | 899 | dev->stats.rx_packets++; |
diff --git a/drivers/net/ibmlana.c b/drivers/net/ibmlana.c index 294ccfb427cf..0037a696cd0a 100644 --- a/drivers/net/ibmlana.c +++ b/drivers/net/ibmlana.c | |||
| @@ -602,7 +602,7 @@ static void irqrx_handler(struct net_device *dev) | |||
| 602 | /* set up skb fields */ | 602 | /* set up skb fields */ |
| 603 | 603 | ||
| 604 | skb->protocol = eth_type_trans(skb, dev); | 604 | skb->protocol = eth_type_trans(skb, dev); |
| 605 | skb->ip_summed = CHECKSUM_NONE; | 605 | skb_checksum_none_assert(skb); |
| 606 | 606 | ||
| 607 | /* bookkeeping */ | 607 | /* bookkeeping */ |
| 608 | dev->stats.rx_packets++; | 608 | dev->stats.rx_packets++; |
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index d35cc38bf8b2..c4d861b557ca 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
| @@ -5455,7 +5455,7 @@ static void igb_receive_skb(struct igb_q_vector *q_vector, | |||
| 5455 | static inline void igb_rx_checksum_adv(struct igb_ring *ring, | 5455 | static inline void igb_rx_checksum_adv(struct igb_ring *ring, |
| 5456 | u32 status_err, struct sk_buff *skb) | 5456 | u32 status_err, struct sk_buff *skb) |
| 5457 | { | 5457 | { |
| 5458 | skb->ip_summed = CHECKSUM_NONE; | 5458 | skb_checksum_none_assert(skb); |
| 5459 | 5459 | ||
| 5460 | /* Ignore Checksum bit is set or checksum is disabled through ethtool */ | 5460 | /* Ignore Checksum bit is set or checksum is disabled through ethtool */ |
| 5461 | if (!(ring->flags & IGB_RING_FLAG_RX_CSUM) || | 5461 | if (!(ring->flags & IGB_RING_FLAG_RX_CSUM) || |
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c index c539f7c9c3e0..c7fab80d2490 100644 --- a/drivers/net/igbvf/netdev.c +++ b/drivers/net/igbvf/netdev.c | |||
| @@ -103,7 +103,7 @@ static void igbvf_receive_skb(struct igbvf_adapter *adapter, | |||
| 103 | static inline void igbvf_rx_checksum_adv(struct igbvf_adapter *adapter, | 103 | static inline void igbvf_rx_checksum_adv(struct igbvf_adapter *adapter, |
| 104 | u32 status_err, struct sk_buff *skb) | 104 | u32 status_err, struct sk_buff *skb) |
| 105 | { | 105 | { |
| 106 | skb->ip_summed = CHECKSUM_NONE; | 106 | skb_checksum_none_assert(skb); |
| 107 | 107 | ||
| 108 | /* Ignore Checksum bit is set or checksum is disabled through ethtool */ | 108 | /* Ignore Checksum bit is set or checksum is disabled through ethtool */ |
| 109 | if ((status_err & E1000_RXD_STAT_IXSM) || | 109 | if ((status_err & E1000_RXD_STAT_IXSM) || |
diff --git a/drivers/net/ipg.c b/drivers/net/ipg.c index 72e3d2da9e9f..dc0198092343 100644 --- a/drivers/net/ipg.c +++ b/drivers/net/ipg.c | |||
| @@ -1213,7 +1213,7 @@ static void ipg_nic_rx_with_start_and_end(struct net_device *dev, | |||
| 1213 | 1213 | ||
| 1214 | skb_put(skb, framelen); | 1214 | skb_put(skb, framelen); |
| 1215 | skb->protocol = eth_type_trans(skb, dev); | 1215 | skb->protocol = eth_type_trans(skb, dev); |
| 1216 | skb->ip_summed = CHECKSUM_NONE; | 1216 | skb_checksum_none_assert(skb); |
| 1217 | netif_rx(skb); | 1217 | netif_rx(skb); |
| 1218 | sp->rx_buff[entry] = NULL; | 1218 | sp->rx_buff[entry] = NULL; |
| 1219 | } | 1219 | } |
| @@ -1278,7 +1278,7 @@ static void ipg_nic_rx_with_end(struct net_device *dev, | |||
| 1278 | jumbo->skb->protocol = | 1278 | jumbo->skb->protocol = |
| 1279 | eth_type_trans(jumbo->skb, dev); | 1279 | eth_type_trans(jumbo->skb, dev); |
| 1280 | 1280 | ||
| 1281 | jumbo->skb->ip_summed = CHECKSUM_NONE; | 1281 | skb_checksum_none_assert(jumbo->skb); |
| 1282 | netif_rx(jumbo->skb); | 1282 | netif_rx(jumbo->skb); |
| 1283 | } | 1283 | } |
| 1284 | } | 1284 | } |
| @@ -1476,7 +1476,7 @@ static int ipg_nic_rx(struct net_device *dev) | |||
| 1476 | * IP/TCP/UDP frame was received. Let the | 1476 | * IP/TCP/UDP frame was received. Let the |
| 1477 | * upper layer decide. | 1477 | * upper layer decide. |
| 1478 | */ | 1478 | */ |
| 1479 | skb->ip_summed = CHECKSUM_NONE; | 1479 | skb_checksum_none_assert(skb); |
| 1480 | 1480 | ||
| 1481 | /* Hand off frame for higher layer processing. | 1481 | /* Hand off frame for higher layer processing. |
| 1482 | * The function netif_rx() releases the sk_buff | 1482 | * The function netif_rx() releases the sk_buff |
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c index ba1de5973fb2..8df645e78f2e 100644 --- a/drivers/net/iseries_veth.c +++ b/drivers/net/iseries_veth.c | |||
| @@ -1524,7 +1524,7 @@ static void veth_receive(struct veth_lpar_connection *cnx, | |||
| 1524 | 1524 | ||
| 1525 | skb_put(skb, length); | 1525 | skb_put(skb, length); |
| 1526 | skb->protocol = eth_type_trans(skb, dev); | 1526 | skb->protocol = eth_type_trans(skb, dev); |
| 1527 | skb->ip_summed = CHECKSUM_NONE; | 1527 | skb_checksum_none_assert(skb); |
| 1528 | netif_rx(skb); /* send it up */ | 1528 | netif_rx(skb); /* send it up */ |
| 1529 | dev->stats.rx_packets++; | 1529 | dev->stats.rx_packets++; |
| 1530 | dev->stats.rx_bytes += length; | 1530 | dev->stats.rx_bytes += length; |
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c index 33c4ffe6e103..c2f6e71e1181 100644 --- a/drivers/net/ixgb/ixgb_main.c +++ b/drivers/net/ixgb/ixgb_main.c | |||
| @@ -1905,7 +1905,7 @@ ixgb_rx_checksum(struct ixgb_adapter *adapter, | |||
| 1905 | */ | 1905 | */ |
| 1906 | if ((rx_desc->status & IXGB_RX_DESC_STATUS_IXSM) || | 1906 | if ((rx_desc->status & IXGB_RX_DESC_STATUS_IXSM) || |
| 1907 | (!(rx_desc->status & IXGB_RX_DESC_STATUS_TCPCS))) { | 1907 | (!(rx_desc->status & IXGB_RX_DESC_STATUS_TCPCS))) { |
| 1908 | skb->ip_summed = CHECKSUM_NONE; | 1908 | skb_checksum_none_assert(skb); |
| 1909 | return; | 1909 | return; |
| 1910 | } | 1910 | } |
| 1911 | 1911 | ||
| @@ -1913,7 +1913,7 @@ ixgb_rx_checksum(struct ixgb_adapter *adapter, | |||
| 1913 | /* now look at the TCP checksum error bit */ | 1913 | /* now look at the TCP checksum error bit */ |
| 1914 | if (rx_desc->errors & IXGB_RX_DESC_ERRORS_TCPE) { | 1914 | if (rx_desc->errors & IXGB_RX_DESC_ERRORS_TCPE) { |
| 1915 | /* let the stack verify checksum errors */ | 1915 | /* let the stack verify checksum errors */ |
| 1916 | skb->ip_summed = CHECKSUM_NONE; | 1916 | skb_checksum_none_assert(skb); |
| 1917 | adapter->hw_csum_rx_error++; | 1917 | adapter->hw_csum_rx_error++; |
| 1918 | } else { | 1918 | } else { |
| 1919 | /* TCP checksum is good */ | 1919 | /* TCP checksum is good */ |
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.c b/drivers/net/ixgbe/ixgbe_fcoe.c index 86fa07cb061d..2f1de8b90f9e 100644 --- a/drivers/net/ixgbe/ixgbe_fcoe.c +++ b/drivers/net/ixgbe/ixgbe_fcoe.c | |||
| @@ -304,12 +304,13 @@ int ixgbe_fcoe_ddp(struct ixgbe_adapter *adapter, | |||
| 304 | if (!ixgbe_rx_is_fcoe(rx_desc)) | 304 | if (!ixgbe_rx_is_fcoe(rx_desc)) |
| 305 | goto ddp_out; | 305 | goto ddp_out; |
| 306 | 306 | ||
| 307 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
| 308 | sterr = le32_to_cpu(rx_desc->wb.upper.status_error); | 307 | sterr = le32_to_cpu(rx_desc->wb.upper.status_error); |
| 309 | fcerr = (sterr & IXGBE_RXDADV_ERR_FCERR); | 308 | fcerr = (sterr & IXGBE_RXDADV_ERR_FCERR); |
| 310 | fceofe = (sterr & IXGBE_RXDADV_ERR_FCEOFE); | 309 | fceofe = (sterr & IXGBE_RXDADV_ERR_FCEOFE); |
| 311 | if (fcerr == IXGBE_FCERR_BADCRC) | 310 | if (fcerr == IXGBE_FCERR_BADCRC) |
| 312 | skb->ip_summed = CHECKSUM_NONE; | 311 | skb_checksum_none_assert(skb); |
| 312 | else | ||
| 313 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
| 313 | 314 | ||
| 314 | if (eth_hdr(skb)->h_proto == htons(ETH_P_8021Q)) | 315 | if (eth_hdr(skb)->h_proto == htons(ETH_P_8021Q)) |
| 315 | fh = (struct fc_frame_header *)(skb->data + | 316 | fh = (struct fc_frame_header *)(skb->data + |
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 5e4dc1b0a1bd..3aafe94741ba 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
| @@ -980,7 +980,7 @@ static inline void ixgbe_rx_checksum(struct ixgbe_adapter *adapter, | |||
| 980 | { | 980 | { |
| 981 | u32 status_err = le32_to_cpu(rx_desc->wb.upper.status_error); | 981 | u32 status_err = le32_to_cpu(rx_desc->wb.upper.status_error); |
| 982 | 982 | ||
| 983 | skb->ip_summed = CHECKSUM_NONE; | 983 | skb_checksum_none_assert(skb); |
| 984 | 984 | ||
| 985 | /* Rx csum disabled */ | 985 | /* Rx csum disabled */ |
| 986 | if (!(adapter->flags & IXGBE_FLAG_RX_CSUM_ENABLED)) | 986 | if (!(adapter->flags & IXGBE_FLAG_RX_CSUM_ENABLED)) |
diff --git a/drivers/net/ixgbevf/ixgbevf_main.c b/drivers/net/ixgbevf/ixgbevf_main.c index 5d3c869283a5..bdbd26c60ae6 100644 --- a/drivers/net/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ixgbevf/ixgbevf_main.c | |||
| @@ -356,7 +356,7 @@ static void ixgbevf_receive_skb(struct ixgbevf_q_vector *q_vector, | |||
| 356 | static inline void ixgbevf_rx_checksum(struct ixgbevf_adapter *adapter, | 356 | static inline void ixgbevf_rx_checksum(struct ixgbevf_adapter *adapter, |
| 357 | u32 status_err, struct sk_buff *skb) | 357 | u32 status_err, struct sk_buff *skb) |
| 358 | { | 358 | { |
| 359 | skb->ip_summed = CHECKSUM_NONE; | 359 | skb_checksum_none_assert(skb); |
| 360 | 360 | ||
| 361 | /* Rx csum disabled */ | 361 | /* Rx csum disabled */ |
| 362 | if (!(adapter->flags & IXGBE_FLAG_RX_CSUM_ENABLED)) | 362 | if (!(adapter->flags & IXGBE_FLAG_RX_CSUM_ENABLED)) |
diff --git a/drivers/net/jme.c b/drivers/net/jme.c index 99f24f5cac53..1fcd533b1a61 100644 --- a/drivers/net/jme.c +++ b/drivers/net/jme.c | |||
| @@ -936,7 +936,7 @@ jme_alloc_and_feed_skb(struct jme_adapter *jme, int idx) | |||
| 936 | if (jme_rxsum_ok(jme, le16_to_cpu(rxdesc->descwb.flags))) | 936 | if (jme_rxsum_ok(jme, le16_to_cpu(rxdesc->descwb.flags))) |
| 937 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 937 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 938 | else | 938 | else |
| 939 | skb->ip_summed = CHECKSUM_NONE; | 939 | skb_checksum_none_assert(skb); |
| 940 | 940 | ||
| 941 | if (rxdesc->descwb.flags & cpu_to_le16(RXWBFLAG_TAGON)) { | 941 | if (rxdesc->descwb.flags & cpu_to_le16(RXWBFLAG_TAGON)) { |
| 942 | if (jme->vlgrp) { | 942 | if (jme->vlgrp) { |
diff --git a/drivers/net/ll_temac_main.c b/drivers/net/ll_temac_main.c index bdf2149e5296..874ee01e8d9d 100644 --- a/drivers/net/ll_temac_main.c +++ b/drivers/net/ll_temac_main.c | |||
| @@ -760,7 +760,7 @@ static void ll_temac_recv(struct net_device *ndev) | |||
| 760 | skb_put(skb, length); | 760 | skb_put(skb, length); |
| 761 | skb->dev = ndev; | 761 | skb->dev = ndev; |
| 762 | skb->protocol = eth_type_trans(skb, ndev); | 762 | skb->protocol = eth_type_trans(skb, ndev); |
| 763 | skb->ip_summed = CHECKSUM_NONE; | 763 | skb_checksum_none_assert(skb); |
| 764 | 764 | ||
| 765 | /* if we're doing rx csum offload, set it up */ | 765 | /* if we're doing rx csum offload, set it up */ |
| 766 | if (((lp->temac_features & TEMAC_FEATURE_RX_CSUM) != 0) && | 766 | if (((lp->temac_features & TEMAC_FEATURE_RX_CSUM) != 0) && |
diff --git a/drivers/net/macb.c b/drivers/net/macb.c index ff2f158ab0b9..4297f6e8c4bc 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c | |||
| @@ -407,7 +407,7 @@ static int macb_rx_frame(struct macb *bp, unsigned int first_frag, | |||
| 407 | } | 407 | } |
| 408 | 408 | ||
| 409 | skb_reserve(skb, RX_OFFSET); | 409 | skb_reserve(skb, RX_OFFSET); |
| 410 | skb->ip_summed = CHECKSUM_NONE; | 410 | skb_checksum_none_assert(skb); |
| 411 | skb_put(skb, len); | 411 | skb_put(skb, len); |
| 412 | 412 | ||
| 413 | for (frag = first_frag; ; frag = NEXT_RX(frag)) { | 413 | for (frag = first_frag; ; frag = NEXT_RX(frag)) { |
diff --git a/drivers/net/niu.c b/drivers/net/niu.c index b4cc61f1fc59..1f89f472cbfb 100644 --- a/drivers/net/niu.c +++ b/drivers/net/niu.c | |||
| @@ -3484,7 +3484,7 @@ static int niu_process_rx_pkt(struct napi_struct *napi, struct niu *np, | |||
| 3484 | RCR_ENTRY_ERROR))) | 3484 | RCR_ENTRY_ERROR))) |
| 3485 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 3485 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 3486 | else | 3486 | else |
| 3487 | skb->ip_summed = CHECKSUM_NONE; | 3487 | skb_checksum_none_assert(skb); |
| 3488 | } else if (!(val & RCR_ENTRY_MULTI)) | 3488 | } else if (!(val & RCR_ENTRY_MULTI)) |
| 3489 | append_size = len - skb->len; | 3489 | append_size = len - skb->len; |
| 3490 | 3490 | ||
diff --git a/drivers/net/ns83820.c b/drivers/net/ns83820.c index 447c2c43769a..4475ca97f031 100644 --- a/drivers/net/ns83820.c +++ b/drivers/net/ns83820.c | |||
| @@ -923,7 +923,7 @@ static void rx_irq(struct net_device *ndev) | |||
| 923 | if ((extsts & 0x002a0000) && !(extsts & 0x00540000)) { | 923 | if ((extsts & 0x002a0000) && !(extsts & 0x00540000)) { |
| 924 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 924 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 925 | } else { | 925 | } else { |
| 926 | skb->ip_summed = CHECKSUM_NONE; | 926 | skb_checksum_none_assert(skb); |
| 927 | } | 927 | } |
| 928 | skb->protocol = eth_type_trans(skb, ndev); | 928 | skb->protocol = eth_type_trans(skb, ndev); |
| 929 | #ifdef NS83820_VLAN_ACCEL_SUPPORT | 929 | #ifdef NS83820_VLAN_ACCEL_SUPPORT |
diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c index 8ab6ae0a6107..828e97cacdbf 100644 --- a/drivers/net/pasemi_mac.c +++ b/drivers/net/pasemi_mac.c | |||
| @@ -808,7 +808,7 @@ static int pasemi_mac_clean_rx(struct pasemi_mac_rxring *rx, | |||
| 808 | skb->csum = (macrx & XCT_MACRX_CSUM_M) >> | 808 | skb->csum = (macrx & XCT_MACRX_CSUM_M) >> |
| 809 | XCT_MACRX_CSUM_S; | 809 | XCT_MACRX_CSUM_S; |
| 810 | } else | 810 | } else |
| 811 | skb->ip_summed = CHECKSUM_NONE; | 811 | skb_checksum_none_assert(skb); |
| 812 | 812 | ||
| 813 | packets++; | 813 | packets++; |
| 814 | tot_bytes += len; | 814 | tot_bytes += len; |
diff --git a/drivers/net/ps3_gelic_net.c b/drivers/net/ps3_gelic_net.c index 87d6b8f36304..5526ab4895e6 100644 --- a/drivers/net/ps3_gelic_net.c +++ b/drivers/net/ps3_gelic_net.c | |||
| @@ -956,9 +956,9 @@ static void gelic_net_pass_skb_up(struct gelic_descr *descr, | |||
| 956 | (!(data_error & GELIC_DESCR_DATA_ERROR_CHK_MASK))) | 956 | (!(data_error & GELIC_DESCR_DATA_ERROR_CHK_MASK))) |
| 957 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 957 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 958 | else | 958 | else |
| 959 | skb->ip_summed = CHECKSUM_NONE; | 959 | skb_checksum_none_assert(skb); |
| 960 | } else | 960 | } else |
| 961 | skb->ip_summed = CHECKSUM_NONE; | 961 | skb_checksum_none_assert(skb); |
| 962 | 962 | ||
| 963 | /* update netdevice statistics */ | 963 | /* update netdevice statistics */ |
| 964 | netdev->stats.rx_packets++; | 964 | netdev->stats.rx_packets++; |
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c index 6168a130f33f..7496ed2c34ab 100644 --- a/drivers/net/qla3xxx.c +++ b/drivers/net/qla3xxx.c | |||
| @@ -2029,7 +2029,7 @@ static void ql_process_mac_rx_intr(struct ql3_adapter *qdev, | |||
| 2029 | dma_unmap_len(lrg_buf_cb2, maplen), | 2029 | dma_unmap_len(lrg_buf_cb2, maplen), |
| 2030 | PCI_DMA_FROMDEVICE); | 2030 | PCI_DMA_FROMDEVICE); |
| 2031 | prefetch(skb->data); | 2031 | prefetch(skb->data); |
| 2032 | skb->ip_summed = CHECKSUM_NONE; | 2032 | skb_checksum_none_assert(skb); |
| 2033 | skb->protocol = eth_type_trans(skb, qdev->ndev); | 2033 | skb->protocol = eth_type_trans(skb, qdev->ndev); |
| 2034 | 2034 | ||
| 2035 | netif_receive_skb(skb); | 2035 | netif_receive_skb(skb); |
| @@ -2076,7 +2076,7 @@ static void ql_process_macip_rx_intr(struct ql3_adapter *qdev, | |||
| 2076 | PCI_DMA_FROMDEVICE); | 2076 | PCI_DMA_FROMDEVICE); |
| 2077 | prefetch(skb2->data); | 2077 | prefetch(skb2->data); |
| 2078 | 2078 | ||
| 2079 | skb2->ip_summed = CHECKSUM_NONE; | 2079 | skb_checksum_none_assert(skb2); |
| 2080 | if (qdev->device_id == QL3022_DEVICE_ID) { | 2080 | if (qdev->device_id == QL3022_DEVICE_ID) { |
| 2081 | /* | 2081 | /* |
| 2082 | * Copy the ethhdr from first buffer to second. This | 2082 | * Copy the ethhdr from first buffer to second. This |
diff --git a/drivers/net/qlcnic/qlcnic_init.c b/drivers/net/qlcnic/qlcnic_init.c index 8e47d7aea562..26a7d6bca5c7 100644 --- a/drivers/net/qlcnic/qlcnic_init.c +++ b/drivers/net/qlcnic/qlcnic_init.c | |||
| @@ -1369,7 +1369,7 @@ static struct sk_buff *qlcnic_process_rxbuf(struct qlcnic_adapter *adapter, | |||
| 1369 | adapter->stats.csummed++; | 1369 | adapter->stats.csummed++; |
| 1370 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1370 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 1371 | } else { | 1371 | } else { |
| 1372 | skb->ip_summed = CHECKSUM_NONE; | 1372 | skb_checksum_none_assert(skb); |
| 1373 | } | 1373 | } |
| 1374 | 1374 | ||
| 1375 | skb->dev = adapter->netdev; | 1375 | skb->dev = adapter->netdev; |
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c index 5a245211fc53..e2d0e108b9aa 100644 --- a/drivers/net/qlge/qlge_main.c +++ b/drivers/net/qlge/qlge_main.c | |||
| @@ -1566,7 +1566,7 @@ static void ql_process_mac_rx_page(struct ql_adapter *qdev, | |||
| 1566 | rx_ring->rx_packets++; | 1566 | rx_ring->rx_packets++; |
| 1567 | rx_ring->rx_bytes += skb->len; | 1567 | rx_ring->rx_bytes += skb->len; |
| 1568 | skb->protocol = eth_type_trans(skb, ndev); | 1568 | skb->protocol = eth_type_trans(skb, ndev); |
| 1569 | skb->ip_summed = CHECKSUM_NONE; | 1569 | skb_checksum_none_assert(skb); |
| 1570 | 1570 | ||
| 1571 | if (qdev->rx_csum && | 1571 | if (qdev->rx_csum && |
| 1572 | !(ib_mac_rsp->flags1 & IB_MAC_CSUM_ERR_MASK)) { | 1572 | !(ib_mac_rsp->flags1 & IB_MAC_CSUM_ERR_MASK)) { |
| @@ -1676,7 +1676,7 @@ static void ql_process_mac_rx_skb(struct ql_adapter *qdev, | |||
| 1676 | rx_ring->rx_packets++; | 1676 | rx_ring->rx_packets++; |
| 1677 | rx_ring->rx_bytes += skb->len; | 1677 | rx_ring->rx_bytes += skb->len; |
| 1678 | skb->protocol = eth_type_trans(skb, ndev); | 1678 | skb->protocol = eth_type_trans(skb, ndev); |
| 1679 | skb->ip_summed = CHECKSUM_NONE; | 1679 | skb_checksum_none_assert(skb); |
| 1680 | 1680 | ||
| 1681 | /* If rx checksum is on, and there are no | 1681 | /* If rx checksum is on, and there are no |
| 1682 | * csum or frame errors. | 1682 | * csum or frame errors. |
| @@ -1996,7 +1996,7 @@ static void ql_process_mac_split_rx_intr(struct ql_adapter *qdev, | |||
| 1996 | } | 1996 | } |
| 1997 | 1997 | ||
| 1998 | skb->protocol = eth_type_trans(skb, ndev); | 1998 | skb->protocol = eth_type_trans(skb, ndev); |
| 1999 | skb->ip_summed = CHECKSUM_NONE; | 1999 | skb_checksum_none_assert(skb); |
| 2000 | 2000 | ||
| 2001 | /* If rx checksum is on, and there are no | 2001 | /* If rx checksum is on, and there are no |
| 2002 | * csum or frame errors. | 2002 | * csum or frame errors. |
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index 078bbf4e6f19..07b3fb5175e5 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
| @@ -4460,7 +4460,7 @@ static inline void rtl8169_rx_csum(struct sk_buff *skb, struct RxDesc *desc) | |||
| 4460 | ((status == RxProtoIP) && !(opts1 & IPFail))) | 4460 | ((status == RxProtoIP) && !(opts1 & IPFail))) |
| 4461 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 4461 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 4462 | else | 4462 | else |
| 4463 | skb->ip_summed = CHECKSUM_NONE; | 4463 | skb_checksum_none_assert(skb); |
| 4464 | } | 4464 | } |
| 4465 | 4465 | ||
| 4466 | static inline bool rtl8169_try_rx_copy(struct sk_buff **sk_buff, | 4466 | static inline bool rtl8169_try_rx_copy(struct sk_buff **sk_buff, |
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index 7061fc8e99c7..c70ad515383a 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
| @@ -7603,10 +7603,10 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp) | |||
| 7603 | * Packet with erroneous checksum, let the | 7603 | * Packet with erroneous checksum, let the |
| 7604 | * upper layers deal with it. | 7604 | * upper layers deal with it. |
| 7605 | */ | 7605 | */ |
| 7606 | skb->ip_summed = CHECKSUM_NONE; | 7606 | skb_checksum_none_assert(skb); |
| 7607 | } | 7607 | } |
| 7608 | } else | 7608 | } else |
| 7609 | skb->ip_summed = CHECKSUM_NONE; | 7609 | skb_checksum_none_assert(skb); |
| 7610 | 7610 | ||
| 7611 | swstats->mem_freed += skb->truesize; | 7611 | swstats->mem_freed += skb->truesize; |
| 7612 | send_up: | 7612 | send_up: |
diff --git a/drivers/net/sb1250-mac.c b/drivers/net/sb1250-mac.c index 8e6bd45b9f31..d8249d7653c6 100644 --- a/drivers/net/sb1250-mac.c +++ b/drivers/net/sb1250-mac.c | |||
| @@ -1170,7 +1170,7 @@ again: | |||
| 1170 | sb->ip_summed = CHECKSUM_UNNECESSARY; | 1170 | sb->ip_summed = CHECKSUM_UNNECESSARY; |
| 1171 | /* don't need to set sb->csum */ | 1171 | /* don't need to set sb->csum */ |
| 1172 | } else { | 1172 | } else { |
| 1173 | sb->ip_summed = CHECKSUM_NONE; | 1173 | skb_checksum_none_assert(sb); |
| 1174 | } | 1174 | } |
| 1175 | } | 1175 | } |
| 1176 | prefetch(sb->data); | 1176 | prefetch(sb->data); |
diff --git a/drivers/net/sfc/rx.c b/drivers/net/sfc/rx.c index 799c461ce7b8..acb372e841b2 100644 --- a/drivers/net/sfc/rx.c +++ b/drivers/net/sfc/rx.c | |||
| @@ -615,7 +615,7 @@ void __efx_rx_packet(struct efx_channel *channel, | |||
| 615 | EFX_BUG_ON_PARANOID(!skb); | 615 | EFX_BUG_ON_PARANOID(!skb); |
| 616 | 616 | ||
| 617 | /* Set the SKB flags */ | 617 | /* Set the SKB flags */ |
| 618 | skb->ip_summed = CHECKSUM_NONE; | 618 | skb_checksum_none_assert(skb); |
| 619 | 619 | ||
| 620 | /* Pass the packet up */ | 620 | /* Pass the packet up */ |
| 621 | netif_receive_skb(skb); | 621 | netif_receive_skb(skb); |
diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c index a812efc3632e..50259dfec583 100644 --- a/drivers/net/sh_eth.c +++ b/drivers/net/sh_eth.c | |||
| @@ -798,7 +798,7 @@ static int sh_eth_rx(struct net_device *ndev) | |||
| 798 | skb->dev = ndev; | 798 | skb->dev = ndev; |
| 799 | sh_eth_set_receive_align(skb); | 799 | sh_eth_set_receive_align(skb); |
| 800 | 800 | ||
| 801 | skb->ip_summed = CHECKSUM_NONE; | 801 | skb_checksum_none_assert(skb); |
| 802 | rxdesc->addr = virt_to_phys(PTR_ALIGN(skb->data, 4)); | 802 | rxdesc->addr = virt_to_phys(PTR_ALIGN(skb->data, 4)); |
| 803 | } | 803 | } |
| 804 | if (entry >= RX_RING_SIZE - 1) | 804 | if (entry >= RX_RING_SIZE - 1) |
diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c index 0909ae934ad0..13ddcd487200 100644 --- a/drivers/net/smsc911x.c +++ b/drivers/net/smsc911x.c | |||
| @@ -1048,7 +1048,7 @@ static int smsc911x_poll(struct napi_struct *napi, int budget) | |||
| 1048 | smsc911x_rx_readfifo(pdata, (unsigned int *)skb->head, | 1048 | smsc911x_rx_readfifo(pdata, (unsigned int *)skb->head, |
| 1049 | pktwords); | 1049 | pktwords); |
| 1050 | skb->protocol = eth_type_trans(skb, dev); | 1050 | skb->protocol = eth_type_trans(skb, dev); |
| 1051 | skb->ip_summed = CHECKSUM_NONE; | 1051 | skb_checksum_none_assert(skb); |
| 1052 | netif_receive_skb(skb); | 1052 | netif_receive_skb(skb); |
| 1053 | 1053 | ||
| 1054 | /* Update counters */ | 1054 | /* Update counters */ |
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index 1636a34d95dd..cb6bcca9d541 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c | |||
| @@ -1000,9 +1000,9 @@ spider_net_pass_skb_up(struct spider_net_descr *descr, | |||
| 1000 | !(data_error & SPIDER_NET_DATA_ERR_CKSUM_MASK)) | 1000 | !(data_error & SPIDER_NET_DATA_ERR_CKSUM_MASK)) |
| 1001 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1001 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 1002 | else | 1002 | else |
| 1003 | skb->ip_summed = CHECKSUM_NONE; | 1003 | skb_checksum_none_assert(skb); |
| 1004 | } else | 1004 | } else |
| 1005 | skb->ip_summed = CHECKSUM_NONE; | 1005 | skb_checksum_none_assert(skb); |
| 1006 | 1006 | ||
| 1007 | if (data_status & SPIDER_NET_VLAN_PACKET) { | 1007 | if (data_status & SPIDER_NET_VLAN_PACKET) { |
| 1008 | /* further enhancements: HW-accel VLAN | 1008 | /* further enhancements: HW-accel VLAN |
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c index e3f002eba89a..1ccea76d89ae 100644 --- a/drivers/net/stmmac/stmmac_main.c +++ b/drivers/net/stmmac/stmmac_main.c | |||
| @@ -1256,7 +1256,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit) | |||
| 1256 | 1256 | ||
| 1257 | if (unlikely(status == csum_none)) { | 1257 | if (unlikely(status == csum_none)) { |
| 1258 | /* always for the old mac 10/100 */ | 1258 | /* always for the old mac 10/100 */ |
| 1259 | skb->ip_summed = CHECKSUM_NONE; | 1259 | skb_checksum_none_assert(skb); |
| 1260 | netif_receive_skb(skb); | 1260 | netif_receive_skb(skb); |
| 1261 | } else { | 1261 | } else { |
| 1262 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1262 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
diff --git a/drivers/net/tehuti.c b/drivers/net/tehuti.c index 3128d6a8e9ce..8b3dc1eb4015 100644 --- a/drivers/net/tehuti.c +++ b/drivers/net/tehuti.c | |||
| @@ -1297,12 +1297,13 @@ static int bdx_rx_receive(struct bdx_priv *priv, struct rxd_fifo *f, int budget) | |||
| 1297 | ndev->stats.rx_bytes += len; | 1297 | ndev->stats.rx_bytes += len; |
| 1298 | 1298 | ||
| 1299 | skb_put(skb, len); | 1299 | skb_put(skb, len); |
| 1300 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
| 1301 | skb->protocol = eth_type_trans(skb, ndev); | 1300 | skb->protocol = eth_type_trans(skb, ndev); |
| 1302 | 1301 | ||
| 1303 | /* Non-IP packets aren't checksum-offloaded */ | 1302 | /* Non-IP packets aren't checksum-offloaded */ |
| 1304 | if (GET_RXD_PKT_ID(rxd_val1) == 0) | 1303 | if (GET_RXD_PKT_ID(rxd_val1) == 0) |
| 1305 | skb->ip_summed = CHECKSUM_NONE; | 1304 | skb_checksum_none_assert(skb); |
| 1305 | else | ||
| 1306 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
| 1306 | 1307 | ||
| 1307 | NETIF_RX_MUX(priv, rxd_val1, rxd_vlan, skb); | 1308 | NETIF_RX_MUX(priv, rxd_val1, rxd_vlan, skb); |
| 1308 | 1309 | ||
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index bc3af78a869f..9f6ffffc8376 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
| @@ -4719,7 +4719,7 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget) | |||
| 4719 | >> RXD_TCPCSUM_SHIFT) == 0xffff)) | 4719 | >> RXD_TCPCSUM_SHIFT) == 0xffff)) |
| 4720 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 4720 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 4721 | else | 4721 | else |
| 4722 | skb->ip_summed = CHECKSUM_NONE; | 4722 | skb_checksum_none_assert(skb); |
| 4723 | 4723 | ||
| 4724 | skb->protocol = eth_type_trans(skb, tp->dev); | 4724 | skb->protocol = eth_type_trans(skb, tp->dev); |
| 4725 | 4725 | ||
diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c index 3f4681f78262..5dfb39539b3e 100644 --- a/drivers/net/typhoon.c +++ b/drivers/net/typhoon.c | |||
| @@ -1760,7 +1760,7 @@ typhoon_rx(struct typhoon *tp, struct basic_ring *rxRing, volatile __le32 * read | |||
| 1760 | (TYPHOON_RX_IP_CHK_GOOD | TYPHOON_RX_UDP_CHK_GOOD)) { | 1760 | (TYPHOON_RX_IP_CHK_GOOD | TYPHOON_RX_UDP_CHK_GOOD)) { |
| 1761 | new_skb->ip_summed = CHECKSUM_UNNECESSARY; | 1761 | new_skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 1762 | } else | 1762 | } else |
| 1763 | new_skb->ip_summed = CHECKSUM_NONE; | 1763 | skb_checksum_none_assert(new_skb); |
| 1764 | 1764 | ||
| 1765 | spin_lock(&tp->state_lock); | 1765 | spin_lock(&tp->state_lock); |
| 1766 | if(tp->vlgrp != NULL && rx->rxStatus & TYPHOON_RX_VLAN) | 1766 | if(tp->vlgrp != NULL && rx->rxStatus & TYPHOON_RX_VLAN) |
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c index fd69095ef6e3..ed7f4f5c4062 100644 --- a/drivers/net/via-velocity.c +++ b/drivers/net/via-velocity.c | |||
| @@ -1954,7 +1954,7 @@ static int velocity_tx_srv(struct velocity_info *vptr) | |||
| 1954 | */ | 1954 | */ |
| 1955 | static inline void velocity_rx_csum(struct rx_desc *rd, struct sk_buff *skb) | 1955 | static inline void velocity_rx_csum(struct rx_desc *rd, struct sk_buff *skb) |
| 1956 | { | 1956 | { |
| 1957 | skb->ip_summed = CHECKSUM_NONE; | 1957 | skb_checksum_none_assert(skb); |
| 1958 | 1958 | ||
| 1959 | if (rd->rdesc1.CSM & CSM_IPKT) { | 1959 | if (rd->rdesc1.CSM & CSM_IPKT) { |
| 1960 | if (rd->rdesc1.CSM & CSM_IPOK) { | 1960 | if (rd->rdesc1.CSM & CSM_IPOK) { |
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index abe0ff53daf3..198ce92af0c3 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c | |||
| @@ -1042,11 +1042,11 @@ vmxnet3_rx_csum(struct vmxnet3_adapter *adapter, | |||
| 1042 | skb->csum = htons(gdesc->rcd.csum); | 1042 | skb->csum = htons(gdesc->rcd.csum); |
| 1043 | skb->ip_summed = CHECKSUM_PARTIAL; | 1043 | skb->ip_summed = CHECKSUM_PARTIAL; |
| 1044 | } else { | 1044 | } else { |
| 1045 | skb->ip_summed = CHECKSUM_NONE; | 1045 | skb_checksum_none_assert(skb); |
| 1046 | } | 1046 | } |
| 1047 | } | 1047 | } |
| 1048 | } else { | 1048 | } else { |
| 1049 | skb->ip_summed = CHECKSUM_NONE; | 1049 | skb_checksum_none_assert(skb); |
| 1050 | } | 1050 | } |
| 1051 | } | 1051 | } |
| 1052 | 1052 | ||
diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c index 01cdec712b64..5378b849f54f 100644 --- a/drivers/net/vxge/vxge-main.c +++ b/drivers/net/vxge/vxge-main.c | |||
| @@ -501,7 +501,7 @@ vxge_rx_1b_compl(struct __vxge_hw_ring *ringh, void *dtr, | |||
| 501 | ext_info.l4_cksum == VXGE_HW_L4_CKSUM_OK) | 501 | ext_info.l4_cksum == VXGE_HW_L4_CKSUM_OK) |
| 502 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 502 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 503 | else | 503 | else |
| 504 | skb->ip_summed = CHECKSUM_NONE; | 504 | skb_checksum_none_assert(skb); |
| 505 | 505 | ||
| 506 | vxge_rx_complete(ring, skb, ext_info.vlan, | 506 | vxge_rx_complete(ring, skb, ext_info.vlan, |
| 507 | pkt_length, &ext_info); | 507 | pkt_length, &ext_info); |
diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c index 71122ee4e830..f3f8be5a35fa 100644 --- a/drivers/net/xilinx_emaclite.c +++ b/drivers/net/xilinx_emaclite.c | |||
| @@ -641,7 +641,7 @@ static void xemaclite_rx_handler(struct net_device *dev) | |||
| 641 | skb_put(skb, len); /* Tell the skb how much data we got */ | 641 | skb_put(skb, len); /* Tell the skb how much data we got */ |
| 642 | 642 | ||
| 643 | skb->protocol = eth_type_trans(skb, dev); | 643 | skb->protocol = eth_type_trans(skb, dev); |
| 644 | skb->ip_summed = CHECKSUM_NONE; | 644 | skb_checksum_none_assert(skb); |
| 645 | 645 | ||
| 646 | dev->stats.rx_packets++; | 646 | dev->stats.rx_packets++; |
| 647 | dev->stats.rx_bytes += len; | 647 | dev->stats.rx_bytes += len; |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index f900ffcd847e..9e8085a89589 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -2206,6 +2206,21 @@ static inline void skb_forward_csum(struct sk_buff *skb) | |||
| 2206 | skb->ip_summed = CHECKSUM_NONE; | 2206 | skb->ip_summed = CHECKSUM_NONE; |
| 2207 | } | 2207 | } |
| 2208 | 2208 | ||
| 2209 | /** | ||
| 2210 | * skb_checksum_none_assert - make sure skb ip_summed is CHECKSUM_NONE | ||
| 2211 | * @skb: skb to check | ||
| 2212 | * | ||
| 2213 | * fresh skbs have their ip_summed set to CHECKSUM_NONE. | ||
| 2214 | * Instead of forcing ip_summed to CHECKSUM_NONE, we can | ||
| 2215 | * use this helper, to document places where we make this assertion. | ||
| 2216 | */ | ||
| 2217 | static inline void skb_checksum_none_assert(struct sk_buff *skb) | ||
| 2218 | { | ||
| 2219 | #ifdef DEBUG | ||
| 2220 | BUG_ON(skb->ip_summed != CHECKSUM_NONE); | ||
| 2221 | #endif | ||
| 2222 | } | ||
| 2223 | |||
| 2209 | bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); | 2224 | bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); |
| 2210 | #endif /* __KERNEL__ */ | 2225 | #endif /* __KERNEL__ */ |
| 2211 | #endif /* _LINUX_SKBUFF_H */ | 2226 | #endif /* _LINUX_SKBUFF_H */ |
