diff options
author | Jonathan Lemon <jonathan.lemon@gmail.com> | 2019-07-30 10:40:33 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-07-30 17:21:32 -0400 |
commit | b54c9d5bd6e38edac9ce3a3f95f14a1292b5268d (patch) | |
tree | b09848a92e53ce9533b4df27953ef59874080b53 | |
parent | 7240b60c98d6309363a9f8d5a4ecd5b0626f2aff (diff) |
net: Use skb_frag_off accessors
Use accessor functions for skb fragment's page_offset instead
of direct references, in preparation for bvec conversion.
Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
44 files changed, 100 insertions, 98 deletions
diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c index 79b718430cd1..b23d1e4bad33 100644 --- a/drivers/atm/eni.c +++ b/drivers/atm/eni.c | |||
@@ -1136,7 +1136,7 @@ DPRINTK("doing direct send\n"); /* @@@ well, this doesn't work anyway */ | |||
1136 | else | 1136 | else |
1137 | put_dma(tx->index,eni_dev->dma,&j,(unsigned long) | 1137 | put_dma(tx->index,eni_dev->dma,&j,(unsigned long) |
1138 | skb_frag_page(&skb_shinfo(skb)->frags[i]) + | 1138 | skb_frag_page(&skb_shinfo(skb)->frags[i]) + |
1139 | skb_shinfo(skb)->frags[i].page_offset, | 1139 | skb_frag_off(&skb_shinfo(skb)->frags[i]), |
1140 | skb_frag_size(&skb_shinfo(skb)->frags[i])); | 1140 | skb_frag_size(&skb_shinfo(skb)->frags[i])); |
1141 | } | 1141 | } |
1142 | if (skb->len & 3) { | 1142 | if (skb->len & 3) { |
diff --git a/drivers/hsi/clients/ssi_protocol.c b/drivers/hsi/clients/ssi_protocol.c index c9e3f928b93d..0253e76f1df2 100644 --- a/drivers/hsi/clients/ssi_protocol.c +++ b/drivers/hsi/clients/ssi_protocol.c | |||
@@ -182,7 +182,7 @@ static void ssip_skb_to_msg(struct sk_buff *skb, struct hsi_msg *msg) | |||
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, skb_frag_page(frag), skb_frag_size(frag), | 184 | sg_set_page(sg, skb_frag_page(frag), skb_frag_size(frag), |
185 | frag->page_offset); | 185 | skb_frag_off(frag)); |
186 | } | 186 | } |
187 | } | 187 | } |
188 | 188 | ||
diff --git a/drivers/infiniband/hw/hfi1/vnic_sdma.c b/drivers/infiniband/hw/hfi1/vnic_sdma.c index 05a140504a99..7d90b900131b 100644 --- a/drivers/infiniband/hw/hfi1/vnic_sdma.c +++ b/drivers/infiniband/hw/hfi1/vnic_sdma.c | |||
@@ -108,7 +108,7 @@ static noinline int build_vnic_ulp_payload(struct sdma_engine *sde, | |||
108 | ret = sdma_txadd_page(sde->dd, | 108 | ret = sdma_txadd_page(sde->dd, |
109 | &tx->txreq, | 109 | &tx->txreq, |
110 | skb_frag_page(frag), | 110 | skb_frag_page(frag), |
111 | frag->page_offset, | 111 | skb_frag_off(frag), |
112 | skb_frag_size(frag)); | 112 | skb_frag_size(frag)); |
113 | if (unlikely(ret)) | 113 | if (unlikely(ret)) |
114 | goto bail_txadd; | 114 | goto bail_txadd; |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c index 78fa777c87b1..c332b4761816 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c | |||
@@ -293,7 +293,8 @@ int ipoib_dma_map_tx(struct ib_device *ca, struct ipoib_tx_buf *tx_req) | |||
293 | const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; | 293 | const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; |
294 | mapping[i + off] = ib_dma_map_page(ca, | 294 | mapping[i + off] = ib_dma_map_page(ca, |
295 | skb_frag_page(frag), | 295 | skb_frag_page(frag), |
296 | frag->page_offset, skb_frag_size(frag), | 296 | skb_frag_off(frag), |
297 | skb_frag_size(frag), | ||
297 | DMA_TO_DEVICE); | 298 | DMA_TO_DEVICE); |
298 | if (unlikely(ib_dma_mapping_error(ca, mapping[i + off]))) | 299 | if (unlikely(ib_dma_mapping_error(ca, mapping[i + off]))) |
299 | goto partial_error; | 300 | goto partial_error; |
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index ac61c9352535..c23fbb34f0e9 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c | |||
@@ -957,7 +957,7 @@ static struct sk_buff *bnxt_rx_page_skb(struct bnxt *bp, | |||
957 | 957 | ||
958 | frag = &skb_shinfo(skb)->frags[0]; | 958 | frag = &skb_shinfo(skb)->frags[0]; |
959 | skb_frag_size_sub(frag, payload); | 959 | skb_frag_size_sub(frag, payload); |
960 | frag->page_offset += payload; | 960 | skb_frag_off_add(frag, payload); |
961 | skb->data_len -= payload; | 961 | skb->data_len -= payload; |
962 | skb->tail += payload; | 962 | skb->tail += payload; |
963 | 963 | ||
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c index c0266a87794c..4ab57d33a87e 100644 --- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c +++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c | |||
@@ -1594,7 +1594,7 @@ int nicvf_sq_append_skb(struct nicvf *nic, struct snd_queue *sq, | |||
1594 | size = skb_frag_size(frag); | 1594 | size = skb_frag_size(frag); |
1595 | dma_addr = dma_map_page_attrs(&nic->pdev->dev, | 1595 | dma_addr = dma_map_page_attrs(&nic->pdev->dev, |
1596 | skb_frag_page(frag), | 1596 | skb_frag_page(frag), |
1597 | frag->page_offset, size, | 1597 | skb_frag_off(frag), size, |
1598 | DMA_TO_DEVICE, | 1598 | DMA_TO_DEVICE, |
1599 | DMA_ATTR_SKIP_CPU_SYNC); | 1599 | DMA_ATTR_SKIP_CPU_SYNC); |
1600 | if (dma_mapping_error(&nic->pdev->dev, dma_addr)) { | 1600 | if (dma_mapping_error(&nic->pdev->dev, dma_addr)) { |
diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c index 310a232e00f0..6dabbf1502c7 100644 --- a/drivers/net/ethernet/chelsio/cxgb3/sge.c +++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c | |||
@@ -2182,7 +2182,7 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs, | |||
2182 | 2182 | ||
2183 | rx_frag += nr_frags; | 2183 | rx_frag += nr_frags; |
2184 | __skb_frag_set_page(rx_frag, sd->pg_chunk.page); | 2184 | __skb_frag_set_page(rx_frag, sd->pg_chunk.page); |
2185 | rx_frag->page_offset = sd->pg_chunk.offset + offset; | 2185 | skb_frag_off_set(rx_frag, sd->pg_chunk.offset + offset); |
2186 | skb_frag_size_set(rx_frag, len); | 2186 | skb_frag_size_set(rx_frag, len); |
2187 | 2187 | ||
2188 | skb->len += len; | 2188 | skb->len += len; |
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index e00a94a03879..1c9883019767 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
@@ -2346,8 +2346,8 @@ static void skb_fill_rx_data(struct be_rx_obj *rxo, struct sk_buff *skb, | |||
2346 | memcpy(skb->data, start, hdr_len); | 2346 | memcpy(skb->data, start, hdr_len); |
2347 | skb_shinfo(skb)->nr_frags = 1; | 2347 | skb_shinfo(skb)->nr_frags = 1; |
2348 | skb_frag_set_page(skb, 0, page_info->page); | 2348 | skb_frag_set_page(skb, 0, page_info->page); |
2349 | skb_shinfo(skb)->frags[0].page_offset = | 2349 | skb_frag_off_set(&skb_shinfo(skb)->frags[0], |
2350 | page_info->page_offset + hdr_len; | 2350 | page_info->page_offset + hdr_len); |
2351 | skb_frag_size_set(&skb_shinfo(skb)->frags[0], | 2351 | skb_frag_size_set(&skb_shinfo(skb)->frags[0], |
2352 | curr_frag_len - hdr_len); | 2352 | curr_frag_len - hdr_len); |
2353 | skb->data_len = curr_frag_len - hdr_len; | 2353 | skb->data_len = curr_frag_len - hdr_len; |
@@ -2372,8 +2372,8 @@ static void skb_fill_rx_data(struct be_rx_obj *rxo, struct sk_buff *skb, | |||
2372 | /* Fresh page */ | 2372 | /* Fresh page */ |
2373 | j++; | 2373 | j++; |
2374 | skb_frag_set_page(skb, j, page_info->page); | 2374 | skb_frag_set_page(skb, j, page_info->page); |
2375 | skb_shinfo(skb)->frags[j].page_offset = | 2375 | skb_frag_off_set(&skb_shinfo(skb)->frags[j], |
2376 | page_info->page_offset; | 2376 | page_info->page_offset); |
2377 | skb_frag_size_set(&skb_shinfo(skb)->frags[j], 0); | 2377 | skb_frag_size_set(&skb_shinfo(skb)->frags[j], 0); |
2378 | skb_shinfo(skb)->nr_frags++; | 2378 | skb_shinfo(skb)->nr_frags++; |
2379 | } else { | 2379 | } else { |
@@ -2454,8 +2454,8 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo, | |||
2454 | /* First frag or Fresh page */ | 2454 | /* First frag or Fresh page */ |
2455 | j++; | 2455 | j++; |
2456 | skb_frag_set_page(skb, j, page_info->page); | 2456 | skb_frag_set_page(skb, j, page_info->page); |
2457 | skb_shinfo(skb)->frags[j].page_offset = | 2457 | skb_frag_off_set(&skb_shinfo(skb)->frags[j], |
2458 | page_info->page_offset; | 2458 | page_info->page_offset); |
2459 | skb_frag_size_set(&skb_shinfo(skb)->frags[j], 0); | 2459 | skb_frag_size_set(&skb_shinfo(skb)->frags[j], 0); |
2460 | } else { | 2460 | } else { |
2461 | put_page(page_info->page); | 2461 | put_page(page_info->page); |
diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c index 5fad73b2e123..3981c06f082f 100644 --- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c +++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | |||
@@ -501,7 +501,7 @@ fs_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
501 | nr_frags = skb_shinfo(skb)->nr_frags; | 501 | nr_frags = skb_shinfo(skb)->nr_frags; |
502 | frag = skb_shinfo(skb)->frags; | 502 | frag = skb_shinfo(skb)->frags; |
503 | for (i = 0; i < nr_frags; i++, frag++) { | 503 | for (i = 0; i < nr_frags; i++, frag++) { |
504 | if (!IS_ALIGNED(frag->page_offset, 4)) { | 504 | if (!IS_ALIGNED(skb_frag_off(frag), 4)) { |
505 | is_aligned = 0; | 505 | is_aligned = 0; |
506 | break; | 506 | break; |
507 | } | 507 | } |
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index 3da680073265..81a05ea38237 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c | |||
@@ -1485,7 +1485,7 @@ static netdev_tx_t ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev) | |||
1485 | 1485 | ||
1486 | memcpy(dst + cur, | 1486 | memcpy(dst + cur, |
1487 | page_address(skb_frag_page(frag)) + | 1487 | page_address(skb_frag_page(frag)) + |
1488 | frag->page_offset, skb_frag_size(frag)); | 1488 | skb_frag_off(frag), skb_frag_size(frag)); |
1489 | cur += skb_frag_size(frag); | 1489 | cur += skb_frag_size(frag); |
1490 | } | 1490 | } |
1491 | } else { | 1491 | } else { |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index f162252f01b5..e3f29dc8b290 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c | |||
@@ -3306,7 +3306,7 @@ bool __i40e_chk_linearize(struct sk_buff *skb) | |||
3306 | * descriptor associated with the fragment. | 3306 | * descriptor associated with the fragment. |
3307 | */ | 3307 | */ |
3308 | if (stale_size > I40E_MAX_DATA_PER_TXD) { | 3308 | if (stale_size > I40E_MAX_DATA_PER_TXD) { |
3309 | int align_pad = -(stale->page_offset) & | 3309 | int align_pad = -(skb_frag_off(stale)) & |
3310 | (I40E_MAX_READ_REQ_SIZE - 1); | 3310 | (I40E_MAX_READ_REQ_SIZE - 1); |
3311 | 3311 | ||
3312 | sum -= align_pad; | 3312 | sum -= align_pad; |
diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.c b/drivers/net/ethernet/intel/iavf/iavf_txrx.c index fae7cd1c618a..7a30d5d5ef53 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_txrx.c +++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.c | |||
@@ -2205,7 +2205,7 @@ bool __iavf_chk_linearize(struct sk_buff *skb) | |||
2205 | * descriptor associated with the fragment. | 2205 | * descriptor associated with the fragment. |
2206 | */ | 2206 | */ |
2207 | if (stale_size > IAVF_MAX_DATA_PER_TXD) { | 2207 | if (stale_size > IAVF_MAX_DATA_PER_TXD) { |
2208 | int align_pad = -(stale->page_offset) & | 2208 | int align_pad = -(skb_frag_off(stale)) & |
2209 | (IAVF_MAX_READ_REQ_SIZE - 1); | 2209 | (IAVF_MAX_READ_REQ_SIZE - 1); |
2210 | 2210 | ||
2211 | sum -= align_pad; | 2211 | sum -= align_pad; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index e12d23d1fa64..dc7b128c780e 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -1807,7 +1807,7 @@ static void ixgbe_pull_tail(struct ixgbe_ring *rx_ring, | |||
1807 | 1807 | ||
1808 | /* update all of the pointers */ | 1808 | /* update all of the pointers */ |
1809 | skb_frag_size_sub(frag, pull_len); | 1809 | skb_frag_size_sub(frag, pull_len); |
1810 | frag->page_offset += pull_len; | 1810 | skb_frag_off_add(frag, pull_len); |
1811 | skb->data_len -= pull_len; | 1811 | skb->data_len -= pull_len; |
1812 | skb->tail += pull_len; | 1812 | skb->tail += pull_len; |
1813 | } | 1813 | } |
@@ -1844,7 +1844,7 @@ static void ixgbe_dma_sync_frag(struct ixgbe_ring *rx_ring, | |||
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, |
1847 | frag->page_offset, | 1847 | skb_frag_off(frag), |
1848 | skb_frag_size(frag), | 1848 | skb_frag_size(frag), |
1849 | DMA_FROM_DEVICE); | 1849 | DMA_FROM_DEVICE); |
1850 | } | 1850 | } |
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c index 9c3ab00643bd..6d52cf5ce20e 100644 --- a/drivers/net/ethernet/jme.c +++ b/drivers/net/ethernet/jme.c | |||
@@ -2040,8 +2040,8 @@ jme_map_tx_skb(struct jme_adapter *jme, struct sk_buff *skb, int idx) | |||
2040 | ctxbi = txbi + ((idx + i + 2) & (mask)); | 2040 | ctxbi = txbi + ((idx + i + 2) & (mask)); |
2041 | 2041 | ||
2042 | ret = jme_fill_tx_map(jme->pdev, ctxdesc, ctxbi, | 2042 | ret = jme_fill_tx_map(jme->pdev, ctxdesc, ctxbi, |
2043 | skb_frag_page(frag), | 2043 | skb_frag_page(frag), skb_frag_off(frag), |
2044 | frag->page_offset, skb_frag_size(frag), hidma); | 2044 | skb_frag_size(frag), hidma); |
2045 | if (ret) { | 2045 | if (ret) { |
2046 | jme_drop_tx_map(jme, idx, i); | 2046 | jme_drop_tx_map(jme, idx, i); |
2047 | goto out; | 2047 | goto out; |
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c index 88ea5ac83c93..82ea55ae5053 100644 --- a/drivers/net/ethernet/marvell/mv643xx_eth.c +++ b/drivers/net/ethernet/marvell/mv643xx_eth.c | |||
@@ -659,7 +659,7 @@ static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb) | |||
659 | for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) { | 659 | for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) { |
660 | const skb_frag_t *fragp = &skb_shinfo(skb)->frags[frag]; | 660 | const skb_frag_t *fragp = &skb_shinfo(skb)->frags[frag]; |
661 | 661 | ||
662 | if (skb_frag_size(fragp) <= 8 && fragp->page_offset & 7) | 662 | if (skb_frag_size(fragp) <= 8 && skb_frag_off(fragp) & 7) |
663 | return 1; | 663 | return 1; |
664 | } | 664 | } |
665 | 665 | ||
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c index 9ead6ecb7586..99eaadba555f 100644 --- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c +++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c | |||
@@ -1306,8 +1306,8 @@ myri10ge_vlan_rx(struct net_device *dev, void *addr, struct sk_buff *skb) | |||
1306 | skb->len -= VLAN_HLEN; | 1306 | skb->len -= VLAN_HLEN; |
1307 | skb->data_len -= VLAN_HLEN; | 1307 | skb->data_len -= VLAN_HLEN; |
1308 | frag = skb_shinfo(skb)->frags; | 1308 | frag = skb_shinfo(skb)->frags; |
1309 | frag->page_offset += VLAN_HLEN; | 1309 | skb_frag_off_add(frag, VLAN_HLEN); |
1310 | skb_frag_size_set(frag, skb_frag_size(frag) - VLAN_HLEN); | 1310 | skb_frag_size_sub(frag, VLAN_HLEN); |
1311 | } | 1311 | } |
1312 | } | 1312 | } |
1313 | 1313 | ||
@@ -1364,7 +1364,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum) | |||
1364 | } | 1364 | } |
1365 | 1365 | ||
1366 | /* remove padding */ | 1366 | /* remove padding */ |
1367 | rx_frags[0].page_offset += MXGEFW_PAD; | 1367 | skb_frag_off_add(&rx_frags[0], MXGEFW_PAD); |
1368 | skb_frag_size_sub(&rx_frags[0], MXGEFW_PAD); | 1368 | skb_frag_size_sub(&rx_frags[0], MXGEFW_PAD); |
1369 | len -= MXGEFW_PAD; | 1369 | len -= MXGEFW_PAD; |
1370 | 1370 | ||
diff --git a/drivers/net/ethernet/sfc/tx.c b/drivers/net/ethernet/sfc/tx.c index 31ec56091a5d..65e81ec1b314 100644 --- a/drivers/net/ethernet/sfc/tx.c +++ b/drivers/net/ethernet/sfc/tx.c | |||
@@ -274,7 +274,7 @@ static void efx_skb_copy_bits_to_pio(struct efx_nic *efx, struct sk_buff *skb, | |||
274 | 274 | ||
275 | vaddr = kmap_atomic(skb_frag_page(f)); | 275 | vaddr = kmap_atomic(skb_frag_page(f)); |
276 | 276 | ||
277 | efx_memcpy_toio_aligned_cb(efx, piobuf, vaddr + f->page_offset, | 277 | efx_memcpy_toio_aligned_cb(efx, piobuf, vaddr + skb_frag_off(f), |
278 | skb_frag_size(f), copy_buf); | 278 | skb_frag_size(f), copy_buf); |
279 | kunmap_atomic(vaddr); | 279 | kunmap_atomic(vaddr); |
280 | } | 280 | } |
diff --git a/drivers/net/ethernet/sun/cassini.c b/drivers/net/ethernet/sun/cassini.c index 6fc05c106afc..c91876f8c536 100644 --- a/drivers/net/ethernet/sun/cassini.c +++ b/drivers/net/ethernet/sun/cassini.c | |||
@@ -2034,7 +2034,7 @@ static int cas_rx_process_pkt(struct cas *cp, struct cas_rx_comp *rxc, | |||
2034 | 2034 | ||
2035 | __skb_frag_set_page(frag, page->buffer); | 2035 | __skb_frag_set_page(frag, page->buffer); |
2036 | __skb_frag_ref(frag); | 2036 | __skb_frag_ref(frag); |
2037 | frag->page_offset = off; | 2037 | skb_frag_off_set(frag, off); |
2038 | skb_frag_size_set(frag, hlen - swivel); | 2038 | skb_frag_size_set(frag, hlen - swivel); |
2039 | 2039 | ||
2040 | /* any more data? */ | 2040 | /* any more data? */ |
@@ -2058,7 +2058,7 @@ static int cas_rx_process_pkt(struct cas *cp, struct cas_rx_comp *rxc, | |||
2058 | 2058 | ||
2059 | __skb_frag_set_page(frag, page->buffer); | 2059 | __skb_frag_set_page(frag, page->buffer); |
2060 | __skb_frag_ref(frag); | 2060 | __skb_frag_ref(frag); |
2061 | frag->page_offset = 0; | 2061 | skb_frag_off_set(frag, 0); |
2062 | skb_frag_size_set(frag, hlen); | 2062 | skb_frag_size_set(frag, hlen); |
2063 | RX_USED_ADD(page, hlen + cp->crc_size); | 2063 | RX_USED_ADD(page, hlen + cp->crc_size); |
2064 | } | 2064 | } |
@@ -2816,7 +2816,7 @@ static inline int cas_xmit_tx_ringN(struct cas *cp, int ring, | |||
2816 | mapping = skb_frag_dma_map(&cp->pdev->dev, fragp, 0, len, | 2816 | mapping = skb_frag_dma_map(&cp->pdev->dev, fragp, 0, len, |
2817 | DMA_TO_DEVICE); | 2817 | DMA_TO_DEVICE); |
2818 | 2818 | ||
2819 | tabort = cas_calc_tabort(cp, fragp->page_offset, len); | 2819 | tabort = cas_calc_tabort(cp, skb_frag_off(fragp), len); |
2820 | if (unlikely(tabort)) { | 2820 | if (unlikely(tabort)) { |
2821 | void *addr; | 2821 | void *addr; |
2822 | 2822 | ||
@@ -2827,7 +2827,7 @@ static inline int cas_xmit_tx_ringN(struct cas *cp, int ring, | |||
2827 | 2827 | ||
2828 | addr = cas_page_map(skb_frag_page(fragp)); | 2828 | addr = cas_page_map(skb_frag_page(fragp)); |
2829 | memcpy(tx_tiny_buf(cp, ring, entry), | 2829 | memcpy(tx_tiny_buf(cp, ring, entry), |
2830 | addr + fragp->page_offset + len - tabort, | 2830 | addr + skb_frag_off(fragp) + len - tabort, |
2831 | tabort); | 2831 | tabort); |
2832 | cas_page_unmap(addr); | 2832 | cas_page_unmap(addr); |
2833 | mapping = tx_tiny_map(cp, ring, entry, tentry); | 2833 | mapping = tx_tiny_map(cp, ring, entry, tentry); |
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c index 0bc5863bffeb..f5fd1f3c07cc 100644 --- a/drivers/net/ethernet/sun/niu.c +++ b/drivers/net/ethernet/sun/niu.c | |||
@@ -6695,7 +6695,7 @@ static netdev_tx_t niu_start_xmit(struct sk_buff *skb, | |||
6695 | 6695 | ||
6696 | len = skb_frag_size(frag); | 6696 | len = skb_frag_size(frag); |
6697 | mapping = np->ops->map_page(np->device, skb_frag_page(frag), | 6697 | mapping = np->ops->map_page(np->device, skb_frag_page(frag), |
6698 | frag->page_offset, len, | 6698 | skb_frag_off(frag), len, |
6699 | DMA_TO_DEVICE); | 6699 | DMA_TO_DEVICE); |
6700 | 6700 | ||
6701 | rp->tx_buffs[prod].skb = NULL; | 6701 | rp->tx_buffs[prod].skb = NULL; |
diff --git a/drivers/net/ethernet/sun/sunvnet_common.c b/drivers/net/ethernet/sun/sunvnet_common.c index baa3088b475c..646e67236b65 100644 --- a/drivers/net/ethernet/sun/sunvnet_common.c +++ b/drivers/net/ethernet/sun/sunvnet_common.c | |||
@@ -1088,7 +1088,7 @@ static inline int vnet_skb_map(struct ldc_channel *lp, struct sk_buff *skb, | |||
1088 | vaddr = kmap_atomic(skb_frag_page(f)); | 1088 | vaddr = kmap_atomic(skb_frag_page(f)); |
1089 | blen = skb_frag_size(f); | 1089 | blen = skb_frag_size(f); |
1090 | blen += 8 - (blen & 7); | 1090 | blen += 8 - (blen & 7); |
1091 | err = ldc_map_single(lp, vaddr + f->page_offset, | 1091 | err = ldc_map_single(lp, vaddr + skb_frag_off(f), |
1092 | blen, cookies + nc, ncookies - nc, | 1092 | blen, cookies + nc, ncookies - nc, |
1093 | map_perm); | 1093 | map_perm); |
1094 | kunmap_atomic(vaddr); | 1094 | kunmap_atomic(vaddr); |
@@ -1124,7 +1124,7 @@ static inline struct sk_buff *vnet_skb_shape(struct sk_buff *skb, int ncookies) | |||
1124 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { | 1124 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { |
1125 | skb_frag_t *f = &skb_shinfo(skb)->frags[i]; | 1125 | skb_frag_t *f = &skb_shinfo(skb)->frags[i]; |
1126 | 1126 | ||
1127 | docopy |= f->page_offset & 7; | 1127 | docopy |= skb_frag_off(f) & 7; |
1128 | } | 1128 | } |
1129 | if (((unsigned long)skb->data & 7) != VNET_PACKET_SKIP || | 1129 | if (((unsigned long)skb->data & 7) != VNET_PACKET_SKIP || |
1130 | skb_tailroom(skb) < pad || | 1130 | skb_tailroom(skb) < pad || |
diff --git a/drivers/net/ethernet/ti/netcp_core.c b/drivers/net/ethernet/ti/netcp_core.c index 642843945031..1b2702f74455 100644 --- a/drivers/net/ethernet/ti/netcp_core.c +++ b/drivers/net/ethernet/ti/netcp_core.c | |||
@@ -1116,7 +1116,7 @@ netcp_tx_map_skb(struct sk_buff *skb, struct netcp_intf *netcp) | |||
1116 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { | 1116 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { |
1117 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; | 1117 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; |
1118 | struct page *page = skb_frag_page(frag); | 1118 | struct page *page = skb_frag_page(frag); |
1119 | u32 page_offset = frag->page_offset; | 1119 | u32 page_offset = skb_frag_off(frag); |
1120 | u32 buf_len = skb_frag_size(frag); | 1120 | u32 buf_len = skb_frag_size(frag); |
1121 | dma_addr_t desc_dma; | 1121 | dma_addr_t desc_dma; |
1122 | u32 desc_dma_32; | 1122 | u32 desc_dma_32; |
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index 3544e1991579..86884c863013 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c | |||
@@ -435,7 +435,7 @@ static u32 init_page_array(void *hdr, u32 len, struct sk_buff *skb, | |||
435 | skb_frag_t *frag = skb_shinfo(skb)->frags + i; | 435 | skb_frag_t *frag = skb_shinfo(skb)->frags + i; |
436 | 436 | ||
437 | slots_used += fill_pg_buf(skb_frag_page(frag), | 437 | slots_used += fill_pg_buf(skb_frag_page(frag), |
438 | frag->page_offset, | 438 | skb_frag_off(frag), |
439 | skb_frag_size(frag), &pb[slots_used]); | 439 | skb_frag_size(frag), &pb[slots_used]); |
440 | } | 440 | } |
441 | return slots_used; | 441 | return slots_used; |
@@ -449,7 +449,7 @@ static int count_skb_frag_slots(struct sk_buff *skb) | |||
449 | for (i = 0; i < frags; i++) { | 449 | for (i = 0; i < frags; i++) { |
450 | skb_frag_t *frag = skb_shinfo(skb)->frags + i; | 450 | skb_frag_t *frag = skb_shinfo(skb)->frags + i; |
451 | unsigned long size = skb_frag_size(frag); | 451 | unsigned long size = skb_frag_size(frag); |
452 | unsigned long offset = frag->page_offset; | 452 | unsigned long offset = skb_frag_off(frag); |
453 | 453 | ||
454 | /* Skip unused frames from start of page */ | 454 | /* Skip unused frames from start of page */ |
455 | offset &= ~PAGE_MASK; | 455 | offset &= ~PAGE_MASK; |
diff --git a/drivers/net/thunderbolt.c b/drivers/net/thunderbolt.c index fcf31335a8b6..dacb4f680fd4 100644 --- a/drivers/net/thunderbolt.c +++ b/drivers/net/thunderbolt.c | |||
@@ -1005,7 +1005,7 @@ static void *tbnet_kmap_frag(struct sk_buff *skb, unsigned int frag_num, | |||
1005 | const skb_frag_t *frag = &skb_shinfo(skb)->frags[frag_num]; | 1005 | const skb_frag_t *frag = &skb_shinfo(skb)->frags[frag_num]; |
1006 | 1006 | ||
1007 | *len = skb_frag_size(frag); | 1007 | *len = skb_frag_size(frag); |
1008 | return kmap_atomic(skb_frag_page(frag)) + frag->page_offset; | 1008 | return kmap_atomic(skb_frag_page(frag)) + skb_frag_off(frag); |
1009 | } | 1009 | } |
1010 | 1010 | ||
1011 | static netdev_tx_t tbnet_start_xmit(struct sk_buff *skb, | 1011 | static netdev_tx_t tbnet_start_xmit(struct sk_buff *skb, |
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index ace7ffaf3913..58952a79b05f 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c | |||
@@ -1328,7 +1328,7 @@ static int build_dma_sg(const struct sk_buff *skb, struct urb *urb) | |||
1328 | 1328 | ||
1329 | total_len += skb_frag_size(f); | 1329 | total_len += skb_frag_size(f); |
1330 | sg_set_page(&urb->sg[i + s], skb_frag_page(f), skb_frag_size(f), | 1330 | sg_set_page(&urb->sg[i + s], skb_frag_page(f), skb_frag_size(f), |
1331 | f->page_offset); | 1331 | skb_frag_off(f)); |
1332 | } | 1332 | } |
1333 | urb->transfer_buffer_length = total_len; | 1333 | urb->transfer_buffer_length = total_len; |
1334 | 1334 | ||
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 03feaeae89cd..216acf37ca7c 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c | |||
@@ -662,7 +662,7 @@ vmxnet3_append_frag(struct sk_buff *skb, struct Vmxnet3_RxCompDesc *rcd, | |||
662 | BUG_ON(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS); | 662 | BUG_ON(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS); |
663 | 663 | ||
664 | __skb_frag_set_page(frag, rbi->page); | 664 | __skb_frag_set_page(frag, rbi->page); |
665 | frag->page_offset = 0; | 665 | skb_frag_off_set(frag, 0); |
666 | skb_frag_size_set(frag, rcd->len); | 666 | skb_frag_size_set(frag, rcd->len); |
667 | skb->data_len += rcd->len; | 667 | skb->data_len += rcd->len; |
668 | skb->truesize += PAGE_SIZE; | 668 | skb->truesize += PAGE_SIZE; |
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index a96c5c2a2c5a..3ef07b63613e 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c | |||
@@ -136,12 +136,12 @@ static inline struct xenvif_queue *ubuf_to_queue(const struct ubuf_info *ubuf) | |||
136 | 136 | ||
137 | static u16 frag_get_pending_idx(skb_frag_t *frag) | 137 | static u16 frag_get_pending_idx(skb_frag_t *frag) |
138 | { | 138 | { |
139 | return (u16)frag->page_offset; | 139 | return (u16)skb_frag_off(frag); |
140 | } | 140 | } |
141 | 141 | ||
142 | static void frag_set_pending_idx(skb_frag_t *frag, u16 pending_idx) | 142 | static void frag_set_pending_idx(skb_frag_t *frag, u16 pending_idx) |
143 | { | 143 | { |
144 | frag->page_offset = pending_idx; | 144 | skb_frag_off_set(frag, pending_idx); |
145 | } | 145 | } |
146 | 146 | ||
147 | static inline pending_ring_idx_t pending_index(unsigned i) | 147 | static inline pending_ring_idx_t pending_index(unsigned i) |
@@ -1068,7 +1068,7 @@ static int xenvif_handle_frag_list(struct xenvif_queue *queue, struct sk_buff *s | |||
1068 | 1068 | ||
1069 | offset += len; | 1069 | offset += len; |
1070 | __skb_frag_set_page(&frags[i], page); | 1070 | __skb_frag_set_page(&frags[i], page); |
1071 | frags[i].page_offset = 0; | 1071 | skb_frag_off_set(&frags[i], 0); |
1072 | skb_frag_size_set(&frags[i], len); | 1072 | skb_frag_size_set(&frags[i], len); |
1073 | } | 1073 | } |
1074 | 1074 | ||
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 8d33970a2950..b930d5f95222 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c | |||
@@ -531,7 +531,7 @@ static int xennet_count_skb_slots(struct sk_buff *skb) | |||
531 | for (i = 0; i < frags; i++) { | 531 | for (i = 0; i < frags; i++) { |
532 | skb_frag_t *frag = skb_shinfo(skb)->frags + i; | 532 | skb_frag_t *frag = skb_shinfo(skb)->frags + i; |
533 | unsigned long size = skb_frag_size(frag); | 533 | unsigned long size = skb_frag_size(frag); |
534 | unsigned long offset = frag->page_offset; | 534 | unsigned long offset = skb_frag_off(frag); |
535 | 535 | ||
536 | /* Skip unused frames from start of page */ | 536 | /* Skip unused frames from start of page */ |
537 | offset &= ~PAGE_MASK; | 537 | offset &= ~PAGE_MASK; |
@@ -674,8 +674,8 @@ static netdev_tx_t xennet_start_xmit(struct sk_buff *skb, struct net_device *dev | |||
674 | /* Requests for all the frags. */ | 674 | /* Requests for all the frags. */ |
675 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { | 675 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { |
676 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; | 676 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; |
677 | tx = xennet_make_txreqs(queue, tx, skb, | 677 | tx = xennet_make_txreqs(queue, tx, skb, skb_frag_page(frag), |
678 | skb_frag_page(frag), frag->page_offset, | 678 | skb_frag_off(frag), |
679 | skb_frag_size(frag)); | 679 | skb_frag_size(frag)); |
680 | } | 680 | } |
681 | 681 | ||
@@ -1040,7 +1040,7 @@ err: | |||
1040 | if (NETFRONT_SKB_CB(skb)->pull_to > RX_COPY_THRESHOLD) | 1040 | if (NETFRONT_SKB_CB(skb)->pull_to > RX_COPY_THRESHOLD) |
1041 | NETFRONT_SKB_CB(skb)->pull_to = RX_COPY_THRESHOLD; | 1041 | NETFRONT_SKB_CB(skb)->pull_to = RX_COPY_THRESHOLD; |
1042 | 1042 | ||
1043 | skb_shinfo(skb)->frags[0].page_offset = rx->offset; | 1043 | skb_frag_off_set(&skb_shinfo(skb)->frags[0], rx->offset); |
1044 | skb_frag_size_set(&skb_shinfo(skb)->frags[0], rx->status); | 1044 | skb_frag_size_set(&skb_shinfo(skb)->frags[0], rx->status); |
1045 | skb->data_len = rx->status; | 1045 | skb->data_len = rx->status; |
1046 | skb->len += rx->status; | 1046 | skb->len += rx->status; |
diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c index 7796799bf04a..9ff9429395eb 100644 --- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c +++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c | |||
@@ -346,7 +346,7 @@ static int bnx2fc_xmit(struct fc_lport *lport, struct fc_frame *fp) | |||
346 | return -ENOMEM; | 346 | return -ENOMEM; |
347 | } | 347 | } |
348 | frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; | 348 | frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; |
349 | cp = kmap_atomic(skb_frag_page(frag)) + frag->page_offset; | 349 | cp = kmap_atomic(skb_frag_page(frag)) + skb_frag_off(frag); |
350 | } else { | 350 | } else { |
351 | cp = skb_put(skb, tlen); | 351 | cp = skb_put(skb, tlen); |
352 | } | 352 | } |
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 00dd47bcbb1e..587d4bbb7d22 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c | |||
@@ -1522,8 +1522,7 @@ static int fcoe_xmit(struct fc_lport *lport, struct fc_frame *fp) | |||
1522 | return -ENOMEM; | 1522 | return -ENOMEM; |
1523 | } | 1523 | } |
1524 | frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; | 1524 | frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; |
1525 | cp = kmap_atomic(skb_frag_page(frag)) | 1525 | cp = kmap_atomic(skb_frag_page(frag)) + skb_frag_off(frag); |
1526 | + frag->page_offset; | ||
1527 | } else { | 1526 | } else { |
1528 | cp = skb_put(skb, tlen); | 1527 | cp = skb_put(skb, tlen); |
1529 | } | 1528 | } |
diff --git a/drivers/scsi/fcoe/fcoe_transport.c b/drivers/scsi/fcoe/fcoe_transport.c index d0550384cc38..a20ddc301c89 100644 --- a/drivers/scsi/fcoe/fcoe_transport.c +++ b/drivers/scsi/fcoe/fcoe_transport.c | |||
@@ -318,7 +318,7 @@ u32 fcoe_fc_crc(struct fc_frame *fp) | |||
318 | 318 | ||
319 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { | 319 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { |
320 | frag = &skb_shinfo(skb)->frags[i]; | 320 | frag = &skb_shinfo(skb)->frags[i]; |
321 | off = frag->page_offset; | 321 | off = skb_frag_off(frag); |
322 | len = skb_frag_size(frag); | 322 | len = skb_frag_size(frag); |
323 | while (len > 0) { | 323 | while (len > 0) { |
324 | clen = min(len, PAGE_SIZE - (off & ~PAGE_MASK)); | 324 | clen = min(len, PAGE_SIZE - (off & ~PAGE_MASK)); |
diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c index a42babde036d..42542720962f 100644 --- a/drivers/scsi/qedf/qedf_main.c +++ b/drivers/scsi/qedf/qedf_main.c | |||
@@ -1077,7 +1077,7 @@ static int qedf_xmit(struct fc_lport *lport, struct fc_frame *fp) | |||
1077 | return -ENOMEM; | 1077 | return -ENOMEM; |
1078 | } | 1078 | } |
1079 | frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; | 1079 | frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; |
1080 | cp = kmap_atomic(skb_frag_page(frag)) + frag->page_offset; | 1080 | cp = kmap_atomic(skb_frag_page(frag)) + skb_frag_off(frag); |
1081 | } else { | 1081 | } else { |
1082 | cp = skb_put(skb, tlen); | 1082 | cp = skb_put(skb, tlen); |
1083 | } | 1083 | } |
diff --git a/drivers/staging/unisys/visornic/visornic_main.c b/drivers/staging/unisys/visornic/visornic_main.c index b889b04a6e25..6fa7726185de 100644 --- a/drivers/staging/unisys/visornic/visornic_main.c +++ b/drivers/staging/unisys/visornic/visornic_main.c | |||
@@ -284,7 +284,7 @@ static int visor_copy_fragsinfo_from_skb(struct sk_buff *skb, | |||
284 | for (frag = 0; frag < numfrags; frag++) { | 284 | for (frag = 0; frag < numfrags; frag++) { |
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_frag_off(&skb_shinfo(skb)->frags[frag]), |
288 | skb_frag_size(&skb_shinfo(skb)->frags[frag]), | 288 | skb_frag_size(&skb_shinfo(skb)->frags[frag]), |
289 | count, frags_max, frags); | 289 | count, frags_max, frags); |
290 | /* add_physinfo_entries only returns | 290 | /* add_physinfo_entries only returns |
diff --git a/drivers/target/iscsi/cxgbit/cxgbit_target.c b/drivers/target/iscsi/cxgbit/cxgbit_target.c index c25315431ad0..fcdc4211e3c2 100644 --- a/drivers/target/iscsi/cxgbit/cxgbit_target.c +++ b/drivers/target/iscsi/cxgbit/cxgbit_target.c | |||
@@ -900,7 +900,7 @@ cxgbit_handle_immediate_data(struct iscsi_cmd *cmd, struct iscsi_scsi_req *hdr, | |||
900 | 900 | ||
901 | sg_init_table(&ccmd->sg, 1); | 901 | sg_init_table(&ccmd->sg, 1); |
902 | sg_set_page(&ccmd->sg, skb_frag_page(dfrag), | 902 | sg_set_page(&ccmd->sg, skb_frag_page(dfrag), |
903 | skb_frag_size(dfrag), dfrag->page_offset); | 903 | skb_frag_size(dfrag), skb_frag_off(dfrag)); |
904 | get_page(skb_frag_page(dfrag)); | 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; |
@@ -1403,7 +1403,7 @@ 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, | 1406 | skb, i, skb_frag_off(&ssi->frags[i]), |
1407 | skb_frag_size(&ssi->frags[i])); | 1407 | skb_frag_size(&ssi->frags[i])); |
1408 | } | 1408 | } |
1409 | 1409 | ||
diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c index a8cb6b2e20c1..4072e9d394d6 100644 --- a/net/appletalk/ddp.c +++ b/net/appletalk/ddp.c | |||
@@ -953,8 +953,8 @@ static unsigned long atalk_sum_skb(const struct sk_buff *skb, int offset, | |||
953 | if (copy > len) | 953 | if (copy > len) |
954 | copy = len; | 954 | copy = len; |
955 | vaddr = kmap_atomic(skb_frag_page(frag)); | 955 | vaddr = kmap_atomic(skb_frag_page(frag)); |
956 | sum = atalk_sum_partial(vaddr + frag->page_offset + | 956 | sum = atalk_sum_partial(vaddr + skb_frag_off(frag) + |
957 | offset - start, copy, sum); | 957 | offset - start, copy, sum); |
958 | kunmap_atomic(vaddr); | 958 | kunmap_atomic(vaddr); |
959 | 959 | ||
960 | if (!(len -= copy)) | 960 | if (!(len -= copy)) |
diff --git a/net/core/datagram.c b/net/core/datagram.c index 45a162ef5e02..4cc8dc5db2b7 100644 --- a/net/core/datagram.c +++ b/net/core/datagram.c | |||
@@ -442,8 +442,8 @@ static int __skb_datagram_iter(const struct sk_buff *skb, int offset, | |||
442 | 442 | ||
443 | if (copy > len) | 443 | if (copy > len) |
444 | copy = len; | 444 | copy = len; |
445 | n = cb(vaddr + frag->page_offset + | 445 | n = cb(vaddr + skb_frag_off(frag) + offset - start, |
446 | offset - start, copy, data, to); | 446 | copy, data, to); |
447 | kunmap(page); | 447 | kunmap(page); |
448 | offset += n; | 448 | offset += n; |
449 | if (n != copy) | 449 | if (n != copy) |
@@ -573,7 +573,7 @@ int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset, | |||
573 | if (copy > len) | 573 | if (copy > len) |
574 | copy = len; | 574 | copy = len; |
575 | copied = copy_page_from_iter(skb_frag_page(frag), | 575 | copied = copy_page_from_iter(skb_frag_page(frag), |
576 | frag->page_offset + offset - start, | 576 | skb_frag_off(frag) + offset - start, |
577 | copy, from); | 577 | copy, from); |
578 | if (copied != copy) | 578 | if (copied != copy) |
579 | goto fault; | 579 | goto fault; |
diff --git a/net/core/dev.c b/net/core/dev.c index fc676b2610e3..e2a11c62197b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -5481,7 +5481,7 @@ static void gro_pull_from_frag0(struct sk_buff *skb, int grow) | |||
5481 | skb->data_len -= grow; | 5481 | skb->data_len -= grow; |
5482 | skb->tail += grow; | 5482 | skb->tail += grow; |
5483 | 5483 | ||
5484 | pinfo->frags[0].page_offset += grow; | 5484 | skb_frag_off_add(&pinfo->frags[0], grow); |
5485 | skb_frag_size_sub(&pinfo->frags[0], grow); | 5485 | skb_frag_size_sub(&pinfo->frags[0], grow); |
5486 | 5486 | ||
5487 | if (unlikely(!skb_frag_size(&pinfo->frags[0]))) { | 5487 | if (unlikely(!skb_frag_size(&pinfo->frags[0]))) { |
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index bb9915291644..c5dbdc87342a 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c | |||
@@ -2652,7 +2652,7 @@ static void pktgen_finalize_skb(struct pktgen_dev *pkt_dev, struct sk_buff *skb, | |||
2652 | } | 2652 | } |
2653 | get_page(pkt_dev->page); | 2653 | get_page(pkt_dev->page); |
2654 | skb_frag_set_page(skb, i, pkt_dev->page); | 2654 | skb_frag_set_page(skb, i, pkt_dev->page); |
2655 | skb_shinfo(skb)->frags[i].page_offset = 0; | 2655 | skb_frag_off_set(&skb_shinfo(skb)->frags[i], 0); |
2656 | /*last fragment, fill rest of data*/ | 2656 | /*last fragment, fill rest of data*/ |
2657 | if (i == (frags - 1)) | 2657 | if (i == (frags - 1)) |
2658 | skb_frag_size_set(&skb_shinfo(skb)->frags[i], | 2658 | skb_frag_size_set(&skb_shinfo(skb)->frags[i], |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 0b788df5a75b..ea8e8d332d85 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -785,7 +785,7 @@ void skb_dump(const char *level, const struct sk_buff *skb, bool full_pkt) | |||
785 | struct page *p; | 785 | struct page *p; |
786 | u8 *vaddr; | 786 | u8 *vaddr; |
787 | 787 | ||
788 | skb_frag_foreach_page(frag, frag->page_offset, | 788 | skb_frag_foreach_page(frag, skb_frag_off(frag), |
789 | skb_frag_size(frag), p, p_off, p_len, | 789 | skb_frag_size(frag), p, p_off, p_len, |
790 | copied) { | 790 | copied) { |
791 | seg_len = min_t(int, p_len, len); | 791 | seg_len = min_t(int, p_len, len); |
@@ -1375,7 +1375,7 @@ int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask) | |||
1375 | struct page *p; | 1375 | struct page *p; |
1376 | u8 *vaddr; | 1376 | u8 *vaddr; |
1377 | 1377 | ||
1378 | skb_frag_foreach_page(f, f->page_offset, skb_frag_size(f), | 1378 | skb_frag_foreach_page(f, skb_frag_off(f), skb_frag_size(f), |
1379 | p, p_off, p_len, copied) { | 1379 | p, p_off, p_len, copied) { |
1380 | u32 copy, done = 0; | 1380 | u32 copy, done = 0; |
1381 | vaddr = kmap_atomic(p); | 1381 | vaddr = kmap_atomic(p); |
@@ -2144,10 +2144,12 @@ pull_pages: | |||
2144 | skb_frag_unref(skb, i); | 2144 | skb_frag_unref(skb, i); |
2145 | eat -= size; | 2145 | eat -= size; |
2146 | } else { | 2146 | } else { |
2147 | skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i]; | 2147 | skb_frag_t *frag = &skb_shinfo(skb)->frags[k]; |
2148 | |||
2149 | *frag = skb_shinfo(skb)->frags[i]; | ||
2148 | if (eat) { | 2150 | if (eat) { |
2149 | skb_shinfo(skb)->frags[k].page_offset += eat; | 2151 | skb_frag_off_add(frag, eat); |
2150 | skb_frag_size_sub(&skb_shinfo(skb)->frags[k], eat); | 2152 | skb_frag_size_sub(frag, eat); |
2151 | if (!i) | 2153 | if (!i) |
2152 | goto end; | 2154 | goto end; |
2153 | eat = 0; | 2155 | eat = 0; |
@@ -2219,7 +2221,7 @@ int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len) | |||
2219 | copy = len; | 2221 | copy = len; |
2220 | 2222 | ||
2221 | skb_frag_foreach_page(f, | 2223 | skb_frag_foreach_page(f, |
2222 | f->page_offset + offset - start, | 2224 | skb_frag_off(f) + offset - start, |
2223 | copy, p, p_off, p_len, copied) { | 2225 | copy, p, p_off, p_len, copied) { |
2224 | vaddr = kmap_atomic(p); | 2226 | vaddr = kmap_atomic(p); |
2225 | memcpy(to + copied, vaddr + p_off, p_len); | 2227 | memcpy(to + copied, vaddr + p_off, p_len); |
@@ -2395,7 +2397,7 @@ static bool __skb_splice_bits(struct sk_buff *skb, struct pipe_inode_info *pipe, | |||
2395 | const skb_frag_t *f = &skb_shinfo(skb)->frags[seg]; | 2397 | const skb_frag_t *f = &skb_shinfo(skb)->frags[seg]; |
2396 | 2398 | ||
2397 | if (__splice_segment(skb_frag_page(f), | 2399 | if (__splice_segment(skb_frag_page(f), |
2398 | f->page_offset, skb_frag_size(f), | 2400 | skb_frag_off(f), skb_frag_size(f), |
2399 | offset, len, spd, false, sk, pipe)) | 2401 | offset, len, spd, false, sk, pipe)) |
2400 | return true; | 2402 | return true; |
2401 | } | 2403 | } |
@@ -2498,7 +2500,7 @@ do_frag_list: | |||
2498 | 2500 | ||
2499 | while (slen) { | 2501 | while (slen) { |
2500 | ret = kernel_sendpage_locked(sk, skb_frag_page(frag), | 2502 | ret = kernel_sendpage_locked(sk, skb_frag_page(frag), |
2501 | frag->page_offset + offset, | 2503 | skb_frag_off(frag) + offset, |
2502 | slen, MSG_DONTWAIT); | 2504 | slen, MSG_DONTWAIT); |
2503 | if (ret <= 0) | 2505 | if (ret <= 0) |
2504 | goto error; | 2506 | goto error; |
@@ -2580,7 +2582,7 @@ int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len) | |||
2580 | copy = len; | 2582 | copy = len; |
2581 | 2583 | ||
2582 | skb_frag_foreach_page(frag, | 2584 | skb_frag_foreach_page(frag, |
2583 | frag->page_offset + offset - start, | 2585 | skb_frag_off(frag) + offset - start, |
2584 | copy, p, p_off, p_len, copied) { | 2586 | copy, p, p_off, p_len, copied) { |
2585 | vaddr = kmap_atomic(p); | 2587 | vaddr = kmap_atomic(p); |
2586 | memcpy(vaddr + p_off, from + copied, p_len); | 2588 | memcpy(vaddr + p_off, from + copied, p_len); |
@@ -2660,7 +2662,7 @@ __wsum __skb_checksum(const struct sk_buff *skb, int offset, int len, | |||
2660 | copy = len; | 2662 | copy = len; |
2661 | 2663 | ||
2662 | skb_frag_foreach_page(frag, | 2664 | skb_frag_foreach_page(frag, |
2663 | frag->page_offset + offset - start, | 2665 | skb_frag_off(frag) + offset - start, |
2664 | copy, p, p_off, p_len, copied) { | 2666 | copy, p, p_off, p_len, copied) { |
2665 | vaddr = kmap_atomic(p); | 2667 | vaddr = kmap_atomic(p); |
2666 | csum2 = INDIRECT_CALL_1(ops->update, | 2668 | csum2 = INDIRECT_CALL_1(ops->update, |
@@ -2759,7 +2761,7 @@ __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, | |||
2759 | copy = len; | 2761 | copy = len; |
2760 | 2762 | ||
2761 | skb_frag_foreach_page(frag, | 2763 | skb_frag_foreach_page(frag, |
2762 | frag->page_offset + offset - start, | 2764 | skb_frag_off(frag) + offset - start, |
2763 | copy, p, p_off, p_len, copied) { | 2765 | copy, p, p_off, p_len, copied) { |
2764 | vaddr = kmap_atomic(p); | 2766 | vaddr = kmap_atomic(p); |
2765 | csum2 = csum_partial_copy_nocheck(vaddr + p_off, | 2767 | csum2 = csum_partial_copy_nocheck(vaddr + p_off, |
@@ -3234,7 +3236,7 @@ static inline void skb_split_no_header(struct sk_buff *skb, | |||
3234 | * 2. Split is accurately. We make this. | 3236 | * 2. Split is accurately. We make this. |
3235 | */ | 3237 | */ |
3236 | skb_frag_ref(skb, i); | 3238 | skb_frag_ref(skb, i); |
3237 | skb_shinfo(skb1)->frags[0].page_offset += len - pos; | 3239 | skb_frag_off_add(&skb_shinfo(skb1)->frags[0], len - pos); |
3238 | skb_frag_size_sub(&skb_shinfo(skb1)->frags[0], len - pos); | 3240 | skb_frag_size_sub(&skb_shinfo(skb1)->frags[0], len - pos); |
3239 | skb_frag_size_set(&skb_shinfo(skb)->frags[i], len - pos); | 3241 | skb_frag_size_set(&skb_shinfo(skb)->frags[i], len - pos); |
3240 | skb_shinfo(skb)->nr_frags++; | 3242 | skb_shinfo(skb)->nr_frags++; |
@@ -3316,7 +3318,7 @@ int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen) | |||
3316 | */ | 3318 | */ |
3317 | if (!to || | 3319 | if (!to || |
3318 | !skb_can_coalesce(tgt, to, skb_frag_page(fragfrom), | 3320 | !skb_can_coalesce(tgt, to, skb_frag_page(fragfrom), |
3319 | fragfrom->page_offset)) { | 3321 | skb_frag_off(fragfrom))) { |
3320 | merge = -1; | 3322 | merge = -1; |
3321 | } else { | 3323 | } else { |
3322 | merge = to - 1; | 3324 | merge = to - 1; |
@@ -3333,7 +3335,7 @@ int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen) | |||
3333 | 3335 | ||
3334 | skb_frag_size_add(fragto, shiftlen); | 3336 | skb_frag_size_add(fragto, shiftlen); |
3335 | skb_frag_size_sub(fragfrom, shiftlen); | 3337 | skb_frag_size_sub(fragfrom, shiftlen); |
3336 | fragfrom->page_offset += shiftlen; | 3338 | skb_frag_off_add(fragfrom, shiftlen); |
3337 | 3339 | ||
3338 | goto onlymerged; | 3340 | goto onlymerged; |
3339 | } | 3341 | } |
@@ -3364,11 +3366,11 @@ int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen) | |||
3364 | 3366 | ||
3365 | } else { | 3367 | } else { |
3366 | __skb_frag_ref(fragfrom); | 3368 | __skb_frag_ref(fragfrom); |
3367 | fragto->bv_page = fragfrom->bv_page; | 3369 | skb_frag_page_copy(fragto, fragfrom); |
3368 | fragto->page_offset = fragfrom->page_offset; | 3370 | skb_frag_off_copy(fragto, fragfrom); |
3369 | skb_frag_size_set(fragto, todo); | 3371 | skb_frag_size_set(fragto, todo); |
3370 | 3372 | ||
3371 | fragfrom->page_offset += todo; | 3373 | skb_frag_off_add(fragfrom, todo); |
3372 | skb_frag_size_sub(fragfrom, todo); | 3374 | skb_frag_size_sub(fragfrom, todo); |
3373 | todo = 0; | 3375 | todo = 0; |
3374 | 3376 | ||
@@ -3493,7 +3495,7 @@ next_skb: | |||
3493 | if (!st->frag_data) | 3495 | if (!st->frag_data) |
3494 | st->frag_data = kmap_atomic(skb_frag_page(frag)); | 3496 | st->frag_data = kmap_atomic(skb_frag_page(frag)); |
3495 | 3497 | ||
3496 | *data = (u8 *) st->frag_data + frag->page_offset + | 3498 | *data = (u8 *) st->frag_data + skb_frag_off(frag) + |
3497 | (abs_offset - st->stepped_offset); | 3499 | (abs_offset - st->stepped_offset); |
3498 | 3500 | ||
3499 | return block_limit - abs_offset; | 3501 | return block_limit - abs_offset; |
@@ -3630,8 +3632,8 @@ static inline skb_frag_t skb_head_frag_to_page_desc(struct sk_buff *frag_skb) | |||
3630 | 3632 | ||
3631 | page = virt_to_head_page(frag_skb->head); | 3633 | page = virt_to_head_page(frag_skb->head); |
3632 | __skb_frag_set_page(&head_frag, page); | 3634 | __skb_frag_set_page(&head_frag, page); |
3633 | head_frag.page_offset = frag_skb->data - | 3635 | skb_frag_off_set(&head_frag, frag_skb->data - |
3634 | (unsigned char *)page_address(page); | 3636 | (unsigned char *)page_address(page)); |
3635 | skb_frag_size_set(&head_frag, skb_headlen(frag_skb)); | 3637 | skb_frag_size_set(&head_frag, skb_headlen(frag_skb)); |
3636 | return head_frag; | 3638 | return head_frag; |
3637 | } | 3639 | } |
@@ -3875,7 +3877,7 @@ normal: | |||
3875 | size = skb_frag_size(nskb_frag); | 3877 | size = skb_frag_size(nskb_frag); |
3876 | 3878 | ||
3877 | if (pos < offset) { | 3879 | if (pos < offset) { |
3878 | nskb_frag->page_offset += offset - pos; | 3880 | skb_frag_off_add(nskb_frag, offset - pos); |
3879 | skb_frag_size_sub(nskb_frag, offset - pos); | 3881 | skb_frag_size_sub(nskb_frag, offset - pos); |
3880 | } | 3882 | } |
3881 | 3883 | ||
@@ -3996,7 +3998,7 @@ int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb) | |||
3996 | *--frag = *--frag2; | 3998 | *--frag = *--frag2; |
3997 | } while (--i); | 3999 | } while (--i); |
3998 | 4000 | ||
3999 | frag->page_offset += offset; | 4001 | skb_frag_off_add(frag, offset); |
4000 | skb_frag_size_sub(frag, offset); | 4002 | skb_frag_size_sub(frag, offset); |
4001 | 4003 | ||
4002 | /* all fragments truesize : remove (head size + sk_buff) */ | 4004 | /* all fragments truesize : remove (head size + sk_buff) */ |
@@ -4026,7 +4028,7 @@ int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb) | |||
4026 | pinfo->nr_frags = nr_frags + 1 + skbinfo->nr_frags; | 4028 | pinfo->nr_frags = nr_frags + 1 + skbinfo->nr_frags; |
4027 | 4029 | ||
4028 | __skb_frag_set_page(frag, page); | 4030 | __skb_frag_set_page(frag, page); |
4029 | frag->page_offset = first_offset; | 4031 | skb_frag_off_set(frag, first_offset); |
4030 | skb_frag_size_set(frag, first_size); | 4032 | skb_frag_size_set(frag, first_size); |
4031 | 4033 | ||
4032 | memcpy(frag + 1, skbinfo->frags, sizeof(*frag) * skbinfo->nr_frags); | 4034 | memcpy(frag + 1, skbinfo->frags, sizeof(*frag) * skbinfo->nr_frags); |
@@ -4042,7 +4044,7 @@ merge: | |||
4042 | if (offset > headlen) { | 4044 | if (offset > headlen) { |
4043 | unsigned int eat = offset - headlen; | 4045 | unsigned int eat = offset - headlen; |
4044 | 4046 | ||
4045 | skbinfo->frags[0].page_offset += eat; | 4047 | skb_frag_off_add(&skbinfo->frags[0], eat); |
4046 | skb_frag_size_sub(&skbinfo->frags[0], eat); | 4048 | skb_frag_size_sub(&skbinfo->frags[0], eat); |
4047 | skb->data_len -= eat; | 4049 | skb->data_len -= eat; |
4048 | skb->len -= eat; | 4050 | skb->len -= eat; |
@@ -4167,7 +4169,7 @@ __skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len, | |||
4167 | if (copy > len) | 4169 | if (copy > len) |
4168 | copy = len; | 4170 | copy = len; |
4169 | sg_set_page(&sg[elt], skb_frag_page(frag), copy, | 4171 | sg_set_page(&sg[elt], skb_frag_page(frag), copy, |
4170 | frag->page_offset+offset-start); | 4172 | skb_frag_off(frag) + offset - start); |
4171 | elt++; | 4173 | elt++; |
4172 | if (!(len -= copy)) | 4174 | if (!(len -= copy)) |
4173 | return elt; | 4175 | return elt; |
@@ -5838,7 +5840,7 @@ static int pskb_carve_inside_nonlinear(struct sk_buff *skb, const u32 off, | |||
5838 | * where splitting is expensive. | 5840 | * where splitting is expensive. |
5839 | * 2. Split is accurately. We make this. | 5841 | * 2. Split is accurately. We make this. |
5840 | */ | 5842 | */ |
5841 | shinfo->frags[0].page_offset += off - pos; | 5843 | skb_frag_off_add(&shinfo->frags[0], off - pos); |
5842 | skb_frag_size_sub(&shinfo->frags[0], off - pos); | 5844 | skb_frag_size_sub(&shinfo->frags[0], off - pos); |
5843 | } | 5845 | } |
5844 | skb_frag_ref(skb, i); | 5846 | skb_frag_ref(skb, i); |
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index f62f0e7e3cdd..a0a66321c0ee 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -1782,12 +1782,12 @@ static int tcp_zerocopy_receive(struct sock *sk, | |||
1782 | frags++; | 1782 | frags++; |
1783 | } | 1783 | } |
1784 | } | 1784 | } |
1785 | if (skb_frag_size(frags) != PAGE_SIZE || frags->page_offset) { | 1785 | if (skb_frag_size(frags) != PAGE_SIZE || skb_frag_off(frags)) { |
1786 | int remaining = zc->recv_skip_hint; | 1786 | int remaining = zc->recv_skip_hint; |
1787 | int size = skb_frag_size(frags); | 1787 | int size = skb_frag_size(frags); |
1788 | 1788 | ||
1789 | while (remaining && (size != PAGE_SIZE || | 1789 | while (remaining && (size != PAGE_SIZE || |
1790 | frags->page_offset)) { | 1790 | skb_frag_off(frags))) { |
1791 | remaining -= size; | 1791 | remaining -= size; |
1792 | frags++; | 1792 | frags++; |
1793 | size = skb_frag_size(frags); | 1793 | size = skb_frag_size(frags); |
@@ -3784,7 +3784,7 @@ int tcp_md5_hash_skb_data(struct tcp_md5sig_pool *hp, | |||
3784 | 3784 | ||
3785 | for (i = 0; i < shi->nr_frags; ++i) { | 3785 | for (i = 0; i < shi->nr_frags; ++i) { |
3786 | const skb_frag_t *f = &shi->frags[i]; | 3786 | const skb_frag_t *f = &shi->frags[i]; |
3787 | unsigned int offset = f->page_offset; | 3787 | unsigned int offset = skb_frag_off(f); |
3788 | struct page *page = skb_frag_page(f) + (offset >> PAGE_SHIFT); | 3788 | struct page *page = skb_frag_page(f) + (offset >> PAGE_SHIFT); |
3789 | 3789 | ||
3790 | sg_set_page(&sg, page, skb_frag_size(f), | 3790 | sg_set_page(&sg, page, skb_frag_size(f), |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 6e4afc48d7bb..e6d02e05bb1c 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -1402,7 +1402,7 @@ static int __pskb_trim_head(struct sk_buff *skb, int len) | |||
1402 | } else { | 1402 | } else { |
1403 | shinfo->frags[k] = shinfo->frags[i]; | 1403 | shinfo->frags[k] = shinfo->frags[i]; |
1404 | if (eat) { | 1404 | if (eat) { |
1405 | shinfo->frags[k].page_offset += eat; | 1405 | skb_frag_off_add(&shinfo->frags[k], eat); |
1406 | skb_frag_size_sub(&shinfo->frags[k], eat); | 1406 | skb_frag_size_sub(&shinfo->frags[k], eat); |
1407 | eat = 0; | 1407 | eat = 0; |
1408 | } | 1408 | } |
diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c index 05f63c4300e9..4ff75c3a8d6e 100644 --- a/net/kcm/kcmsock.c +++ b/net/kcm/kcmsock.c | |||
@@ -642,7 +642,7 @@ do_frag: | |||
642 | 642 | ||
643 | ret = kernel_sendpage(psock->sk->sk_socket, | 643 | ret = kernel_sendpage(psock->sk->sk_socket, |
644 | skb_frag_page(frag), | 644 | skb_frag_page(frag), |
645 | frag->page_offset + frag_offset, | 645 | skb_frag_off(frag) + frag_offset, |
646 | skb_frag_size(frag) - frag_offset, | 646 | skb_frag_size(frag) - frag_offset, |
647 | MSG_DONTWAIT); | 647 | MSG_DONTWAIT); |
648 | if (ret <= 0) { | 648 | if (ret <= 0) { |
diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c index 4ec8a06fa5d1..d184230665eb 100644 --- a/net/tls/tls_device.c +++ b/net/tls/tls_device.c | |||
@@ -244,12 +244,12 @@ static void tls_append_frag(struct tls_record_info *record, | |||
244 | 244 | ||
245 | frag = &record->frags[record->num_frags - 1]; | 245 | frag = &record->frags[record->num_frags - 1]; |
246 | if (skb_frag_page(frag) == pfrag->page && | 246 | if (skb_frag_page(frag) == pfrag->page && |
247 | frag->page_offset + skb_frag_size(frag) == pfrag->offset) { | 247 | skb_frag_off(frag) + skb_frag_size(frag) == pfrag->offset) { |
248 | skb_frag_size_add(frag, size); | 248 | skb_frag_size_add(frag, size); |
249 | } else { | 249 | } else { |
250 | ++frag; | 250 | ++frag; |
251 | __skb_frag_set_page(frag, pfrag->page); | 251 | __skb_frag_set_page(frag, pfrag->page); |
252 | frag->page_offset = pfrag->offset; | 252 | skb_frag_off_set(frag, pfrag->offset); |
253 | skb_frag_size_set(frag, size); | 253 | skb_frag_size_set(frag, size); |
254 | ++record->num_frags; | 254 | ++record->num_frags; |
255 | get_page(pfrag->page); | 255 | get_page(pfrag->page); |
@@ -301,7 +301,7 @@ static int tls_push_record(struct sock *sk, | |||
301 | frag = &record->frags[i]; | 301 | frag = &record->frags[i]; |
302 | sg_unmark_end(&offload_ctx->sg_tx_data[i]); | 302 | sg_unmark_end(&offload_ctx->sg_tx_data[i]); |
303 | sg_set_page(&offload_ctx->sg_tx_data[i], skb_frag_page(frag), | 303 | sg_set_page(&offload_ctx->sg_tx_data[i], skb_frag_page(frag), |
304 | skb_frag_size(frag), frag->page_offset); | 304 | skb_frag_size(frag), skb_frag_off(frag)); |
305 | sk_mem_charge(sk, skb_frag_size(frag)); | 305 | sk_mem_charge(sk, skb_frag_size(frag)); |
306 | get_page(skb_frag_page(frag)); | 306 | get_page(skb_frag_page(frag)); |
307 | } | 307 | } |
@@ -324,7 +324,7 @@ static int tls_create_new_record(struct tls_offload_context_tx *offload_ctx, | |||
324 | 324 | ||
325 | frag = &record->frags[0]; | 325 | frag = &record->frags[0]; |
326 | __skb_frag_set_page(frag, pfrag->page); | 326 | __skb_frag_set_page(frag, pfrag->page); |
327 | frag->page_offset = pfrag->offset; | 327 | skb_frag_off_set(frag, pfrag->offset); |
328 | skb_frag_size_set(frag, prepend_size); | 328 | skb_frag_size_set(frag, prepend_size); |
329 | 329 | ||
330 | get_page(pfrag->page); | 330 | get_page(pfrag->page); |
diff --git a/net/tls/tls_device_fallback.c b/net/tls/tls_device_fallback.c index 9070d68a92a4..28895333701e 100644 --- a/net/tls/tls_device_fallback.c +++ b/net/tls/tls_device_fallback.c | |||
@@ -273,7 +273,7 @@ static int fill_sg_in(struct scatterlist *sg_in, | |||
273 | 273 | ||
274 | __skb_frag_ref(frag); | 274 | __skb_frag_ref(frag); |
275 | sg_set_page(sg_in + i, skb_frag_page(frag), | 275 | sg_set_page(sg_in + i, skb_frag_page(frag), |
276 | skb_frag_size(frag), frag->page_offset); | 276 | skb_frag_size(frag), skb_frag_off(frag)); |
277 | 277 | ||
278 | remaining -= skb_frag_size(frag); | 278 | remaining -= skb_frag_size(frag); |
279 | 279 | ||
diff --git a/net/xfrm/xfrm_ipcomp.c b/net/xfrm/xfrm_ipcomp.c index 32c364d3bfb3..4d422447aadc 100644 --- a/net/xfrm/xfrm_ipcomp.c +++ b/net/xfrm/xfrm_ipcomp.c | |||
@@ -85,7 +85,7 @@ static int ipcomp_decompress(struct xfrm_state *x, struct sk_buff *skb) | |||
85 | if (dlen < len) | 85 | if (dlen < len) |
86 | len = dlen; | 86 | len = dlen; |
87 | 87 | ||
88 | frag->page_offset = 0; | 88 | skb_frag_off_set(frag, 0); |
89 | skb_frag_size_set(frag, len); | 89 | skb_frag_size_set(frag, len); |
90 | memcpy(skb_frag_address(frag), scratch, len); | 90 | memcpy(skb_frag_address(frag), scratch, len); |
91 | 91 | ||