[dpdk-dev] DEV_RX_OFFLOAD_VLAN_EXTEND offload

Thomas Monjalon thomas at monjalon.net
Mon Nov 5 07:55:43 CET 2018


05/11/2018 05:22, Zhao1, Wei:
> From: Jerin Jacob [mailto:jerin.jacob at caviumnetworks.com]
> > From: "Zhao1, Wei" <wei.zhao1 at intel.com>
> > > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Jerin Jacob
> > > > From: Ferruh Yigit <ferruh.yigit at intel.com>
> > > > > On 10/26/2018 11:56 AM, Jerin Jacob wrote:
> > > > > >
> > > > > > Does anyone know the expectation of
> > > > DEV_RX_OFFLOAD_VLAN_EXTEND
> > > > > > offload? Does not look like it is documented.
> > > > > >
> > > > > > Looks like it is very specific to Intel controllers, Based on
> > > > > > 82599 HRM, it is following, not sure what is the real
> > > > > > expectation from NIC in normative terms.
> > > > > >
> > > > > > Extended VLAN.
> > > > > > -------------
> > > > > > When set, all incoming Rx packets are expected to have at least
> > > > > > one VLAN with the Ether type as defined in EXVET register. The
> > > > > > packets can have an inner-VLAN that should be used for all
> > > > > > filtering purposes. All Tx packets are expected to have at least
> > > > > > one VLAN added to them by the host. In the case of an additional
> > > > > > VLAN request (VLE), the inner-VLAN is added by the hardware
> > > > > > after the outer-VLAN is
> > > > added by the host.
> > > > > > This bit should only be reset by a PCIe reset and should only be
> > > > > > changed while Tx and Rx processes are stopped.
> > > > > > The exception to this rule are MAC control packets such as flow
> > > > > > control, 802.1x, LACP, etc. that never carry a VLAN tag of any
> > > > > > type
> > > > > >
> > > > >
> > > > > This looks similar to QinQ but it seems not, in ixgbe datasheet it has:
> > > >
> > > > Yes. QinQ there is an already an offload called
> > > > DEV_RX_OFFLOAD_QINQ_STRIP
> > >
> > > Excuse me, I have some thought, is that right?
> > > maybe DEV_RX_OFFLOAD_QINQ_STRIP and
> > DEV_RX_OFFLOAD_VLAN_EXTEND is just two thing that play a different role
> > each.
> > > DEV_RX_OFFLOAD_VLAN_EXTEND tell NIC to recognize QinQ PACKETS, it is
> > a filter for NIC.
> > > DEV_RX_OFFLOAD_QINQ_STRIP tell nic to strip 2 inner and outer vlan head
> > when moving packets from nic to host memory.
> > > I40e NIC is the normative terms when handling qinq packets.
> > 
> > Yes, it makes sense if the meaning of DEV_RX_OFFLOAD_VLAN_EXTEND is
> > QINQ filter. But it looks like not, as .vlan_filter_set ethdev callback accepts
> > only single vlan id as "uint16_t vlan_id".
> > If it needs to be treated as QinQ filter then QinQ vlan_ids needs to be send
> > to driver through some means.
> > 
> 
> Yes,  DEV_RX_OFFLOAD_VLAN_EXTEND can enable the qinq filter, but I do not find the way to config QinQ vlan_ids,
> May be we need some means to send inner and outer vlan id to PMD, may be it is already exist but we do not find it.
> I will check that and report in this mail if I get the result.
> 
> > 
> > Probably we may need to deprecate these vlan API in long-term and
> > enable it through rte_flow.
> 
> Good idea!

Generally speaking, all APIs which are also covered by rte_flow must
be deprecated. We must migrate all PMDs to the new APIs.




More information about the dev mailing list