net/mlx5: check device status before creating flow
[dpdk.git] / drivers / common / mlx5 / mlx5_common.h
index d9c2d26..16de1b3 100644 (file)
@@ -5,10 +5,10 @@
 #ifndef RTE_PMD_MLX5_COMMON_H_
 #define RTE_PMD_MLX5_COMMON_H_
 
-#include <assert.h>
 #include <stdio.h>
 
 #include <rte_pci.h>
+#include <rte_debug.h>
 #include <rte_atomic.h>
 #include <rte_log.h>
 #include <rte_kvargs.h>
 /* Bit-field manipulation. */
 #define BITFIELD_DECLARE(bf, type, size) \
        type bf[(((size_t)(size) / (sizeof(type) * CHAR_BIT)) + \
-                !!((size_t)(size) % (sizeof(type) * CHAR_BIT)))]
+               !!((size_t)(size) % (sizeof(type) * CHAR_BIT)))]
 #define BITFIELD_DEFINE(bf, type, size) \
        BITFIELD_DECLARE((bf), type, (size)) = { 0 }
 #define BITFIELD_SET(bf, b) \
-       (assert((size_t)(b) < (sizeof(bf) * CHAR_BIT)), \
-        (void)((bf)[((b) / (sizeof((bf)[0]) * CHAR_BIT))] |= \
-               ((size_t)1 << ((b) % (sizeof((bf)[0]) * CHAR_BIT)))))
+       (void)((bf)[((b) / (sizeof((bf)[0]) * CHAR_BIT))] |= \
+               ((size_t)1 << ((b) % (sizeof((bf)[0]) * CHAR_BIT))))
 #define BITFIELD_RESET(bf, b) \
-       (assert((size_t)(b) < (sizeof(bf) * CHAR_BIT)), \
-        (void)((bf)[((b) / (sizeof((bf)[0]) * CHAR_BIT))] &= \
-               ~((size_t)1 << ((b) % (sizeof((bf)[0]) * CHAR_BIT)))))
+       (void)((bf)[((b) / (sizeof((bf)[0]) * CHAR_BIT))] &= \
+               ~((size_t)1 << ((b) % (sizeof((bf)[0]) * CHAR_BIT))))
 #define BITFIELD_ISSET(bf, b) \
-       (assert((size_t)(b) < (sizeof(bf) * CHAR_BIT)), \
-        !!(((bf)[((b) / (sizeof((bf)[0]) * CHAR_BIT))] & \
-            ((size_t)1 << ((b) % (sizeof((bf)[0]) * CHAR_BIT))))))
+       !!(((bf)[((b) / (sizeof((bf)[0]) * CHAR_BIT))] & \
+               ((size_t)1 << ((b) % (sizeof((bf)[0]) * CHAR_BIT)))))
 
 /*
  * Helper macros to work around __VA_ARGS__ limitations in a C99 compliant
@@ -75,10 +72,10 @@ pmd_drv_log_basename(const char *s)
                RTE_FMT_TAIL(__VA_ARGS__,)))
 
 /*
- * When debugging is enabled (NDEBUG not defined), file, line and function
+ * When debugging is enabled (MLX5_DEBUG not defined), file, line and function
  * information replace the driver name (MLX5_DRIVER_NAME) in log messages.
  */
-#ifndef NDEBUG
+#ifdef RTE_LIBRTE_MLX5_DEBUG
 
 #define PMD_DRV_LOG__(level, type, name, ...) \
        PMD_DRV_LOG___(level, type, name, "%s:%u: %s(): " __VA_ARGS__)
@@ -90,28 +87,30 @@ pmd_drv_log_basename(const char *s)
                __func__, \
                __VA_ARGS__)
 
-#else /* NDEBUG */
+#else /* RTE_LIBRTE_MLX5_DEBUG */
 #define PMD_DRV_LOG__(level, type, name, ...) \
        PMD_DRV_LOG___(level, type, name, __VA_ARGS__)
 #define PMD_DRV_LOG_(level, type, name, s, ...) \
        PMD_DRV_LOG__(level, type, name, s "\n", __VA_ARGS__)
 
-#endif /* NDEBUG */
+#endif /* RTE_LIBRTE_MLX5_DEBUG */
 
 /* claim_zero() does not perform any check when debugging is disabled. */
-#ifndef NDEBUG
+#ifdef RTE_LIBRTE_MLX5_DEBUG
 
 #define DEBUG(...) DRV_LOG(DEBUG, __VA_ARGS__)
-#define claim_zero(...) assert((__VA_ARGS__) == 0)
-#define claim_nonzero(...) assert((__VA_ARGS__) != 0)
+#define MLX5_ASSERT(exp) RTE_VERIFY(exp)
+#define claim_zero(...) MLX5_ASSERT((__VA_ARGS__) == 0)
+#define claim_nonzero(...) MLX5_ASSERT((__VA_ARGS__) != 0)
 
-#else /* NDEBUG */
+#else /* RTE_LIBRTE_MLX5_DEBUG */
 
 #define DEBUG(...) (void)0
+#define MLX5_ASSERT(exp) RTE_ASSERT(exp)
 #define claim_zero(...) (__VA_ARGS__)
 #define claim_nonzero(...) (__VA_ARGS__)
 
-#endif /* NDEBUG */
+#endif /* RTE_LIBRTE_MLX5_DEBUG */
 
 /* Allocate a buffer on the stack and fill it with a printf format string. */
 #define MKSTR(name, ...) \
@@ -139,6 +138,7 @@ enum {
        PCI_DEVICE_ID_MELLANOX_CONNECTX6VF = 0x101c,
        PCI_DEVICE_ID_MELLANOX_CONNECTX6DX = 0x101d,
        PCI_DEVICE_ID_MELLANOX_CONNECTX6DXVF = 0x101e,
+       PCI_DEVICE_ID_MELLANOX_CONNECTX6DXBF = 0xa2d6,
 };
 
 /* Maximum number of simultaneous unicast MAC addresses. */