From mboxrd@z Thu Jan 1 00:00:00 1970 From: "John Daley (johndale)" Subject: Re: PKT_RX_VLAN_PKT when VLAN stripping is disabled Date: Tue, 26 Apr 2016 00:16:16 +0000 Message-ID: References: <55ece514189d46d59cca2217214d89be@XCH-RCD-007.cisco.com> <2601191342CEEE43887BDE71AB97725836B415A3@irsmsx105.ger.corp.intel.com> <571E20C0.2080509@6wind.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable To: Olivier Matz , "Ananyev, Konstantin" , "dev@dpdk.org" Return-path: Received: from rcdn-iport-3.cisco.com (rcdn-iport-3.cisco.com [173.37.86.74]) by dpdk.org (Postfix) with ESMTP id E22042716 for ; Tue, 26 Apr 2016 02:16:18 +0200 (CEST) In-Reply-To: <571E20C0.2080509@6wind.com> Content-Language: en-US List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Olivier and Ananyev, I like the new packet types and how they work the same for VLAN and QINQ. J= ust so I understand your suggestion, X710 (as it seems to work today) would= not set RTE_PTYPE_L2_ETHER_VLAN in dev_supported_ptypes_get() because it = does not know how to determine that packet type in the receive path if stri= pping is disabled? But if stripping was enabled, the application could stil= l trust m->vlan_tci if the flag was set? Re changing the meaning of the PKT_RX_VLAN_PKT flag- I think it could cause= hard to find errors and confusion. I would rather see the flag deprecated = and a new one defined. Perhaps the flag could be called PKT_RX_VLAN_STRIPPE= D*. Maybe another less elegant but more compatible solution would be just keep = the Niantic behavior and fix other pmd's to match its behavior. For X710, w= ith vlan stripping disabled this might mean looking at each packet's Ethern= et type and set the flag accordingly. It might not be too expensive since = Ethernet type is in the 1st cacheline and hopefully prefetched. Thoughts? *In the future perhaps another flag could be added called PKT_RX_VLAN_TCI_V= ALID. This may not be the same as PKT_RX_VLAN_STRIPPED- enic and maybe some= other nics are able to set vlan_tci even when not stripping vlan tags and = this feature could be exposed with this separate flag. -john > -----Original Message----- > From: Olivier Matz [mailto:olivier.matz@6wind.com] > Sent: Monday, April 25, 2016 6:51 AM > To: Ananyev, Konstantin ; John Daley > (johndale) ; dev@dpdk.org > Subject: Re: [dpdk-dev] PKT_RX_VLAN_PKT when VLAN stripping is disabled >=20 > Hi, >=20 > On 04/25/2016 02:02 PM, Ananyev, Konstantin wrote: > > Hi John, > > From rte_mbuf.h: > > #define PKT_RX_VLAN_PKT (1ULL << 0) /**< RX packet is a 802.1q VL= AN > packet. */ > > So yes, in theory it should be set up for vlan packet with both strippi= ng > on/off. > > The problem is that (as far as I know) when VLAN stripping is disabled > > FVL RXD doesn't contain information does that packet contain a VLAN or > not. > > Don't really know what is the best option in that case: keep things as > > it is or change the meaning of the VLAN_PKT flag to indicate is > mbuf.vlan_tci field is valid or not. > > Konstantin >=20 > It seems the meaning of the PKT_RX_VLAN_PKT bit depends on the port > configuration: > - if vlan stripping is configured, it means VLAN is present in vlan_tci > mbuf field > - if not configured, it means a VLAN is present in the packet >=20 > I don't think this is a good behavior since the application has to know t= he port > configuration to properly interpret the meaning of the flag. >=20 > I suggest to change the meaning of this flag to: "vlan was stripped by > hardware, and vlan tag is now located in m->vlan_tci". >=20 > The same could apply to PKT_RX_QINQ_PKT and m->outer_vlan_tci. >=20 > We could add a new packet_type to tell if the mbuf is a VLAN/QinQ is > detected in the packet but not stripped. >=20 > Example: >=20 > - vlan stripping is disabled >=20 > - vlan packet recvd: flags=3D0, ptype=3DRTE_PTYPE_L2_ETHER_VLAN > - qinq packet recvd: flags=3D0, ptype=3DRTE_PTYPE_L2_ETHER_QINQ >=20 > - vlan stripping is enabled >=20 > - vlan packet recvd: flags=3DPKT_RX_VLAN_PKT, > ptype=3DRTE_PTYPE_L2_ETHER, > m->vlan_tci=3Did > - qinq packet recvd: flags=3DPKT_RX_VLAN_PKT|PKT_RX_QINQ_PKT, > ptype=3DRTE_PTYPE_L2_ETHER, m->vlan_tci=3Did, m->vlan_tci_outer= =3Did >=20 >=20 > Thoughts? >=20 >=20 >=20 > > > >> -----Original Message----- > >> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John Daley > >> (johndale) > >> Sent: Friday, April 22, 2016 12:37 AM > >> To: dev@dpdk.org > >> Subject: [dpdk-dev] PKT_RX_VLAN_PKT when VLAN stripping is disabled > >> > >> Hi, > >> > >> When VLAN stripping is disabled, X710 and 82599ES act differently for > >> me in this case when receiving VLAN tagged packets. On 82599ES the fla= g > is set but on X710 the flag not set. > >> > >> Do I maybe have old X710 firmware? Or is it not set for X710 on > >> purpose in this case and instead the flag is used to indicate if vlan_= tci is > valid? Right now the enic pmd does what my X710 does, which I think is > incorrect and I want to fix it. > >> > >> Thanks, > >> John > >