diff options
author | Majd Dibbiny <majd@mellanox.com> | 2016-03-15 19:13:02 +0200 |
---|---|---|
committer | Yishai Hadas <yishaih@mellanox.com> | 2016-05-19 11:29:23 +0300 |
commit | 215736f7cdb1e1374e2cf0df9e45186390ed0369 (patch) | |
tree | d1448479914e9674024e1e3d68092e972d294e07 | |
parent | 102b4a1544d444d60b376f44eea71047f09244f1 (diff) | |
download | libibverbs-215736f7cdb1e1374e2cf0df9e45186390ed0369.tar.gz |
Extend devinfo verbosity mode
Extend verbosity mode to print device capability flags in text format.
Signed-off-by: Majd Dibbiny <majd@mellanox.com>
Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
-rw-r--r-- | examples/devinfo.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/examples/devinfo.c b/examples/devinfo.c index a8de982..5da6773 100644 --- a/examples/devinfo.c +++ b/examples/devinfo.c @@ -205,6 +205,86 @@ static const char *link_layer_str(uint8_t link_layer) } } +static void print_device_cap_flags(uint32_t dev_cap_flags) +{ + uint32_t unknown_flags = ~(IBV_DEVICE_RESIZE_MAX_WR | + IBV_DEVICE_BAD_PKEY_CNTR | + IBV_DEVICE_BAD_QKEY_CNTR | + IBV_DEVICE_RAW_MULTI | + IBV_DEVICE_AUTO_PATH_MIG | + IBV_DEVICE_CHANGE_PHY_PORT | + IBV_DEVICE_UD_AV_PORT_ENFORCE | + IBV_DEVICE_CURR_QP_STATE_MOD | + IBV_DEVICE_SHUTDOWN_PORT | + IBV_DEVICE_INIT_TYPE | + IBV_DEVICE_PORT_ACTIVE_EVENT | + IBV_DEVICE_SYS_IMAGE_GUID | + IBV_DEVICE_RC_RNR_NAK_GEN | + IBV_DEVICE_SRQ_RESIZE | + IBV_DEVICE_N_NOTIFY_CQ | + IBV_DEVICE_MEM_WINDOW | + IBV_DEVICE_UD_IP_CSUM | + IBV_DEVICE_XRC | + IBV_DEVICE_MEM_MGT_EXTENSIONS | + IBV_DEVICE_MEM_WINDOW_TYPE_2A | + IBV_DEVICE_MEM_WINDOW_TYPE_2B | + IBV_DEVICE_RC_IP_CSUM | + IBV_DEVICE_RAW_IP_CSUM | + IBV_DEVICE_MANAGED_FLOW_STEERING); + + if (dev_cap_flags & IBV_DEVICE_RESIZE_MAX_WR) + printf("\t\t\t\t\tRESIZE_MAX_WR\n"); + if (dev_cap_flags & IBV_DEVICE_BAD_PKEY_CNTR) + printf("\t\t\t\t\tBAD_PKEY_CNTR\n"); + if (dev_cap_flags & IBV_DEVICE_BAD_QKEY_CNTR) + printf("\t\t\t\t\tBAD_QKEY_CNTR\n"); + if (dev_cap_flags & IBV_DEVICE_RAW_MULTI) + printf("\t\t\t\t\tRAW_MULTI\n"); + if (dev_cap_flags & IBV_DEVICE_AUTO_PATH_MIG) + printf("\t\t\t\t\tAUTO_PATH_MIG\n"); + if (dev_cap_flags & IBV_DEVICE_CHANGE_PHY_PORT) + printf("\t\t\t\t\tCHANGE_PHY_PORT\n"); + if (dev_cap_flags & IBV_DEVICE_UD_AV_PORT_ENFORCE) + printf("\t\t\t\t\tUD_AV_PORT_ENFORCE\n"); + if (dev_cap_flags & IBV_DEVICE_CURR_QP_STATE_MOD) + printf("\t\t\t\t\tCURR_QP_STATE_MOD\n"); + if (dev_cap_flags & IBV_DEVICE_SHUTDOWN_PORT) + printf("\t\t\t\t\tSHUTDOWN_PORT\n"); + if (dev_cap_flags & IBV_DEVICE_INIT_TYPE) + printf("\t\t\t\t\tINIT_TYPE\n"); + if (dev_cap_flags & IBV_DEVICE_PORT_ACTIVE_EVENT) + printf("\t\t\t\t\tPORT_ACTIVE_EVENT\n"); + if (dev_cap_flags & IBV_DEVICE_SYS_IMAGE_GUID) + printf("\t\t\t\t\tSYS_IMAGE_GUID\n"); + if (dev_cap_flags & IBV_DEVICE_RC_RNR_NAK_GEN) + printf("\t\t\t\t\tRC_RNR_NAK_GEN\n"); + if (dev_cap_flags & IBV_DEVICE_SRQ_RESIZE) + printf("\t\t\t\t\tSRQ_RESIZE\n"); + if (dev_cap_flags & IBV_DEVICE_N_NOTIFY_CQ) + printf("\t\t\t\t\tN_NOTIFY_CQ\n"); + if (dev_cap_flags & IBV_DEVICE_MEM_WINDOW) + printf("\t\t\t\t\tMEM_WINDOW\n"); + if (dev_cap_flags & IBV_DEVICE_UD_IP_CSUM) + printf("\t\t\t\t\tUD_IP_CSUM\n"); + if (dev_cap_flags & IBV_DEVICE_XRC) + printf("\t\t\t\t\tXRC\n"); + if (dev_cap_flags & IBV_DEVICE_MEM_MGT_EXTENSIONS) + printf("\t\t\t\t\tMEM_MGT_EXTENSIONS\n"); + if (dev_cap_flags & IBV_DEVICE_MEM_WINDOW_TYPE_2A) + printf("\t\t\t\t\tMEM_WINDOW_TYPE_2A\n"); + if (dev_cap_flags & IBV_DEVICE_MEM_WINDOW_TYPE_2B) + printf("\t\t\t\t\tMEM_WINDOW_TYPE_2B\n"); + if (dev_cap_flags & IBV_DEVICE_RC_IP_CSUM) + printf("\t\t\t\t\tRC_IP_CSUM\n"); + if (dev_cap_flags & IBV_DEVICE_RAW_IP_CSUM) + printf("\t\t\t\t\tRAW_IP_CSUM\n"); + if (dev_cap_flags & IBV_DEVICE_MANAGED_FLOW_STEERING) + printf("\t\t\t\t\tMANAGED_FLOW_STEERING\n"); + if (dev_cap_flags & unknown_flags) + printf("\t\t\t\t\tUnknown flags: 0x%" PRIX32 "\n", + dev_cap_flags & unknown_flags); +} + void print_odp_trans_caps(uint32_t trans) { uint32_t unknown_transport_caps = ~(IBV_ODP_SUPPORT_SEND | @@ -304,6 +384,7 @@ static int print_hca_cap(struct ibv_device *ib_dev, uint8_t ib_port) printf("\tmax_qp:\t\t\t\t%d\n", device_attr.orig_attr.max_qp); printf("\tmax_qp_wr:\t\t\t%d\n", device_attr.orig_attr.max_qp_wr); printf("\tdevice_cap_flags:\t\t0x%08x\n", device_attr.orig_attr.device_cap_flags); + print_device_cap_flags(device_attr.orig_attr.device_cap_flags); printf("\tmax_sge:\t\t\t%d\n", device_attr.orig_attr.max_sge); printf("\tmax_sge_rd:\t\t\t%d\n", device_attr.orig_attr.max_sge_rd); printf("\tmax_cq:\t\t\t\t%d\n", device_attr.orig_attr.max_cq); |