From: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
To: Eric Woudstra <ericwouds@gmail.com>
Cc: Felix Fietkau <nbd@nbd.name>, Sean Wang <sean.wang@mediatek.com>,
Lorenzo Bianconi <lorenzo@kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Frank Wunderlich <frank-w@public-files.de>,
Daniel Golle <daniel@makrotopia.org>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: Re: [PATCH v3 net-next] net: ethernet: mtk_ppe_offload: Allow QinQ
Date: Mon, 10 Feb 2025 08:43:07 +0100 [thread overview]
Message-ID: <Z6muC7WshGlaY9Ft@mev-dev.igk.intel.com> (raw)
In-Reply-To: <20250209110936.241487-1-ericwouds@gmail.com>
On Sun, Feb 09, 2025 at 12:09:36PM +0100, Eric Woudstra wrote:
> mtk_foe_entry_set_vlan() in mtk_ppe.c already seems to support
> double vlan tagging, but mtk_flow_offload_replace() in
> mtk_ppe_offload.c only allows for 1 vlan tag, optionally in
> combination with pppoe and dsa tags.
>
> This patch adds QinQ support to mtk_flow_offload_replace().
>
> Only PPPoE-in-Q (as before) and Q-in-Q are allowed. A combination
> of PPPoE and Q-in-Q is not allowed.
>
> Signed-off-by: Eric Woudstra <ericwouds@gmail.com>
> ---
>
> Changes in v3:
> - Removed unnecessary second check for ETH_P_8021Q.
>
> Changes in v2:
> - Unchanged, only RFC to PATCH.
>
> Tested on the BPI-R3(mini), on non-dsa-ports and dsa-ports.
>
> .../net/ethernet/mediatek/mtk_ppe_offload.c | 22 +++++++++----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
> index f20bb390df3a..c855fb799ce1 100644
> --- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
> +++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
> @@ -34,8 +34,10 @@ struct mtk_flow_data {
> u16 vlan_in;
>
> struct {
> - u16 id;
> - __be16 proto;
> + struct {
> + u16 id;
> + __be16 proto;
> + } vlans[2];
> u8 num;
> } vlan;
> struct {
> @@ -349,18 +351,19 @@ mtk_flow_offload_replace(struct mtk_eth *eth, struct flow_cls_offload *f,
> case FLOW_ACTION_CSUM:
> break;
> case FLOW_ACTION_VLAN_PUSH:
> - if (data.vlan.num == 1 ||
> + if (data.vlan.num + data.pppoe.num == 2 ||
> act->vlan.proto != htons(ETH_P_8021Q))
> return -EOPNOTSUPP;
>
> - data.vlan.id = act->vlan.vid;
> - data.vlan.proto = act->vlan.proto;
> + data.vlan.vlans[data.vlan.num].id = act->vlan.vid;
> + data.vlan.vlans[data.vlan.num].proto = act->vlan.proto;
> data.vlan.num++;
> break;
> case FLOW_ACTION_VLAN_POP:
> break;
> case FLOW_ACTION_PPPOE_PUSH:
> - if (data.pppoe.num == 1)
> + if (data.pppoe.num == 1 ||
> + data.vlan.num == 2)
> return -EOPNOTSUPP;
>
> data.pppoe.sid = act->pppoe.sid;
> @@ -450,12 +453,9 @@ mtk_flow_offload_replace(struct mtk_eth *eth, struct flow_cls_offload *f,
> if (offload_type == MTK_PPE_PKT_TYPE_BRIDGE)
> foe.bridge.vlan = data.vlan_in;
>
> - if (data.vlan.num == 1) {
> - if (data.vlan.proto != htons(ETH_P_8021Q))
> - return -EOPNOTSUPP;
> + for (i = 0; i < data.vlan.num; i++)
> + mtk_foe_entry_set_vlan(eth, &foe, data.vlan.vlans[i].id);
>
> - mtk_foe_entry_set_vlan(eth, &foe, data.vlan.id);
> - }
> if (data.pppoe.num == 1)
> mtk_foe_entry_set_pppoe(eth, &foe, data.pppoe.sid);
Thanks for addressing comments.
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
>
> --
> 2.47.1
WARNING: multiple messages have this Message-ID (diff)
From: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
To: Eric Woudstra <ericwouds@gmail.com>
Cc: AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
netdev@vger.kernel.org, Sean Wang <sean.wang@mediatek.com>,
Daniel Golle <daniel@makrotopia.org>,
linux-kernel@vger.kernel.org, Andrew Lunn <andrew+netdev@lunn.ch>,
Eric Dumazet <edumazet@google.com>,
linux-mediatek@lists.infradead.org,
Matthias Brugger <matthias.bgg@gmail.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Lorenzo Bianconi <lorenzo@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
linux-arm-kernel@lists.infradead.org,
Felix Fietkau <nbd@nbd.name>
Subject: Re: [PATCH v3 net-next] net: ethernet: mtk_ppe_offload: Allow QinQ
Date: Mon, 10 Feb 2025 08:43:07 +0100 [thread overview]
Message-ID: <Z6muC7WshGlaY9Ft@mev-dev.igk.intel.com> (raw)
In-Reply-To: <20250209110936.241487-1-ericwouds@gmail.com>
On Sun, Feb 09, 2025 at 12:09:36PM +0100, Eric Woudstra wrote:
> mtk_foe_entry_set_vlan() in mtk_ppe.c already seems to support
> double vlan tagging, but mtk_flow_offload_replace() in
> mtk_ppe_offload.c only allows for 1 vlan tag, optionally in
> combination with pppoe and dsa tags.
>
> This patch adds QinQ support to mtk_flow_offload_replace().
>
> Only PPPoE-in-Q (as before) and Q-in-Q are allowed. A combination
> of PPPoE and Q-in-Q is not allowed.
>
> Signed-off-by: Eric Woudstra <ericwouds@gmail.com>
> ---
>
> Changes in v3:
> - Removed unnecessary second check for ETH_P_8021Q.
>
> Changes in v2:
> - Unchanged, only RFC to PATCH.
>
> Tested on the BPI-R3(mini), on non-dsa-ports and dsa-ports.
>
> .../net/ethernet/mediatek/mtk_ppe_offload.c | 22 +++++++++----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
> index f20bb390df3a..c855fb799ce1 100644
> --- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
> +++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
> @@ -34,8 +34,10 @@ struct mtk_flow_data {
> u16 vlan_in;
>
> struct {
> - u16 id;
> - __be16 proto;
> + struct {
> + u16 id;
> + __be16 proto;
> + } vlans[2];
> u8 num;
> } vlan;
> struct {
> @@ -349,18 +351,19 @@ mtk_flow_offload_replace(struct mtk_eth *eth, struct flow_cls_offload *f,
> case FLOW_ACTION_CSUM:
> break;
> case FLOW_ACTION_VLAN_PUSH:
> - if (data.vlan.num == 1 ||
> + if (data.vlan.num + data.pppoe.num == 2 ||
> act->vlan.proto != htons(ETH_P_8021Q))
> return -EOPNOTSUPP;
>
> - data.vlan.id = act->vlan.vid;
> - data.vlan.proto = act->vlan.proto;
> + data.vlan.vlans[data.vlan.num].id = act->vlan.vid;
> + data.vlan.vlans[data.vlan.num].proto = act->vlan.proto;
> data.vlan.num++;
> break;
> case FLOW_ACTION_VLAN_POP:
> break;
> case FLOW_ACTION_PPPOE_PUSH:
> - if (data.pppoe.num == 1)
> + if (data.pppoe.num == 1 ||
> + data.vlan.num == 2)
> return -EOPNOTSUPP;
>
> data.pppoe.sid = act->pppoe.sid;
> @@ -450,12 +453,9 @@ mtk_flow_offload_replace(struct mtk_eth *eth, struct flow_cls_offload *f,
> if (offload_type == MTK_PPE_PKT_TYPE_BRIDGE)
> foe.bridge.vlan = data.vlan_in;
>
> - if (data.vlan.num == 1) {
> - if (data.vlan.proto != htons(ETH_P_8021Q))
> - return -EOPNOTSUPP;
> + for (i = 0; i < data.vlan.num; i++)
> + mtk_foe_entry_set_vlan(eth, &foe, data.vlan.vlans[i].id);
>
> - mtk_foe_entry_set_vlan(eth, &foe, data.vlan.id);
> - }
> if (data.pppoe.num == 1)
> mtk_foe_entry_set_pppoe(eth, &foe, data.pppoe.sid);
Thanks for addressing comments.
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
>
> --
> 2.47.1
next prev parent reply other threads:[~2025-02-10 7:49 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-09 11:09 [PATCH v3 net-next] net: ethernet: mtk_ppe_offload: Allow QinQ Eric Woudstra
2025-02-10 7:43 ` Michal Swiatkowski [this message]
2025-02-10 7:43 ` Michal Swiatkowski
2025-02-12 0:51 ` Jakub Kicinski
2025-02-12 0:51 ` Jakub Kicinski
2025-02-12 19:33 ` Eric Woudstra
2025-02-12 19:33 ` Eric Woudstra
2025-02-15 14:01 ` Simon Horman
2025-02-15 14:01 ` Simon Horman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z6muC7WshGlaY9Ft@mev-dev.igk.intel.com \
--to=michal.swiatkowski@linux.intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=angelogioacchino.delregno@collabora.com \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=ericwouds@gmail.com \
--cc=frank-w@public-files.de \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=lorenzo@kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=nbd@nbd.name \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sean.wang@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.