On 12 Jan 2023, at 7:55, Faicker Mo wrote:

> The device may be deleted and added with ifindex changed.
> The tc rules on the device will be deleted if the device is deleted.
> The func tc_del_filter will fail when flow del. The mapping of
> ufid to tc will not be deleted.
> The traffic will trigger the same flow(with same ufid) to put to tc
> on the new device. Duplicated ufid mapping will be added.
> If the hashmap is expanded, the old mapping entry will be the first entry,
> and now the dp flow can't be deleted.
>
> Signed-off-by: Faicker Mo <[email protected]>
> ---
>  lib/netdev-offload-tc.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/lib/netdev-offload-tc.c b/lib/netdev-offload-tc.c
> index ce7f8ad97..e731badc0 100644
> --- a/lib/netdev-offload-tc.c
> +++ b/lib/netdev-offload-tc.c
> @@ -240,8 +240,9 @@ del_filter_and_ufid_mapping(struct tcf_id *id, const 
> ovs_u128 *ufid)
>      int err;
>
>      err = tc_del_filter(id);
> -    if (!err) {
> +    if (!err || err == ENODEV) {
>          del_ufid_tc_mapping(ufid);
> +        return 0;
>      }
>      return err;
>  }
> --

The change by itself looks ok, but can you also add a test case for this in 
system-offloads-traffic.at?

//Eelco

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to