aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Lemon <jonathan.lemon@gmail.com>2019-07-30 10:40:33 -0400
committerDavid S. Miller <davem@davemloft.net>2019-07-30 17:21:32 -0400
commitb54c9d5bd6e38edac9ce3a3f95f14a1292b5268d (patch)
treeb09848a92e53ce9533b4df27953ef59874080b53
parent7240b60c98d6309363a9f8d5a4ecd5b0626f2aff (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>
-rw-r--r--drivers/atm/eni.c2
-rw-r--r--drivers/hsi/clients/ssi_protocol.c2
-rw-r--r--drivers/infiniband/hw/hfi1/vnic_sdma.c2
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_ib.c3
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c2
-rw-r--r--drivers/net/ethernet/cavium/thunder/nicvf_queues.c2
-rw-r--r--drivers/net/ethernet/chelsio/cxgb3/sge.c2
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c12
-rw-r--r--drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c2
-rw-r--r--drivers/net/ethernet/ibm/ibmvnic.c2
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_txrx.c2
-rw-r--r--drivers/net/ethernet/intel/iavf/iavf_txrx.c2
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c4
-rw-r--r--drivers/net/ethernet/jme.c4
-rw-r--r--drivers/net/ethernet/marvell/mv643xx_eth.c2
-rw-r--r--drivers/net/ethernet/myricom/myri10ge/myri10ge.c6
-rw-r--r--drivers/net/ethernet/sfc/tx.c2
-rw-r--r--drivers/net/ethernet/sun/cassini.c8
-rw-r--r--drivers/net/ethernet/sun/niu.c2
-rw-r--r--drivers/net/ethernet/sun/sunvnet_common.c4
-rw-r--r--drivers/net/ethernet/ti/netcp_core.c2
-rw-r--r--drivers/net/hyperv/netvsc_drv.c4
-rw-r--r--drivers/net/thunderbolt.c2
-rw-r--r--drivers/net/usb/usbnet.c2
-rw-r--r--drivers/net/vmxnet3/vmxnet3_drv.c2
-rw-r--r--drivers/net/xen-netback/netback.c6
-rw-r--r--drivers/net/xen-netfront.c8
-rw-r--r--drivers/scsi/bnx2fc/bnx2fc_fcoe.c2
-rw-r--r--drivers/scsi/fcoe/fcoe.c3
-rw-r--r--drivers/scsi/fcoe/fcoe_transport.c2
-rw-r--r--drivers/scsi/qedf/qedf_main.c2
-rw-r--r--drivers/staging/unisys/visornic/visornic_main.c2
-rw-r--r--drivers/target/iscsi/cxgbit/cxgbit_target.c4
-rw-r--r--net/appletalk/ddp.c4
-rw-r--r--net/core/datagram.c6
-rw-r--r--net/core/dev.c2
-rw-r--r--net/core/pktgen.c2
-rw-r--r--net/core/skbuff.c54
-rw-r--r--net/ipv4/tcp.c6
-rw-r--r--net/ipv4/tcp_output.c2
-rw-r--r--net/kcm/kcmsock.c2
-rw-r--r--net/tls/tls_device.c8
-rw-r--r--net/tls/tls_device_fallback.c2
-rw-r--r--net/xfrm/xfrm_ipcomp.c2
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
1011static netdev_tx_t tbnet_start_xmit(struct sk_buff *skb, 1011static 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
137static u16 frag_get_pending_idx(skb_frag_t *frag) 137static 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
142static void frag_set_pending_idx(skb_frag_t *frag, u16 pending_idx) 142static 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
147static inline pending_ring_idx_t pending_index(unsigned i) 147static 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