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