summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wilcox (Oracle) <willy@infradead.org>2019-07-22 23:08:25 -0400
committerDavid S. Miller <davem@davemloft.net>2019-07-22 23:47:56 -0400
commitd7840976e3915669382c62ddd1700960f348328e (patch)
tree56dc7cc1ae1efc1c947fec907f1bf6775d85a774
parent7e24b4ed5ac4321e41415b0c6f0f8a8ac14852b2 (diff)
net: Use skb accessors in network drivers
In preparation for unifying the skb_frag and bio_vec, use the fine accessors which already exist and use skb_frag_t instead of struct skb_frag_struct. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/crypto/chelsio/chtls/chtls_io.c6
-rw-r--r--drivers/hsi/clients/ssi_protocol.c3
-rw-r--r--drivers/infiniband/hw/hfi1/vnic_sdma.c2
-rw-r--r--drivers/net/ethernet/3com/3c59x.c2
-rw-r--r--drivers/net/ethernet/agere/et131x.c6
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-desc.c2
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-drv.c2
-rw-r--r--drivers/net/ethernet/apm/xgene/xgene_enet_main.c3
-rw-r--r--drivers/net/ethernet/atheros/alx/main.c4
-rw-r--r--drivers/net/ethernet/atheros/atl1c/atl1c_main.c4
-rw-r--r--drivers/net/ethernet/atheros/atl1e/atl1e_main.c3
-rw-r--r--drivers/net/ethernet/atheros/atlx/atl1.c3
-rw-r--r--drivers/net/ethernet/broadcom/bgmac.c2
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c2
-rw-r--r--drivers/net/ethernet/brocade/bna/bnad.c2
-rw-r--r--drivers/net/ethernet/calxeda/xgmac.c2
-rw-r--r--drivers/net/ethernet/cavium/liquidio/lio_main.c23
-rw-r--r--drivers/net/ethernet/cavium/liquidio/lio_vf_main.c23
-rw-r--r--drivers/net/ethernet/cavium/thunder/nicvf_queues.c4
-rw-r--r--drivers/net/ethernet/chelsio/cxgb3/sge.c2
-rw-r--r--drivers/net/ethernet/cortina/gemini.c5
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c2
-rw-r--r--drivers/net/ethernet/freescale/enetc/enetc.c2
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c4
-rw-r--r--drivers/net/ethernet/hisilicon/hix5hd2_gmac.c2
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_enet.c4
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3_enet.c8
-rw-r--r--drivers/net/ethernet/huawei/hinic/hinic_tx.c2
-rw-r--r--drivers/net/ethernet/ibm/emac/core.c2
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_main.c3
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c3
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k_main.c5
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_txrx.c4
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_txrx.h2
-rw-r--r--drivers/net/ethernet/intel/iavf/iavf_txrx.c4
-rw-r--r--drivers/net/ethernet/intel/iavf/iavf_txrx.h2
-rw-r--r--drivers/net/ethernet/intel/ice/ice_txrx.c6
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c5
-rw-r--r--drivers/net/ethernet/intel/igbvf/netdev.c2
-rw-r--r--drivers/net/ethernet/intel/igc/igc_main.c5
-rw-r--r--drivers/net/ethernet/intel/ixgb/ixgb_main.c4
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c9
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c2
-rw-r--r--drivers/net/ethernet/jme.c5
-rw-r--r--drivers/net/ethernet/marvell/mvneta.c4
-rw-r--r--drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c7
-rw-r--r--drivers/net/ethernet/mediatek/mtk_eth_soc.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_tx.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_tx.c2
-rw-r--r--drivers/net/ethernet/microchip/lan743x_main.c5
-rw-r--r--drivers/net/ethernet/myricom/myri10ge/myri10ge.c10
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_net_common.c6
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c4
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c2
-rw-r--r--drivers/net/ethernet/qualcomm/emac/emac-mac.c12
-rw-r--r--drivers/net/ethernet/synopsys/dwc-xlgmac-desc.c2
-rw-r--r--drivers/net/ethernet/synopsys/dwc-xlgmac-net.c2
-rw-r--r--drivers/net/ethernet/tehuti/tehuti.c2
-rw-r--r--drivers/net/usb/usbnet.c4
-rw-r--r--drivers/net/vmxnet3/vmxnet3_drv.c7
-rw-r--r--drivers/net/wireless/ath/wil6210/debugfs.c3
-rw-r--r--drivers/net/wireless/ath/wil6210/txrx.c9
-rw-r--r--drivers/net/wireless/ath/wil6210/txrx_edma.c2
-rw-r--r--drivers/net/xen-netback/netback.c4
-rw-r--r--drivers/s390/net/qeth_core_main.c2
-rw-r--r--drivers/scsi/fcoe/fcoe_transport.c2
-rw-r--r--drivers/staging/octeon/ethernet-tx.c5
-rw-r--r--drivers/staging/unisys/visornic/visornic_main.c4
-rw-r--r--drivers/target/iscsi/cxgbit/cxgbit_target.c13
69 files changed, 149 insertions, 164 deletions
diff --git a/drivers/crypto/chelsio/chtls/chtls_io.c b/drivers/crypto/chelsio/chtls/chtls_io.c
index 551bca6fef24..c70cb5f272cf 100644
--- a/drivers/crypto/chelsio/chtls/chtls_io.c
+++ b/drivers/crypto/chelsio/chtls/chtls_io.c
@@ -1134,7 +1134,9 @@ copy:
1134 } 1134 }
1135 /* Update the skb. */ 1135 /* Update the skb. */
1136 if (merge) { 1136 if (merge) {
1137 skb_shinfo(skb)->frags[i - 1].size += copy; 1137 skb_frag_size_add(
1138 &skb_shinfo(skb)->frags[i - 1],
1139 copy);
1138 } else { 1140 } else {
1139 skb_fill_page_desc(skb, i, page, off, copy); 1141 skb_fill_page_desc(skb, i, page, off, copy);
1140 if (off + copy < pg_size) { 1142 if (off + copy < pg_size) {
@@ -1247,7 +1249,7 @@ new_buf:
1247 1249
1248 i = skb_shinfo(skb)->nr_frags; 1250 i = skb_shinfo(skb)->nr_frags;
1249 if (skb_can_coalesce(skb, i, page, offset)) { 1251 if (skb_can_coalesce(skb, i, page, offset)) {
1250 skb_shinfo(skb)->frags[i - 1].size += copy; 1252 skb_frag_size_add(&skb_shinfo(skb)->frags[i - 1], copy);
1251 } else if (i < MAX_SKB_FRAGS) { 1253 } else if (i < MAX_SKB_FRAGS) {
1252 get_page(page); 1254 get_page(page);
1253 skb_fill_page_desc(skb, i, page, offset, copy); 1255 skb_fill_page_desc(skb, i, page, offset, copy);
diff --git a/drivers/hsi/clients/ssi_protocol.c b/drivers/hsi/clients/ssi_protocol.c
index 9aeed98b87a1..c9e3f928b93d 100644
--- a/drivers/hsi/clients/ssi_protocol.c
+++ b/drivers/hsi/clients/ssi_protocol.c
@@ -181,7 +181,8 @@ static void ssip_skb_to_msg(struct sk_buff *skb, struct hsi_msg *msg)
181 sg = sg_next(sg); 181 sg = sg_next(sg);
182 BUG_ON(!sg); 182 BUG_ON(!sg);
183 frag = &skb_shinfo(skb)->frags[i]; 183 frag = &skb_shinfo(skb)->frags[i];
184 sg_set_page(sg, frag->page.p, frag->size, frag->page_offset); 184 sg_set_page(sg, skb_frag_page(frag), skb_frag_size(frag),
185 frag->page_offset);
185 } 186 }
186} 187}
187 188
diff --git a/drivers/infiniband/hw/hfi1/vnic_sdma.c b/drivers/infiniband/hw/hfi1/vnic_sdma.c
index af1b1ffcb38e..05a140504a99 100644
--- a/drivers/infiniband/hw/hfi1/vnic_sdma.c
+++ b/drivers/infiniband/hw/hfi1/vnic_sdma.c
@@ -102,7 +102,7 @@ static noinline int build_vnic_ulp_payload(struct sdma_engine *sde,
102 goto bail_txadd; 102 goto bail_txadd;
103 103
104 for (i = 0; i < skb_shinfo(tx->skb)->nr_frags; i++) { 104 for (i = 0; i < skb_shinfo(tx->skb)->nr_frags; i++) {
105 struct skb_frag_struct *frag = &skb_shinfo(tx->skb)->frags[i]; 105 skb_frag_t *frag = &skb_shinfo(tx->skb)->frags[i];
106 106
107 /* combine physically continuous fragments later? */ 107 /* combine physically continuous fragments later? */
108 ret = sdma_txadd_page(sde->dd, 108 ret = sdma_txadd_page(sde->dd,
diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
index 147051404194..7be91e896f2d 100644
--- a/drivers/net/ethernet/3com/3c59x.c
+++ b/drivers/net/ethernet/3com/3c59x.c
@@ -2175,7 +2175,7 @@ boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev)
2175 2175
2176 dma_addr = skb_frag_dma_map(vp->gendev, frag, 2176 dma_addr = skb_frag_dma_map(vp->gendev, frag,
2177 0, 2177 0,
2178 frag->size, 2178 skb_frag_size(frag),
2179 DMA_TO_DEVICE); 2179 DMA_TO_DEVICE);
2180 if (dma_mapping_error(vp->gendev, dma_addr)) { 2180 if (dma_mapping_error(vp->gendev, dma_addr)) {
2181 for(i = i-1; i >= 0; i--) 2181 for(i = i-1; i >= 0; i--)
diff --git a/drivers/net/ethernet/agere/et131x.c b/drivers/net/ethernet/agere/et131x.c
index ea34bcb868b5..e43d922f043e 100644
--- a/drivers/net/ethernet/agere/et131x.c
+++ b/drivers/net/ethernet/agere/et131x.c
@@ -2426,7 +2426,7 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb)
2426 u32 thiscopy, remainder; 2426 u32 thiscopy, remainder;
2427 struct sk_buff *skb = tcb->skb; 2427 struct sk_buff *skb = tcb->skb;
2428 u32 nr_frags = skb_shinfo(skb)->nr_frags + 1; 2428 u32 nr_frags = skb_shinfo(skb)->nr_frags + 1;
2429 struct skb_frag_struct *frags = &skb_shinfo(skb)->frags[0]; 2429 skb_frag_t *frags = &skb_shinfo(skb)->frags[0];
2430 struct phy_device *phydev = adapter->netdev->phydev; 2430 struct phy_device *phydev = adapter->netdev->phydev;
2431 dma_addr_t dma_addr; 2431 dma_addr_t dma_addr;
2432 struct tx_ring *tx_ring = &adapter->tx_ring; 2432 struct tx_ring *tx_ring = &adapter->tx_ring;
@@ -2488,11 +2488,11 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb)
2488 frag++; 2488 frag++;
2489 } 2489 }
2490 } else { 2490 } else {
2491 desc[frag].len_vlan = frags[i - 1].size; 2491 desc[frag].len_vlan = skb_frag_size(&frags[i - 1]);
2492 dma_addr = skb_frag_dma_map(&adapter->pdev->dev, 2492 dma_addr = skb_frag_dma_map(&adapter->pdev->dev,
2493 &frags[i - 1], 2493 &frags[i - 1],
2494 0, 2494 0,
2495 frags[i - 1].size, 2495 desc[frag].len_vlan,
2496 DMA_TO_DEVICE); 2496 DMA_TO_DEVICE);
2497 desc[frag].addr_lo = lower_32_bits(dma_addr); 2497 desc[frag].addr_lo = lower_32_bits(dma_addr);
2498 desc[frag].addr_hi = upper_32_bits(dma_addr); 2498 desc[frag].addr_hi = upper_32_bits(dma_addr);
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
index 533094233659..230726d7b74f 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
@@ -526,7 +526,7 @@ static int xgbe_map_tx_skb(struct xgbe_channel *channel, struct sk_buff *skb)
526 struct xgbe_ring *ring = channel->tx_ring; 526 struct xgbe_ring *ring = channel->tx_ring;
527 struct xgbe_ring_data *rdata; 527 struct xgbe_ring_data *rdata;
528 struct xgbe_packet_data *packet; 528 struct xgbe_packet_data *packet;
529 struct skb_frag_struct *frag; 529 skb_frag_t *frag;
530 dma_addr_t skb_dma; 530 dma_addr_t skb_dma;
531 unsigned int start_index, cur_index; 531 unsigned int start_index, cur_index;
532 unsigned int offset, tso, vlan, datalen, len; 532 unsigned int offset, tso, vlan, datalen, len;
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index 3dd0cecddba8..98f8f2033154 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -1833,7 +1833,7 @@ static void xgbe_packet_info(struct xgbe_prv_data *pdata,
1833 struct xgbe_ring *ring, struct sk_buff *skb, 1833 struct xgbe_ring *ring, struct sk_buff *skb,
1834 struct xgbe_packet_data *packet) 1834 struct xgbe_packet_data *packet)
1835{ 1835{
1836 struct skb_frag_struct *frag; 1836 skb_frag_t *frag;
1837 unsigned int context_desc; 1837 unsigned int context_desc;
1838 unsigned int len; 1838 unsigned int len;
1839 unsigned int i; 1839 unsigned int i;
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
index 10b1c053e70a..949bff4d2921 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
@@ -340,7 +340,8 @@ static int xgene_enet_work_msg(struct sk_buff *skb, u64 *hopinfo)
340 nr_frags = skb_shinfo(skb)->nr_frags; 340 nr_frags = skb_shinfo(skb)->nr_frags;
341 341
342 for (i = 0; i < 2 && i < nr_frags; i++) 342 for (i = 0; i < 2 && i < nr_frags; i++)
343 len += skb_shinfo(skb)->frags[i].size; 343 len += skb_frag_size(
344 &skb_shinfo(skb)->frags[i]);
344 345
345 /* HW requires header must reside in 3 buffer */ 346 /* HW requires header must reside in 3 buffer */
346 if (unlikely(hdr_len > len)) { 347 if (unlikely(hdr_len > len)) {
diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c
index e3538ba7d0e7..a3ec738da336 100644
--- a/drivers/net/ethernet/atheros/alx/main.c
+++ b/drivers/net/ethernet/atheros/alx/main.c
@@ -1465,9 +1465,7 @@ static int alx_map_tx_skb(struct alx_tx_queue *txq, struct sk_buff *skb)
1465 tpd->len = cpu_to_le16(maplen); 1465 tpd->len = cpu_to_le16(maplen);
1466 1466
1467 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { 1467 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
1468 struct skb_frag_struct *frag; 1468 skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
1469
1470 frag = &skb_shinfo(skb)->frags[f];
1471 1469
1472 if (++txq->write_idx == txq->count) 1470 if (++txq->write_idx == txq->count)
1473 txq->write_idx = 0; 1471 txq->write_idx = 0;
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index be7f9cebb675..179ad62a2bd2 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -2150,9 +2150,7 @@ static int atl1c_tx_map(struct atl1c_adapter *adapter,
2150 } 2150 }
2151 2151
2152 for (f = 0; f < nr_frags; f++) { 2152 for (f = 0; f < nr_frags; f++) {
2153 struct skb_frag_struct *frag; 2153 skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
2154
2155 frag = &skb_shinfo(skb)->frags[f];
2156 2154
2157 use_tpd = atl1c_get_tpd(adapter, type); 2155 use_tpd = atl1c_get_tpd(adapter, type);
2158 memcpy(use_tpd, tpd, sizeof(struct atl1c_tpd_desc)); 2156 memcpy(use_tpd, tpd, sizeof(struct atl1c_tpd_desc));
diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
index 7f14e010bfeb..4f7b65825c15 100644
--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
@@ -1770,11 +1770,10 @@ static int atl1e_tx_map(struct atl1e_adapter *adapter,
1770 } 1770 }
1771 1771
1772 for (f = 0; f < nr_frags; f++) { 1772 for (f = 0; f < nr_frags; f++) {
1773 const struct skb_frag_struct *frag; 1773 const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
1774 u16 i; 1774 u16 i;
1775 u16 seg_num; 1775 u16 seg_num;
1776 1776
1777 frag = &skb_shinfo(skb)->frags[f];
1778 buf_len = skb_frag_size(frag); 1777 buf_len = skb_frag_size(frag);
1779 1778
1780 seg_num = (buf_len + MAX_TX_BUF_LEN - 1) / MAX_TX_BUF_LEN; 1779 seg_num = (buf_len + MAX_TX_BUF_LEN - 1) / MAX_TX_BUF_LEN;
diff --git a/drivers/net/ethernet/atheros/atlx/atl1.c b/drivers/net/ethernet/atheros/atlx/atl1.c
index b5c6dc914720..5f420c17bf3e 100644
--- a/drivers/net/ethernet/atheros/atlx/atl1.c
+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
@@ -2256,10 +2256,9 @@ static void atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb,
2256 } 2256 }
2257 2257
2258 for (f = 0; f < nr_frags; f++) { 2258 for (f = 0; f < nr_frags; f++) {
2259 const struct skb_frag_struct *frag; 2259 const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
2260 u16 i, nseg; 2260 u16 i, nseg;
2261 2261
2262 frag = &skb_shinfo(skb)->frags[f];
2263 buf_len = skb_frag_size(frag); 2262 buf_len = skb_frag_size(frag);
2264 2263
2265 nseg = (buf_len + ATL1_MAX_TX_BUF_LEN - 1) / 2264 nseg = (buf_len + ATL1_MAX_TX_BUF_LEN - 1) /
diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
index 4632dd5dbad1..148734b166f0 100644
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -172,7 +172,7 @@ static netdev_tx_t bgmac_dma_tx_add(struct bgmac *bgmac,
172 flags = 0; 172 flags = 0;
173 173
174 for (i = 0; i < nr_frags; i++) { 174 for (i = 0; i < nr_frags; i++) {
175 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 175 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
176 int len = skb_frag_size(frag); 176 int len = skb_frag_size(frag);
177 177
178 index = (index + 1) % BGMAC_TX_RING_SLOTS; 178 index = (index + 1) % BGMAC_TX_RING_SLOTS;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 7134d2c3eb1c..74dd28b82105 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -888,7 +888,7 @@ static struct sk_buff *bnxt_rx_page_skb(struct bnxt *bp,
888{ 888{
889 unsigned int payload = offset_and_len >> 16; 889 unsigned int payload = offset_and_len >> 16;
890 unsigned int len = offset_and_len & 0xffff; 890 unsigned int len = offset_and_len & 0xffff;
891 struct skb_frag_struct *frag; 891 skb_frag_t *frag;
892 struct page *page = data; 892 struct page *page = data;
893 u16 prod = rxr->rx_prod; 893 u16 prod = rxr->rx_prod;
894 struct sk_buff *skb; 894 struct sk_buff *skb;
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index 7767ae6fa1fd..e338272931d1 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -3032,7 +3032,7 @@ bnad_start_xmit(struct sk_buff *skb, struct net_device *netdev)
3032 head_unmap->nvecs++; 3032 head_unmap->nvecs++;
3033 3033
3034 for (i = 0, vect_id = 0; i < vectors - 1; i++) { 3034 for (i = 0, vect_id = 0; i < vectors - 1; i++) {
3035 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 3035 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
3036 u32 size = skb_frag_size(frag); 3036 u32 size = skb_frag_size(frag);
3037 3037
3038 if (unlikely(size == 0)) { 3038 if (unlikely(size == 0)) {
diff --git a/drivers/net/ethernet/calxeda/xgmac.c b/drivers/net/ethernet/calxeda/xgmac.c
index 99f49d059414..f96a42af1014 100644
--- a/drivers/net/ethernet/calxeda/xgmac.c
+++ b/drivers/net/ethernet/calxeda/xgmac.c
@@ -1104,7 +1104,7 @@ static netdev_tx_t xgmac_xmit(struct sk_buff *skb, struct net_device *dev)
1104 for (i = 0; i < nfrags; i++) { 1104 for (i = 0; i < nfrags; i++) {
1105 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1105 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1106 1106
1107 len = frag->size; 1107 len = skb_frag_size(frag);
1108 1108
1109 paddr = skb_frag_dma_map(priv->device, frag, 0, len, 1109 paddr = skb_frag_dma_map(priv->device, frag, 0, len,
1110 DMA_TO_DEVICE); 1110 DMA_TO_DEVICE);
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c
index eab805579f96..7f3b2e3b0868 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_main.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c
@@ -1492,11 +1492,11 @@ static void free_netsgbuf(void *buf)
1492 1492
1493 i = 1; 1493 i = 1;
1494 while (frags--) { 1494 while (frags--) {
1495 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1]; 1495 skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1];
1496 1496
1497 pci_unmap_page((lio->oct_dev)->pci_dev, 1497 pci_unmap_page((lio->oct_dev)->pci_dev,
1498 g->sg[(i >> 2)].ptr[(i & 3)], 1498 g->sg[(i >> 2)].ptr[(i & 3)],
1499 frag->size, DMA_TO_DEVICE); 1499 skb_frag_size(frag), DMA_TO_DEVICE);
1500 i++; 1500 i++;
1501 } 1501 }
1502 1502
@@ -1535,11 +1535,11 @@ static void free_netsgbuf_with_resp(void *buf)
1535 1535
1536 i = 1; 1536 i = 1;
1537 while (frags--) { 1537 while (frags--) {
1538 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1]; 1538 skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1];
1539 1539
1540 pci_unmap_page((lio->oct_dev)->pci_dev, 1540 pci_unmap_page((lio->oct_dev)->pci_dev,
1541 g->sg[(i >> 2)].ptr[(i & 3)], 1541 g->sg[(i >> 2)].ptr[(i & 3)],
1542 frag->size, DMA_TO_DEVICE); 1542 skb_frag_size(frag), DMA_TO_DEVICE);
1543 i++; 1543 i++;
1544 } 1544 }
1545 1545
@@ -2424,7 +2424,7 @@ static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
2424 2424
2425 } else { 2425 } else {
2426 int i, frags; 2426 int i, frags;
2427 struct skb_frag_struct *frag; 2427 skb_frag_t *frag;
2428 struct octnic_gather *g; 2428 struct octnic_gather *g;
2429 2429
2430 spin_lock(&lio->glist_lock[q_idx]); 2430 spin_lock(&lio->glist_lock[q_idx]);
@@ -2462,11 +2462,9 @@ static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
2462 frag = &skb_shinfo(skb)->frags[i - 1]; 2462 frag = &skb_shinfo(skb)->frags[i - 1];
2463 2463
2464 g->sg[(i >> 2)].ptr[(i & 3)] = 2464 g->sg[(i >> 2)].ptr[(i & 3)] =
2465 dma_map_page(&oct->pci_dev->dev, 2465 skb_frag_dma_map(&oct->pci_dev->dev,
2466 frag->page.p, 2466 frag, 0, skb_frag_size(frag),
2467 frag->page_offset, 2467 DMA_TO_DEVICE);
2468 frag->size,
2469 DMA_TO_DEVICE);
2470 2468
2471 if (dma_mapping_error(&oct->pci_dev->dev, 2469 if (dma_mapping_error(&oct->pci_dev->dev,
2472 g->sg[i >> 2].ptr[i & 3])) { 2470 g->sg[i >> 2].ptr[i & 3])) {
@@ -2478,7 +2476,7 @@ static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
2478 frag = &skb_shinfo(skb)->frags[j - 1]; 2476 frag = &skb_shinfo(skb)->frags[j - 1];
2479 dma_unmap_page(&oct->pci_dev->dev, 2477 dma_unmap_page(&oct->pci_dev->dev,
2480 g->sg[j >> 2].ptr[j & 3], 2478 g->sg[j >> 2].ptr[j & 3],
2481 frag->size, 2479 skb_frag_size(frag),
2482 DMA_TO_DEVICE); 2480 DMA_TO_DEVICE);
2483 } 2481 }
2484 dev_err(&oct->pci_dev->dev, "%s DMA mapping error 3\n", 2482 dev_err(&oct->pci_dev->dev, "%s DMA mapping error 3\n",
@@ -2486,7 +2484,8 @@ static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
2486 return NETDEV_TX_BUSY; 2484 return NETDEV_TX_BUSY;
2487 } 2485 }
2488 2486
2489 add_sg_size(&g->sg[(i >> 2)], frag->size, (i & 3)); 2487 add_sg_size(&g->sg[(i >> 2)], skb_frag_size(frag),
2488 (i & 3));
2490 i++; 2489 i++;
2491 } 2490 }
2492 2491
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
index db0b90555acb..370d76822ee0 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
@@ -837,11 +837,11 @@ static void free_netsgbuf(void *buf)
837 837
838 i = 1; 838 i = 1;
839 while (frags--) { 839 while (frags--) {
840 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1]; 840 skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1];
841 841
842 pci_unmap_page((lio->oct_dev)->pci_dev, 842 pci_unmap_page((lio->oct_dev)->pci_dev,
843 g->sg[(i >> 2)].ptr[(i & 3)], 843 g->sg[(i >> 2)].ptr[(i & 3)],
844 frag->size, DMA_TO_DEVICE); 844 skb_frag_size(frag), DMA_TO_DEVICE);
845 i++; 845 i++;
846 } 846 }
847 847
@@ -881,11 +881,11 @@ static void free_netsgbuf_with_resp(void *buf)
881 881
882 i = 1; 882 i = 1;
883 while (frags--) { 883 while (frags--) {
884 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1]; 884 skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1];
885 885
886 pci_unmap_page((lio->oct_dev)->pci_dev, 886 pci_unmap_page((lio->oct_dev)->pci_dev,
887 g->sg[(i >> 2)].ptr[(i & 3)], 887 g->sg[(i >> 2)].ptr[(i & 3)],
888 frag->size, DMA_TO_DEVICE); 888 skb_frag_size(frag), DMA_TO_DEVICE);
889 i++; 889 i++;
890 } 890 }
891 891
@@ -1497,7 +1497,7 @@ static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
1497 ndata.reqtype = REQTYPE_NORESP_NET; 1497 ndata.reqtype = REQTYPE_NORESP_NET;
1498 1498
1499 } else { 1499 } else {
1500 struct skb_frag_struct *frag; 1500 skb_frag_t *frag;
1501 struct octnic_gather *g; 1501 struct octnic_gather *g;
1502 int i, frags; 1502 int i, frags;
1503 1503
@@ -1535,11 +1535,9 @@ static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
1535 frag = &skb_shinfo(skb)->frags[i - 1]; 1535 frag = &skb_shinfo(skb)->frags[i - 1];
1536 1536
1537 g->sg[(i >> 2)].ptr[(i & 3)] = 1537 g->sg[(i >> 2)].ptr[(i & 3)] =
1538 dma_map_page(&oct->pci_dev->dev, 1538 skb_frag_dma_map(&oct->pci_dev->dev,
1539 frag->page.p, 1539 frag, 0, skb_frag_size(frag),
1540 frag->page_offset, 1540 DMA_TO_DEVICE);
1541 frag->size,
1542 DMA_TO_DEVICE);
1543 if (dma_mapping_error(&oct->pci_dev->dev, 1541 if (dma_mapping_error(&oct->pci_dev->dev,
1544 g->sg[i >> 2].ptr[i & 3])) { 1542 g->sg[i >> 2].ptr[i & 3])) {
1545 dma_unmap_single(&oct->pci_dev->dev, 1543 dma_unmap_single(&oct->pci_dev->dev,
@@ -1550,7 +1548,7 @@ static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
1550 frag = &skb_shinfo(skb)->frags[j - 1]; 1548 frag = &skb_shinfo(skb)->frags[j - 1];
1551 dma_unmap_page(&oct->pci_dev->dev, 1549 dma_unmap_page(&oct->pci_dev->dev,
1552 g->sg[j >> 2].ptr[j & 3], 1550 g->sg[j >> 2].ptr[j & 3],
1553 frag->size, 1551 skb_frag_size(frag),
1554 DMA_TO_DEVICE); 1552 DMA_TO_DEVICE);
1555 } 1553 }
1556 dev_err(&oct->pci_dev->dev, "%s DMA mapping error 3\n", 1554 dev_err(&oct->pci_dev->dev, "%s DMA mapping error 3\n",
@@ -1558,7 +1556,8 @@ static netdev_tx_t liquidio_xmit(struct sk_buff *skb, struct net_device *netdev)
1558 return NETDEV_TX_BUSY; 1556 return NETDEV_TX_BUSY;
1559 } 1557 }
1560 1558
1561 add_sg_size(&g->sg[(i >> 2)], frag->size, (i & 3)); 1559 add_sg_size(&g->sg[(i >> 2)], skb_frag_size(frag),
1560 (i & 3));
1562 i++; 1561 i++;
1563 } 1562 }
1564 1563
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
index 192bc92da881..c0266a87794c 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
@@ -1588,9 +1588,7 @@ int nicvf_sq_append_skb(struct nicvf *nic, struct snd_queue *sq,
1588 goto doorbell; 1588 goto doorbell;
1589 1589
1590 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1590 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1591 const struct skb_frag_struct *frag; 1591 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1592
1593 frag = &skb_shinfo(skb)->frags[i];
1594 1592
1595 qentry = nicvf_get_nxt_sqentry(sq, qentry); 1593 qentry = nicvf_get_nxt_sqentry(sq, qentry);
1596 size = skb_frag_size(frag); 1594 size = skb_frag_size(frag);
diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
index 89db739b7819..310a232e00f0 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
@@ -2132,7 +2132,7 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
2132 struct port_info *pi = netdev_priv(qs->netdev); 2132 struct port_info *pi = netdev_priv(qs->netdev);
2133 struct sk_buff *skb = NULL; 2133 struct sk_buff *skb = NULL;
2134 struct cpl_rx_pkt *cpl; 2134 struct cpl_rx_pkt *cpl;
2135 struct skb_frag_struct *rx_frag; 2135 skb_frag_t *rx_frag;
2136 int nr_frags; 2136 int nr_frags;
2137 int offset = 0; 2137 int offset = 0;
2138 2138
diff --git a/drivers/net/ethernet/cortina/gemini.c b/drivers/net/ethernet/cortina/gemini.c
index 9003eb6716cd..46dd6b4886b6 100644
--- a/drivers/net/ethernet/cortina/gemini.c
+++ b/drivers/net/ethernet/cortina/gemini.c
@@ -1182,9 +1182,8 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb,
1182 buflen = skb_headlen(skb); 1182 buflen = skb_headlen(skb);
1183 } else { 1183 } else {
1184 skb_frag = skb_si->frags + frag; 1184 skb_frag = skb_si->frags + frag;
1185 buffer = page_address(skb_frag_page(skb_frag)) + 1185 buffer = skb_frag_address(skb_frag);
1186 skb_frag->page_offset; 1186 buflen = skb_frag_size(skb_frag);
1187 buflen = skb_frag->size;
1188 } 1187 }
1189 1188
1190 if (frag == last_frag) { 1189 if (frag == last_frag) {
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 2edb86ec9fe9..e00a94a03879 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -1014,7 +1014,7 @@ static u32 be_xmit_enqueue(struct be_adapter *adapter, struct be_tx_obj *txo,
1014 } 1014 }
1015 1015
1016 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1016 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1017 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 1017 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1018 len = skb_frag_size(frag); 1018 len = skb_frag_size(frag);
1019 1019
1020 busaddr = skb_frag_dma_map(dev, frag, 0, len, DMA_TO_DEVICE); 1020 busaddr = skb_frag_dma_map(dev, frag, 0, len, DMA_TO_DEVICE);
diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c
index 223709443ea4..b6ff89307409 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
@@ -110,7 +110,7 @@ static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb,
110 int active_offloads) 110 int active_offloads)
111{ 111{
112 struct enetc_tx_swbd *tx_swbd; 112 struct enetc_tx_swbd *tx_swbd;
113 struct skb_frag_struct *frag; 113 skb_frag_t *frag;
114 int len = skb_headlen(skb); 114 int len = skb_headlen(skb);
115 union enetc_tx_bd temp_bd; 115 union enetc_tx_bd temp_bd;
116 union enetc_tx_bd *txbd; 116 union enetc_tx_bd *txbd;
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index e5610a4da539..c01d3ec3e9af 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -365,7 +365,7 @@ fec_enet_txq_submit_frag_skb(struct fec_enet_priv_tx_q *txq,
365 status = fec16_to_cpu(bdp->cbd_sc); 365 status = fec16_to_cpu(bdp->cbd_sc);
366 status &= ~BD_ENET_TX_STATS; 366 status &= ~BD_ENET_TX_STATS;
367 status |= (BD_ENET_TX_TC | BD_ENET_TX_READY); 367 status |= (BD_ENET_TX_TC | BD_ENET_TX_READY);
368 frag_len = skb_shinfo(skb)->frags[frag].size; 368 frag_len = skb_frag_size(&skb_shinfo(skb)->frags[frag]);
369 369
370 /* Handle the last BD specially */ 370 /* Handle the last BD specially */
371 if (frag == nr_frags - 1) { 371 if (frag == nr_frags - 1) {
@@ -387,7 +387,7 @@ fec_enet_txq_submit_frag_skb(struct fec_enet_priv_tx_q *txq,
387 ebdp->cbd_esc = cpu_to_fec32(estatus); 387 ebdp->cbd_esc = cpu_to_fec32(estatus);
388 } 388 }
389 389
390 bufaddr = page_address(this_frag->page.p) + this_frag->page_offset; 390 bufaddr = skb_frag_address(this_frag);
391 391
392 index = fec_enet_get_bd_index(bdp, &txq->bd); 392 index = fec_enet_get_bd_index(bdp, &txq->bd);
393 if (((unsigned long) bufaddr) & fep->tx_align || 393 if (((unsigned long) bufaddr) & fep->tx_align ||
diff --git a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
index 349970557c52..95a6b0926170 100644
--- a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
+++ b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
@@ -719,7 +719,7 @@ static int hix5hd2_fill_sg_desc(struct hix5hd2_priv *priv,
719 719
720 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 720 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
721 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 721 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
722 int len = frag->size; 722 int len = skb_frag_size(frag);
723 723
724 addr = skb_frag_dma_map(priv->dev, frag, 0, len, DMA_TO_DEVICE); 724 addr = skb_frag_dma_map(priv->dev, frag, 0, len, DMA_TO_DEVICE);
725 ret = dma_mapping_error(priv->dev, addr); 725 ret = dma_mapping_error(priv->dev, addr);
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
index 2235dd55fab2..1545536ef769 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
@@ -245,7 +245,7 @@ static int hns_nic_maybe_stop_tso(
245 int frag_num; 245 int frag_num;
246 struct sk_buff *skb = *out_skb; 246 struct sk_buff *skb = *out_skb;
247 struct sk_buff *new_skb = NULL; 247 struct sk_buff *new_skb = NULL;
248 struct skb_frag_struct *frag; 248 skb_frag_t *frag;
249 249
250 size = skb_headlen(skb); 250 size = skb_headlen(skb);
251 buf_num = (size + BD_MAX_SEND_SIZE - 1) / BD_MAX_SEND_SIZE; 251 buf_num = (size + BD_MAX_SEND_SIZE - 1) / BD_MAX_SEND_SIZE;
@@ -309,7 +309,7 @@ netdev_tx_t hns_nic_net_xmit_hw(struct net_device *ndev,
309 struct hnae_ring *ring = ring_data->ring; 309 struct hnae_ring *ring = ring_data->ring;
310 struct device *dev = ring_to_dev(ring); 310 struct device *dev = ring_to_dev(ring);
311 struct netdev_queue *dev_queue; 311 struct netdev_queue *dev_queue;
312 struct skb_frag_struct *frag; 312 skb_frag_t *frag;
313 int buf_num; 313 int buf_num;
314 int seg_num; 314 int seg_num;
315 dma_addr_t dma; 315 dma_addr_t dma;
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
index 310afa708831..69f7ef810654 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
@@ -1033,7 +1033,7 @@ static int hns3_fill_desc(struct hns3_enet_ring *ring, void *priv,
1033 struct hns3_desc_cb *desc_cb = &ring->desc_cb[ring->next_to_use]; 1033 struct hns3_desc_cb *desc_cb = &ring->desc_cb[ring->next_to_use];
1034 struct hns3_desc *desc = &ring->desc[ring->next_to_use]; 1034 struct hns3_desc *desc = &ring->desc[ring->next_to_use];
1035 struct device *dev = ring_to_dev(ring); 1035 struct device *dev = ring_to_dev(ring);
1036 struct skb_frag_struct *frag; 1036 skb_frag_t *frag;
1037 unsigned int frag_buf_num; 1037 unsigned int frag_buf_num;
1038 int k, sizeoflast; 1038 int k, sizeoflast;
1039 dma_addr_t dma; 1039 dma_addr_t dma;
@@ -1086,7 +1086,7 @@ static int hns3_fill_desc(struct hns3_enet_ring *ring, void *priv,
1086 1086
1087 dma = dma_map_single(dev, skb->data, size, DMA_TO_DEVICE); 1087 dma = dma_map_single(dev, skb->data, size, DMA_TO_DEVICE);
1088 } else { 1088 } else {
1089 frag = (struct skb_frag_struct *)priv; 1089 frag = (skb_frag_t *)priv;
1090 dma = skb_frag_dma_map(dev, frag, 0, size, DMA_TO_DEVICE); 1090 dma = skb_frag_dma_map(dev, frag, 0, size, DMA_TO_DEVICE);
1091 } 1091 }
1092 1092
@@ -1159,7 +1159,7 @@ static int hns3_nic_bd_num(struct sk_buff *skb)
1159 bd_num = hns3_tx_bd_count(size); 1159 bd_num = hns3_tx_bd_count(size);
1160 1160
1161 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1161 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1162 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 1162 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1163 int frag_bd_num; 1163 int frag_bd_num;
1164 1164
1165 size = skb_frag_size(frag); 1165 size = skb_frag_size(frag);
@@ -1290,7 +1290,7 @@ netdev_tx_t hns3_nic_net_xmit(struct sk_buff *skb, struct net_device *netdev)
1290 &tx_ring_data(priv, skb->queue_mapping); 1290 &tx_ring_data(priv, skb->queue_mapping);
1291 struct hns3_enet_ring *ring = ring_data->ring; 1291 struct hns3_enet_ring *ring = ring_data->ring;
1292 struct netdev_queue *dev_queue; 1292 struct netdev_queue *dev_queue;
1293 struct skb_frag_struct *frag; 1293 skb_frag_t *frag;
1294 int next_to_use_head; 1294 int next_to_use_head;
1295 int buf_num; 1295 int buf_num;
1296 int seg_num; 1296 int seg_num;
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_tx.c b/drivers/net/ethernet/huawei/hinic/hinic_tx.c
index 9c78251f9c39..0e13d1c7e474 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_tx.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_tx.c
@@ -136,7 +136,7 @@ static int tx_map_skb(struct hinic_dev *nic_dev, struct sk_buff *skb,
136 struct hinic_hwdev *hwdev = nic_dev->hwdev; 136 struct hinic_hwdev *hwdev = nic_dev->hwdev;
137 struct hinic_hwif *hwif = hwdev->hwif; 137 struct hinic_hwif *hwif = hwdev->hwif;
138 struct pci_dev *pdev = hwif->pdev; 138 struct pci_dev *pdev = hwif->pdev;
139 struct skb_frag_struct *frag; 139 skb_frag_t *frag;
140 dma_addr_t dma_addr; 140 dma_addr_t dma_addr;
141 int i, j; 141 int i, j;
142 142
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index 395dde444483..9e43c9ace9c2 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -1549,7 +1549,7 @@ emac_start_xmit_sg(struct sk_buff *skb, struct net_device *ndev)
1549 ctrl); 1549 ctrl);
1550 /* skb fragments */ 1550 /* skb fragments */
1551 for (i = 0; i < nr_frags; ++i) { 1551 for (i = 0; i < nr_frags; ++i) {
1552 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 1552 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1553 len = skb_frag_size(frag); 1553 len = skb_frag_size(frag);
1554 1554
1555 if (unlikely(dev->tx_cnt + mal_tx_chunks(len) >= NUM_TX_BUFF)) 1555 if (unlikely(dev->tx_cnt + mal_tx_chunks(len) >= NUM_TX_BUFF))
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index f703fa58458e..6b6ba1c38235 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -2889,9 +2889,8 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
2889 } 2889 }
2890 2890
2891 for (f = 0; f < nr_frags; f++) { 2891 for (f = 0; f < nr_frags; f++) {
2892 const struct skb_frag_struct *frag; 2892 const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
2893 2893
2894 frag = &skb_shinfo(skb)->frags[f];
2895 len = skb_frag_size(frag); 2894 len = skb_frag_size(frag);
2896 offset = 0; 2895 offset = 0;
2897 2896
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index e4baa13b3cda..a0c001d6d9d2 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -5579,9 +5579,8 @@ static int e1000_tx_map(struct e1000_ring *tx_ring, struct sk_buff *skb,
5579 } 5579 }
5580 5580
5581 for (f = 0; f < nr_frags; f++) { 5581 for (f = 0; f < nr_frags; f++) {
5582 const struct skb_frag_struct *frag; 5582 const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
5583 5583
5584 frag = &skb_shinfo(skb)->frags[f];
5585 len = skb_frag_size(frag); 5584 len = skb_frag_size(frag);
5586 offset = 0; 5585 offset = 0;
5587 5586
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_main.c b/drivers/net/ethernet/intel/fm10k/fm10k_main.c
index 90270b4a1682..9ffff7886085 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_main.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_main.c
@@ -946,7 +946,7 @@ static void fm10k_tx_map(struct fm10k_ring *tx_ring,
946 struct sk_buff *skb = first->skb; 946 struct sk_buff *skb = first->skb;
947 struct fm10k_tx_buffer *tx_buffer; 947 struct fm10k_tx_buffer *tx_buffer;
948 struct fm10k_tx_desc *tx_desc; 948 struct fm10k_tx_desc *tx_desc;
949 struct skb_frag_struct *frag; 949 skb_frag_t *frag;
950 unsigned char *data; 950 unsigned char *data;
951 dma_addr_t dma; 951 dma_addr_t dma;
952 unsigned int data_len, size; 952 unsigned int data_len, size;
@@ -1074,7 +1074,8 @@ netdev_tx_t fm10k_xmit_frame_ring(struct sk_buff *skb,
1074 * otherwise try next time 1074 * otherwise try next time
1075 */ 1075 */
1076 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) 1076 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)
1077 count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); 1077 count += TXD_USE_COUNT(skb_frag_size(
1078 &skb_shinfo(skb)->frags[f]));
1078 1079
1079 if (fm10k_maybe_stop_tx(tx_ring, count + 3)) { 1080 if (fm10k_maybe_stop_tx(tx_ring, count + 3)) {
1080 tx_ring->tx_stats.tx_busy++; 1081 tx_ring->tx_stats.tx_busy++;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 2a2fe3ec7926..f162252f01b5 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -3262,7 +3262,7 @@ int __i40e_maybe_stop_tx(struct i40e_ring *tx_ring, int size)
3262 **/ 3262 **/
3263bool __i40e_chk_linearize(struct sk_buff *skb) 3263bool __i40e_chk_linearize(struct sk_buff *skb)
3264{ 3264{
3265 const struct skb_frag_struct *frag, *stale; 3265 const skb_frag_t *frag, *stale;
3266 int nr_frags, sum; 3266 int nr_frags, sum;
3267 3267
3268 /* no need to check if number of frags is less than 7 */ 3268 /* no need to check if number of frags is less than 7 */
@@ -3349,7 +3349,7 @@ static inline int i40e_tx_map(struct i40e_ring *tx_ring, struct sk_buff *skb,
3349{ 3349{
3350 unsigned int data_len = skb->data_len; 3350 unsigned int data_len = skb->data_len;
3351 unsigned int size = skb_headlen(skb); 3351 unsigned int size = skb_headlen(skb);
3352 struct skb_frag_struct *frag; 3352 skb_frag_t *frag;
3353 struct i40e_tx_buffer *tx_bi; 3353 struct i40e_tx_buffer *tx_bi;
3354 struct i40e_tx_desc *tx_desc; 3354 struct i40e_tx_desc *tx_desc;
3355 u16 i = tx_ring->next_to_use; 3355 u16 i = tx_ring->next_to_use;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.h b/drivers/net/ethernet/intel/i40e/i40e_txrx.h
index 100e92d2982f..36d37f31a287 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.h
@@ -521,7 +521,7 @@ static inline u32 i40e_get_head(struct i40e_ring *tx_ring)
521 **/ 521 **/
522static inline int i40e_xmit_descriptor_count(struct sk_buff *skb) 522static inline int i40e_xmit_descriptor_count(struct sk_buff *skb)
523{ 523{
524 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 524 const skb_frag_t *frag = &skb_shinfo(skb)->frags[0];
525 unsigned int nr_frags = skb_shinfo(skb)->nr_frags; 525 unsigned int nr_frags = skb_shinfo(skb)->nr_frags;
526 int count = 0, size = skb_headlen(skb); 526 int count = 0, size = skb_headlen(skb);
527 527
diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.c b/drivers/net/ethernet/intel/iavf/iavf_txrx.c
index 0cca1b589b56..fae7cd1c618a 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_txrx.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.c
@@ -2161,7 +2161,7 @@ static void iavf_create_tx_ctx(struct iavf_ring *tx_ring,
2161 **/ 2161 **/
2162bool __iavf_chk_linearize(struct sk_buff *skb) 2162bool __iavf_chk_linearize(struct sk_buff *skb)
2163{ 2163{
2164 const struct skb_frag_struct *frag, *stale; 2164 const skb_frag_t *frag, *stale;
2165 int nr_frags, sum; 2165 int nr_frags, sum;
2166 2166
2167 /* no need to check if number of frags is less than 7 */ 2167 /* no need to check if number of frags is less than 7 */
@@ -2269,7 +2269,7 @@ static inline void iavf_tx_map(struct iavf_ring *tx_ring, struct sk_buff *skb,
2269{ 2269{
2270 unsigned int data_len = skb->data_len; 2270 unsigned int data_len = skb->data_len;
2271 unsigned int size = skb_headlen(skb); 2271 unsigned int size = skb_headlen(skb);
2272 struct skb_frag_struct *frag; 2272 skb_frag_t *frag;
2273 struct iavf_tx_buffer *tx_bi; 2273 struct iavf_tx_buffer *tx_bi;
2274 struct iavf_tx_desc *tx_desc; 2274 struct iavf_tx_desc *tx_desc;
2275 u16 i = tx_ring->next_to_use; 2275 u16 i = tx_ring->next_to_use;
diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.h b/drivers/net/ethernet/intel/iavf/iavf_txrx.h
index 71e7d090f8db..dd3348f9da9d 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_txrx.h
+++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.h
@@ -462,7 +462,7 @@ bool __iavf_chk_linearize(struct sk_buff *skb);
462 **/ 462 **/
463static inline int iavf_xmit_descriptor_count(struct sk_buff *skb) 463static inline int iavf_xmit_descriptor_count(struct sk_buff *skb)
464{ 464{
465 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 465 const skb_frag_t *frag = &skb_shinfo(skb)->frags[0];
466 unsigned int nr_frags = skb_shinfo(skb)->nr_frags; 466 unsigned int nr_frags = skb_shinfo(skb)->nr_frags;
467 int count = 0, size = skb_headlen(skb); 467 int count = 0, size = skb_headlen(skb);
468 468
diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c
index 3c83230434b6..dd7392f293bf 100644
--- a/drivers/net/ethernet/intel/ice/ice_txrx.c
+++ b/drivers/net/ethernet/intel/ice/ice_txrx.c
@@ -1521,7 +1521,7 @@ ice_tx_map(struct ice_ring *tx_ring, struct ice_tx_buf *first,
1521{ 1521{
1522 u64 td_offset, td_tag, td_cmd; 1522 u64 td_offset, td_tag, td_cmd;
1523 u16 i = tx_ring->next_to_use; 1523 u16 i = tx_ring->next_to_use;
1524 struct skb_frag_struct *frag; 1524 skb_frag_t *frag;
1525 unsigned int data_len, size; 1525 unsigned int data_len, size;
1526 struct ice_tx_desc *tx_desc; 1526 struct ice_tx_desc *tx_desc;
1527 struct ice_tx_buf *tx_buf; 1527 struct ice_tx_buf *tx_buf;
@@ -1923,7 +1923,7 @@ static unsigned int ice_txd_use_count(unsigned int size)
1923 */ 1923 */
1924static unsigned int ice_xmit_desc_count(struct sk_buff *skb) 1924static unsigned int ice_xmit_desc_count(struct sk_buff *skb)
1925{ 1925{
1926 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 1926 const skb_frag_t *frag = &skb_shinfo(skb)->frags[0];
1927 unsigned int nr_frags = skb_shinfo(skb)->nr_frags; 1927 unsigned int nr_frags = skb_shinfo(skb)->nr_frags;
1928 unsigned int count = 0, size = skb_headlen(skb); 1928 unsigned int count = 0, size = skb_headlen(skb);
1929 1929
@@ -1954,7 +1954,7 @@ static unsigned int ice_xmit_desc_count(struct sk_buff *skb)
1954 */ 1954 */
1955static bool __ice_chk_linearize(struct sk_buff *skb) 1955static bool __ice_chk_linearize(struct sk_buff *skb)
1956{ 1956{
1957 const struct skb_frag_struct *frag, *stale; 1957 const skb_frag_t *frag, *stale;
1958 int nr_frags, sum; 1958 int nr_frags, sum;
1959 1959
1960 /* no need to check if number of frags is less than 7 */ 1960 /* no need to check if number of frags is less than 7 */
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index b4df3e319467..749645d7f9b7 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -5918,7 +5918,7 @@ static int igb_tx_map(struct igb_ring *tx_ring,
5918 struct sk_buff *skb = first->skb; 5918 struct sk_buff *skb = first->skb;
5919 struct igb_tx_buffer *tx_buffer; 5919 struct igb_tx_buffer *tx_buffer;
5920 union e1000_adv_tx_desc *tx_desc; 5920 union e1000_adv_tx_desc *tx_desc;
5921 struct skb_frag_struct *frag; 5921 skb_frag_t *frag;
5922 dma_addr_t dma; 5922 dma_addr_t dma;
5923 unsigned int data_len, size; 5923 unsigned int data_len, size;
5924 u32 tx_flags = first->tx_flags; 5924 u32 tx_flags = first->tx_flags;
@@ -6074,7 +6074,8 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,
6074 * otherwise try next time 6074 * otherwise try next time
6075 */ 6075 */
6076 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) 6076 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)
6077 count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); 6077 count += TXD_USE_COUNT(skb_frag_size(
6078 &skb_shinfo(skb)->frags[f]));
6078 6079
6079 if (igb_maybe_stop_tx(tx_ring, count + 3)) { 6080 if (igb_maybe_stop_tx(tx_ring, count + 3)) {
6080 /* this is a hard error */ 6081 /* this is a hard error */
diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index 34cd30d7162f..0f2b68f4bb0f 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -2174,7 +2174,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
2174 goto dma_error; 2174 goto dma_error;
2175 2175
2176 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { 2176 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
2177 const struct skb_frag_struct *frag; 2177 const skb_frag_t *frag;
2178 2178
2179 count++; 2179 count++;
2180 i++; 2180 i++;
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index aa9323e55406..9ffe71424ece 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -861,7 +861,7 @@ static int igc_tx_map(struct igc_ring *tx_ring,
861 struct igc_tx_buffer *tx_buffer; 861 struct igc_tx_buffer *tx_buffer;
862 union igc_adv_tx_desc *tx_desc; 862 union igc_adv_tx_desc *tx_desc;
863 u32 tx_flags = first->tx_flags; 863 u32 tx_flags = first->tx_flags;
864 struct skb_frag_struct *frag; 864 skb_frag_t *frag;
865 u16 i = tx_ring->next_to_use; 865 u16 i = tx_ring->next_to_use;
866 unsigned int data_len, size; 866 unsigned int data_len, size;
867 dma_addr_t dma; 867 dma_addr_t dma;
@@ -1015,7 +1015,8 @@ static netdev_tx_t igc_xmit_frame_ring(struct sk_buff *skb,
1015 * otherwise try next time 1015 * otherwise try next time
1016 */ 1016 */
1017 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) 1017 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)
1018 count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); 1018 count += TXD_USE_COUNT(skb_frag_size(
1019 &skb_shinfo(skb)->frags[f]));
1019 1020
1020 if (igc_maybe_stop_tx(tx_ring, count + 3)) { 1021 if (igc_maybe_stop_tx(tx_ring, count + 3)) {
1021 /* this is a hard error */ 1022 /* this is a hard error */
diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
index e5ac2d3fd816..0940a0da16f2 100644
--- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c
+++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
@@ -1331,9 +1331,7 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
1331 } 1331 }
1332 1332
1333 for (f = 0; f < nr_frags; f++) { 1333 for (f = 0; f < nr_frags; f++) {
1334 const struct skb_frag_struct *frag; 1334 const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
1335
1336 frag = &skb_shinfo(skb)->frags[f];
1337 len = skb_frag_size(frag); 1335 len = skb_frag_size(frag);
1338 offset = 0; 1336 offset = 0;
1339 1337
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index cbaf712d6529..e12d23d1fa64 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1785,7 +1785,7 @@ static bool ixgbe_is_non_eop(struct ixgbe_ring *rx_ring,
1785static void ixgbe_pull_tail(struct ixgbe_ring *rx_ring, 1785static void ixgbe_pull_tail(struct ixgbe_ring *rx_ring,
1786 struct sk_buff *skb) 1786 struct sk_buff *skb)
1787{ 1787{
1788 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 1788 skb_frag_t *frag = &skb_shinfo(skb)->frags[0];
1789 unsigned char *va; 1789 unsigned char *va;
1790 unsigned int pull_len; 1790 unsigned int pull_len;
1791 1791
@@ -1840,7 +1840,7 @@ static void ixgbe_dma_sync_frag(struct ixgbe_ring *rx_ring,
1840 skb_headlen(skb), 1840 skb_headlen(skb),
1841 DMA_FROM_DEVICE); 1841 DMA_FROM_DEVICE);
1842 } else { 1842 } else {
1843 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0]; 1843 skb_frag_t *frag = &skb_shinfo(skb)->frags[0];
1844 1844
1845 dma_sync_single_range_for_cpu(rx_ring->dev, 1845 dma_sync_single_range_for_cpu(rx_ring->dev,
1846 IXGBE_CB(skb)->dma, 1846 IXGBE_CB(skb)->dma,
@@ -8186,7 +8186,7 @@ static int ixgbe_tx_map(struct ixgbe_ring *tx_ring,
8186 struct sk_buff *skb = first->skb; 8186 struct sk_buff *skb = first->skb;
8187 struct ixgbe_tx_buffer *tx_buffer; 8187 struct ixgbe_tx_buffer *tx_buffer;
8188 union ixgbe_adv_tx_desc *tx_desc; 8188 union ixgbe_adv_tx_desc *tx_desc;
8189 struct skb_frag_struct *frag; 8189 skb_frag_t *frag;
8190 dma_addr_t dma; 8190 dma_addr_t dma;
8191 unsigned int data_len, size; 8191 unsigned int data_len, size;
8192 u32 tx_flags = first->tx_flags; 8192 u32 tx_flags = first->tx_flags;
@@ -8605,7 +8605,8 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb,
8605 * otherwise try next time 8605 * otherwise try next time
8606 */ 8606 */
8607 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) 8607 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)
8608 count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); 8608 count += TXD_USE_COUNT(skb_frag_size(
8609 &skb_shinfo(skb)->frags[f]));
8609 8610
8610 if (ixgbe_maybe_stop_tx(tx_ring, count + 3)) { 8611 if (ixgbe_maybe_stop_tx(tx_ring, count + 3)) {
8611 tx_ring->tx_stats.tx_busy++; 8612 tx_ring->tx_stats.tx_busy++;
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index d2b41f9f87f8..bdfccaf38edd 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -3949,7 +3949,7 @@ static void ixgbevf_tx_map(struct ixgbevf_ring *tx_ring,
3949 struct sk_buff *skb = first->skb; 3949 struct sk_buff *skb = first->skb;
3950 struct ixgbevf_tx_buffer *tx_buffer; 3950 struct ixgbevf_tx_buffer *tx_buffer;
3951 union ixgbe_adv_tx_desc *tx_desc; 3951 union ixgbe_adv_tx_desc *tx_desc;
3952 struct skb_frag_struct *frag; 3952 skb_frag_t *frag;
3953 dma_addr_t dma; 3953 dma_addr_t dma;
3954 unsigned int data_len, size; 3954 unsigned int data_len, size;
3955 u32 tx_flags = first->tx_flags; 3955 u32 tx_flags = first->tx_flags;
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
index 0b668357db4d..ff6393fd64ac 100644
--- a/drivers/net/ethernet/jme.c
+++ b/drivers/net/ethernet/jme.c
@@ -2030,12 +2030,12 @@ jme_map_tx_skb(struct jme_adapter *jme, struct sk_buff *skb, int idx)
2030 bool hidma = jme->dev->features & NETIF_F_HIGHDMA; 2030 bool hidma = jme->dev->features & NETIF_F_HIGHDMA;
2031 int i, nr_frags = skb_shinfo(skb)->nr_frags; 2031 int i, nr_frags = skb_shinfo(skb)->nr_frags;
2032 int mask = jme->tx_ring_mask; 2032 int mask = jme->tx_ring_mask;
2033 const struct skb_frag_struct *frag;
2034 u32 len; 2033 u32 len;
2035 int ret = 0; 2034 int ret = 0;
2036 2035
2037 for (i = 0 ; i < nr_frags ; ++i) { 2036 for (i = 0 ; i < nr_frags ; ++i) {
2038 frag = &skb_shinfo(skb)->frags[i]; 2037 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
2038
2039 ctxdesc = txdesc + ((idx + i + 2) & (mask)); 2039 ctxdesc = txdesc + ((idx + i + 2) & (mask));
2040 ctxbi = txbi + ((idx + i + 2) & (mask)); 2040 ctxbi = txbi + ((idx + i + 2) & (mask));
2041 2041
@@ -2046,7 +2046,6 @@ jme_map_tx_skb(struct jme_adapter *jme, struct sk_buff *skb, int idx)
2046 jme_drop_tx_map(jme, idx, i); 2046 jme_drop_tx_map(jme, idx, i);
2047 goto out; 2047 goto out;
2048 } 2048 }
2049
2050 } 2049 }
2051 2050
2052 len = skb_is_nonlinear(skb) ? skb_headlen(skb) : skb->len; 2051 len = skb_is_nonlinear(skb) ? skb_headlen(skb) : skb->len;
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 895bfed26a8a..15cc678f5e5b 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -2350,10 +2350,10 @@ static int mvneta_tx_frag_process(struct mvneta_port *pp, struct sk_buff *skb,
2350 2350
2351 for (i = 0; i < nr_frags; i++) { 2351 for (i = 0; i < nr_frags; i++) {
2352 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 2352 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
2353 void *addr = page_address(frag->page.p) + frag->page_offset; 2353 void *addr = skb_frag_address(frag);
2354 2354
2355 tx_desc = mvneta_txq_next_desc_get(txq); 2355 tx_desc = mvneta_txq_next_desc_get(txq);
2356 tx_desc->data_size = frag->size; 2356 tx_desc->data_size = skb_frag_size(frag);
2357 2357
2358 tx_desc->buf_phys_addr = 2358 tx_desc->buf_phys_addr =
2359 dma_map_single(pp->dev->dev.parent, addr, 2359 dma_map_single(pp->dev->dev.parent, addr,
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index c51f1d5b550b..937e4b928b94 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -2911,14 +2911,15 @@ static int mvpp2_tx_frag_process(struct mvpp2_port *port, struct sk_buff *skb,
2911 2911
2912 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 2912 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
2913 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 2913 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
2914 void *addr = page_address(frag->page.p) + frag->page_offset; 2914 void *addr = skb_frag_address(frag);
2915 2915
2916 tx_desc = mvpp2_txq_next_desc_get(aggr_txq); 2916 tx_desc = mvpp2_txq_next_desc_get(aggr_txq);
2917 mvpp2_txdesc_txq_set(port, tx_desc, txq->id); 2917 mvpp2_txdesc_txq_set(port, tx_desc, txq->id);
2918 mvpp2_txdesc_size_set(port, tx_desc, frag->size); 2918 mvpp2_txdesc_size_set(port, tx_desc, skb_frag_size(frag));
2919 2919
2920 buf_dma_addr = dma_map_single(port->dev->dev.parent, addr, 2920 buf_dma_addr = dma_map_single(port->dev->dev.parent, addr,
2921 frag->size, DMA_TO_DEVICE); 2921 skb_frag_size(frag),
2922 DMA_TO_DEVICE);
2922 if (dma_mapping_error(port->dev->dev.parent, buf_dma_addr)) { 2923 if (dma_mapping_error(port->dev->dev.parent, buf_dma_addr)) {
2923 mvpp2_txq_desc_put(txq); 2924 mvpp2_txq_desc_put(txq);
2924 goto cleanup; 2925 goto cleanup;
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index c39d7f4ab1d4..00991df44ed6 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -696,7 +696,7 @@ static int mtk_tx_map(struct sk_buff *skb, struct net_device *dev,
696 txd = itxd; 696 txd = itxd;
697 nr_frags = skb_shinfo(skb)->nr_frags; 697 nr_frags = skb_shinfo(skb)->nr_frags;
698 for (i = 0; i < nr_frags; i++) { 698 for (i = 0; i < nr_frags; i++) {
699 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 699 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
700 unsigned int offset = 0; 700 unsigned int offset = 0;
701 int frag_size = skb_frag_size(frag); 701 int frag_size = skb_frag_size(frag);
702 702
@@ -781,7 +781,7 @@ err_dma:
781static inline int mtk_cal_txd_req(struct sk_buff *skb) 781static inline int mtk_cal_txd_req(struct sk_buff *skb)
782{ 782{
783 int i, nfrags; 783 int i, nfrags;
784 struct skb_frag_struct *frag; 784 skb_frag_t *frag;
785 785
786 nfrags = 1; 786 nfrags = 1;
787 if (skb_is_gso(skb)) { 787 if (skb_is_gso(skb)) {
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
index 36a92b19e613..4d5ca302c067 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
@@ -772,9 +772,7 @@ static bool mlx4_en_build_dma_wqe(struct mlx4_en_priv *priv,
772 772
773 /* Map fragments if any */ 773 /* Map fragments if any */
774 for (i_frag = shinfo->nr_frags - 1; i_frag >= 0; i_frag--) { 774 for (i_frag = shinfo->nr_frags - 1; i_frag >= 0; i_frag--) {
775 const struct skb_frag_struct *frag; 775 const skb_frag_t *frag = &shinfo->frags[i_frag];
776
777 frag = &shinfo->frags[i_frag];
778 byte_count = skb_frag_size(frag); 776 byte_count = skb_frag_size(frag);
779 dma = skb_frag_dma_map(ddev, frag, 777 dma = skb_frag_dma_map(ddev, frag,
780 0, byte_count, 778 0, byte_count,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
index 600e92cb629a..acf25cc38fa1 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
@@ -210,7 +210,7 @@ mlx5e_txwqe_build_dsegs(struct mlx5e_txqsq *sq, struct sk_buff *skb,
210 } 210 }
211 211
212 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 212 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
213 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 213 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
214 int fsz = skb_frag_size(frag); 214 int fsz = skb_frag_size(frag);
215 215
216 dma_addr = skb_frag_dma_map(sq->pdev, frag, 0, fsz, 216 dma_addr = skb_frag_dma_map(sq->pdev, frag, 0, fsz,
diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c
index 13e6bf13ac4d..15a8be6bad27 100644
--- a/drivers/net/ethernet/microchip/lan743x_main.c
+++ b/drivers/net/ethernet/microchip/lan743x_main.c
@@ -1434,7 +1434,7 @@ static void lan743x_tx_frame_add_lso(struct lan743x_tx *tx,
1434} 1434}
1435 1435
1436static int lan743x_tx_frame_add_fragment(struct lan743x_tx *tx, 1436static int lan743x_tx_frame_add_fragment(struct lan743x_tx *tx,
1437 const struct skb_frag_struct *fragment, 1437 const skb_frag_t *fragment,
1438 unsigned int frame_length) 1438 unsigned int frame_length)
1439{ 1439{
1440 /* called only from within lan743x_tx_xmit_frame 1440 /* called only from within lan743x_tx_xmit_frame
@@ -1607,9 +1607,8 @@ static netdev_tx_t lan743x_tx_xmit_frame(struct lan743x_tx *tx,
1607 goto finish; 1607 goto finish;
1608 1608
1609 for (j = 0; j < nr_frags; j++) { 1609 for (j = 0; j < nr_frags; j++) {
1610 const struct skb_frag_struct *frag; 1610 const skb_frag_t *frag = &(skb_shinfo(skb)->frags[j]);
1611 1611
1612 frag = &(skb_shinfo(skb)->frags[j]);
1613 if (lan743x_tx_frame_add_fragment(tx, frag, frame_length)) { 1612 if (lan743x_tx_frame_add_fragment(tx, frag, frame_length)) {
1614 /* upon error no need to call 1613 /* upon error no need to call
1615 * lan743x_tx_frame_end 1614 * lan743x_tx_frame_end
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
index d8b7fba96d58..9ead6ecb7586 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -1286,7 +1286,7 @@ myri10ge_vlan_rx(struct net_device *dev, void *addr, struct sk_buff *skb)
1286{ 1286{
1287 u8 *va; 1287 u8 *va;
1288 struct vlan_ethhdr *veh; 1288 struct vlan_ethhdr *veh;
1289 struct skb_frag_struct *frag; 1289 skb_frag_t *frag;
1290 __wsum vsum; 1290 __wsum vsum;
1291 1291
1292 va = addr; 1292 va = addr;
@@ -1318,7 +1318,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum)
1318{ 1318{
1319 struct myri10ge_priv *mgp = ss->mgp; 1319 struct myri10ge_priv *mgp = ss->mgp;
1320 struct sk_buff *skb; 1320 struct sk_buff *skb;
1321 struct skb_frag_struct *rx_frags; 1321 skb_frag_t *rx_frags;
1322 struct myri10ge_rx_buf *rx; 1322 struct myri10ge_rx_buf *rx;
1323 int i, idx, remainder, bytes; 1323 int i, idx, remainder, bytes;
1324 struct pci_dev *pdev = mgp->pdev; 1324 struct pci_dev *pdev = mgp->pdev;
@@ -1351,7 +1351,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum)
1351 return 0; 1351 return 0;
1352 } 1352 }
1353 rx_frags = skb_shinfo(skb)->frags; 1353 rx_frags = skb_shinfo(skb)->frags;
1354 /* Fill skb_frag_struct(s) with data from our receive */ 1354 /* Fill skb_frag_t(s) with data from our receive */
1355 for (i = 0, remainder = len; remainder > 0; i++) { 1355 for (i = 0, remainder = len; remainder > 0; i++) {
1356 myri10ge_unmap_rx_page(pdev, &rx->info[idx], bytes); 1356 myri10ge_unmap_rx_page(pdev, &rx->info[idx], bytes);
1357 skb_fill_page_desc(skb, i, rx->info[idx].page, 1357 skb_fill_page_desc(skb, i, rx->info[idx].page,
@@ -1365,7 +1365,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum)
1365 1365
1366 /* remove padding */ 1366 /* remove padding */
1367 rx_frags[0].page_offset += MXGEFW_PAD; 1367 rx_frags[0].page_offset += MXGEFW_PAD;
1368 rx_frags[0].size -= MXGEFW_PAD; 1368 skb_frag_size_sub(&rx_frags[0], MXGEFW_PAD);
1369 len -= MXGEFW_PAD; 1369 len -= MXGEFW_PAD;
1370 1370
1371 skb->len = len; 1371 skb->len = len;
@@ -2628,7 +2628,7 @@ static netdev_tx_t myri10ge_xmit(struct sk_buff *skb,
2628 struct myri10ge_slice_state *ss; 2628 struct myri10ge_slice_state *ss;
2629 struct mcp_kreq_ether_send *req; 2629 struct mcp_kreq_ether_send *req;
2630 struct myri10ge_tx_buf *tx; 2630 struct myri10ge_tx_buf *tx;
2631 struct skb_frag_struct *frag; 2631 skb_frag_t *frag;
2632 struct netdev_queue *netdev_queue; 2632 struct netdev_queue *netdev_queue;
2633 dma_addr_t bus; 2633 dma_addr_t bus;
2634 u32 low; 2634 u32 low;
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 9903805717da..6f97b554f7da 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -975,7 +975,7 @@ static int nfp_net_prep_tx_meta(struct sk_buff *skb, u64 tls_handle)
975static int nfp_net_tx(struct sk_buff *skb, struct net_device *netdev) 975static int nfp_net_tx(struct sk_buff *skb, struct net_device *netdev)
976{ 976{
977 struct nfp_net *nn = netdev_priv(netdev); 977 struct nfp_net *nn = netdev_priv(netdev);
978 const struct skb_frag_struct *frag; 978 const skb_frag_t *frag;
979 int f, nr_frags, wr_idx, md_bytes; 979 int f, nr_frags, wr_idx, md_bytes;
980 struct nfp_net_tx_ring *tx_ring; 980 struct nfp_net_tx_ring *tx_ring;
981 struct nfp_net_r_vector *r_vec; 981 struct nfp_net_r_vector *r_vec;
@@ -1155,7 +1155,7 @@ static void nfp_net_tx_complete(struct nfp_net_tx_ring *tx_ring, int budget)
1155 todo = D_IDX(tx_ring, qcp_rd_p - tx_ring->qcp_rd_p); 1155 todo = D_IDX(tx_ring, qcp_rd_p - tx_ring->qcp_rd_p);
1156 1156
1157 while (todo--) { 1157 while (todo--) {
1158 const struct skb_frag_struct *frag; 1158 const skb_frag_t *frag;
1159 struct nfp_net_tx_buf *tx_buf; 1159 struct nfp_net_tx_buf *tx_buf;
1160 struct sk_buff *skb; 1160 struct sk_buff *skb;
1161 int fidx, nr_frags; 1161 int fidx, nr_frags;
@@ -1270,7 +1270,7 @@ static bool nfp_net_xdp_complete(struct nfp_net_tx_ring *tx_ring)
1270static void 1270static void
1271nfp_net_tx_ring_reset(struct nfp_net_dp *dp, struct nfp_net_tx_ring *tx_ring) 1271nfp_net_tx_ring_reset(struct nfp_net_dp *dp, struct nfp_net_tx_ring *tx_ring)
1272{ 1272{
1273 const struct skb_frag_struct *frag; 1273 const skb_frag_t *frag;
1274 struct netdev_queue *nd_q; 1274 struct netdev_queue *nd_q;
1275 1275
1276 while (!tx_ring->is_xdp && tx_ring->rd_p != tx_ring->wr_p) { 1276 while (!tx_ring->is_xdp && tx_ring->rd_p != tx_ring->wr_p) {
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index 58e2eaf77014..c692a41e4548 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -1980,7 +1980,7 @@ netxen_map_tx_skb(struct pci_dev *pdev,
1980 struct sk_buff *skb, struct netxen_cmd_buffer *pbuf) 1980 struct sk_buff *skb, struct netxen_cmd_buffer *pbuf)
1981{ 1981{
1982 struct netxen_skb_frag *nf; 1982 struct netxen_skb_frag *nf;
1983 struct skb_frag_struct *frag; 1983 skb_frag_t *frag;
1984 int i, nr_frags; 1984 int i, nr_frags;
1985 dma_addr_t map; 1985 dma_addr_t map;
1986 1986
@@ -2043,7 +2043,7 @@ netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
2043 struct pci_dev *pdev; 2043 struct pci_dev *pdev;
2044 int i, k; 2044 int i, k;
2045 int delta = 0; 2045 int delta = 0;
2046 struct skb_frag_struct *frag; 2046 skb_frag_t *frag;
2047 2047
2048 u32 producer; 2048 u32 producer;
2049 int frag_count; 2049 int frag_count;
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
index 14f26bf3b388..ac61f614de37 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
@@ -581,7 +581,7 @@ static int qlcnic_map_tx_skb(struct pci_dev *pdev, struct sk_buff *skb,
581 struct qlcnic_cmd_buffer *pbuf) 581 struct qlcnic_cmd_buffer *pbuf)
582{ 582{
583 struct qlcnic_skb_frag *nf; 583 struct qlcnic_skb_frag *nf;
584 struct skb_frag_struct *frag; 584 skb_frag_t *frag;
585 int i, nr_frags; 585 int i, nr_frags;
586 dma_addr_t map; 586 dma_addr_t map;
587 587
diff --git a/drivers/net/ethernet/qualcomm/emac/emac-mac.c b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
index 707665b62eb7..bebe38d74d66 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac-mac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
@@ -1385,15 +1385,13 @@ static void emac_tx_fill_tpd(struct emac_adapter *adpt,
1385 } 1385 }
1386 1386
1387 for (i = 0; i < nr_frags; i++) { 1387 for (i = 0; i < nr_frags; i++) {
1388 struct skb_frag_struct *frag; 1388 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1389
1390 frag = &skb_shinfo(skb)->frags[i];
1391 1389
1392 tpbuf = GET_TPD_BUFFER(tx_q, tx_q->tpd.produce_idx); 1390 tpbuf = GET_TPD_BUFFER(tx_q, tx_q->tpd.produce_idx);
1393 tpbuf->length = frag->size; 1391 tpbuf->length = skb_frag_size(frag);
1394 tpbuf->dma_addr = dma_map_page(adpt->netdev->dev.parent, 1392 tpbuf->dma_addr = skb_frag_dma_map(adpt->netdev->dev.parent,
1395 frag->page.p, frag->page_offset, 1393 frag, 0, tpbuf->length,
1396 tpbuf->length, DMA_TO_DEVICE); 1394 DMA_TO_DEVICE);
1397 ret = dma_mapping_error(adpt->netdev->dev.parent, 1395 ret = dma_mapping_error(adpt->netdev->dev.parent,
1398 tpbuf->dma_addr); 1396 tpbuf->dma_addr);
1399 if (ret) 1397 if (ret)
diff --git a/drivers/net/ethernet/synopsys/dwc-xlgmac-desc.c b/drivers/net/ethernet/synopsys/dwc-xlgmac-desc.c
index 031cf9c3435a..8c4195a9a2cc 100644
--- a/drivers/net/ethernet/synopsys/dwc-xlgmac-desc.c
+++ b/drivers/net/ethernet/synopsys/dwc-xlgmac-desc.c
@@ -503,7 +503,7 @@ static int xlgmac_map_tx_skb(struct xlgmac_channel *channel,
503 struct xlgmac_desc_data *desc_data; 503 struct xlgmac_desc_data *desc_data;
504 unsigned int offset, datalen, len; 504 unsigned int offset, datalen, len;
505 struct xlgmac_pkt_info *pkt_info; 505 struct xlgmac_pkt_info *pkt_info;
506 struct skb_frag_struct *frag; 506 skb_frag_t *frag;
507 unsigned int tso, vlan; 507 unsigned int tso, vlan;
508 dma_addr_t skb_dma; 508 dma_addr_t skb_dma;
509 unsigned int i; 509 unsigned int i;
diff --git a/drivers/net/ethernet/synopsys/dwc-xlgmac-net.c b/drivers/net/ethernet/synopsys/dwc-xlgmac-net.c
index 1f8e9601592a..a1f5a1e61040 100644
--- a/drivers/net/ethernet/synopsys/dwc-xlgmac-net.c
+++ b/drivers/net/ethernet/synopsys/dwc-xlgmac-net.c
@@ -116,7 +116,7 @@ static void xlgmac_prep_tx_pkt(struct xlgmac_pdata *pdata,
116 struct sk_buff *skb, 116 struct sk_buff *skb,
117 struct xlgmac_pkt_info *pkt_info) 117 struct xlgmac_pkt_info *pkt_info)
118{ 118{
119 struct skb_frag_struct *frag; 119 skb_frag_t *frag;
120 unsigned int context_desc; 120 unsigned int context_desc;
121 unsigned int len; 121 unsigned int len;
122 unsigned int i; 122 unsigned int i;
diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
index 5d6960fe3309..0f8a924fc60c 100644
--- a/drivers/net/ethernet/tehuti/tehuti.c
+++ b/drivers/net/ethernet/tehuti/tehuti.c
@@ -1501,7 +1501,7 @@ bdx_tx_map_skb(struct bdx_priv *priv, struct sk_buff *skb,
1501 bdx_tx_db_inc_wptr(db); 1501 bdx_tx_db_inc_wptr(db);
1502 1502
1503 for (i = 0; i < nr_frags; i++) { 1503 for (i = 0; i < nr_frags; i++) {
1504 const struct skb_frag_struct *frag; 1504 const skb_frag_t *frag;
1505 1505
1506 frag = &skb_shinfo(skb)->frags[i]; 1506 frag = &skb_shinfo(skb)->frags[i];
1507 db->wptr->len = skb_frag_size(frag); 1507 db->wptr->len = skb_frag_size(frag);
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 72514c46b478..ace7ffaf3913 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1324,10 +1324,10 @@ static int build_dma_sg(const struct sk_buff *skb, struct urb *urb)
1324 total_len += skb_headlen(skb); 1324 total_len += skb_headlen(skb);
1325 1325
1326 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1326 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1327 struct skb_frag_struct *f = &skb_shinfo(skb)->frags[i]; 1327 skb_frag_t *f = &skb_shinfo(skb)->frags[i];
1328 1328
1329 total_len += skb_frag_size(f); 1329 total_len += skb_frag_size(f);
1330 sg_set_page(&urb->sg[i + s], f->page.p, f->size, 1330 sg_set_page(&urb->sg[i + s], skb_frag_page(f), skb_frag_size(f),
1331 f->page_offset); 1331 f->page_offset);
1332 } 1332 }
1333 urb->transfer_buffer_length = total_len; 1333 urb->transfer_buffer_length = total_len;
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 2a1918f25e47..03feaeae89cd 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -657,8 +657,7 @@ static void
657vmxnet3_append_frag(struct sk_buff *skb, struct Vmxnet3_RxCompDesc *rcd, 657vmxnet3_append_frag(struct sk_buff *skb, struct Vmxnet3_RxCompDesc *rcd,
658 struct vmxnet3_rx_buf_info *rbi) 658 struct vmxnet3_rx_buf_info *rbi)
659{ 659{
660 struct skb_frag_struct *frag = skb_shinfo(skb)->frags + 660 skb_frag_t *frag = skb_shinfo(skb)->frags + skb_shinfo(skb)->nr_frags;
661 skb_shinfo(skb)->nr_frags;
662 661
663 BUG_ON(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS); 662 BUG_ON(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS);
664 663
@@ -755,7 +754,7 @@ vmxnet3_map_pkt(struct sk_buff *skb, struct vmxnet3_tx_ctx *ctx,
755 } 754 }
756 755
757 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 756 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
758 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 757 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
759 u32 buf_size; 758 u32 buf_size;
760 759
761 buf_offset = 0; 760 buf_offset = 0;
@@ -956,7 +955,7 @@ static int txd_estimate(const struct sk_buff *skb)
956 int i; 955 int i;
957 956
958 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 957 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
959 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i]; 958 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
960 959
961 count += VMXNET3_TXD_NEEDED(skb_frag_size(frag)); 960 count += VMXNET3_TXD_NEEDED(skb_frag_size(frag));
962 } 961 }
diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c
index 74834131cf7c..fd3b2b3d1b5c 100644
--- a/drivers/net/wireless/ath/wil6210/debugfs.c
+++ b/drivers/net/wireless/ath/wil6210/debugfs.c
@@ -1052,8 +1052,7 @@ static void wil_seq_print_skb(struct seq_file *s, struct sk_buff *skb)
1052 if (nr_frags) { 1052 if (nr_frags) {
1053 seq_printf(s, " nr_frags = %d\n", nr_frags); 1053 seq_printf(s, " nr_frags = %d\n", nr_frags);
1054 for (i = 0; i < nr_frags; i++) { 1054 for (i = 0; i < nr_frags; i++) {
1055 const struct skb_frag_struct *frag = 1055 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1056 &skb_shinfo(skb)->frags[i];
1057 1056
1058 len = skb_frag_size(frag); 1057 len = skb_frag_size(frag);
1059 p = skb_frag_address_safe(frag); 1058 p = skb_frag_address_safe(frag);
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
index eae00aafaa88..8b01ef8269da 100644
--- a/drivers/net/wireless/ath/wil6210/txrx.c
+++ b/drivers/net/wireless/ath/wil6210/txrx.c
@@ -1657,7 +1657,7 @@ static int __wil_tx_vring_tso(struct wil6210_priv *wil, struct wil6210_vif *vif,
1657 len); 1657 len);
1658 } else { 1658 } else {
1659 frag = &skb_shinfo(skb)->frags[f]; 1659 frag = &skb_shinfo(skb)->frags[f];
1660 len = frag->size; 1660 len = skb_frag_size(frag);
1661 wil_dbg_txrx(wil, "TSO: frag[%d]: len %u\n", f, len); 1661 wil_dbg_txrx(wil, "TSO: frag[%d]: len %u\n", f, len);
1662 } 1662 }
1663 1663
@@ -1678,8 +1678,8 @@ static int __wil_tx_vring_tso(struct wil6210_priv *wil, struct wil6210_vif *vif,
1678 1678
1679 if (!headlen) { 1679 if (!headlen) {
1680 pa = skb_frag_dma_map(dev, frag, 1680 pa = skb_frag_dma_map(dev, frag,
1681 frag->size - len, lenmss, 1681 skb_frag_size(frag) - len,
1682 DMA_TO_DEVICE); 1682 lenmss, DMA_TO_DEVICE);
1683 vring->ctx[i].mapped_as = wil_mapped_as_page; 1683 vring->ctx[i].mapped_as = wil_mapped_as_page;
1684 } else { 1684 } else {
1685 pa = dma_map_single(dev, 1685 pa = dma_map_single(dev,
@@ -1900,8 +1900,7 @@ static int __wil_tx_ring(struct wil6210_priv *wil, struct wil6210_vif *vif,
1900 1900
1901 /* middle segments */ 1901 /* middle segments */
1902 for (; f < nr_frags; f++) { 1902 for (; f < nr_frags; f++) {
1903 const struct skb_frag_struct *frag = 1903 const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
1904 &skb_shinfo(skb)->frags[f];
1905 int len = skb_frag_size(frag); 1904 int len = skb_frag_size(frag);
1906 1905
1907 *_d = *d; 1906 *_d = *d;
diff --git a/drivers/net/wireless/ath/wil6210/txrx_edma.c b/drivers/net/wireless/ath/wil6210/txrx_edma.c
index dc040cd4ab06..71b7ad4b6454 100644
--- a/drivers/net/wireless/ath/wil6210/txrx_edma.c
+++ b/drivers/net/wireless/ath/wil6210/txrx_edma.c
@@ -1471,7 +1471,7 @@ static int __wil_tx_ring_tso_edma(struct wil6210_priv *wil,
1471 /* Rest of the descriptors are from the SKB fragments */ 1471 /* Rest of the descriptors are from the SKB fragments */
1472 for (f = 0; f < nr_frags; f++) { 1472 for (f = 0; f < nr_frags; f++) {
1473 skb_frag_t *frag = &skb_shinfo(skb)->frags[f]; 1473 skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
1474 int len = frag->size; 1474 int len = skb_frag_size(frag);
1475 1475
1476 wil_dbg_txrx(wil, "TSO: frag[%d]: len %u, descs_used %d\n", f, 1476 wil_dbg_txrx(wil, "TSO: frag[%d]: len %u, descs_used %d\n", f,
1477 len, descs_used); 1477 len, descs_used);
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index 1d9940d4e8c7..a96c5c2a2c5a 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -1055,7 +1055,7 @@ static int xenvif_handle_frag_list(struct xenvif_queue *queue, struct sk_buff *s
1055 int j; 1055 int j;
1056 skb->truesize += skb->data_len; 1056 skb->truesize += skb->data_len;
1057 for (j = 0; j < i; j++) 1057 for (j = 0; j < i; j++)
1058 put_page(frags[j].page.p); 1058 put_page(skb_frag_page(&frags[j]));
1059 return -ENOMEM; 1059 return -ENOMEM;
1060 } 1060 }
1061 1061
@@ -1067,7 +1067,7 @@ static int xenvif_handle_frag_list(struct xenvif_queue *queue, struct sk_buff *s
1067 BUG(); 1067 BUG();
1068 1068
1069 offset += len; 1069 offset += len;
1070 frags[i].page.p = page; 1070 __skb_frag_set_page(&frags[i], page);
1071 frags[i].page_offset = 0; 1071 frags[i].page_offset = 0;
1072 skb_frag_size_set(&frags[i], len); 1072 skb_frag_size_set(&frags[i], len);
1073 } 1073 }
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index 4d0caeebc802..5aa0f1268bca 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -3515,7 +3515,7 @@ static int qeth_get_elements_for_frags(struct sk_buff *skb)
3515 int cnt, elements = 0; 3515 int cnt, elements = 0;
3516 3516
3517 for (cnt = 0; cnt < skb_shinfo(skb)->nr_frags; cnt++) { 3517 for (cnt = 0; cnt < skb_shinfo(skb)->nr_frags; cnt++) {
3518 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[cnt]; 3518 skb_frag_t *frag = &skb_shinfo(skb)->frags[cnt];
3519 3519
3520 elements += qeth_get_elements_for_range( 3520 elements += qeth_get_elements_for_range(
3521 (addr_t)skb_frag_address(frag), 3521 (addr_t)skb_frag_address(frag),
diff --git a/drivers/scsi/fcoe/fcoe_transport.c b/drivers/scsi/fcoe/fcoe_transport.c
index ba4603d76284..d0550384cc38 100644
--- a/drivers/scsi/fcoe/fcoe_transport.c
+++ b/drivers/scsi/fcoe/fcoe_transport.c
@@ -308,7 +308,7 @@ EXPORT_SYMBOL_GPL(fcoe_get_wwn);
308u32 fcoe_fc_crc(struct fc_frame *fp) 308u32 fcoe_fc_crc(struct fc_frame *fp)
309{ 309{
310 struct sk_buff *skb = fp_skb(fp); 310 struct sk_buff *skb = fp_skb(fp);
311 struct skb_frag_struct *frag; 311 skb_frag_t *frag;
312 unsigned char *data; 312 unsigned char *data;
313 unsigned long off, len, clen; 313 unsigned long off, len, clen;
314 u32 crc; 314 u32 crc;
diff --git a/drivers/staging/octeon/ethernet-tx.c b/drivers/staging/octeon/ethernet-tx.c
index 20f513fbaa85..cc12c78f73f1 100644
--- a/drivers/staging/octeon/ethernet-tx.c
+++ b/drivers/staging/octeon/ethernet-tx.c
@@ -280,11 +280,10 @@ int cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
280 hw_buffer.s.size = skb_headlen(skb); 280 hw_buffer.s.size = skb_headlen(skb);
281 CVM_OCT_SKB_CB(skb)[0] = hw_buffer.u64; 281 CVM_OCT_SKB_CB(skb)[0] = hw_buffer.u64;
282 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 282 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
283 struct skb_frag_struct *fs = skb_shinfo(skb)->frags + i; 283 skb_frag_t *fs = skb_shinfo(skb)->frags + i;
284 284
285 hw_buffer.s.addr = 285 hw_buffer.s.addr =
286 XKPHYS_TO_PHYS((u64)(page_address(fs->page.p) + 286 XKPHYS_TO_PHYS((u64)skb_frag_address(fs));
287 fs->page_offset));
288 hw_buffer.s.size = fs->size; 287 hw_buffer.s.size = fs->size;
289 CVM_OCT_SKB_CB(skb)[i + 1] = hw_buffer.u64; 288 CVM_OCT_SKB_CB(skb)[i + 1] = hw_buffer.u64;
290 } 289 }
diff --git a/drivers/staging/unisys/visornic/visornic_main.c b/drivers/staging/unisys/visornic/visornic_main.c
index 9d4f1dab0968..b889b04a6e25 100644
--- a/drivers/staging/unisys/visornic/visornic_main.c
+++ b/drivers/staging/unisys/visornic/visornic_main.c
@@ -285,8 +285,8 @@ static int visor_copy_fragsinfo_from_skb(struct sk_buff *skb,
285 count = add_physinfo_entries(page_to_pfn( 285 count = add_physinfo_entries(page_to_pfn(
286 skb_frag_page(&skb_shinfo(skb)->frags[frag])), 286 skb_frag_page(&skb_shinfo(skb)->frags[frag])),
287 skb_shinfo(skb)->frags[frag].page_offset, 287 skb_shinfo(skb)->frags[frag].page_offset,
288 skb_shinfo(skb)->frags[frag].size, count, 288 skb_frag_size(&skb_shinfo(skb)->frags[frag]),
289 frags_max, frags); 289 count, frags_max, frags);
290 /* add_physinfo_entries only returns 290 /* add_physinfo_entries only returns
291 * zero if the frags array is out of room 291 * zero if the frags array is out of room
292 * That should never happen because we 292 * That should never happen because we
diff --git a/drivers/target/iscsi/cxgbit/cxgbit_target.c b/drivers/target/iscsi/cxgbit/cxgbit_target.c
index 24309d937d8c..93212b9fd310 100644
--- a/drivers/target/iscsi/cxgbit/cxgbit_target.c
+++ b/drivers/target/iscsi/cxgbit/cxgbit_target.c
@@ -899,9 +899,9 @@ cxgbit_handle_immediate_data(struct iscsi_cmd *cmd, struct iscsi_scsi_req *hdr,
899 skb_frag_t *dfrag = &ssi->frags[pdu_cb->dfrag_idx]; 899 skb_frag_t *dfrag = &ssi->frags[pdu_cb->dfrag_idx];
900 900
901 sg_init_table(&ccmd->sg, 1); 901 sg_init_table(&ccmd->sg, 1);
902 sg_set_page(&ccmd->sg, dfrag->page.p, skb_frag_size(dfrag), 902 sg_set_page(&ccmd->sg, skb_frag_page(dfrag),
903 dfrag->page_offset); 903 skb_frag_size(dfrag), dfrag->page_offset);
904 get_page(dfrag->page.p); 904 get_page(skb_frag_page(dfrag));
905 905
906 cmd->se_cmd.t_data_sg = &ccmd->sg; 906 cmd->se_cmd.t_data_sg = &ccmd->sg;
907 cmd->se_cmd.t_data_nents = 1; 907 cmd->se_cmd.t_data_nents = 1;
@@ -1403,7 +1403,8 @@ static void cxgbit_lro_skb_dump(struct sk_buff *skb)
1403 pdu_cb->ddigest, pdu_cb->frags); 1403 pdu_cb->ddigest, pdu_cb->frags);
1404 for (i = 0; i < ssi->nr_frags; i++) 1404 for (i = 0; i < ssi->nr_frags; i++)
1405 pr_info("skb 0x%p, frag %d, off %u, sz %u.\n", 1405 pr_info("skb 0x%p, frag %d, off %u, sz %u.\n",
1406 skb, i, ssi->frags[i].page_offset, ssi->frags[i].size); 1406 skb, i, ssi->frags[i].page_offset,
1407 skb_frag_size(&ssi->frags[i]));
1407} 1408}
1408 1409
1409static void cxgbit_lro_hskb_reset(struct cxgbit_sock *csk) 1410static void cxgbit_lro_hskb_reset(struct cxgbit_sock *csk)
@@ -1447,7 +1448,7 @@ cxgbit_lro_skb_merge(struct cxgbit_sock *csk, struct sk_buff *skb, u8 pdu_idx)
1447 hpdu_cb->frags++; 1448 hpdu_cb->frags++;
1448 hpdu_cb->hfrag_idx = hfrag_idx; 1449 hpdu_cb->hfrag_idx = hfrag_idx;
1449 1450
1450 len = hssi->frags[hfrag_idx].size; 1451 len = skb_frag_size(&hssi->frags[hfrag_idx]);;
1451 hskb->len += len; 1452 hskb->len += len;
1452 hskb->data_len += len; 1453 hskb->data_len += len;
1453 hskb->truesize += len; 1454 hskb->truesize += len;
@@ -1467,7 +1468,7 @@ cxgbit_lro_skb_merge(struct cxgbit_sock *csk, struct sk_buff *skb, u8 pdu_idx)
1467 1468
1468 get_page(skb_frag_page(&hssi->frags[dfrag_idx])); 1469 get_page(skb_frag_page(&hssi->frags[dfrag_idx]));
1469 1470
1470 len += hssi->frags[dfrag_idx].size; 1471 len += skb_frag_size(&hssi->frags[dfrag_idx]);
1471 1472
1472 hssi->nr_frags++; 1473 hssi->nr_frags++;
1473 hpdu_cb->frags++; 1474 hpdu_cb->frags++;