-----Original Message-----
From: Eli Britstein <[email protected]> 
Sent: Tuesday 24 August 2021 16:26
To: Finn, Emma <[email protected]>; [email protected]; Ilya Maximets 
<[email protected]>
Cc: Stokes, Ian <[email protected]>; Sriharsha Basavapatna 
<[email protected]>; Gaetan Rivet <[email protected]>; Majd 
Dibbiny <[email protected]>; Salem Sol <[email protected]>
Subject: Re: [PATCH V3 1/2] netdev-offload-dpdk: Use has_vlan match attribute


On 8/24/2021 6:08 PM, Finn, Emma wrote:
> External email: Use caution opening links or attachments
>
>
> -----Original Message-----
> From: Eli Britstein <[email protected]>
> Sent: Monday 16 August 2021 14:55
> To: [email protected]; Ilya Maximets <[email protected]>
> Cc: Finn, Emma <[email protected]>; Stokes, Ian <[email protected]>; 
> Sriharsha Basavapatna <[email protected]>; Gaetan Rivet 
> <[email protected]>; Majd Dibbiny <[email protected]>; Eli Britstein 
> <[email protected]>; Salem Sol <[email protected]>
> Subject: [PATCH V3 1/2] netdev-offload-dpdk: Use has_vlan match attribute
>
> DPDK 20.11 introduced an ability to specify existance/non-existance of VLAN 
> tag by [1].
> Use this attribute.
>
> [1]: 09315fc83861 ("ethdev: add VLAN attributes to ethernet and VLAN items")
>
> Signed-off-by: Eli Britstein <[email protected]>
> Reviewed-by: Salem Sol <[email protected]>
>
> Hi Eli,
>
> I tested this but currently we don't have support in the i40e pmd for the 
> has_vlan match attribute and with these patches it is breaking offload for 
> VLAN packets on Intel devices.

Hi Emma,

Thanks for testing.

Is adding such support in your plans?

How do you suggest to proceed? It is needed in order to fix OVS bug.

Thanks,

Eli

Hi, 

Let me look into putting a feature request in DPDK for the i40e pmd. 

Thanks, 
Emma 

>
> Thanks,
> Emma
> ---
>   lib/netdev-offload-dpdk.c | 16 ++++++++++++++++
>   1 file changed, 16 insertions(+)
>
> diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c index 
> f6706ee0c..28c4ba276 100644
> --- a/lib/netdev-offload-dpdk.c
> +++ b/lib/netdev-offload-dpdk.c
> @@ -210,6 +210,8 @@ dump_flow_pattern(struct ds *s,
>
>           ds_put_cstr(s, "eth ");
>           if (eth_spec) {
> +            uint32_t has_vlan_mask;
> +
>               if (!eth_mask) {
>                   eth_mask = &rte_flow_item_eth_mask;
>               }
> @@ -222,6 +224,9 @@ dump_flow_pattern(struct ds *s,
>               DUMP_PATTERN_ITEM(eth_mask->type, "type", "0x%04"PRIx16,
>                                 ntohs(eth_spec->type),
>                                 ntohs(eth_mask->type));
> +            has_vlan_mask = eth_mask->has_vlan ? UINT32_MAX : 0;
> +            DUMP_PATTERN_ITEM(has_vlan_mask, "has_vlan", "%d",
> +                              eth_spec->has_vlan, eth_mask->has_vlan);
>           }
>           ds_put_cstr(s, "/ ");
>       } else if (item->type == RTE_FLOW_ITEM_TYPE_VLAN) { @@ -1047,6 +1052,7 
> @@ parse_flow_match(struct netdev *netdev,
>                    struct flow_patterns *patterns,
>                    struct match *match)
>   {
> +    struct rte_flow_item_eth *eth_spec = NULL, *eth_mask = NULL;
>       struct flow *consumed_masks;
>       uint8_t proto = 0;
>
> @@ -1092,6 +1098,11 @@ parse_flow_match(struct netdev *netdev,
>           memset(&consumed_masks->dl_src, 0, sizeof consumed_masks->dl_src);
>           consumed_masks->dl_type = 0;
>
> +        spec->has_vlan = 0;
> +        mask->has_vlan = 1;
> +        eth_spec = spec;
> +        eth_mask = mask;
> +
>           add_flow_pattern(patterns, RTE_FLOW_ITEM_TYPE_ETH, spec, mask);
>       }
>
> @@ -1108,6 +1119,11 @@ parse_flow_match(struct netdev *netdev,
>           /* Match any protocols. */
>           mask->inner_type = 0;
>
> +        if (eth_spec && eth_mask) {
> +            eth_spec->has_vlan = 1;
> +            eth_mask->has_vlan = 1;
> +        }
> +
>           add_flow_pattern(patterns, RTE_FLOW_ITEM_TYPE_VLAN, spec, mask);
>       }
>       /* For untagged matching match->wc.masks.vlans[0].tci is 0xFFFF and
> --
> 2.28.0.2311.g225365fb51
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to