> -----Original Message----- > From: LKML haiyangz <lkmlhyz@xxxxxxxxxxxxx> On Behalf Of Haiyang Zhang > Sent: Wednesday, June 7, 2023 2:38 PM > To: linux-hyperv@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx > Cc: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>; Dexuan Cui > <decui@xxxxxxxxxxxxx>; KY Srinivasan <kys@xxxxxxxxxxxxx>; Paul Rosswurm > <paulros@xxxxxxxxxxxxx>; olaf@xxxxxxxxx; vkuznets@xxxxxxxxxx; > davem@xxxxxxxxxxxxx; wei.liu@xxxxxxxxxx; edumazet@xxxxxxxxxx; > kuba@xxxxxxxxxx; pabeni@xxxxxxxxxx; leon@xxxxxxxxxx; Long Li > <longli@xxxxxxxxxxxxx>; ssengar@xxxxxxxxxxxxxxxxxxx; linux- > rdma@xxxxxxxxxxxxxxx; daniel@xxxxxxxxxxxxx; john.fastabend@xxxxxxxxx; > bpf@xxxxxxxxxxxxxxx; ast@xxxxxxxxxx; Ajay Sharma > <sharmaajay@xxxxxxxxxxxxx>; hawk@xxxxxxxxxx; tglx@xxxxxxxxxxxxx; > shradhagupta@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > Subject: [PATCH net-next] net: mana: Add support for vlan tagging > > To support vlan, use MANA_LONG_PKT_FMT if vlan tag is present in TX > skb. Then extract the vlan tag from the skb struct or the frame, and > save it to tx_oob for the NIC to transmit. > > For RX, extract the vlan tag from CQE and put it into skb. > > Signed-off-by: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > --- > drivers/net/ethernet/microsoft/mana/mana_en.c | 36 > +++++++++++++++++-- > 1 file changed, 34 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c > b/drivers/net/ethernet/microsoft/mana/mana_en.c > index d907727c7b7a..1d76ac66908c 100644 > --- a/drivers/net/ethernet/microsoft/mana/mana_en.c > +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c > @@ -179,6 +179,31 @@ netdev_tx_t mana_start_xmit(struct sk_buff *skb, > struct net_device *ndev) > pkg.tx_oob.s_oob.short_vp_offset = txq->vp_offset; > } > > + /* When using AF_PACKET we need to move VLAN header from > + * the frame to the SKB struct to allow the NIC to xmit > + * the 802.1Q packet. > + */ > + if (skb->protocol == htons(ETH_P_8021Q)) { > + u16 vlan_tci; > + > + skb_reset_mac_header(skb); > + if (eth_type_vlan(eth_hdr(skb)->h_proto)) { > + if (unlikely(__skb_vlan_pop(skb, &vlan_tci))) > + goto tx_drop_count; > + > + __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), > + vlan_tci); > + } > + } Not necessary to extract inband tag, because our NIC accepts inband tags too. The change is in the next version.