aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMajd Dibbiny <majd@mellanox.com>2016-03-15 19:13:02 +0200
committerYishai Hadas <yishaih@mellanox.com>2016-05-19 11:29:23 +0300
commit215736f7cdb1e1374e2cf0df9e45186390ed0369 (patch)
treed1448479914e9674024e1e3d68092e972d294e07
parent102b4a1544d444d60b376f44eea71047f09244f1 (diff)
downloadlibibverbs-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.c81
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);