From: Stephen Hemminger <stephen@networkplumber.org>
To: "Dimon" <dimon.zhao@nebula-matrix.com>
Cc: "dev" <dev@dpdk.org>, "Kyo Liu" <kyo.liu@nebula-matrix.com>,
"Leon" <leon.yu@nebula-matrix.com>,
"Sam" <sam.chen@nebula-matrix.com>
Subject: Re: 回复:[PATCH v1 1/1] net/nbl: add VLAN offload set interface
Date: Tue, 25 Nov 2025 07:27:58 -0800 [thread overview]
Message-ID: <20251125072758.37b8b100@phoenix.local> (raw)
In-Reply-To: <c28f7d63-7af2-4b48-9c2c-9dcd51ed9ebc.dimon.zhao@nebula-matrix.com>
On Tue, 25 Nov 2025 10:28:38 +0800
"Dimon" <dimon.zhao@nebula-matrix.com> wrote:
> Hi Stephen,
> Thank you for your review.
> http://patches.dpdk.org/project/dpdk/patch/20251107073459.3532524-3-dimon.zhao@nebula-matrix.com/ <http://patches.dpdk.org/project/dpdk/patch/20251107073459.3532524-3-dimon.zhao@nebula-matrix.com/ >
> In this previous commit, the driver is advertising RTE_ETH_RX_OFFLOAD_VLAN_STRIP
> in the offload flags. Because we do not support QINQ and FILTER,
> we are not advertising QINQ or FILTER flags.
> dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_VLAN_INSERT;
> dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_VLAN_STRIP;
> In this previous commit, we simulate support for Tx and Rx VLAN offload,
> while in reality we handle Tx VLAN insertion and Rx VLAN stripping in software.
> For Rx VLAN stripping, the driver uses rte_vlan_strip to achieve this functionality.
> It does not have the capability to do this in hardware.
> So when enabling or disabling Rx VLAN stripping, the driver and hardware do not need to do anything.
> Why vlan_offload_set is Required?
> The rte_eth_dev_set_vlan_offload function has this flow:
> int rte_eth_dev_set_vlan_offload(uint16_t port_id, int offload_mask)
> {
> // ...
> if (dev->dev_ops->vlan_offload_set == NULL)
> return -ENOTSUP; // This causes the error!
> // ...
> ret = dev->dev_ops->vlan_offload_set(dev, mask);
> }
> Without implementing vlan_offload_set, users get -ENOTSUP error when running:
> testpmd> vlan set strip on 0
> Since hardware doesn't need configuration changes, our implementation is minimal:
> int nbl_vlan_offload_set(__rte_unused struct rte_eth_dev *dev,
> __rte_unused int mask)
> {
> // No hardware configuration needed - everything handled in software
> return 0;
> }
> ------------------------------------------------------------------
> 发件人:Stephen Hemminger <stephen@networkplumber.org>
> 发送时间:2025年11月25日(周二) 07:35
> 收件人:Dimon<dimon.zhao@nebula-matrix.com>
> 抄 送:dev<dev@dpdk.org>; Kyo Liu<kyo.liu@nebula-matrix.com>; Leon<leon.yu@nebula-matrix.com>; Sam<sam.chen@nebula-matrix.com>
> 主 题:Re: [PATCH v1 1/1] net/nbl: add VLAN offload set interface
> On Sun, 23 Nov 2025 19:40:26 -0800
> Dimon Zhao <dimon.zhao@nebula-matrix.com> wrote:
> > The rte_eth_dev_set_vlan_offload function internally calls
> > the vlan_offload_set interface, so we must implement this function.
> > Otherwise, an error will occur when
> > executing the vlan set strip on command.
> >
> > Fixes: 9d7757dce874 ("net/nbl: simulate VLAN offload")
> >
> > Signed-off-by: Dimon Zhao <dimon.zhao@nebula-matrix.com>
> > ---
> > drivers/net/nbl/nbl_dev/nbl_dev.c | 5 +++++
> > drivers/net/nbl/nbl_dev/nbl_dev.h | 1 +
> > drivers/net/nbl/nbl_ethdev.c | 1 +
> > 3 files changed, 7 insertions(+)
> >
> > diff --git a/drivers/net/nbl/nbl_dev/nbl_dev.c b/drivers/net/nbl/nbl_dev/nbl_dev.c
> > index 58eb1c6231..923de2e9d0 100644
> > --- a/drivers/net/nbl/nbl_dev/nbl_dev.c
> > +++ b/drivers/net/nbl/nbl_dev/nbl_dev.c
> > @@ -758,6 +758,11 @@ int nbl_promiscuous_disable(struct rte_eth_dev *eth_dev)
> > return 0;
> > }
> >
> > +int nbl_vlan_offload_set(__rte_unused struct rte_eth_dev *dev, __rte_unused int mask)
> > +{
> > + return 0;
> > +}
> This seems broken in handling VLAN.
> The intention is that the driver changes how vlans handled based on the mask
> in the API call.
> The driver is not advertising RTE_ETH_VLAN_STRIP_OFFLOAD in the offload flags.
> Same for QINQ or FILTER flags.
> What is the intention? How is the hardware handling VLAN tags? Does it
> have the capability to do this in hardware? Can it be enabled and disabled?
If device does not support VLAN offload then it is correct for any
attempts to change the mask to return -ENOTSUP. This is what happens
now with all of these kind of devices.
You could make an argument that at the ethdev shim layer, requests
to disable any feature that a device could not support could be reported
as allowed. But that is such a odd case, that it is more logical to
argue that: "Any change to offload X should be reported as non supported
unless the device reports it can do feature X".
If you have some customer or internal script expecting testpmd
to always allow vlan strip 0 then that is the real issue.
next prev parent reply other threads:[~2025-11-25 15:28 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-07 7:34 [PATCH v1 0/4] NBL add new features Dimon Zhao
2025-11-07 7:34 ` [PATCH v1 1/4] net/nbl: change default Rx extension header size to 12 bytes Dimon Zhao
2025-11-11 14:32 ` Stephen Hemminger
2025-11-07 7:34 ` [PATCH v1 2/4] net/nbl: add support for Tx and Rx VLAN offload Dimon Zhao
2025-11-07 16:10 ` Stephen Hemminger
2025-11-10 8:17 ` 回复:[PATCH " Dimon
2025-11-07 7:34 ` [PATCH v1 3/4] net/nbl: add support for imissed stats Dimon Zhao
2025-11-07 16:05 ` Stephen Hemminger
2025-11-07 7:34 ` [PATCH v1 4/4] net/nbl: update documentation and maintainers Dimon Zhao
2025-11-09 20:16 ` Stephen Hemminger
2025-11-10 8:56 ` 回复:[PATCH " Dimon
2025-11-11 11:31 ` [PATCH v2 0/4] NBL add new features Dimon Zhao
2025-11-11 11:31 ` [PATCH v2 1/4] net/nbl: change default Rx extension header size to 12 bytes Dimon Zhao
2025-11-11 11:31 ` [PATCH v2 2/4] net/nbl: add support for Tx and Rx VLAN offload Dimon Zhao
2025-11-11 11:31 ` [PATCH v2 3/4] net/nbl: add support for imissed stats Dimon Zhao
2025-11-11 11:31 ` [PATCH v2 4/4] net/nbl: add IOVA mode check in Coexistence Dimon Zhao
2025-11-11 21:19 ` Thomas Monjalon
2025-11-24 3:40 ` [PATCH v1 0/1] fix NBL Rx VLAN issues in DPDK 25.11-rc3 Dimon Zhao
2025-11-24 3:40 ` [PATCH v1 1/1] net/nbl: add VLAN offload set interface Dimon Zhao
2025-11-24 23:35 ` Stephen Hemminger
2025-11-25 2:28 ` 回复:[PATCH " Dimon
2025-11-25 15:27 ` Stephen Hemminger [this message]
2025-11-24 15:44 ` [PATCH v1 0/1] fix NBL Rx VLAN issues in DPDK 25.11-rc3 Patrick Robb
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=20251125072758.37b8b100@phoenix.local \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=dimon.zhao@nebula-matrix.com \
--cc=kyo.liu@nebula-matrix.com \
--cc=leon.yu@nebula-matrix.com \
--cc=sam.chen@nebula-matrix.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).