Skip to content

Commit 504148f

Browse files
edumazetdavem330
authored andcommitted
net: add skb_[inner_]tcp_all_headers helpers
Most drivers use "skb_transport_offset(skb) + tcp_hdrlen(skb)" to compute headers length for a TCP packet, but others use more convoluted (but equivalent) ways. Add skb_tcp_all_headers() and skb_inner_tcp_all_headers() helpers to harmonize this a bit. Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 04740c5 commit 504148f

File tree

48 files changed

+119
-115
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+119
-115
lines changed

drivers/infiniband/ulp/ipoib/ipoib_ib.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,7 @@ int ipoib_send(struct net_device *dev, struct sk_buff *skb,
573573
unsigned int usable_sge = priv->max_send_sge - !!skb_headlen(skb);
574574

575575
if (skb_is_gso(skb)) {
576-
hlen = skb_transport_offset(skb) + tcp_hdrlen(skb);
576+
hlen = skb_tcp_all_headers(skb);
577577
phead = skb->data;
578578
if (unlikely(!skb_pull(skb, hlen))) {
579579
ipoib_warn(priv, "linear data too small\n");

drivers/net/ethernet/amd/xgbe/xgbe-drv.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1673,12 +1673,10 @@ static int xgbe_prep_tso(struct sk_buff *skb, struct xgbe_packet_data *packet)
16731673
return ret;
16741674

16751675
if (XGMAC_GET_BITS(packet->attributes, TX_PACKET_ATTRIBUTES, VXLAN)) {
1676-
packet->header_len = skb_inner_transport_offset(skb) +
1677-
inner_tcp_hdrlen(skb);
1676+
packet->header_len = skb_inner_tcp_all_headers(skb);
16781677
packet->tcp_header_len = inner_tcp_hdrlen(skb);
16791678
} else {
1680-
packet->header_len = skb_transport_offset(skb) +
1681-
tcp_hdrlen(skb);
1679+
packet->header_len = skb_tcp_all_headers(skb);
16821680
packet->tcp_header_len = tcp_hdrlen(skb);
16831681
}
16841682
packet->tcp_payload_len = skb->len - packet->header_len;

drivers/net/ethernet/atheros/atl1c/atl1c_main.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2072,7 +2072,7 @@ static u16 atl1c_cal_tpd_req(const struct sk_buff *skb)
20722072
tpd_req = skb_shinfo(skb)->nr_frags + 1;
20732073

20742074
if (skb_is_gso(skb)) {
2075-
proto_hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
2075+
proto_hdr_len = skb_tcp_all_headers(skb);
20762076
if (proto_hdr_len < skb_headlen(skb))
20772077
tpd_req++;
20782078
if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6)
@@ -2107,7 +2107,7 @@ static int atl1c_tso_csum(struct atl1c_adapter *adapter,
21072107
if (real_len < skb->len)
21082108
pskb_trim(skb, real_len);
21092109

2110-
hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
2110+
hdr_len = skb_tcp_all_headers(skb);
21112111
if (unlikely(skb->len == hdr_len)) {
21122112
/* only xsum need */
21132113
if (netif_msg_tx_queued(adapter))
@@ -2132,7 +2132,7 @@ static int atl1c_tso_csum(struct atl1c_adapter *adapter,
21322132
*tpd = atl1c_get_tpd(adapter, queue);
21332133
ipv6_hdr(skb)->payload_len = 0;
21342134
/* check payload == 0 byte ? */
2135-
hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
2135+
hdr_len = skb_tcp_all_headers(skb);
21362136
if (unlikely(skb->len == hdr_len)) {
21372137
/* only xsum need */
21382138
if (netif_msg_tx_queued(adapter))
@@ -2219,7 +2219,8 @@ static int atl1c_tx_map(struct atl1c_adapter *adapter,
22192219
tso = (tpd->word1 >> TPD_LSO_EN_SHIFT) & TPD_LSO_EN_MASK;
22202220
if (tso) {
22212221
/* TSO */
2222-
map_len = hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
2222+
hdr_len = skb_tcp_all_headers(skb);
2223+
map_len = hdr_len;
22232224
use_tpd = tpd;
22242225

22252226
buffer_info = atl1c_get_tx_buffer(adapter, use_tpd);

drivers/net/ethernet/atheros/atl1e/atl1e_main.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,8 +1609,7 @@ static u16 atl1e_cal_tdp_req(const struct sk_buff *skb)
16091609
if (skb_is_gso(skb)) {
16101610
if (skb->protocol == htons(ETH_P_IP) ||
16111611
(skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6)) {
1612-
proto_hdr_len = skb_transport_offset(skb) +
1613-
tcp_hdrlen(skb);
1612+
proto_hdr_len = skb_tcp_all_headers(skb);
16141613
if (proto_hdr_len < skb_headlen(skb)) {
16151614
tpd_req += ((skb_headlen(skb) - proto_hdr_len +
16161615
MAX_TX_BUF_LEN - 1) >>
@@ -1645,7 +1644,7 @@ static int atl1e_tso_csum(struct atl1e_adapter *adapter,
16451644
if (real_len < skb->len)
16461645
pskb_trim(skb, real_len);
16471646

1648-
hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
1647+
hdr_len = skb_tcp_all_headers(skb);
16491648
if (unlikely(skb->len == hdr_len)) {
16501649
/* only xsum need */
16511650
netdev_warn(adapter->netdev,
@@ -1713,7 +1712,8 @@ static int atl1e_tx_map(struct atl1e_adapter *adapter,
17131712
segment = (tpd->word3 >> TPD_SEGMENT_EN_SHIFT) & TPD_SEGMENT_EN_MASK;
17141713
if (segment) {
17151714
/* TSO */
1716-
map_len = hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
1715+
hdr_len = skb_tcp_all_headers(skb);
1716+
map_len = hdr_len;
17171717
use_tpd = tpd;
17181718

17191719
tx_buffer = atl1e_get_tx_buffer(adapter, use_tpd);

drivers/net/ethernet/atheros/atlx/atl1.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2115,7 +2115,7 @@ static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
21152115
ntohs(iph->tot_len));
21162116
if (real_len < skb->len)
21172117
pskb_trim(skb, real_len);
2118-
hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
2118+
hdr_len = skb_tcp_all_headers(skb);
21192119
if (skb->len == hdr_len) {
21202120
iph->check = 0;
21212121
tcp_hdr(skb)->check =
@@ -2206,7 +2206,7 @@ static void atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb,
22062206
retval = (ptpd->word3 >> TPD_SEGMENT_EN_SHIFT) & TPD_SEGMENT_EN_MASK;
22072207
if (retval) {
22082208
/* TSO */
2209-
hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
2209+
hdr_len = skb_tcp_all_headers(skb);
22102210
buffer_info->length = hdr_len;
22112211
page = virt_to_page(skb->data);
22122212
offset = offset_in_page(skb->data);
@@ -2367,8 +2367,7 @@ static netdev_tx_t atl1_xmit_frame(struct sk_buff *skb,
23672367
mss = skb_shinfo(skb)->gso_size;
23682368
if (mss) {
23692369
if (skb->protocol == htons(ETH_P_IP)) {
2370-
proto_hdr_len = (skb_transport_offset(skb) +
2371-
tcp_hdrlen(skb));
2370+
proto_hdr_len = skb_tcp_all_headers(skb);
23722371
if (unlikely(proto_hdr_len > len)) {
23732372
dev_kfree_skb_any(skb);
23742373
return NETDEV_TX_OK;

drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3421,12 +3421,9 @@ static int bnx2x_pkt_req_lin(struct bnx2x *bp, struct sk_buff *skb,
34213421

34223422
/* Headers length */
34233423
if (xmit_type & XMIT_GSO_ENC)
3424-
hlen = (int)(skb_inner_transport_header(skb) -
3425-
skb->data) +
3426-
inner_tcp_hdrlen(skb);
3424+
hlen = skb_inner_tcp_all_headers(skb);
34273425
else
3428-
hlen = (int)(skb_transport_header(skb) -
3429-
skb->data) + tcp_hdrlen(skb);
3426+
hlen = skb_tcp_all_headers(skb);
34303427

34313428
/* Amount of data (w/o headers) on linear part of SKB*/
34323429
first_bd_sz = skb_headlen(skb) - hlen;
@@ -3534,15 +3531,13 @@ static u8 bnx2x_set_pbd_csum_enc(struct bnx2x *bp, struct sk_buff *skb,
35343531
ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW_SHIFT) &
35353532
ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW;
35363533

3537-
return skb_inner_transport_header(skb) +
3538-
inner_tcp_hdrlen(skb) - skb->data;
3534+
return skb_inner_tcp_all_headers(skb);
35393535
}
35403536

35413537
/* We support checksum offload for TCP and UDP only.
35423538
* No need to pass the UDP header length - it's a constant.
35433539
*/
3544-
return skb_inner_transport_header(skb) +
3545-
sizeof(struct udphdr) - skb->data;
3540+
return skb_inner_transport_offset(skb) + sizeof(struct udphdr);
35463541
}
35473542

35483543
/**
@@ -3568,12 +3563,12 @@ static u8 bnx2x_set_pbd_csum_e2(struct bnx2x *bp, struct sk_buff *skb,
35683563
ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW_SHIFT) &
35693564
ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW;
35703565

3571-
return skb_transport_header(skb) + tcp_hdrlen(skb) - skb->data;
3566+
return skb_tcp_all_headers(skb);
35723567
}
35733568
/* We support checksum offload for TCP and UDP only.
35743569
* No need to pass the UDP header length - it's a constant.
35753570
*/
3576-
return skb_transport_header(skb) + sizeof(struct udphdr) - skb->data;
3571+
return skb_transport_offset(skb) + sizeof(struct udphdr);
35773572
}
35783573

35793574
/* set FW indication according to inner or outer protocols if tunneled */

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -535,12 +535,9 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb, struct net_device *dev)
535535
u32 hdr_len;
536536

537537
if (skb->encapsulation)
538-
hdr_len = skb_inner_network_offset(skb) +
539-
skb_inner_network_header_len(skb) +
540-
inner_tcp_hdrlen(skb);
538+
hdr_len = skb_inner_tcp_all_headers(skb);
541539
else
542-
hdr_len = skb_transport_offset(skb) +
543-
tcp_hdrlen(skb);
540+
hdr_len = skb_tcp_all_headers(skb);
544541

545542
txbd1->tx_bd_hsize_lflags |= cpu_to_le32(TX_BD_FLAGS_LSO |
546543
TX_BD_FLAGS_T_IPID |

drivers/net/ethernet/broadcom/tg3.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7944,7 +7944,7 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
79447944
iph = ip_hdr(skb);
79457945
tcp_opt_len = tcp_optlen(skb);
79467946

7947-
hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb) - ETH_HLEN;
7947+
hdr_len = skb_tcp_all_headers(skb) - ETH_HLEN;
79487948

79497949
/* HW/FW can not correctly segment packets that have been
79507950
* vlan encapsulated.

drivers/net/ethernet/brocade/bna/bnad.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2823,8 +2823,7 @@ bnad_txq_wi_prepare(struct bnad *bnad, struct bna_tcb *tcb,
28232823
BNAD_UPDATE_CTR(bnad, tx_skb_mss_too_long);
28242824
return -EINVAL;
28252825
}
2826-
if (unlikely((gso_size + skb_transport_offset(skb) +
2827-
tcp_hdrlen(skb)) >= skb->len)) {
2826+
if (unlikely((gso_size + skb_tcp_all_headers(skb)) >= skb->len)) {
28282827
txqent->hdr.wi.opcode = htons(BNA_TXQ_WI_SEND);
28292828
txqent->hdr.wi.lso_mss = 0;
28302829
BNAD_UPDATE_CTR(bnad, tx_skb_tso_too_short);
@@ -2872,8 +2871,7 @@ bnad_txq_wi_prepare(struct bnad *bnad, struct bna_tcb *tcb,
28722871
BNAD_UPDATE_CTR(bnad, tcpcsum_offload);
28732872

28742873
if (unlikely(skb_headlen(skb) <
2875-
skb_transport_offset(skb) +
2876-
tcp_hdrlen(skb))) {
2874+
skb_tcp_all_headers(skb))) {
28772875
BNAD_UPDATE_CTR(bnad, tx_skb_tcp_hdr);
28782876
return -EINVAL;
28792877
}

drivers/net/ethernet/cadence/macb_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2267,7 +2267,7 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
22672267
/* only queue eth + ip headers separately for UDP */
22682268
hdrlen = skb_transport_offset(skb);
22692269
else
2270-
hdrlen = skb_transport_offset(skb) + tcp_hdrlen(skb);
2270+
hdrlen = skb_tcp_all_headers(skb);
22712271
if (skb_headlen(skb) < hdrlen) {
22722272
netdev_err(bp->dev, "Error - LSO headers fragmented!!!\n");
22732273
/* if this is required, would need to copy to single buffer */

drivers/net/ethernet/cavium/thunder/nicvf_queues.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,7 +1261,7 @@ int nicvf_xdp_sq_append_pkt(struct nicvf *nic, struct snd_queue *sq,
12611261
static int nicvf_tso_count_subdescs(struct sk_buff *skb)
12621262
{
12631263
struct skb_shared_info *sh = skb_shinfo(skb);
1264-
unsigned int sh_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
1264+
unsigned int sh_len = skb_tcp_all_headers(skb);
12651265
unsigned int data_len = skb->len - sh_len;
12661266
unsigned int p_len = sh->gso_size;
12671267
long f_id = -1; /* id of the current fragment */
@@ -1382,7 +1382,7 @@ nicvf_sq_add_hdr_subdesc(struct nicvf *nic, struct snd_queue *sq, int qentry,
13821382

13831383
if (nic->hw_tso && skb_shinfo(skb)->gso_size) {
13841384
hdr->tso = 1;
1385-
hdr->tso_start = skb_transport_offset(skb) + tcp_hdrlen(skb);
1385+
hdr->tso_start = skb_tcp_all_headers(skb);
13861386
hdr->tso_max_paysize = skb_shinfo(skb)->gso_size;
13871387
/* For non-tunneled pkts, point this to L2 ethertype */
13881388
hdr->inner_l3_offset = skb_network_offset(skb) - 2;

drivers/net/ethernet/chelsio/cxgb4/sge.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1531,7 +1531,7 @@ static netdev_tx_t cxgb4_eth_xmit(struct sk_buff *skb, struct net_device *dev)
15311531

15321532
#if IS_ENABLED(CONFIG_CHELSIO_TLS_DEVICE)
15331533
if (cxgb4_is_ktls_skb(skb) &&
1534-
(skb->len - (skb_transport_offset(skb) + tcp_hdrlen(skb))))
1534+
(skb->len - skb_tcp_all_headers(skb)))
15351535
return adap->uld[CXGB4_ULD_KTLS].tx_handler(skb, dev);
15361536
#endif /* CHELSIO_TLS_DEVICE */
15371537

drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,7 +1012,7 @@ chcr_ktls_write_tcp_options(struct chcr_ktls_info *tx_info, struct sk_buff *skb,
10121012
/* packet length = eth hdr len + ip hdr len + tcp hdr len
10131013
* (including options).
10141014
*/
1015-
pktlen = skb_transport_offset(skb) + tcp_hdrlen(skb);
1015+
pktlen = skb_tcp_all_headers(skb);
10161016

10171017
ctrl = sizeof(*cpl) + pktlen;
10181018
len16 = DIV_ROUND_UP(sizeof(*wr) + ctrl, 16);
@@ -1907,7 +1907,7 @@ static int chcr_ktls_sw_fallback(struct sk_buff *skb,
19071907
return 0;
19081908

19091909
th = tcp_hdr(nskb);
1910-
skb_offset = skb_transport_offset(nskb) + tcp_hdrlen(nskb);
1910+
skb_offset = skb_tcp_all_headers(nskb);
19111911
data_len = nskb->len - skb_offset;
19121912
skb_tx_timestamp(nskb);
19131913

@@ -1938,7 +1938,7 @@ static int chcr_ktls_xmit(struct sk_buff *skb, struct net_device *dev)
19381938
unsigned long flags;
19391939

19401940
tcp_seq = ntohl(th->seq);
1941-
skb_offset = skb_transport_offset(skb) + tcp_hdrlen(skb);
1941+
skb_offset = skb_tcp_all_headers(skb);
19421942
skb_data_len = skb->len - skb_offset;
19431943
data_len = skb_data_len;
19441944

drivers/net/ethernet/cisco/enic/enic_main.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -680,11 +680,10 @@ static int enic_queue_wq_skb_tso(struct enic *enic, struct vnic_wq *wq,
680680
skb_frag_t *frag;
681681

682682
if (skb->encapsulation) {
683-
hdr_len = skb_inner_transport_header(skb) - skb->data;
684-
hdr_len += inner_tcp_hdrlen(skb);
683+
hdr_len = skb_inner_tcp_all_headers(skb);
685684
enic_preload_tcp_csum_encap(skb);
686685
} else {
687-
hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
686+
hdr_len = skb_tcp_all_headers(skb);
688687
enic_preload_tcp_csum(skb);
689688
}
690689

drivers/net/ethernet/emulex/benet/be_main.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -737,9 +737,9 @@ void be_link_status_update(struct be_adapter *adapter, u8 link_status)
737737
static int be_gso_hdr_len(struct sk_buff *skb)
738738
{
739739
if (skb->encapsulation)
740-
return skb_inner_transport_offset(skb) +
741-
inner_tcp_hdrlen(skb);
742-
return skb_transport_offset(skb) + tcp_hdrlen(skb);
740+
return skb_inner_tcp_all_headers(skb);
741+
742+
return skb_tcp_all_headers(skb);
743743
}
744744

745745
static void be_tx_stats_update(struct be_tx_obj *txo, struct sk_buff *skb)

drivers/net/ethernet/freescale/fec_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ fec_enet_txq_put_hdr_tso(struct fec_enet_priv_tx_q *txq,
691691
struct bufdesc *bdp, int index)
692692
{
693693
struct fec_enet_private *fep = netdev_priv(ndev);
694-
int hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
694+
int hdr_len = skb_tcp_all_headers(skb);
695695
struct bufdesc_ex *ebdp = container_of(bdp, struct bufdesc_ex, desc);
696696
void *bufaddr;
697697
unsigned long dmabuf;

drivers/net/ethernet/fungible/funeth/funeth_tx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ static struct sk_buff *fun_tls_tx(struct sk_buff *skb, struct funeth_txq *q,
8383
const struct fun_ktls_tx_ctx *tls_ctx;
8484
u32 datalen, seq;
8585

86-
datalen = skb->len - (skb_transport_offset(skb) + tcp_hdrlen(skb));
86+
datalen = skb->len - skb_tcp_all_headers(skb);
8787
if (!datalen)
8888
return skb;
8989

drivers/net/ethernet/google/gve/gve_tx_dqo.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ static int gve_prep_tso(struct sk_buff *skb)
386386
(__force __wsum)htonl(paylen));
387387

388388
/* Compute length of segmentation header. */
389-
header_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
389+
header_len = skb_tcp_all_headers(skb);
390390
break;
391391
default:
392392
return -EINVAL;
@@ -598,9 +598,9 @@ static int gve_num_buffer_descs_needed(const struct sk_buff *skb)
598598
*/
599599
static bool gve_can_send_tso(const struct sk_buff *skb)
600600
{
601-
const int header_len = skb_checksum_start_offset(skb) + tcp_hdrlen(skb);
602601
const int max_bufs_per_seg = GVE_TX_MAX_DATA_DESCS - 1;
603602
const struct skb_shared_info *shinfo = skb_shinfo(skb);
603+
const int header_len = skb_tcp_all_headers(skb);
604604
const int gso_size = shinfo->gso_size;
605605
int cur_seg_num_bufs;
606606
int cur_seg_size;

drivers/net/ethernet/hisilicon/hns/hns_enet.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
#define HNS_BUFFER_SIZE_2048 2048
3232

3333
#define BD_MAX_SEND_SIZE 8191
34-
#define SKB_TMP_LEN(SKB) \
35-
(((SKB)->transport_header - (SKB)->mac_header) + tcp_hdrlen(SKB))
3634

3735
static void fill_v2_desc_hw(struct hnae_ring *ring, void *priv, int size,
3836
int send_sz, dma_addr_t dma, int frag_end,
@@ -94,7 +92,7 @@ static void fill_v2_desc_hw(struct hnae_ring *ring, void *priv, int size,
9492
HNSV2_TXD_TSE_B, 1);
9593
l4_len = tcp_hdrlen(skb);
9694
mss = skb_shinfo(skb)->gso_size;
97-
paylen = skb->len - SKB_TMP_LEN(skb);
95+
paylen = skb->len - skb_tcp_all_headers(skb);
9896
}
9997
} else if (skb->protocol == htons(ETH_P_IPV6)) {
10098
hnae_set_bit(tvsvsn, HNSV2_TXD_IPV6_B, 1);
@@ -108,7 +106,7 @@ static void fill_v2_desc_hw(struct hnae_ring *ring, void *priv, int size,
108106
HNSV2_TXD_TSE_B, 1);
109107
l4_len = tcp_hdrlen(skb);
110108
mss = skb_shinfo(skb)->gso_size;
111-
paylen = skb->len - SKB_TMP_LEN(skb);
109+
paylen = skb->len - skb_tcp_all_headers(skb);
112110
}
113111
}
114112
desc->tx.ip_offset = ip_offset;

drivers/net/ethernet/hisilicon/hns3/hns3_enet.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1838,9 +1838,9 @@ static unsigned int hns3_tx_bd_num(struct sk_buff *skb, unsigned int *bd_size,
18381838
static unsigned int hns3_gso_hdr_len(struct sk_buff *skb)
18391839
{
18401840
if (!skb->encapsulation)
1841-
return skb_transport_offset(skb) + tcp_hdrlen(skb);
1841+
return skb_tcp_all_headers(skb);
18421842

1843-
return skb_inner_transport_offset(skb) + inner_tcp_hdrlen(skb);
1843+
return skb_inner_tcp_all_headers(skb);
18441844
}
18451845

18461846
/* HW need every continuous max_non_tso_bd_num buffer data to be larger

drivers/net/ethernet/hisilicon/hns3/hns3_trace.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ DECLARE_EVENT_CLASS(hns3_skb_template,
3737
__entry->gso_segs = skb_shinfo(skb)->gso_segs;
3838
__entry->gso_type = skb_shinfo(skb)->gso_type;
3939
__entry->hdr_len = skb->encapsulation ?
40-
skb_inner_transport_offset(skb) + inner_tcp_hdrlen(skb) :
41-
skb_transport_offset(skb) + tcp_hdrlen(skb);
40+
skb_inner_tcp_all_headers(skb) : skb_tcp_all_headers(skb);
4241
__entry->ip_summed = skb->ip_summed;
4342
__entry->fraglist = skb_has_frag_list(skb);
4443
hns3_shinfo_pack(skb_shinfo(skb), __entry->size);

drivers/net/ethernet/ibm/ehea/ehea_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1617,7 +1617,7 @@ static void write_swqe2_immediate(struct sk_buff *skb, struct ehea_swqe *swqe,
16171617
* For TSO packets we only copy the headers into the
16181618
* immediate area.
16191619
*/
1620-
immediate_len = ETH_HLEN + ip_hdrlen(skb) + tcp_hdrlen(skb);
1620+
immediate_len = skb_tcp_all_headers(skb);
16211621
}
16221622

16231623
if (skb_is_gso(skb) || skb_data_size >= SWQE2_MAX_IMM) {

0 commit comments

Comments
 (0)