mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
net: adopt skb_network_offset() and similar helpers
This is a cleanup patch, making code a bit more concise. 1) Use skb_network_offset(skb) in place of (skb_network_header(skb) - skb->data) 2) Use -skb_network_offset(skb) in place of (skb->data - skb_network_header(skb)) 3) Use skb_transport_offset(skb) in place of (skb_transport_header(skb) - skb->data) 4) Use skb_inner_transport_offset(skb) in place of (skb_inner_transport_header(skb) - skb->data) Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Edward Cree <ecree.xilinx@gmail.com> # for sfc Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4b2765ae41
commit
80bfab79b8
@ -3538,7 +3538,7 @@ static u8 bnx2x_set_pbd_csum_enc(struct bnx2x *bp, struct sk_buff *skb,
|
||||
u32 *parsing_data, u32 xmit_type)
|
||||
{
|
||||
*parsing_data |=
|
||||
((((u8 *)skb_inner_transport_header(skb) - skb->data) >> 1) <<
|
||||
((skb_inner_transport_offset(skb) >> 1) <<
|
||||
ETH_TX_PARSE_BD_E2_L4_HDR_START_OFFSET_W_SHIFT) &
|
||||
ETH_TX_PARSE_BD_E2_L4_HDR_START_OFFSET_W;
|
||||
|
||||
@ -3570,7 +3570,7 @@ static u8 bnx2x_set_pbd_csum_e2(struct bnx2x *bp, struct sk_buff *skb,
|
||||
u32 *parsing_data, u32 xmit_type)
|
||||
{
|
||||
*parsing_data |=
|
||||
((((u8 *)skb_transport_header(skb) - skb->data) >> 1) <<
|
||||
((skb_transport_offset(skb) >> 1) <<
|
||||
ETH_TX_PARSE_BD_E2_L4_HDR_START_OFFSET_W_SHIFT) &
|
||||
ETH_TX_PARSE_BD_E2_L4_HDR_START_OFFSET_W;
|
||||
|
||||
@ -3613,7 +3613,7 @@ static u8 bnx2x_set_pbd_csum(struct bnx2x *bp, struct sk_buff *skb,
|
||||
struct eth_tx_parse_bd_e1x *pbd,
|
||||
u32 xmit_type)
|
||||
{
|
||||
u8 hlen = (skb_network_header(skb) - skb->data) >> 1;
|
||||
u8 hlen = skb_network_offset(skb) >> 1;
|
||||
|
||||
/* for now NS flag is not used in Linux */
|
||||
pbd->global_data =
|
||||
@ -3667,8 +3667,7 @@ static void bnx2x_update_pbds_gso_enc(struct sk_buff *skb,
|
||||
u8 outerip_off, outerip_len = 0;
|
||||
|
||||
/* from outer IP to transport */
|
||||
hlen_w = (skb_inner_transport_header(skb) -
|
||||
skb_network_header(skb)) >> 1;
|
||||
hlen_w = skb_inner_transport_offset(skb) >> 1;
|
||||
|
||||
/* transport len */
|
||||
hlen_w += inner_tcp_hdrlen(skb) >> 1;
|
||||
@ -3714,7 +3713,7 @@ static void bnx2x_update_pbds_gso_enc(struct sk_buff *skb,
|
||||
0, IPPROTO_TCP, 0));
|
||||
}
|
||||
|
||||
outerip_off = (skb_network_header(skb) - skb->data) >> 1;
|
||||
outerip_off = (skb_network_offset(skb)) >> 1;
|
||||
|
||||
*global_data |=
|
||||
outerip_off |
|
||||
|
@ -2473,9 +2473,9 @@ static netdev_features_t hns3_features_check(struct sk_buff *skb,
|
||||
return features;
|
||||
|
||||
if (skb->encapsulation)
|
||||
len = skb_inner_transport_header(skb) - skb->data;
|
||||
len = skb_inner_transport_offset(skb);
|
||||
else
|
||||
len = skb_transport_header(skb) - skb->data;
|
||||
len = skb_transport_offset(skb);
|
||||
|
||||
/* Assume L4 is 60 byte as TCP is the only protocol with a
|
||||
* a flexible value, and it's max len is 60 bytes.
|
||||
|
@ -13208,7 +13208,7 @@ static netdev_features_t i40e_features_check(struct sk_buff *skb,
|
||||
features &= ~NETIF_F_GSO_MASK;
|
||||
|
||||
/* MACLEN can support at most 63 words */
|
||||
len = skb_network_header(skb) - skb->data;
|
||||
len = skb_network_offset(skb);
|
||||
if (len & ~(63 * 2))
|
||||
goto out_err;
|
||||
|
||||
|
@ -4423,7 +4423,7 @@ static netdev_features_t iavf_features_check(struct sk_buff *skb,
|
||||
features &= ~NETIF_F_GSO_MASK;
|
||||
|
||||
/* MACLEN can support at most 63 words */
|
||||
len = skb_network_header(skb) - skb->data;
|
||||
len = skb_network_offset(skb);
|
||||
if (len & ~(63 * 2))
|
||||
goto out_err;
|
||||
|
||||
|
@ -2538,7 +2538,7 @@ igb_features_check(struct sk_buff *skb, struct net_device *dev,
|
||||
unsigned int network_hdr_len, mac_hdr_len;
|
||||
|
||||
/* Make certain the headers can be described by a context descriptor */
|
||||
mac_hdr_len = skb_network_header(skb) - skb->data;
|
||||
mac_hdr_len = skb_network_offset(skb);
|
||||
if (unlikely(mac_hdr_len > IGB_MAX_MAC_HDR_LEN))
|
||||
return features & ~(NETIF_F_HW_CSUM |
|
||||
NETIF_F_SCTP_CRC |
|
||||
|
@ -2655,7 +2655,7 @@ igbvf_features_check(struct sk_buff *skb, struct net_device *dev,
|
||||
unsigned int network_hdr_len, mac_hdr_len;
|
||||
|
||||
/* Make certain the headers can be described by a context descriptor */
|
||||
mac_hdr_len = skb_network_header(skb) - skb->data;
|
||||
mac_hdr_len = skb_network_offset(skb);
|
||||
if (unlikely(mac_hdr_len > IGBVF_MAX_MAC_HDR_LEN))
|
||||
return features & ~(NETIF_F_HW_CSUM |
|
||||
NETIF_F_SCTP_CRC |
|
||||
|
@ -5277,7 +5277,7 @@ igc_features_check(struct sk_buff *skb, struct net_device *dev,
|
||||
unsigned int network_hdr_len, mac_hdr_len;
|
||||
|
||||
/* Make certain the headers can be described by a context descriptor */
|
||||
mac_hdr_len = skb_network_header(skb) - skb->data;
|
||||
mac_hdr_len = skb_network_offset(skb);
|
||||
if (unlikely(mac_hdr_len > IGC_MAX_MAC_HDR_LEN))
|
||||
return features & ~(NETIF_F_HW_CSUM |
|
||||
NETIF_F_SCTP_CRC |
|
||||
|
@ -10205,7 +10205,7 @@ ixgbe_features_check(struct sk_buff *skb, struct net_device *dev,
|
||||
unsigned int network_hdr_len, mac_hdr_len;
|
||||
|
||||
/* Make certain the headers can be described by a context descriptor */
|
||||
mac_hdr_len = skb_network_header(skb) - skb->data;
|
||||
mac_hdr_len = skb_network_offset(skb);
|
||||
if (unlikely(mac_hdr_len > IXGBE_MAX_MAC_HDR_LEN))
|
||||
return features & ~(NETIF_F_HW_CSUM |
|
||||
NETIF_F_SCTP_CRC |
|
||||
|
@ -4413,7 +4413,7 @@ ixgbevf_features_check(struct sk_buff *skb, struct net_device *dev,
|
||||
unsigned int network_hdr_len, mac_hdr_len;
|
||||
|
||||
/* Make certain the headers can be described by a context descriptor */
|
||||
mac_hdr_len = skb_network_header(skb) - skb->data;
|
||||
mac_hdr_len = skb_network_offset(skb);
|
||||
if (unlikely(mac_hdr_len > IXGBEVF_MAX_MAC_HDR_LEN))
|
||||
return features & ~(NETIF_F_HW_CSUM |
|
||||
NETIF_F_SCTP_CRC |
|
||||
|
@ -215,7 +215,7 @@ static void qede_set_params_for_ipv6_ext(struct sk_buff *skb,
|
||||
|
||||
bd2_bits1 |= (1 << ETH_TX_DATA_2ND_BD_IPV6_EXT_SHIFT);
|
||||
|
||||
bd2_bits2 |= ((((u8 *)skb_transport_header(skb) - skb->data) >> 1) &
|
||||
bd2_bits2 |= ((skb_transport_offset(skb) >> 1) &
|
||||
ETH_TX_DATA_2ND_BD_L4_HDR_START_OFFSET_W_MASK)
|
||||
<< ETH_TX_DATA_2ND_BD_L4_HDR_START_OFFSET_W_SHIFT;
|
||||
|
||||
|
@ -446,8 +446,7 @@ static int qlcnic_tx_encap_pkt(struct qlcnic_adapter *adapter,
|
||||
encap_descr |= skb_network_offset(skb) << 10;
|
||||
first_desc->encap_descr = cpu_to_le16(encap_descr);
|
||||
|
||||
first_desc->tcp_hdr_offset = skb_inner_transport_header(skb) -
|
||||
skb->data;
|
||||
first_desc->tcp_hdr_offset = skb_inner_transport_offset(skb);
|
||||
first_desc->ip_hdr_offset = skb_inner_network_offset(skb);
|
||||
|
||||
qlcnic_set_tx_flags_opcode(first_desc, flags, opcode);
|
||||
|
@ -317,11 +317,10 @@ static int efx_tx_tso_header_length(struct sk_buff *skb)
|
||||
size_t header_len;
|
||||
|
||||
if (skb->encapsulation)
|
||||
header_len = skb_inner_transport_header(skb) -
|
||||
skb->data +
|
||||
header_len = skb_inner_transport_offset(skb) +
|
||||
(inner_tcp_hdr(skb)->doff << 2u);
|
||||
else
|
||||
header_len = skb_transport_header(skb) - skb->data +
|
||||
header_len = skb_transport_offset(skb) +
|
||||
(tcp_hdr(skb)->doff << 2u);
|
||||
return header_len;
|
||||
}
|
||||
|
@ -336,11 +336,10 @@ int efx_tx_tso_header_length(struct sk_buff *skb)
|
||||
size_t header_len;
|
||||
|
||||
if (skb->encapsulation)
|
||||
header_len = skb_inner_transport_header(skb) -
|
||||
skb->data +
|
||||
header_len = skb_inner_transport_offset(skb) +
|
||||
(inner_tcp_hdr(skb)->doff << 2u);
|
||||
else
|
||||
header_len = skb_transport_header(skb) - skb->data +
|
||||
header_len = skb_transport_offset(skb) +
|
||||
(tcp_hdr(skb)->doff << 2u);
|
||||
return header_len;
|
||||
}
|
||||
|
@ -174,8 +174,8 @@ static int tso_start(struct tso_state *st, struct efx_nic *efx,
|
||||
unsigned int header_len, in_len;
|
||||
dma_addr_t dma_addr;
|
||||
|
||||
st->ip_off = skb_network_header(skb) - skb->data;
|
||||
st->tcp_off = skb_transport_header(skb) - skb->data;
|
||||
st->ip_off = skb_network_offset(skb);
|
||||
st->tcp_off = skb_transport_offset(skb);
|
||||
header_len = st->tcp_off + (tcp_hdr(skb)->doff << 2u);
|
||||
in_len = skb_headlen(skb) - header_len;
|
||||
st->header_len = header_len;
|
||||
|
@ -1144,9 +1144,9 @@ static inline struct sk_buff *vnet_skb_shape(struct sk_buff *skb, int ncookies)
|
||||
nskb->protocol = skb->protocol;
|
||||
offset = skb_mac_header(skb) - skb->data;
|
||||
skb_set_mac_header(nskb, offset);
|
||||
offset = skb_network_header(skb) - skb->data;
|
||||
offset = skb_network_offset(skb);
|
||||
skb_set_network_header(nskb, offset);
|
||||
offset = skb_transport_header(skb) - skb->data;
|
||||
offset = skb_transport_offset(skb);
|
||||
skb_set_transport_header(nskb, offset);
|
||||
|
||||
offset = 0;
|
||||
|
@ -1257,7 +1257,7 @@ static int wx_tso(struct wx_ring *tx_ring, struct wx_tx_buffer *first,
|
||||
|
||||
/* compute header lengths */
|
||||
l4len = enc ? inner_tcp_hdrlen(skb) : tcp_hdrlen(skb);
|
||||
*hdr_len = enc ? (skb_inner_transport_header(skb) - skb->data) :
|
||||
*hdr_len = enc ? skb_inner_transport_offset(skb) :
|
||||
skb_transport_offset(skb);
|
||||
*hdr_len += l4len;
|
||||
|
||||
|
@ -263,7 +263,7 @@ static bool decrypt_packet(struct sk_buff *skb, struct noise_keypair *keypair)
|
||||
* call skb_cow_data, so that there's no chance that data is removed
|
||||
* from the skb, so that later we can extract the original endpoint.
|
||||
*/
|
||||
offset = skb->data - skb_network_header(skb);
|
||||
offset = -skb_network_offset(skb);
|
||||
skb_push(skb, offset);
|
||||
num_frags = skb_cow_data(skb, 0, &trailer);
|
||||
offset += sizeof(struct message_data);
|
||||
|
@ -1358,7 +1358,7 @@ int __cgroup_bpf_run_filter_skb(struct sock *sk,
|
||||
struct sk_buff *skb,
|
||||
enum cgroup_bpf_attach_type atype)
|
||||
{
|
||||
unsigned int offset = skb->data - skb_network_header(skb);
|
||||
unsigned int offset = -skb_network_offset(skb);
|
||||
struct sock *save_sk;
|
||||
void *saved_data_end;
|
||||
struct cgroup *cgrp;
|
||||
|
@ -310,7 +310,7 @@ int raw_rcv(struct sock *sk, struct sk_buff *skb)
|
||||
}
|
||||
nf_reset_ct(skb);
|
||||
|
||||
skb_push(skb, skb->data - skb_network_header(skb));
|
||||
skb_push(skb, -skb_network_offset(skb));
|
||||
|
||||
raw_rcv_skb(sk, skb);
|
||||
return 0;
|
||||
|
@ -58,7 +58,7 @@ int xfrm4_transport_finish(struct sk_buff *skb, int async)
|
||||
return -iph->protocol;
|
||||
#endif
|
||||
|
||||
__skb_push(skb, skb->data - skb_network_header(skb));
|
||||
__skb_push(skb, -skb_network_offset(skb));
|
||||
iph->tot_len = htons(skb->len);
|
||||
ip_send_check(iph);
|
||||
|
||||
|
@ -804,7 +804,7 @@ looped_back:
|
||||
|
||||
ip6_route_input(skb);
|
||||
if (skb_dst(skb)->error) {
|
||||
skb_push(skb, skb->data - skb_network_header(skb));
|
||||
skb_push(skb, -skb_network_offset(skb));
|
||||
dst_input(skb);
|
||||
return -1;
|
||||
}
|
||||
@ -821,7 +821,7 @@ looped_back:
|
||||
goto looped_back;
|
||||
}
|
||||
|
||||
skb_push(skb, skb->data - skb_network_header(skb));
|
||||
skb_push(skb, -skb_network_offset(skb));
|
||||
dst_input(skb);
|
||||
return -1;
|
||||
|
||||
|
@ -327,9 +327,9 @@ static int nf_ct_frag6_reasm(struct frag_queue *fq, struct sk_buff *skb,
|
||||
if (!reasm_data)
|
||||
goto err;
|
||||
|
||||
payload_len = ((skb->data - skb_network_header(skb)) -
|
||||
payload_len = -skb_network_offset(skb) -
|
||||
sizeof(struct ipv6hdr) + fq->q.len -
|
||||
sizeof(struct frag_hdr));
|
||||
sizeof(struct frag_hdr);
|
||||
if (payload_len > IPV6_MAXPLEN) {
|
||||
net_dbg_ratelimited("nf_ct_frag6_reasm: payload len = %d\n",
|
||||
payload_len);
|
||||
|
@ -272,9 +272,9 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *skb,
|
||||
if (!reasm_data)
|
||||
goto out_oom;
|
||||
|
||||
payload_len = ((skb->data - skb_network_header(skb)) -
|
||||
payload_len = -skb_network_offset(skb) -
|
||||
sizeof(struct ipv6hdr) + fq->q.len -
|
||||
sizeof(struct frag_hdr));
|
||||
sizeof(struct frag_hdr);
|
||||
if (payload_len > IPV6_MAXPLEN)
|
||||
goto out_oversize;
|
||||
|
||||
|
@ -43,7 +43,7 @@ static int xfrm6_transport_finish2(struct net *net, struct sock *sk,
|
||||
int xfrm6_transport_finish(struct sk_buff *skb, int async)
|
||||
{
|
||||
struct xfrm_offload *xo = xfrm_offload(skb);
|
||||
int nhlen = skb->data - skb_network_header(skb);
|
||||
int nhlen = -skb_network_offset(skb);
|
||||
|
||||
skb_network_header(skb)[IP6CB(skb)->nhoff] =
|
||||
XFRM_MODE_SKB_CB(skb)->protocol;
|
||||
|
Loading…
Reference in New Issue
Block a user