Re: [PATCH v2 net-next 09/13] octeontx2-pf: Implement ingress/egress VLAN offload

From: Naveen Mamindlapalli <hidden>
Date: 2020-11-10 16:58:43
Also in: lkml

Hi Saeed,

Thanks for the review!
-----Original Message-----
From: Saeed Mahameed <saeed@kernel.org>
Sent: Saturday, November 7, 2020 4:03 AM
To: Naveen Mamindlapalli <redacted>; netdev@vger.kernel.org;
linux-kernel@vger.kernel.org
Cc: kuba@kernel.org; davem@davemloft.net; Sunil Kovvuri Goutham
[off-list ref]; Linu Cherian [off-list ref];
Geethasowjanya Akula [off-list ref]; Jerin Jacob Kollanukkaran
[off-list ref]; Subbaraya Sundeep Bhatta [off-list ref];
Hariprasad Kelam [off-list ref]
Subject: Re: [PATCH v2 net-next 09/13] octeontx2-pf: Implement
ingress/egress VLAN offload

On Thu, 2020-11-05 at 14:58 +0530, Naveen Mamindlapalli wrote:
quoted
From: Hariprasad Kelam <redacted>

This patch implements egress VLAN offload by appending NIX_SEND_EXT_S
header to NIX_SEND_HDR_S. The VLAN TCI information is specified in the
NIX_SEND_EXT_S. The VLAN offload in the ingress path is implemented by
configuring the NIX_RX_VTAG_ACTION_S to strip and capture the outer
vlan fields. The NIX PF allocates one MCAM entry for Rx VLAN offload.

Signed-off-by: Hariprasad Kelam <redacted>
Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: Naveen Mamindlapalli <redacted>
---
..
quoted
@@ -56,6 +58,8 @@ void otx2_mcam_flow_del(struct otx2_nic *pf)  int
otx2_alloc_mcam_entries(struct otx2_nic *pfvf)  {
 	struct otx2_flow_config *flow_cfg = pfvf->flow_cfg;
+	netdev_features_t wanted = NETIF_F_HW_VLAN_STAG_RX |
+				   NETIF_F_HW_VLAN_CTAG_RX;
 	struct npc_mcam_alloc_entry_req *req;
 	struct npc_mcam_alloc_entry_rsp *rsp;
 	int i;
@@ -88,15 +92,22 @@ int otx2_alloc_mcam_entries(struct otx2_nic
*pfvf)
 	if (rsp->count != req->count) {
 		netdev_info(pfvf->netdev, "number of rules truncated to %d\n",
 			    rsp->count);
+		netdev_info(pfvf->netdev,
+			    "Disabling RX VLAN offload due to non-
availability of MCAM space\n");
 		/* support only ntuples here */
 		flow_cfg->ntuple_max_flows = rsp->count;
 		flow_cfg->ntuple_offset = 0;
 		pfvf->netdev->priv_flags &= ~IFF_UNICAST_FLT;
 		pfvf->flags &= ~OTX2_FLAG_UCAST_FLTR_SUPPORT;
+		pfvf->flags &= ~OTX2_FLAG_RX_VLAN_SUPPORT;
+		pfvf->netdev->features &= ~wanted;
+		pfvf->netdev->hw_features &= ~wanted;
Drivers are not allowed to change own features dynamically.

please see:
https://urldefense.proofpoint.com/v2/url?u=https-
3A__www.kernel.org_doc_html_latest_networking_netdev-
2Dfeatures.html&d=DwICaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=TwreqwV6mQ8K
9wIpqwFO8yjikO_w1jUOe2MzChg4Rmg&m=4bUL936Kl_JmPhgCgMxvCELhoEQ_
WM_OitdlqyTRlHU&s=Lgcm811tFrMvuw-
JvTq4BPl76Nqv_HW6CigvKR8LgGw&e=

Features dependencies must be resolved via:
ndo_fix_features() and netdev_update_features();
Okay, will fix in v3.
quoted
+static netdev_features_t
+otx2_features_check(struct sk_buff *skb, struct net_device *dev,
+		    netdev_features_t features)
+{
+	return features;
+}
+
what is the point of no-op features_check ?
Cross checked this and I don’t see any need for this check. I will remove in v3.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help