[PATCH v2] doc: fix support table for ETH and VLAN flow items

Eli Britstein elibr at nvidia.com
Sun Oct 16 07:26:56 CEST 2022



>-----Original Message-----
>From: Ilya Maximets <i.maximets at ovn.org>
>Sent: Friday, October 14, 2022 3:37 PM
>To: fengchengwen <fengchengwen at huawei.com>; dev at dpdk.org; Ori Kam
><orika at nvidia.com>; NBU-Contact-Thomas Monjalon (EXTERNAL)
><thomas at monjalon.net>; Eli Britstein <elibr at nvidia.com>
>Cc: i.maximets at ovn.org; Ajit Khaparde <ajit.khaparde at broadcom.com>;
>Somnath Kotur <somnath.kotur at broadcom.com>; Rahul Lakkireddy
><rahul.lakkireddy at chelsio.com>; Hemant Agrawal
><hemant.agrawal at nxp.com>; Sachin Saxena <sachin.saxena at oss.nxp.com>;
>Simei Su <simei.su at intel.com>; Wenjun Wu <wenjun1.wu at intel.com>; John
>Daley <johndale at cisco.com>; Hyong Youb Kim <hyonkim at cisco.com>; Ziyang
>Xuan <xuanziyang2 at huawei.com>; Xiaoyun Wang
><cloud.wangxiaoyun at huawei.com>; Guoyang Zhou
><zhouguoyang at huawei.com>; Dongdong Liu <liudongdong3 at huawei.com>;
>Yisen Zhuang <yisen.zhuang at huawei.com>; Yuying Zhang
><Yuying.Zhang at intel.com>; Beilei Xing <beilei.xing at intel.com>; Jingjing Wu
><jingjing.wu at intel.com>; Qiming Yang <qiming.yang at intel.com>; Qi Zhang
><qi.z.zhang at intel.com>; Junfeng Guo <junfeng.guo at intel.com>; Rosen Xu
><rosen.xu at intel.com>; Matan Azrad <matan at nvidia.com>; Slava Ovsiienko
><viacheslavo at nvidia.com>; Liron Himi <lironh at marvell.com>; Jiawen Wu
><jiawenwu at trustnetic.com>; Jian Wang <jianwang at trustnetic.com>; Dekel
>Peled <dekelp at nvidia.com>; stable at dpdk.org
>Subject: Re: [PATCH v2] doc: fix support table for ETH and VLAN flow items
>
>External email: Use caution opening links or attachments
>
>
>On 10/14/22 11:41, fengchengwen wrote:
>> Hi Ilya,
>>
>>    I have some questions about has_vlan/has_more_vlan fields:
>
>I think, these questions are more for rte_flow maintainers, but I'll try answer.
>Maintainers can correct me if I'm wrong.
>
>>
>>    a\ DPDK framework support cvlan-tag(0x8100) and svlan-tag(0x88A8),
>> and also deprecated qinq-tag(eg. 0x9100)
>
>Didn't check, but sounds about right.
It is not related to "DPDK framework". It is up to the HW to determine.
>
>>    b\ If has_vlan is used, does it mean that all the VLAN
>tags(0x8100/88A8/9100) must be matched ?
>>       I think this is different from using type, which can only match one of
>them.
>
>I think so.  has_vlan = 1 means that packet has some vlan regardless of the
>actual type of the vlan header.
Again, it is up to the HW.
>
>>    c\ And has_more_vlan has the same function as has_vlan ?
>
>Yes, from my understanding, 'has_more_vlan' is the same as 'has_vlan', but
>for the 'inner_type'.
>
>>    d\ What the problems are solved by the new two fields?
>
>One of the problems we solved in OVS by using these fields is that we need a
>way to match on the fact that there is a vlan, but we do not care what this vlan
>tag is and at the same time we want to match on the inner type for such
>packets.
>
>Trying to workaround that situation will likely require breaking the 1:1
>mapping between OVS flows and rte_flow rules, so it is not really possible.  In
>the end, we had to use 'has_vlan' field to fix an incorrect packet matching in
>OVS.  Alternative, I guess, would be to just not offload vlan flows, but doesn't
>make a lot of sense.
>
>Eli should know better what was the actual problem, I think.
OVS does not support offload of qinq, so "has_more_vlan" is still not in use.
For native (untagged) flows, there is a need to tell the HW "has_vlan is 0", otherwise the HW flow will hit both tagged/untagged traffic, which is wrong.
For tagged flows, OVS will always match on the VLAN properties, so "has_vlan is 1" can be deducted/implicit.
Before that field existed, it could be implicit to deduct "lack" of VLAN header (e.g. "eth / ipv4" for example) as "has_vlan is 0". However, other applications that would like both tagged/untagged traffic to hit needed to have 2 separated flows (with a probably slightly lower performance).
Also, DPDK rte-flow is to have things explicit.
>
>>
>>
>>    If the above understanding is correct, and the hardware support identify
>there TPID(cvlan-0x8100, svlan-0x88A8, dqing-0x9100) as VLAN, then:
>>      Rule: eth has_vlan is 1 / vlan vid is 100 / ipv4 / end actions xxx
>>      Result: all ipv4 packets with at least one VLAN(the TPID can be one of the
>above) and the vid is 100 can be matched.
>>
>>      Rule: eth type is 0x8100 / vlan vid is 100 / ipv4 / end actions xxx
>>      Result: all ipv4 packets with at lease one VLAN(which TPID must be
>0x8100) and the vid is 100 can be matched.
>>
>>      Rule: eth has_vlan is 1 / vlan vid is 100 has_more_vlan is 1 / vlan vid is 200
>/ ipv4 / end action xxx
>>      Result: all ipv4 packets with at least two VLAN(the TPID can be one of the
>above) and outer vid is 100 and the next vid is 200 can be matched.
>>
>>      Rule: eth type is 0x88A8 / vlan vid is 100 inner_type is 0x8100 / vlan vid is
>200 / ipv4 / end action xxx
>>      Result: all ipv4 packets with at least two VLAN(the first TPID is 0x88A8 and
>second TPID is 0x8100) and outer vid is 100 and the next vid is 200 can be
>matched.
>>    Is the above result correct ?
>
>Seems correct, but I don't have much experience with rte_flow notations.
>
>Ori, could you comment on this?
>
>Best regards, Ilya Maximets.
>
>>
>> Thanks
>>
>> On 2022/10/13 18:48, Ilya Maximets wrote:
>>> 'has_vlan' attribute is only supported by sfc, mlx5 and cnxk.
>>> Other drivers doesn't support it.  Most of them (like i40e) just
>>> ignore it silently.  Some drivers (like mlx4) never had a full
>>> support of the eth item even before introduction of 'has_vlan'
>>> (mlx4 allows to match on the destination MAC only).
>>>
>>> Same for the 'has_more_vlan' flag of the vlan item.
>>>
>>> 'has_vlan' is part of 'rte_flow_item_eth', so changing 'eth'
>>> field to 'partial support' in documentation for all such drivers.
>>> 'has_more_vlan' is part of 'rte_flow_item_vlan', so changing 'vlan'
>>> to 'partial support' as well.
>>>
>>> This doesn't solve the issue, but at least marks the problematic
>>> drivers.
>>>
>>> Some details are available in:
>>>   https://bugs.dpdk.org/show_bug.cgi?id=958
>>>
>>> Fixes: 09315fc83861 ("ethdev: add VLAN attributes to ethernet and
>>> VLAN items")
>>> Cc: stable at dpdk.org
>>>
>>> Signed-off-by: Ilya Maximets <i.maximets at ovn.org>
>>> ---
>>>
>>> Version 2:
>>>   - Rebased on a current main branch.
>>>   - Added more clarifications to the commit message.
>>>
>>> I added the stable in CC, but the patch should be extended while
>>> backporting.  For 21.11 the cnxk driver should be also updated, for
>>> 20.11, sfc driver should also be included.
>>>
>>>  doc/guides/nics/features/bnxt.ini   | 4 ++--
>>>  doc/guides/nics/features/cxgbe.ini  | 4 ++--
>>> doc/guides/nics/features/dpaa2.ini  | 4 ++--
>>> doc/guides/nics/features/e1000.ini  | 2 +-
>>>  doc/guides/nics/features/enic.ini   | 4 ++--
>>>  doc/guides/nics/features/hinic.ini  | 2 +-
>>>  doc/guides/nics/features/hns3.ini   | 4 ++--
>>>  doc/guides/nics/features/i40e.ini   | 4 ++--
>>>  doc/guides/nics/features/iavf.ini   | 4 ++--
>>>  doc/guides/nics/features/ice.ini    | 4 ++--
>>>  doc/guides/nics/features/igc.ini    | 2 +-
>>>  doc/guides/nics/features/ipn3ke.ini | 4 ++--
>>> doc/guides/nics/features/ixgbe.ini  | 4 ++--
>>>  doc/guides/nics/features/mlx4.ini   | 4 ++--
>>>  doc/guides/nics/features/mvpp2.ini  | 4 ++--
>>>  doc/guides/nics/features/tap.ini    | 4 ++--
>>>  doc/guides/nics/features/txgbe.ini  | 4 ++--
>>>  17 files changed, 31 insertions(+), 31 deletions(-)



More information about the stable mailing list