mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
ice: use VLAN proto from ring packet context in skb path
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 often refers to VLAN proto and VLAN TCI combined, while in the code we clearly store only VLAN TCI. Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com> Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> Link: https://lore.kernel.org/r/20231205210847.28460-12-larysa.zaremba@intel.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
714ed949c6
commit
b591137c4e
|
|
@ -244,21 +244,17 @@ ice_process_skb_fields(struct ice_rx_ring *rx_ring,
|
|||
* ice_receive_skb - Send a completed packet up the stack
|
||||
* @rx_ring: Rx ring in play
|
||||
* @skb: packet to send up
|
||||
* @vlan_tag: VLAN tag for packet
|
||||
* @vlan_tci: VLAN TCI for packet
|
||||
*
|
||||
* This function sends the completed packet (via. skb) up the stack using
|
||||
* gro receive functions (with/without VLAN tag)
|
||||
*/
|
||||
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->vlan_proto)
|
||||
__vlan_hwaccel_put_tag(skb, rx_ring->vlan_proto,
|
||||
vlan_tci);
|
||||
|
||||
napi_gro_receive(&rx_ring->q_vector->napi, skb);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ ice_process_skb_fields(struct ice_rx_ring *rx_ring,
|
|||
union ice_32b_rx_flex_desc *rx_desc,
|
||||
struct sk_buff *skb);
|
||||
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);
|
||||
|
||||
static inline void
|
||||
ice_xdp_meta_set_desc(struct xdp_buff *xdp,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user