diff options
Diffstat (limited to 'examples/devinfo.c')
-rw-r--r-- | examples/devinfo.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/examples/devinfo.c b/examples/devinfo.c index c497650..1d0c2db 100644 --- a/examples/devinfo.c +++ b/examples/devinfo.c @@ -364,6 +364,28 @@ static void print_tso_caps(const struct ibv_tso_caps *caps) } } +static void print_rss_caps(const struct ibv_rss_caps *caps) +{ + uint32_t unknown_general_caps = ~(1 << IBV_QPT_RAW_PACKET | + 1 << IBV_QPT_UD); + printf("\trss_caps:\n"); + printf("\t\tmax_rwq_indirection_tables:\t\t\t%u\n", caps->max_rwq_indirection_tables); + printf("\t\tmax_rwq_indirection_table_size:\t\t\t%u\n", caps->max_rwq_indirection_table_size); + printf("\t\trx_hash_function:\t\t\t\t0x%x\n", caps->rx_hash_function); + printf("\t\trx_hash_fields_mask:\t\t\t\t0x%" PRIX64 "\n", caps->rx_hash_fields_mask); + + if (caps->supported_qpts) { + printf("\t\tsupported_qp:\n"); + if (ibv_is_qpt_supported(caps->supported_qpts, IBV_QPT_RAW_PACKET)) + printf("\t\t\t\t\tSUPPORT_RAW_PACKET\n"); + if (ibv_is_qpt_supported(caps->supported_qpts, IBV_QPT_UD)) + printf("\t\t\t\t\tSUPPORT_UD\n"); + if (caps->supported_qpts & unknown_general_caps) + printf("\t\t\t\t\tUnknown flags: 0x%" PRIX32 "\n", + caps->supported_qpts & unknown_general_caps); + } +} + static int print_hca_cap(struct ibv_device *ib_dev, uint8_t ib_port) { struct ibv_context *ctx; @@ -465,6 +487,8 @@ static int print_hca_cap(struct ibv_device *ib_dev, uint8_t ib_port) printf("\tdevice_cap_flags_ex:\t\t0x%" PRIX64 "\n", device_attr.device_cap_flags_ex); print_device_cap_flags_ex(device_attr.device_cap_flags_ex); print_tso_caps(&device_attr.tso_caps); + print_rss_caps(&device_attr.rss_caps); + printf("\tmax_wq_type_rq:\t\t\t%u\n", device_attr.max_wq_type_rq); } for (port = 1; port <= device_attr.orig_attr.phys_port_cnt; ++port) { |