Hi. Thanks for testing!

> Hi,
> Initial tests show that offload is broken as netdev_rte_offloads_flow_put() 
> is not called.
> It is not called because it is not registered.
> When starting debugging it I noticed in function 
> netdev_register_flow_api_provider()
> that we may return an uninitialized error value.
> Because of this in my tests calling netdev_register_flow_api_provider() 
> returned with errors.
>
> Looking at this function:
> Int netdev_register_flow_api_provider(const struct netdev_flow_api 
> *new_flow_api)
>     OVS_EXCLUDED(netdev_flow_api_provider_mutex)
> {
>     int error; // <==== should be initialized to 0

Good catch. However this value never used by callers. I'll fix.

> ...
>     return error;
> }

> When initializing error to 0 this function returned successfully but 
> netdev_rte_offloads_flow_put() is
> still not called.
> It requires further debugging.

Sorry, It's a stupid bug while bool to int conversion.
Should be fixed by:

diff --git a/lib/netdev-rte-offloads.c b/lib/netdev-rte-offloads.c
index a3f0b82a8..44188dbf5 100644
--- a/lib/netdev-rte-offloads.c
+++ b/lib/netdev-rte-offloads.c
@@ -753,7 +753,7 @@ netdev_rte_offloads_flow_del(struct netdev
*netdev, const ovs_u128 *ufid,
 static int
 netdev_rte_offloads_init_flow_api(struct netdev *netdev)
 {
-    return netdev_dpdk_flow_api_supported(netdev);
+    return netdev_dpdk_flow_api_supported(netdev) ? 0 : EOPNOTSUPP;
 }
---

I'll update the patch tomorrow.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to