summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/dpdk/device/dpdk.h31
-rw-r--r--src/plugins/dpdk/device/format.c17
2 files changed, 37 insertions, 11 deletions
diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h
index 1f43a484224..d52e96634e2 100644
--- a/src/plugins/dpdk/device/dpdk.h
+++ b/src/plugins/dpdk/device/dpdk.h
@@ -152,6 +152,26 @@ typedef struct
u32 flush_count;
} dpdk_device_hqos_per_hqos_thread_t;
+#define foreach_dpdk_device_flags \
+ _( 0, ADMIN_UP, "admin-up") \
+ _( 1, PROMISC, "promisc") \
+ _( 2, PMD, "pmd") \
+ _( 3, PMD_INIT_FAIL, "pmd-init-fail") \
+ _( 4, MAYBE_MULTISEG, "maybe-multiseg") \
+ _( 5, HAVE_SUBIF, "subif") \
+ _( 6, HQOS, "hqos") \
+ _( 7, BOND_SLAVE, "bond-slave") \
+ _( 8, BOND_SLAVE_UP, "bond-slave-up") \
+ _( 9, TX_OFFLOAD, "tx-offload") \
+ _(10, INTEL_PHDR_CKSUM, "intel-phdr-cksum") \
+
+enum
+{
+#define _(a, b, c) DPDK_DEVICE_FLAG_##b = (1 << a),
+ foreach_dpdk_device_flags
+#undef _
+};
+
typedef struct
{
CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
@@ -174,17 +194,6 @@ typedef struct
i8 cpu_socket;
u16 flags;
-#define DPDK_DEVICE_FLAG_ADMIN_UP (1 << 0)
-#define DPDK_DEVICE_FLAG_PROMISC (1 << 1)
-#define DPDK_DEVICE_FLAG_PMD (1 << 2)
-#define DPDK_DEVICE_FLAG_PMD_INIT_FAIL (1 << 3)
-#define DPDK_DEVICE_FLAG_MAYBE_MULTISEG (1 << 4)
-#define DPDK_DEVICE_FLAG_HAVE_SUBIF (1 << 5)
-#define DPDK_DEVICE_FLAG_HQOS (1 << 6)
-#define DPDK_DEVICE_FLAG_BOND_SLAVE (1 << 7)
-#define DPDK_DEVICE_FLAG_BOND_SLAVE_UP (1 << 8)
-#define DPDK_DEVICE_FLAG_TX_OFFLOAD (1 << 9)
-#define DPDK_DEVICE_FLAG_INTEL_PHDR_CKSUM (1 << 10)
u16 nb_tx_desc;
CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c
index 36f921d598b..d37cc8c0664 100644
--- a/src/plugins/dpdk/device/format.c
+++ b/src/plugins/dpdk/device/format.c
@@ -255,6 +255,21 @@ format_dpdk_device_name (u8 * s, va_list * args)
return ret;
}
+u8 *
+format_dpdk_device_flags (u8 * s, va_list * args)
+{
+ dpdk_device_t *xd = va_arg (*args, dpdk_device_t *);
+ u8 *t = 0;
+
+#define _(a, b, c) if (xd->flags & (1 << a)) \
+t = format (t, "%s%s", t ? " ":"", c);
+ foreach_dpdk_device_flags
+#undef _
+ s = format (s, "%v", t);
+ vec_free (t);
+ return s;
+}
+
static u8 *
format_dpdk_device_type (u8 * s, va_list * args)
{
@@ -463,6 +478,8 @@ format_dpdk_device (u8 * s, va_list * args)
s = format (s, "%U\n%Ucarrier %U",
format_dpdk_device_type, xd->device_index,
format_white_space, indent + 2, format_dpdk_link_status, xd);
+ s = format (s, "%Uflags: %U\n",
+ format_white_space, indent + 2, format_dpdk_device_flags, xd);
rte_eth_dev_info_get (xd->device_index, &di);