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

Reply via email to