Thread (2 messages) 2 messages, 1 author, 2023-06-07

RE: [PATCH net-next] net: mana: Add support for vlan tagging

From: Haiyang Zhang <haiyangz@microsoft.com>
Date: 2023-06-07 20:45:26
Also in: bpf, linux-hyperv, linux-rdma, lkml

quoted hunk ↗ jump to hunk
-----Original Message-----
From: LKML haiyangz <redacted> On Behalf Of Haiyang Zhang
Sent: Wednesday, June 7, 2023 2:38 PM
To: linux-hyperv@vger.kernel.org; netdev@vger.kernel.org
Cc: Haiyang Zhang <haiyangz@microsoft.com>; Dexuan Cui
[off-list ref]; KY Srinivasan [off-list ref]; Paul Rosswurm
[off-list ref]; olaf@aepfle.de; vkuznets@redhat.com;
davem@davemloft.net; wei.liu@kernel.org; edumazet@google.com;
kuba@kernel.org; pabeni@redhat.com; leon@kernel.org; Long Li
[off-list ref]; ssengar@linux.microsoft.com; linux-
rdma@vger.kernel.org; daniel@iogearbox.net; john.fastabend@gmail.com;
bpf@vger.kernel.org; ast@kernel.org; Ajay Sharma
[off-list ref]; hawk@kernel.org; tglx@linutronix.de;
shradhagupta@linux.microsoft.com; linux-kernel@vger.kernel.org
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@microsoft.com>
---
 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.

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help