When Direct Rules API is not supported we don't set the errno. this results in failing the function but with errno equals to zero. The result of this is that a function that failed, is considered as a function that worked correctly.
This commit fixes this issue by setting the errno to ENOTSUP and returning this error when error value should be returned. Since RDMA-CORE are returning positive errno we are also returning positive error values. Fixes: 4f84a19779ca ("net/mlx5: add Direct Rules API") Signed-off-by: Ori Kam <or...@mellanox.com> --- drivers/net/mlx5/mlx5_glue.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/drivers/net/mlx5/mlx5_glue.c b/drivers/net/mlx5/mlx5_glue.c index 6172e0d..21cd3bb 100644 --- a/drivers/net/mlx5/mlx5_glue.c +++ b/drivers/net/mlx5/mlx5_glue.c @@ -296,6 +296,7 @@ #ifndef HAVE_IBV_DEVICE_COUNTERS_SET_V45 (void)context; (void)init_attr; + errno = ENOTSUP; return NULL; #else return ibv_create_counters(context, init_attr); @@ -377,6 +378,7 @@ return mlx5dv_dr_action_create_dest_table(tbl); #else (void)tbl; + errno = ENOTSUP; return NULL; #endif } @@ -389,6 +391,7 @@ #else (void)domain; (void)vport; + errno = ENOTSUP; return NULL; #endif } @@ -399,6 +402,7 @@ #ifdef HAVE_MLX5DV_DR_ESWITCH return mlx5dv_dr_action_create_drop(); #else + errno = ENOTSUP; return NULL; #endif } @@ -411,6 +415,7 @@ #else (void)domain; (void)level; + errno = ENOTSUP; return NULL; #endif } @@ -422,7 +427,8 @@ return mlx5dv_dr_table_destroy(tbl); #else (void)tbl; - return 0; + errno = ENOTSUP; + return errno; #endif } @@ -435,6 +441,7 @@ #else (void)ctx; (void)domain; + errno = ENOTSUP; return NULL; #endif } @@ -446,7 +453,8 @@ return mlx5dv_dr_domain_destroy(domain); #else (void)domain; - return 0; + errno = ENOTSUP; + return errno; #endif } @@ -467,6 +475,7 @@ (void)context; (void)wq_attr; (void)mlx5_wq_attr; + errno = ENOTSUP; return NULL; #else return mlx5dv_create_wq(context, wq_attr, mlx5_wq_attr); @@ -504,6 +513,7 @@ (void)context; (void)qp_init_attr_ex; (void)dv_qp_init_attr; + errno = ENOTSUP; return NULL; #endif } @@ -527,6 +537,7 @@ (void)context; (void)matcher_attr; (void)tbl; + errno = ENOTSUP; return NULL; #endif } @@ -581,6 +592,7 @@ #else (void)counter_obj; (void)offset; + errno = ENOTSUP; return NULL; #endif } @@ -603,6 +615,7 @@ #endif #else (void)qp; + errno = ENOTSUP; return NULL; #endif } @@ -641,6 +654,7 @@ (void)flags; (void)actions_sz; (void)actions; + errno = ENOTSUP; return NULL; #endif } @@ -681,6 +695,7 @@ (void)flags; (void)data_sz; (void)data; + errno = ENOTSUP; return NULL; #endif } @@ -702,6 +717,7 @@ #endif #endif (void)tag; + errno = ENOTSUP; return NULL; } @@ -726,7 +742,8 @@ #endif #else (void)matcher; - return 0; + errno = ENOTSUP; + return errno; #endif } @@ -740,6 +757,7 @@ }); #else (void)device; + errno = ENOTSUP; return NULL; #endif } @@ -757,6 +775,7 @@ (void)inlen; (void)out; (void)outlen; + errno = ENOTSUP; return NULL; #endif } -- 1.8.3.1