Re: [RFC bpf-next 11/23] ice: use VLAN proto from ring packet context in skb path
From: Alexander Lobakin <aleksander.lobakin@intel.com>
Date: 2023-09-14 16:31:51
Also in:
bpf
From: Alexander Lobakin <aleksander.lobakin@intel.com>
Date: 2023-09-14 16:31:51
Also in:
bpf
From: Larysa Zaremba <redacted> Date: Thu, 24 Aug 2023 21:26:50 +0200
VLAN proto, used in ice XDP hints implementation is stored in ring packet context. Utilize this value in skb VLAN processing too instead of checking netdev features. At the same time, use vlan_tci instead of vlan_tag in touched code, because vlan_tag is misleading.
[...]
void
-ice_receive_skb(struct ice_rx_ring *rx_ring, struct sk_buff *skb, u16 vlan_tag)
+ice_receive_skb(struct ice_rx_ring *rx_ring, struct sk_buff *skb, u16 vlan_tci)
{
- netdev_features_t features = rx_ring->netdev->features;
- bool non_zero_vlan = !!(vlan_tag & VLAN_VID_MASK);
-
- if ((features & NETIF_F_HW_VLAN_CTAG_RX) && non_zero_vlan)
- __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan_tag);
- else if ((features & NETIF_F_HW_VLAN_STAG_RX) && non_zero_vlan)
- __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021AD), vlan_tag);
+ if (vlan_tci & VLAN_VID_MASK && rx_ring->pkt_ctx.vlan_proto)I'd wrap the first expression into ()s to make it more readable (and no questions like "shouldn't these be three &&?").
+ __vlan_hwaccel_put_tag(skb, rx_ring->pkt_ctx.vlan_proto, + vlan_tci); napi_gro_receive(&rx_ring->q_vector->napi, skb); }
[...] Thanks, Olek