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