On 12/24/19 6:16 AM, Somnath Kotur wrote: > Given that we haven't heard any objection from anyone in a while on > this ...can we get this in please?
I'm sorry, but have you seen below? It means that PKT_RX_QINQ_STRIPPED, PKT_RX_QINQ, PKT_RX_VLAN and PKT_RX_VLAN_STRIPPED must be clarified. It sounds like change of semantics in order to resolve the problem, but anyway it is still a small change of semantics. BTW, it is better to make summary human readable and avoid PKT_RX_QINQ_STRIPPED (I guess check-git-log.sh yells on it). Also RFC patch cannot be applied, non-RFC version is required. CC main tree maintainers. > Thanks > > On Mon, Dec 16, 2019 at 2:43 PM Andrew Rybchenko > <arybche...@solarflare.com> wrote: >> >> On 12/16/19 11:47 AM, Somnath Kotur wrote: >>> On Mon, Dec 16, 2019 at 12:01 PM Andrew Rybchenko >>> <arybche...@solarflare.com> wrote: >>>> >>>> On 12/16/19 6:16 AM, Somnath Kotur wrote: >>>>> Certain hardware may be able to strip and/or save only the outermost >>>>> VLAN instead of both the VLANs in the mbuf in a QinQ scenario. >>>>> To handle such cases, we could re-interpret setting of just >>>>> PKT_RX_QINQ_STRIPPED >>>>> to indicate that only the outermost VLAN has been stripped by the >>>>> hardware and >>>>> saved in mbuf->vlan_tci_outer. >>>>> Only When both PKT_RX_QINQ_STRIPPED and PKT_RX_VLAN_STRIPPED are set, the >>>>> 2 vlans >>>>> have been stripped by the hardware and their tci are saved in >>>>> mbuf->vlan_tci (inner) >>>>> and mbuf->vlan_tci_outer (outer). >>>>> >>>>> Signed-off-by: Somnath Kotur <somnath.ko...@broadcom.com> >>>>> Signed-off-by: JP Lee <jongpil....@broadcom.com> >>>>> --- >>>>> lib/librte_mbuf/rte_mbuf_core.h | 15 +++++++++++---- >>>>> 1 file changed, 11 insertions(+), 4 deletions(-) >>>>> >>>>> diff --git a/lib/librte_mbuf/rte_mbuf_core.h >>>>> b/lib/librte_mbuf/rte_mbuf_core.h >>>>> index 9a8557d..db1070b 100644 >>>>> --- a/lib/librte_mbuf/rte_mbuf_core.h >>>>> +++ b/lib/librte_mbuf/rte_mbuf_core.h >>>>> @@ -124,12 +124,19 @@ >>>>> #define PKT_RX_FDIR_FLX (1ULL << 14) >>>>> >>>>> /** >>>>> - * The 2 vlans have been stripped by the hardware and their tci are >>>>> - * saved in mbuf->vlan_tci (inner) and mbuf->vlan_tci_outer (outer). >>>>> + * The outer vlan has been stripped by the hardware and their tci are >>>>> + * saved in mbuf->vlan_tci_outer (outer). >>>>> * This can only happen if vlan stripping is enabled in the RX >>>>> * configuration of the PMD. >>>>> - * When PKT_RX_QINQ_STRIPPED is set, the flags (PKT_RX_VLAN | >>>>> - * PKT_RX_VLAN_STRIPPED | PKT_RX_QINQ) must also be set. >>>>> + * When PKT_RX_QINQ_STRIPPED is set, the flags (PKT_RX_VLAN | >>>>> PKT_RX_QINQ) >>>>> + * must also be set. >>>>> + * When both PKT_RX_QINQ_STRIPPED and PKT_RX_VLAN_STRIPPED are set, the >>>>> 2 vlans >>>>> + * have been stripped by the hardware and their tci are saved in >>>>> + * mbuf->vlan_tci (inner) and mbuf->vlan_tci_outer (outer). >>>>> + * This can only happen if vlan stripping is enabled in the RX >>>>> configuration >>>>> + * of the PMD. >>>>> + * When PKT_RX_QINQ_STRIPPED and PKT_RX_VLAN_STRIPPED are set, >>>>> + * (PKT_RX_VLAN | PKT_RX_QINQ) must also be set. >>>>> */ >>>>> #define PKT_RX_QINQ_STRIPPED (1ULL << 15) >>>>> >>>> >>>> I always thought that PKT_RX_VLAN_STRIPPED means *one* VLAN >>>> stripped regardless if it is outer (if the packet is double >>>> tagged) or inner (if only one VLAN tag was present). >>>> >>>> That's why PKT_RX_QINQ_STRIPPED description says that *two* >>>> VLANs have been stripped. >>>> >>>> What is the problem with such approach? >>> The problem is that RX_VLAN_STRIPPED implies that the stripped VLAN >>> (outer or inner) is saved in mbuf->vlan_tci, correct? >> >> Yes. >> >>> There is no way to convey that it is in QinQ mode and yet only outer >>> VLAN has been stripped and saved in mbuf->vlan_tci_outer ? >> >> Ah, it looks like I understand now that the problem is in >> PKT_RX_QINQ description which claims that TCI is saved in >> mbuf->vlan_tci_outer and PKT_RX_QINQ_STRIPPED means that >> both VLAN tags are stripped regardless (PKT_RX_VLAN_STRIPPED). >> Moreover PKT_RX_QINQ_STRIPPED requires PKT_RX_VLAN_STRIPPED. >> >> It means that PKT_RX_QINQ_STRIPPED, PKT_RX_QINQ, PKT_RX_VLAN >> and PKT_RX_VLAN_STRIPPED must be clarified. >> >> I'm not sure, but it looks like it could affect net/dpaa2, >> so I'm including driver maintainers in CC.