On 1/23/22 17:28, Sriharsha Basavapatna wrote:
> Hi Ilya,
> 
> On Wed, Jan 19, 2022 at 7:24 AM Ilya Maximets <i.maxim...@ovn.org> wrote:
> <snip>
>>
>> I also spotted one bug where the flow stays offloaded if it gets added
>> and removed shortly after that.  But it's an old existing race condition,
>> not introduced by this patch set.  We basically have to enqueue the
>> flow deletion regardless of the flow->mark being set.
>> I'll send a patch for that issue, probably, in the next couple of days.
>> Or if you want to work on that, that's fine for me too.
> 
> We are seeing a similar issue with OVS-2.16. While adding and deleting
> flows in a loop, after a few iterations, rte_flow_destroy() is not
> seen by the PMD for some of the offloaded flows. And those flows stay
> offloaded in HW.  I tried the following change in 2.16 like you
> suggested above and it resolved the issue.
> 
> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> index d6bee2a5a..8cca57f1f 100644
> --- a/lib/dpif-netdev.c
> +++ b/lib/dpif-netdev.c
> @@ -2758,9 +2758,7 @@ dp_netdev_pmd_remove_flow(struct
> dp_netdev_pmd_thread *pmd,
>      ovs_assert(cls != NULL);
>      dpcls_remove(cls, &flow->cr);
>      cmap_remove(&pmd->flow_table, node, dp_netdev_flow_hash(&flow->ufid));
> -    if (flow->mark != INVALID_FLOW_MARK) {
> -        queue_netdev_flow_del(pmd, flow);
> -    }
> +    queue_netdev_flow_del(pmd, flow);
>      flow->dead = true;
> 
>      dp_netdev_flow_unref(flow);

Yeah, I was thinking about something similar.  Would you mind sending an
official patch?

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to