<div class="__aliyun_email_body_block"><div  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun"><div  style="clear: both; font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;">Hi <span  style="color: rgb(0, 0, 0); font-family: Tahoma, Arial, STHeiti, SimSun; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; word-spacing: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">Stephen,</span></span></div><div  style="clear: both; font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  style="font-family: Tahoma, Arial, STHeiti, SimSun; color: rgb(0, 0, 0); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; word-spacing: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;"><br ></span></div><div  style="clear: both; font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span >Thank you for your review.</span></span></div><div  style="clear: both; font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span ><br ></span></span></div><div  style="clear: both; font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><a  href="http://patches.dpdk.org/project/dpdk/patch/20251107073459.3532524-3-dimon.zhao@nebula-matrix.com/" target="_blank">http://patches.dpdk.org/project/dpdk/patch/20251107073459.3532524-3-dimon.zhao@nebula-matrix.com/</a></span><div  style="clear: both;">In this previous commit, the driver is advertising RTE_ETH_RX_OFFLOAD_VLAN_STRIP<br ></div><div  style="clear: both;">in the offload flags. Because we do not support QINQ and FILTER,<br ></div><div  style="clear: both;">we are not advertising QINQ or FILTER flags.</div><div  style="clear: both;"><span  style="font-style: italic;">dev_info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_VLAN_INSERT;<br ></span></div><div  style="clear: both;"><span  style="font-style: italic;">dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_VLAN_STRIP;</span></div><div  style="clear: both;">In this previous commit, we simulate support for Tx and Rx VLAN offload,<br ></div><div  style="clear: both;">while in reality we handle Tx VLAN insertion and Rx VLAN stripping in software.<br ></div><div  style="clear: both;">For Rx VLAN stripping, the driver uses rte_vlan_strip to achieve this functionality.<br ></div><div  style="clear: both;">It does not have the capability to do this in hardware.<br ></div><div  style="clear: both;">So when enabling or disabling Rx VLAN stripping, the driver and hardware do not need to do anything.<br ></div><div  style="clear: both;"><br ></div><div  style="clear: both;">Why vlan_offload_set is Required?<br ></div><div  style="clear: both;">The rte_eth_dev_set_vlan_offload function has this flow:<br ></div><div  style="clear: both;">int rte_eth_dev_set_vlan_offload(uint16_t port_id, int offload_mask)<br ></div><div  style="clear: both;">{<br ></div><div  style="clear: both;">    // ...<br ></div><div  style="clear: both;">    if (dev->dev_ops->vlan_offload_set == NULL)<br ></div><div  style="clear: both;">        return -ENOTSUP;  // This causes the error!<br ></div><div  style="clear: both;">    // ...<br ></div><div  style="clear: both;">    ret = dev->dev_ops->vlan_offload_set(dev, mask);<br ></div><div  style="clear: both;">}<br ></div><div  style="clear: both;">Without implementing vlan_offload_set, users get -ENOTSUP error when running:<br ></div><div  style="clear: both;">testpmd> vlan set strip on 0<br ></div><div  style="clear: both;"><br ></div><div  style="clear: both;">Since hardware doesn't need configuration changes, our implementation is minimal:<br ></div><div  style="clear: both;">int nbl_vlan_offload_set(__rte_unused struct rte_eth_dev *dev, <br ></div><div  style="clear: both;">                        __rte_unused int mask)<br ></div><div  style="clear: both;">{<br ></div><div  style="clear: both;">    // No hardware configuration needed - everything handled in software<br ></div><div  style="clear: both;">    return 0;<br ></div><div ><span >}</span></div><span  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><br ></span></div><div  style="clear: both; font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><span  style="font-family: Tahoma, Arial, STHeitiSC-Light, SimSun;"><br ></span></div><blockquote  _quote="1" style="margin-right: 0px; margin-top: 0px; margin-bottom: 0px; font-family: Tahoma, Arial, STHeiti, SimSun; font-size: 14px; color: rgb(0, 0, 0);"><div  class="alimail-quote"><div  style="clear: both;">------------------------------------------------------------------</div><div  style="clear: both;">发件人:Stephen Hemminger <stephen@networkplumber.org></div><div  style="clear: both;">发送时间:2025年11月25日(周二) 07:35</div><div  style="clear: both;">收件人:Dimon<dimon.zhao@nebula-matrix.com></div><div  style="clear: both;">抄 送:dev<dev@dpdk.org>; Kyo Liu<kyo.liu@nebula-matrix.com>; Leon<leon.yu@nebula-matrix.com>; Sam<sam.chen@nebula-matrix.com></div><div  style="clear: both;">主 题:Re: [PATCH v1 1/1] net/nbl: add VLAN offload set interface</div><div  style="clear: both;"><br ></div>On Sun, 23 Nov 2025 19:40:26 -0800<br >Dimon Zhao <dimon.zhao@nebula-matrix.com> wrote:<br ><br >> The rte_eth_dev_set_vlan_offload function internally calls<br >> the vlan_offload_set interface, so we must implement this function.<br >> Otherwise, an error will occur when<br >> executing the vlan set strip on command.<br >> <br >> Fixes: 9d7757dce874 ("net/nbl: simulate VLAN offload")<br >> <br >> Signed-off-by: Dimon Zhao <dimon.zhao@nebula-matrix.com><br >> ---<br >>  drivers/net/nbl/nbl_dev/nbl_dev.c | 5 +++++<br >>  drivers/net/nbl/nbl_dev/nbl_dev.h | 1 +<br >>  drivers/net/nbl/nbl_ethdev.c      | 1 +<br >>  3 files changed, 7 insertions(+)<br >> <br >> diff --git a/drivers/net/nbl/nbl_dev/nbl_dev.c b/drivers/net/nbl/nbl_dev/nbl_dev.c<br >> index 58eb1c6231..923de2e9d0 100644<br >> --- a/drivers/net/nbl/nbl_dev/nbl_dev.c<br >> +++ b/drivers/net/nbl/nbl_dev/nbl_dev.c<br >> @@ -758,6 +758,11 @@ int nbl_promiscuous_disable(struct rte_eth_dev *eth_dev)<br >>   return 0;<br >>  }<br >>  <br >> +int nbl_vlan_offload_set(__rte_unused struct rte_eth_dev *dev, __rte_unused int mask)<br >> +{<br >> + return 0;<br >> +}<br ><br >This seems broken in handling VLAN.<br >The intention is that the driver changes how vlans handled based on the mask<br >in the API call. <br ><br >The driver is not advertising RTE_ETH_VLAN_STRIP_OFFLOAD in the offload flags.<br >Same for QINQ or FILTER flags.<br ><br >What is the intention? How is the hardware handling VLAN tags? Does it<br >have the capability to do this in hardware? Can it be enabled and disabled?<br ><br ></div></blockquote><div  style="line-height: 20px; clear: both;"><br ></div></div></div>
<div style="clear: both;"><span style="font-size: 10px; color: rgb(216, 216, 216);">本邮件所含信息及其任何附件为保密信息且可能属于专有信息。任何非指定接收人均无权访问本邮件。如果您不是该邮件的指定接收人,那么任何对本邮件内容进行披露,复制或使用的行为均是禁止的。如果您不是该邮件的指定接收人,请您立即通过邮件通知 compliance@nebula-matrix.com并立即删除您错误接受的邮件。</span></div><div style="clear: both;"><span style="font-size: 10px; color: rgb(216, 216, 216);">The information in this message and any attachments is confidential and may be privileged.  Access to this email by anyone other than the intended recipient is not authorized.  If you are not the intended recipient, disclosure, copying or use of the contents of this email is prohibited.  If you are not the intended recipient, please notify  compliance@nebula-matrix.com immediately by email, and please destroy the email you received in error.</span></div>