diff --git a/0000-use-e-para-to-make-transferred-meaning-take-effect.patch b/0000-use-e-para-to-make-transferred-meaning-take-effect.patch deleted file mode 100644 index d04c65cd3d17dee7f7856ef9a0f1bd2fd3990e92..0000000000000000000000000000000000000000 --- a/0000-use-e-para-to-make-transferred-meaning-take-effect.patch +++ /dev/null @@ -1,95 +0,0 @@ -From cfac7d4cadbc93f20c0b4e6badfcabb9f55f0ad5 Mon Sep 17 00:00:00 2001 -From: seuzw <930zhaowei@163.com> -Date: Sun, 26 Sep 2021 15:38:49 +0800 -Subject: [PATCH] use -e para to make transferred meaning take effect - ---- - infiniband-diags/scripts/ibcheckerrs.in | 2 +- - infiniband-diags/scripts/ibchecknode.in | 2 +- - infiniband-diags/scripts/ibcheckport.in | 2 +- - infiniband-diags/scripts/ibcheckportstate.in | 2 +- - infiniband-diags/scripts/ibcheckportwidth.in | 2 +- - infiniband-diags/scripts/ibdatacounts.in | 2 +- - 6 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/infiniband-diags/scripts/ibcheckerrs.in b/infiniband-diags/scripts/ibcheckerrs.in -index 1edd1eb..4902f55 100644 ---- a/infiniband-diags/scripts/ibcheckerrs.in -+++ b/infiniband-diags/scripts/ibcheckerrs.in -@@ -140,7 +140,7 @@ else - fi - - if [ "$suppress_deprecated" = "no" ]; then --echo "*** WARNING ***: this command is deprecated; Please use \"ibqueryerrors\"\n\n" 1>&2 -+echo -e "*** WARNING ***: this command is deprecated; Please use \"ibqueryerrors\"\n\n" 1>&2 - fi - - if [ "$guid_addr" ]; then -diff --git a/infiniband-diags/scripts/ibchecknode.in b/infiniband-diags/scripts/ibchecknode.in -index d70d5c8..9555513 100644 ---- a/infiniband-diags/scripts/ibchecknode.in -+++ b/infiniband-diags/scripts/ibchecknode.in -@@ -75,7 +75,7 @@ if [ -z "$1" ]; then - fi - - if [ "$suppress_deprecated" = "no" ]; then --echo "*** WARNING ***: this command is deprecated; Please use \"smpquery nodeinfo\"\n\n" 1>&2 -+echo -e "*** WARNING ***: this command is deprecated; Please use \"smpquery nodeinfo\"\n\n" 1>&2 - fi - - if [ "$guid_addr" ]; then -diff --git a/infiniband-diags/scripts/ibcheckport.in b/infiniband-diags/scripts/ibcheckport.in -index 16a8c24..a504c97 100644 ---- a/infiniband-diags/scripts/ibcheckport.in -+++ b/infiniband-diags/scripts/ibcheckport.in -@@ -77,7 +77,7 @@ fi - portnum=$2 - - if [ "$suppress_deprecated" = "no" ]; then --echo "*** WARNING ***: this command is deprecated\n\n" 1>&2 -+echo -e "*** WARNING ***: this command is deprecated\n\n" 1>&2 - fi - - if [ "$guid_addr" ]; then -diff --git a/infiniband-diags/scripts/ibcheckportstate.in b/infiniband-diags/scripts/ibcheckportstate.in -index c5fb948..5482075 100644 ---- a/infiniband-diags/scripts/ibcheckportstate.in -+++ b/infiniband-diags/scripts/ibcheckportstate.in -@@ -77,7 +77,7 @@ fi - portnum=$2 - - if [ "$suppress_deprecated" = "no" ]; then --echo "*** WARNING ***: this command is deprecated\n\n" 1>&2 -+echo -e "*** WARNING ***: this command is deprecated\n\n" 1>&2 - fi - - if [ "$guid_addr" ]; then -diff --git a/infiniband-diags/scripts/ibcheckportwidth.in b/infiniband-diags/scripts/ibcheckportwidth.in -index 9cfca11..eb79944 100644 ---- a/infiniband-diags/scripts/ibcheckportwidth.in -+++ b/infiniband-diags/scripts/ibcheckportwidth.in -@@ -77,7 +77,7 @@ fi - portnum=$2 - - if [ "$suppress_deprecated" = "no" ]; then --echo "*** WARNING ***: this command is deprecated\n\n" 1>&2 -+echo -e "*** WARNING ***: this command is deprecated\n\n" 1>&2 - fi - - if [ "$guid_addr" ]; then -diff --git a/infiniband-diags/scripts/ibdatacounts.in b/infiniband-diags/scripts/ibdatacounts.in -index ac5f8c4..772b47f 100644 ---- a/infiniband-diags/scripts/ibdatacounts.in -+++ b/infiniband-diags/scripts/ibdatacounts.in -@@ -113,7 +113,7 @@ fi - nodename=`$IBPATH/smpquery $ca_info nodedesc $lid | sed -e "s/^Node Description:\.*\(.*\)/\1/"` - - if [ "$suppress_deprecated" = "no" ]; then --echo "*** WARNING ***: this command is deprecated; Please use \"ibqueryerrors --counters\"\n\n" 1>&2 -+echo -e "*** WARNING ***: this command is deprecated; Please use \"ibqueryerrors --counters\"\n\n" 1>&2 - fi - - text="`eval $IBPATH/perfquery $ca_info $lid $portnum`" --- -2.27.0 - diff --git a/0001-libhns-Bugfix-for-calculation-of-extended-sge.patch b/0001-libhns-Bugfix-for-calculation-of-extended-sge.patch deleted file mode 100644 index ae707dd7510039b3503412cb121097192587ea37..0000000000000000000000000000000000000000 --- a/0001-libhns-Bugfix-for-calculation-of-extended-sge.patch +++ /dev/null @@ -1,37 +0,0 @@ -From d72ae701214aa8318604192ac48c31c920bba593 Mon Sep 17 00:00:00 2001 -From: Yangyang Li -Date: Thu, 23 Dec 2021 14:52:13 +0800 -Subject: [PATCH] libhns: Bugfix for calculation of extended sge - -Page alignment is required when setting the number of extended sge -according to the hardware's achivement. If the space of needed extended sge -is greater than one page, the roundup_pow_of_two() can ensure that. But if -the needed extended sge isn't 0 and can not be filled in a whole page, the -driver should align it specifically. - -Signed-off-by: Guofeng Yue ---- - providers/hns/hns_roce_u_verbs.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c -index abff0921..30ab072a 100644 ---- a/providers/hns/hns_roce_u_verbs.c -+++ b/providers/hns/hns_roce_u_verbs.c -@@ -939,7 +939,12 @@ static void set_extend_sge_param(struct hns_roce_device *hr_dev, - } - - qp->ex_sge.sge_shift = HNS_ROCE_SGE_SHIFT; -- qp->ex_sge.sge_cnt = cnt; -+ -+ /* If the number of extended sge is not zero, they MUST use the -+ * space of HNS_HW_PAGE_SIZE at least. -+ */ -+ qp->ex_sge.sge_cnt = cnt ? -+ max(cnt, HNS_HW_PAGE_SIZE / HNS_ROCE_SGE_SIZE) : 0; - } - - static void hns_roce_set_qp_params(struct ibv_qp_init_attr_ex *attr, --- -2.33.0 - diff --git a/0001-libhns-Use-a-constant-instead-of-sizeof-operation.patch b/0001-libhns-Use-a-constant-instead-of-sizeof-operation.patch new file mode 100644 index 0000000000000000000000000000000000000000..1c34c3be5f3896809cbe03a4e05c9fb4318db78e --- /dev/null +++ b/0001-libhns-Use-a-constant-instead-of-sizeof-operation.patch @@ -0,0 +1,45 @@ +From 0de1678211e710c2cd33e3aea98b1271cae9bd98 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Tue, 20 Sep 2022 11:47:45 +0800 +Subject: [PATCH v4 01/10] libhns: Use a constant instead of sizeof operation + +The sge size is known to be constant, so it's unnecessary to use sizeof to +calculate. + +Signed-off-by: Luoyouming +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u_hw_v2.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 0169250..d9ea18e 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -847,13 +847,12 @@ static int fill_ext_sge_inl_data(struct hns_roce_qp *qp, + uint32_t num_buf, + enum hns_roce_wr_buf_type buf_type) + { +- unsigned int sge_sz = sizeof(struct hns_roce_v2_wqe_data_seg); + unsigned int sge_mask = qp->ex_sge.sge_cnt - 1; + void *dst_addr, *src_addr, *tail_bound_addr; + uint32_t src_len, tail_len; + int i; + +- if (sge_info->total_len > qp->sq.max_gs * sge_sz) ++ if (sge_info->total_len > qp->sq.max_gs * HNS_ROCE_SGE_SIZE) + return EINVAL; + + dst_addr = get_send_sge_ex(qp, sge_info->start_idx & sge_mask); +@@ -880,7 +879,7 @@ static int fill_ext_sge_inl_data(struct hns_roce_qp *qp, + } + } + +- sge_info->valid_num = DIV_ROUND_UP(sge_info->total_len, sge_sz); ++ sge_info->valid_num = DIV_ROUND_UP(sge_info->total_len, HNS_ROCE_SGE_SIZE); + sge_info->start_idx += sge_info->valid_num; + + return 0; +-- +2.30.0 + diff --git a/0002-libhns-Fix-ext_sge-num-error-when-post-send.patch b/0002-libhns-Fix-ext_sge-num-error-when-post-send.patch new file mode 100644 index 0000000000000000000000000000000000000000..a7ca2c8af2955078c527ef76ef7e2380f754a431 --- /dev/null +++ b/0002-libhns-Fix-ext_sge-num-error-when-post-send.patch @@ -0,0 +1,53 @@ +From a57d5dfbc2701b9d0c47eb70a1bb82b16170a7d2 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Tue, 20 Sep 2022 11:53:18 +0800 +Subject: [PATCH v4 02/10] libhns: Fix ext_sge num error when post send + +The max_gs is the sum of extended sge and standard sge. In function +fill_ext_sge_inl_data, max_gs does not subtract the number of extended +sges, but is directly used to calculate the size of extended sges. + +Fixes:b7814b7b9715("libhns: Support inline data in extented sge space for RC") + +Signed-off-by: Luoyouming +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u_hw_v2.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index d9ea18e..bb4298f 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -841,6 +841,14 @@ static void get_src_buf_info(void **src_addr, uint32_t *src_len, + } + } + ++static unsigned int get_std_sge_num(struct hns_roce_qp *qp) ++{ ++ if (qp->verbs_qp.qp.qp_type == IBV_QPT_UD) ++ return 0; ++ ++ return HNS_ROCE_SGE_IN_WQE; ++} ++ + static int fill_ext_sge_inl_data(struct hns_roce_qp *qp, + struct hns_roce_sge_info *sge_info, + const void *buf_list, +@@ -850,9 +858,12 @@ static int fill_ext_sge_inl_data(struct hns_roce_qp *qp, + unsigned int sge_mask = qp->ex_sge.sge_cnt - 1; + void *dst_addr, *src_addr, *tail_bound_addr; + uint32_t src_len, tail_len; ++ unsigned int std_sge_num; + int i; + +- if (sge_info->total_len > qp->sq.max_gs * HNS_ROCE_SGE_SIZE) ++ std_sge_num = get_std_sge_num(qp); ++ if (sge_info->total_len > ++ (qp->sq.max_gs - std_sge_num) * HNS_ROCE_SGE_SIZE) + return EINVAL; + + dst_addr = get_send_sge_ex(qp, sge_info->start_idx & sge_mask); +-- +2.30.0 + diff --git a/0003-Update-kernel-headers.patch b/0003-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..616b58c528661a028c35063145a36822f1dddee2 --- /dev/null +++ b/0003-Update-kernel-headers.patch @@ -0,0 +1,46 @@ +From f20816984da80e2fe9a82b3b330f85150763243e Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Mon, 26 Sep 2022 11:14:05 +0800 +Subject: [PATCH v4 03/10] Update kernel headers + +To commit ?? ("RDMA/hns: Fix the problem of sge nums"). + +Signed-off-by: Luoyouming +--- + kernel-headers/rdma/hns-abi.h | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index f6fde06..fc83dfb 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -85,11 +85,26 @@ struct hns_roce_ib_create_qp_resp { + __aligned_u64 dwqe_mmap_key; + }; + ++enum { ++ HNS_ROCE_EXSGE_FLAGS = 1 << 0, ++}; ++ ++enum { ++ HNS_ROCE_RSP_EXSGE_FLAGS = 1 << 0, ++}; ++ + struct hns_roce_ib_alloc_ucontext_resp { + __u32 qp_tab_size; + __u32 cqe_size; + __u32 srq_tab_size; + __u32 reserved; ++ __u32 config; ++ __u32 max_inline_data; ++}; ++ ++struct hns_roce_ib_alloc_ucontext { ++ __u32 config; ++ __u32 reserved; + }; + + struct hns_roce_ib_alloc_pd_resp { +-- +2.30.0 + diff --git a/0004-libhns-Fix-the-problem-of-sge-nums.patch b/0004-libhns-Fix-the-problem-of-sge-nums.patch new file mode 100644 index 0000000000000000000000000000000000000000..ada5774864aaafcc117ca10bddabf84ccb59dd68 --- /dev/null +++ b/0004-libhns-Fix-the-problem-of-sge-nums.patch @@ -0,0 +1,254 @@ +From 448d82b2c62f09f1dd9c8045d34623dedef1c111 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Fri, 19 Nov 2021 20:21:21 +0800 +Subject: [PATCH v4 04/10] libhns: Fix the problem of sge nums + +Currently, the driver only uses max_send_sge to initialize sge num +when creating_qp. So, in the sq inline scenario, the driver may not +has enough sge to send data. For example, if max_send_sge is 16 and +max_inline_data is 1024, the driver needs 1024/16=64 sge to send data. +Therefore, the calculation method of sge num is modified to take the +maximum value of max_send_sge and max_inline_data/16 to solve this +problem. + +Fixes:11c81d0e3a98("libhns: Refactor process of setting extended sge") +Fixes:b7814b7b9715("libhns: Support inline data in extented sge space for RC") + +Signed-off-by: Luoyouming +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.c | 9 +++- + providers/hns/hns_roce_u.h | 3 ++ + providers/hns/hns_roce_u_abi.h | 2 +- + providers/hns/hns_roce_u_hw_v2.c | 13 +---- + providers/hns/hns_roce_u_verbs.c | 84 ++++++++++++++++++++++++-------- + 5 files changed, 77 insertions(+), 34 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index a46ceb9..1bd5bb1 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -103,9 +103,9 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + { + struct hns_roce_device *hr_dev = to_hr_dev(ibdev); + struct hns_roce_alloc_ucontext_resp resp = {}; ++ struct hns_roce_alloc_ucontext cmd = {}; + struct ibv_device_attr dev_attrs; + struct hns_roce_context *context; +- struct ibv_get_context cmd; + int i; + + context = verbs_init_and_alloc_context(ibdev, cmd_fd, context, ibv_ctx, +@@ -113,7 +113,8 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + if (!context) + return NULL; + +- if (ibv_cmd_get_context(&context->ibv_ctx, &cmd, sizeof(cmd), ++ cmd.config |= HNS_ROCE_EXSGE_FLAGS; ++ if (ibv_cmd_get_context(&context->ibv_ctx, &cmd.ibv_cmd, sizeof(cmd), + &resp.ibv_resp, sizeof(resp))) + goto err_free; + +@@ -124,6 +125,10 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + else + context->cqe_size = HNS_ROCE_V3_CQE_SIZE; + ++ context->config = resp.config; ++ if (resp.config & HNS_ROCE_RSP_EXSGE_FLAGS) ++ context->max_inline_data = resp.max_inline_data; ++ + context->qp_table_shift = calc_table_shift(resp.qp_tab_size, + HNS_ROCE_QP_TABLE_BITS); + context->qp_table_mask = (1 << context->qp_table_shift) - 1; +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 5d90634..5388f9c 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -213,6 +213,8 @@ struct hns_roce_context { + unsigned int max_srq_sge; + int max_cqe; + unsigned int cqe_size; ++ uint32_t config; ++ unsigned int max_inline_data; + }; + + struct hns_roce_pd { +@@ -267,6 +269,7 @@ struct hns_roce_wq { + unsigned int head; + unsigned int tail; + unsigned int max_gs; ++ unsigned int ext_sge_cnt; + unsigned int rsv_sge; + unsigned int wqe_shift; + unsigned int shift; /* wq size is 2^shift */ +diff --git a/providers/hns/hns_roce_u_abi.h b/providers/hns/hns_roce_u_abi.h +index 333f977..2753d30 100644 +--- a/providers/hns/hns_roce_u_abi.h ++++ b/providers/hns/hns_roce_u_abi.h +@@ -47,7 +47,7 @@ DECLARE_DRV_CMD(hns_roce_create_cq_ex, IB_USER_VERBS_EX_CMD_CREATE_CQ, + hns_roce_ib_create_cq, hns_roce_ib_create_cq_resp); + + DECLARE_DRV_CMD(hns_roce_alloc_ucontext, IB_USER_VERBS_CMD_GET_CONTEXT, +- empty, hns_roce_ib_alloc_ucontext_resp); ++ hns_roce_ib_alloc_ucontext, hns_roce_ib_alloc_ucontext_resp); + + DECLARE_DRV_CMD(hns_roce_create_qp, IB_USER_VERBS_CMD_CREATE_QP, + hns_roce_ib_create_qp, hns_roce_ib_create_qp_resp); +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index bb4298f..ebe68bc 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -841,14 +841,6 @@ static void get_src_buf_info(void **src_addr, uint32_t *src_len, + } + } + +-static unsigned int get_std_sge_num(struct hns_roce_qp *qp) +-{ +- if (qp->verbs_qp.qp.qp_type == IBV_QPT_UD) +- return 0; +- +- return HNS_ROCE_SGE_IN_WQE; +-} +- + static int fill_ext_sge_inl_data(struct hns_roce_qp *qp, + struct hns_roce_sge_info *sge_info, + const void *buf_list, +@@ -858,12 +850,9 @@ static int fill_ext_sge_inl_data(struct hns_roce_qp *qp, + unsigned int sge_mask = qp->ex_sge.sge_cnt - 1; + void *dst_addr, *src_addr, *tail_bound_addr; + uint32_t src_len, tail_len; +- unsigned int std_sge_num; + int i; + +- std_sge_num = get_std_sge_num(qp); +- if (sge_info->total_len > +- (qp->sq.max_gs - std_sge_num) * HNS_ROCE_SGE_SIZE) ++ if (sge_info->total_len > qp->sq.ext_sge_cnt * HNS_ROCE_SGE_SIZE) + return EINVAL; + + dst_addr = get_send_sge_ex(qp, sge_info->start_idx & sge_mask); +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index ba7f2ae..851b145 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -978,41 +978,88 @@ err_alloc: + return -ENOMEM; + } + +-static unsigned int get_wqe_ext_sge_cnt(struct hns_roce_qp *qp) ++/** ++ * Calculated sge num according to attr's max_send_sge ++ */ ++static unsigned int get_sge_num_from_max_send_sge(bool is_ud, ++ uint32_t max_send_sge) + { +- if (qp->verbs_qp.qp.qp_type == IBV_QPT_UD) +- return qp->sq.max_gs; ++ unsigned int std_sge_num; ++ unsigned int min_sge; + +- if (qp->sq.max_gs > HNS_ROCE_SGE_IN_WQE) +- return qp->sq.max_gs - HNS_ROCE_SGE_IN_WQE; ++ std_sge_num = is_ud ? 0 : HNS_ROCE_SGE_IN_WQE; ++ min_sge = is_ud ? 1 : 0; ++ return max_send_sge > std_sge_num ? (max_send_sge - std_sge_num) : ++ min_sge; ++} + +- return 0; ++/** ++ * Calculated sge num according to attr's max_inline_data ++ */ ++static unsigned int get_sge_num_from_max_inl_data(bool is_ud, ++ uint32_t max_inline_data) ++{ ++ unsigned int inline_sge = 0; ++ ++ inline_sge = max_inline_data / HNS_ROCE_SGE_SIZE; ++ /* ++ * if max_inline_data less than ++ * HNS_ROCE_SGE_IN_WQE * HNS_ROCE_SGE_SIZE, ++ * In addition to ud's mode, no need to extend sge. ++ */ ++ if (!is_ud && (inline_sge <= HNS_ROCE_SGE_IN_WQE)) ++ inline_sge = 0; ++ ++ return inline_sge; + } + +-static void set_ext_sge_param(struct hns_roce_device *hr_dev, ++static void set_ext_sge_param(struct hns_roce_context *ctx, + struct ibv_qp_init_attr_ex *attr, + struct hns_roce_qp *qp, unsigned int wr_cnt) + { ++ bool is_ud = (qp->verbs_qp.qp.qp_type == IBV_QPT_UD); ++ unsigned int ext_wqe_sge_cnt; ++ unsigned int inline_ext_sge; + unsigned int total_sge_cnt; +- unsigned int wqe_sge_cnt; ++ unsigned int std_sge_num; + + qp->ex_sge.sge_shift = HNS_ROCE_SGE_SHIFT; +- +- qp->sq.max_gs = attr->cap.max_send_sge; +- +- wqe_sge_cnt = get_wqe_ext_sge_cnt(qp); ++ std_sge_num = is_ud ? 0 : HNS_ROCE_SGE_IN_WQE; ++ ext_wqe_sge_cnt = get_sge_num_from_max_send_sge(is_ud, ++ attr->cap.max_send_sge); ++ ++ if (ctx->config & HNS_ROCE_RSP_EXSGE_FLAGS) { ++ attr->cap.max_inline_data = min_t(uint32_t, roundup_pow_of_two( ++ attr->cap.max_inline_data), ++ ctx->max_inline_data); ++ ++ inline_ext_sge = max(ext_wqe_sge_cnt, ++ get_sge_num_from_max_inl_data(is_ud, ++ attr->cap.max_inline_data)); ++ qp->sq.ext_sge_cnt = inline_ext_sge ? ++ roundup_pow_of_two(inline_ext_sge) : 0; ++ qp->sq.max_gs = min((qp->sq.ext_sge_cnt + std_sge_num), ++ ctx->max_sge); ++ ++ ext_wqe_sge_cnt = qp->sq.ext_sge_cnt; ++ } else { ++ qp->sq.max_gs = max(1U, attr->cap.max_send_sge); ++ qp->sq.max_gs = min(qp->sq.max_gs, ctx->max_sge); ++ qp->sq.ext_sge_cnt = qp->sq.max_gs; ++ } + + /* If the number of extended sge is not zero, they MUST use the + * space of HNS_HW_PAGE_SIZE at least. + */ +- if (wqe_sge_cnt) { +- total_sge_cnt = roundup_pow_of_two(wr_cnt * wqe_sge_cnt); +- qp->ex_sge.sge_cnt = +- max(total_sge_cnt, +- (unsigned int)HNS_HW_PAGE_SIZE / HNS_ROCE_SGE_SIZE); ++ if (ext_wqe_sge_cnt) { ++ total_sge_cnt = roundup_pow_of_two(wr_cnt * ext_wqe_sge_cnt); ++ qp->ex_sge.sge_cnt = max(total_sge_cnt, ++ (unsigned int)HNS_HW_PAGE_SIZE / ++ HNS_ROCE_SGE_SIZE); + } + } + ++ + static void hns_roce_set_qp_params(struct ibv_qp_init_attr_ex *attr, + struct hns_roce_qp *qp, + struct hns_roce_context *ctx) +@@ -1044,10 +1091,9 @@ static void hns_roce_set_qp_params(struct ibv_qp_init_attr_ex *attr, + qp->sq.wqe_cnt = cnt; + qp->sq.shift = hr_ilog32(cnt); + +- set_ext_sge_param(hr_dev, attr, qp, cnt); ++ set_ext_sge_param(ctx, attr, qp, cnt); + + qp->sq.max_post = min(ctx->max_qp_wr, cnt); +- qp->sq.max_gs = min(ctx->max_sge, qp->sq.max_gs); + + qp->sq_signal_bits = attr->sq_sig_all ? 0 : 1; + +-- +2.30.0 + diff --git a/0005-Update-kernel-headers.patch b/0005-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..7d68e63af12aceaee23f6a5956408394dd696a64 --- /dev/null +++ b/0005-Update-kernel-headers.patch @@ -0,0 +1,33 @@ +From 542b54285dbaebbe0b5eb3279134b02484d7329d Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Mon, 10 Oct 2022 21:21:55 +0800 +Subject: [PATCH v4 05/10] Update kernel headers + +To commit ?? ("RDMA/hns: Remove enable rq inline in kernel and add +compatibility handling"). + +Signed-off-by: Luoyouming +--- + kernel-headers/rdma/hns-abi.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index fc83dfb..c70465d 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -87,10 +87,12 @@ struct hns_roce_ib_create_qp_resp { + + enum { + HNS_ROCE_EXSGE_FLAGS = 1 << 0, ++ HNS_ROCE_RQ_INLINE_FLAGS = 1 << 1, + }; + + enum { + HNS_ROCE_RSP_EXSGE_FLAGS = 1 << 0, ++ HNS_ROCE_RSP_RQ_INLINE_FLAGS = 1 << 1, + }; + + struct hns_roce_ib_alloc_ucontext_resp { +-- +2.30.0 + diff --git a/0006-libhns-Add-compatibility-handling-for-rq-inline.patch b/0006-libhns-Add-compatibility-handling-for-rq-inline.patch new file mode 100644 index 0000000000000000000000000000000000000000..9854b872a9ec05c9f8aa145aae26e9ecac758aa4 --- /dev/null +++ b/0006-libhns-Add-compatibility-handling-for-rq-inline.patch @@ -0,0 +1,46 @@ +From 996bca51e2063dc790286cbc894e2c438f499441 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Mon, 10 Oct 2022 21:49:35 +0800 +Subject: [PATCH v4 06/10] libhns: Add compatibility handling for rq inline + +Add compatibility processing between different user space +and kernel space. + +Signed-off-by: Luoyouming +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.c | 2 +- + providers/hns/hns_roce_u_verbs.c | 4 +++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 1bd5bb1..6c9aefa 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -113,7 +113,7 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + if (!context) + return NULL; + +- cmd.config |= HNS_ROCE_EXSGE_FLAGS; ++ cmd.config |= HNS_ROCE_EXSGE_FLAGS | HNS_ROCE_RQ_INLINE_FLAGS; + if (ibv_cmd_get_context(&context->ibv_ctx, &cmd.ibv_cmd, sizeof(cmd), + &resp.ibv_resp, sizeof(resp))) + goto err_free; +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index 851b145..3e9a306 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -1079,7 +1079,9 @@ static void hns_roce_set_qp_params(struct ibv_qp_init_attr_ex *attr, + cnt = roundup_pow_of_two(attr->cap.max_recv_wr); + qp->rq.wqe_cnt = cnt; + qp->rq.shift = hr_ilog32(cnt); +- qp->rq_rinl_buf.wqe_cnt = cnt; ++ qp->rq_rinl_buf.wqe_cnt = 0; ++ if (ctx->config & HNS_ROCE_RSP_RQ_INLINE_FLAGS) ++ qp->rq_rinl_buf.wqe_cnt = cnt; + + attr->cap.max_recv_wr = qp->rq.wqe_cnt; + attr->cap.max_recv_sge = qp->rq.max_gs; +-- +2.30.0 + diff --git a/0007-libhns-Refactor-rq-inline.patch b/0007-libhns-Refactor-rq-inline.patch new file mode 100644 index 0000000000000000000000000000000000000000..00de21ff263d3017a452b9aae4482afa47e401ae --- /dev/null +++ b/0007-libhns-Refactor-rq-inline.patch @@ -0,0 +1,301 @@ +From 9e5f5d39757a5479a1a4e1170978d2e09acb995b Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Fri, 9 Sep 2022 17:42:38 +0800 +Subject: [PATCH v4 07/10] libhns: Refactor rq inline + +The ibv_sge struct is enough, there is no need to customize the +hns_roce_rinl_sge struct. Refactored structures and functions +for reuse in cqe inline (rq, srq scenarios). + +Signed-off-by: Luoyouming +--- + providers/hns/hns_roce_u.h | 7 +-- + providers/hns/hns_roce_u_hw_v2.c | 103 +++++++++++++++---------------- + providers/hns/hns_roce_u_verbs.c | 46 +++++++------- + 3 files changed, 75 insertions(+), 81 deletions(-) + +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 5388f9c..57ebe55 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -290,13 +290,8 @@ struct hns_roce_sge_ex { + unsigned int sge_shift; + }; + +-struct hns_roce_rinl_sge { +- void *addr; +- unsigned int len; +-}; +- + struct hns_roce_rinl_wqe { +- struct hns_roce_rinl_sge *sg_list; ++ struct ibv_sge *sg_list; + unsigned int sge_cnt; + }; + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index ebe68bc..73acc9e 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + #include "hns_roce_u.h" + #include "hns_roce_u_db.h" + #include "hns_roce_u_hw_v2.h" +@@ -417,46 +418,42 @@ static void get_opcode_for_resp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, + wc->opcode = wc_rcv_op_map[opcode]; + } + +-static int handle_recv_inl_wqe(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, +- struct hns_roce_qp **cur_qp, uint32_t opcode) ++static void handle_recv_inl_data(struct hns_roce_v2_cqe *cqe, ++ struct hns_roce_rinl_buf *rinl_buf, ++ uint32_t wr_cnt, uint8_t *buf) + { +- if (((*cur_qp)->verbs_qp.qp.qp_type == IBV_QPT_RC) && +- (opcode == HNS_ROCE_RECV_OP_SEND || +- opcode == HNS_ROCE_RECV_OP_SEND_WITH_IMM || +- opcode == HNS_ROCE_RECV_OP_SEND_WITH_INV) && +- hr_reg_read(cqe, CQE_RQ_INLINE)) { +- struct hns_roce_rinl_sge *sge_list; +- uint32_t wr_num, wr_cnt, sge_num, data_len; +- uint8_t *wqe_buf; +- uint32_t sge_cnt, size; ++ struct ibv_sge *sge_list; ++ uint32_t sge_num, data_len; ++ uint32_t sge_cnt, size; + +- wr_num = hr_reg_read(cqe, CQE_WQE_IDX); +- wr_cnt = wr_num & ((*cur_qp)->rq.wqe_cnt - 1); ++ sge_list = rinl_buf->wqe_list[wr_cnt].sg_list; ++ sge_num = rinl_buf->wqe_list[wr_cnt].sge_cnt; + +- sge_list = (*cur_qp)->rq_rinl_buf.wqe_list[wr_cnt].sg_list; +- sge_num = (*cur_qp)->rq_rinl_buf.wqe_list[wr_cnt].sge_cnt; +- wqe_buf = (uint8_t *)get_recv_wqe_v2(*cur_qp, wr_cnt); ++ data_len = le32toh(cqe->byte_cnt); + +- data_len = wc->byte_len; ++ for (sge_cnt = 0; (sge_cnt < sge_num) && (data_len); sge_cnt++) { ++ size = min(sge_list[sge_cnt].length, data_len); + +- for (sge_cnt = 0; (sge_cnt < sge_num) && (data_len); +- sge_cnt++) { +- size = sge_list[sge_cnt].len < data_len ? +- sge_list[sge_cnt].len : data_len; ++ memcpy((void *)(uintptr_t)sge_list[sge_cnt].addr, (void *)buf, size); ++ data_len -= size; ++ buf += size; ++ } + +- memcpy((void *)sge_list[sge_cnt].addr, +- (void *)wqe_buf, size); +- data_len -= size; +- wqe_buf += size; +- } ++ if (data_len) ++ hr_reg_write(cqe, CQE_STATUS, HNS_ROCE_V2_CQE_LOCAL_LENGTH_ERR); + +- if (data_len) { +- wc->status = IBV_WC_LOC_LEN_ERR; +- return V2_CQ_POLL_ERR; +- } +- } ++} + +- return V2_CQ_OK; ++static void handle_recv_rq_inl(struct hns_roce_v2_cqe *cqe, ++ struct hns_roce_qp *cur_qp) ++{ ++ uint8_t *wqe_buf; ++ uint32_t wr_num; ++ ++ wr_num = hr_reg_read(cqe, CQE_WQE_IDX) & (cur_qp->rq.wqe_cnt - 1); ++ ++ wqe_buf = (uint8_t *)get_recv_wqe_v2(cur_qp, wr_num); ++ handle_recv_inl_data(cqe, &(cur_qp->rq_rinl_buf), wr_num, wqe_buf); + } + + static void parse_for_ud_qp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc) +@@ -479,10 +476,9 @@ static void parse_cqe_for_srq(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, + } + + static int parse_cqe_for_resp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, +- struct hns_roce_qp *hr_qp, uint8_t opcode) ++ struct hns_roce_qp *hr_qp) + { + struct hns_roce_wq *wq; +- int ret; + + wq = &hr_qp->rq; + wc->wr_id = wq->wrid[wq->tail & (wq->wqe_cnt - 1)]; +@@ -491,12 +487,8 @@ static int parse_cqe_for_resp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, + if (hr_qp->verbs_qp.qp.qp_type == IBV_QPT_UD) + parse_for_ud_qp(cqe, wc); + +- ret = handle_recv_inl_wqe(cqe, wc, &hr_qp, opcode); +- if (ret) { +- verbs_err(verbs_get_ctx(hr_qp->verbs_qp.qp.context), +- PFX "failed to handle recv inline wqe!\n"); +- return ret; +- } ++ if (hr_reg_read(cqe, CQE_RQ_INLINE)) ++ handle_recv_rq_inl(cqe, hr_qp); + + return 0; + } +@@ -626,7 +618,7 @@ static int parse_cqe_for_cq(struct hns_roce_context *ctx, struct hns_roce_cq *cq + if (srq) + parse_cqe_for_srq(cqe, wc, srq); + else +- parse_cqe_for_resp(cqe, wc, cur_qp, opcode); ++ parse_cqe_for_resp(cqe, wc, cur_qp); + } + + return 0; +@@ -1355,26 +1347,31 @@ static void fill_recv_sge_to_wqe(struct ibv_recv_wr *wr, void *wqe, + } + } + ++static void fill_recv_inl_buf(struct hns_roce_rinl_buf *rinl_buf, ++ unsigned int wqe_idx, struct ibv_recv_wr *wr) ++{ ++ struct ibv_sge *sge_list; ++ unsigned int i; ++ ++ if (!rinl_buf->wqe_cnt) ++ return; ++ ++ sge_list = rinl_buf->wqe_list[wqe_idx].sg_list; ++ rinl_buf->wqe_list[wqe_idx].sge_cnt = (unsigned int)wr->num_sge; ++ for (i = 0; i < wr->num_sge; i++) ++ memcpy((void *)&sge_list[i], (void *)&wr->sg_list[i], ++ sizeof(struct ibv_sge)); ++} ++ + static void fill_rq_wqe(struct hns_roce_qp *qp, struct ibv_recv_wr *wr, + unsigned int wqe_idx, unsigned int max_sge) + { +- struct hns_roce_rinl_sge *sge_list; +- unsigned int i; + void *wqe; + + wqe = get_recv_wqe_v2(qp, wqe_idx); + fill_recv_sge_to_wqe(wr, wqe, max_sge, qp->rq.rsv_sge); + +- if (!qp->rq_rinl_buf.wqe_cnt) +- return; +- +- /* QP support receive inline wqe */ +- sge_list = qp->rq_rinl_buf.wqe_list[wqe_idx].sg_list; +- qp->rq_rinl_buf.wqe_list[wqe_idx].sge_cnt = (unsigned int)wr->num_sge; +- for (i = 0; i < wr->num_sge; i++) { +- sge_list[i].addr = (void *)(uintptr_t)wr->sg_list[i].addr; +- sge_list[i].len = wr->sg_list[i].length; +- } ++ fill_recv_inl_buf(&qp->rq_rinl_buf, wqe_idx, wr); + } + + static int hns_roce_u_v2_post_recv(struct ibv_qp *ibvqp, struct ibv_recv_wr *wr, +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index 3e9a306..1d661dd 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -855,43 +855,45 @@ static int verify_qp_create_attr(struct hns_roce_context *ctx, + return verify_qp_create_cap(ctx, attr); + } + +-static int qp_alloc_recv_inl_buf(struct ibv_qp_cap *cap, +- struct hns_roce_qp *qp) ++static int alloc_recv_rinl_buf(uint32_t max_sge, ++ struct hns_roce_rinl_buf *rinl_buf) + { + unsigned int cnt; + int i; + +- cnt = qp->rq_rinl_buf.wqe_cnt; +- qp->rq_rinl_buf.wqe_list = calloc(cnt, +- sizeof(struct hns_roce_rinl_wqe)); +- if (!qp->rq_rinl_buf.wqe_list) ++ cnt = rinl_buf->wqe_cnt; ++ rinl_buf->wqe_list = calloc(cnt, ++ sizeof(struct hns_roce_rinl_wqe)); ++ if (!rinl_buf->wqe_list) + return ENOMEM; + +- qp->rq_rinl_buf.wqe_list[0].sg_list = calloc(cnt * cap->max_recv_sge, +- sizeof(struct hns_roce_rinl_sge)); +- if (!qp->rq_rinl_buf.wqe_list[0].sg_list) ++ rinl_buf->wqe_list[0].sg_list = calloc(cnt * max_sge, ++ sizeof(struct ibv_sge)); ++ if (!rinl_buf->wqe_list[0].sg_list) { ++ free(rinl_buf->wqe_list); + return ENOMEM; ++ } + + for (i = 0; i < cnt; i++) { +- int wqe_size = i * cap->max_recv_sge; ++ int wqe_size = i * max_sge; + +- qp->rq_rinl_buf.wqe_list[i].sg_list = +- &(qp->rq_rinl_buf.wqe_list[0].sg_list[wqe_size]); ++ rinl_buf->wqe_list[i].sg_list = ++ &(rinl_buf->wqe_list[0].sg_list[wqe_size]); + } + + return 0; + } + +-static void qp_free_recv_inl_buf(struct hns_roce_qp *qp) ++static void free_recv_rinl_buf(struct hns_roce_rinl_buf *rinl_buf) + { +- if (qp->rq_rinl_buf.wqe_list) { +- if (qp->rq_rinl_buf.wqe_list[0].sg_list) { +- free(qp->rq_rinl_buf.wqe_list[0].sg_list); +- qp->rq_rinl_buf.wqe_list[0].sg_list = NULL; ++ if (rinl_buf->wqe_list) { ++ if (rinl_buf->wqe_list[0].sg_list) { ++ free(rinl_buf->wqe_list[0].sg_list); ++ rinl_buf->wqe_list[0].sg_list = NULL; + } + +- free(qp->rq_rinl_buf.wqe_list); +- qp->rq_rinl_buf.wqe_list = NULL; ++ free(rinl_buf->wqe_list); ++ rinl_buf->wqe_list = NULL; + } + } + +@@ -930,7 +932,7 @@ static int calc_qp_buff_size(struct hns_roce_device *hr_dev, + + static void qp_free_wqe(struct hns_roce_qp *qp) + { +- qp_free_recv_inl_buf(qp); ++ free_recv_rinl_buf(&qp->rq_rinl_buf); + if (qp->sq.wqe_cnt) + free(qp->sq.wrid); + +@@ -958,7 +960,7 @@ static int qp_alloc_wqe(struct ibv_qp_cap *cap, struct hns_roce_qp *qp, + } + + if (qp->rq_rinl_buf.wqe_cnt) { +- if (qp_alloc_recv_inl_buf(cap, qp)) ++ if (alloc_recv_rinl_buf(cap->max_recv_sge, &qp->rq_rinl_buf)) + goto err_alloc; + } + +@@ -968,7 +970,7 @@ static int qp_alloc_wqe(struct ibv_qp_cap *cap, struct hns_roce_qp *qp, + return 0; + + err_alloc: +- qp_free_recv_inl_buf(qp); ++ free_recv_rinl_buf(&qp->rq_rinl_buf); + if (qp->rq.wrid) + free(qp->rq.wrid); + +-- +2.30.0 + diff --git a/0008-libhns-RQ-inline-support-wc_x_poll_cq-interface.patch b/0008-libhns-RQ-inline-support-wc_x_poll_cq-interface.patch new file mode 100644 index 0000000000000000000000000000000000000000..aa9e57eb79b45cdf724a2b5b97fecb58582be9fb --- /dev/null +++ b/0008-libhns-RQ-inline-support-wc_x_poll_cq-interface.patch @@ -0,0 +1,46 @@ +From 22beeec9a0d8272fc4db60275ee4eee890068102 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Tue, 11 Oct 2022 10:21:24 +0800 +Subject: [PATCH v4 08/10] libhns: RQ inline support wc_x_poll_cq interface + +RQ inline support user use wc_x_poll_cq get data. + +Signed-off-by: Luoyouming +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u_hw_v2.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index b37ea92..25d8861 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -561,10 +561,15 @@ static void cqe_proc_srq(struct hns_roce_srq *srq, uint32_t wqe_idx, + hns_roce_free_srq_wqe(srq, wqe_idx); + } + +-static void cqe_proc_rq(struct hns_roce_wq *wq, struct hns_roce_cq *cq) ++static void cqe_proc_rq(struct hns_roce_qp *hr_qp, struct hns_roce_cq *cq) + { ++ struct hns_roce_wq *wq = &hr_qp->rq; ++ + cq->verbs_cq.cq_ex.wr_id = wq->wrid[wq->tail & (wq->wqe_cnt - 1)]; + ++wq->tail; ++ ++ if (hr_reg_read(cq->cqe, CQE_RQ_INLINE)) ++ handle_recv_rq_inl(cq->cqe, hr_qp); + } + + static int cqe_proc_wq(struct hns_roce_context *ctx, struct hns_roce_qp *qp, +@@ -584,7 +589,7 @@ static int cqe_proc_wq(struct hns_roce_context *ctx, struct hns_roce_qp *qp, + if (srq) + cqe_proc_srq(srq, wqe_idx, cq); + else +- cqe_proc_rq(&qp->rq, cq); ++ cqe_proc_rq(qp, cq); + } + + return 0; +-- +2.30.0 + diff --git a/0009-Update-kernel-headers.patch b/0009-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..0f02221a6e2d4080a232de8e633e5e22f7459705 --- /dev/null +++ b/0009-Update-kernel-headers.patch @@ -0,0 +1,33 @@ +From 14cee9bd8ab06104b9f9a0326b8d17a5bf8ee647 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Tue, 11 Oct 2022 10:50:36 +0800 +Subject: [PATCH v4 09/10] Update kernel headers + +To commit ?? ("RDMA/hns: Support cqe inline in user space"). + +Signed-off-by: Luoyouming +--- + kernel-headers/rdma/hns-abi.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index c70465d..41738b8 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -88,11 +88,13 @@ struct hns_roce_ib_create_qp_resp { + enum { + HNS_ROCE_EXSGE_FLAGS = 1 << 0, + HNS_ROCE_RQ_INLINE_FLAGS = 1 << 1, ++ HNS_ROCE_CQE_INLINE_FLAGS = 1 << 2, + }; + + enum { + HNS_ROCE_RSP_EXSGE_FLAGS = 1 << 0, + HNS_ROCE_RSP_RQ_INLINE_FLAGS = 1 << 1, ++ HNS_ROCE_RSP_CQE_INLINE_FLAGS = 1 << 2, + }; + + struct hns_roce_ib_alloc_ucontext_resp { +-- +2.30.0 + diff --git a/0010-libhns-Support-cqe-inline.patch b/0010-libhns-Support-cqe-inline.patch new file mode 100644 index 0000000000000000000000000000000000000000..56982340e48d316f574b8ca5fb1a25eb5b25adf8 --- /dev/null +++ b/0010-libhns-Support-cqe-inline.patch @@ -0,0 +1,263 @@ +From 71eb90581a338242a26123790e5f24df90327465 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Thu, 11 Aug 2022 20:50:54 +0800 +Subject: [PATCH v4 10/10] libhns: Support cqe inline + +When rq or srq recv data less than or equal to 32 byte in size, roce driver +support get data from cqe. + +Signed-off-by: Luoyouming +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.c | 3 ++- + providers/hns/hns_roce_u.h | 21 +++++++++-------- + providers/hns/hns_roce_u_hw_v2.c | 39 ++++++++++++++++++++++++++++++-- + providers/hns/hns_roce_u_hw_v2.h | 4 ++-- + providers/hns/hns_roce_u_verbs.c | 25 ++++++++++++++++++-- + 5 files changed, 75 insertions(+), 17 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 6c9aefa..266e73e 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -113,7 +113,8 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + if (!context) + return NULL; + +- cmd.config |= HNS_ROCE_EXSGE_FLAGS | HNS_ROCE_RQ_INLINE_FLAGS; ++ cmd.config |= HNS_ROCE_EXSGE_FLAGS | HNS_ROCE_RQ_INLINE_FLAGS | ++ HNS_ROCE_CQE_INLINE_FLAGS; + if (ibv_cmd_get_context(&context->ibv_ctx, &cmd.ibv_cmd, sizeof(cmd), + &resp.ibv_resp, sizeof(resp))) + goto err_free; +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 57ebe55..6b64cd0 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -246,10 +246,21 @@ struct hns_roce_idx_que { + unsigned int tail; + }; + ++struct hns_roce_rinl_wqe { ++ struct ibv_sge *sg_list; ++ unsigned int sge_cnt; ++}; ++ ++struct hns_roce_rinl_buf { ++ struct hns_roce_rinl_wqe *wqe_list; ++ unsigned int wqe_cnt; ++}; ++ + struct hns_roce_srq { + struct verbs_srq verbs_srq; + struct hns_roce_idx_que idx_que; + struct hns_roce_buf wqe_buf; ++ struct hns_roce_rinl_buf srq_rinl_buf; + pthread_spinlock_t lock; + unsigned long *wrid; + unsigned int srqn; +@@ -290,16 +301,6 @@ struct hns_roce_sge_ex { + unsigned int sge_shift; + }; + +-struct hns_roce_rinl_wqe { +- struct ibv_sge *sg_list; +- unsigned int sge_cnt; +-}; +- +-struct hns_roce_rinl_buf { +- struct hns_roce_rinl_wqe *wqe_list; +- unsigned int wqe_cnt; +-}; +- + struct hns_roce_qp { + struct verbs_qp verbs_qp; + struct hns_roce_buf buf; +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 25d8861..7063b26 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -444,6 +444,28 @@ static void handle_recv_inl_data(struct hns_roce_v2_cqe *cqe, + + } + ++static void handle_recv_cqe_inl_from_rq(struct hns_roce_v2_cqe *cqe, ++ struct hns_roce_qp *cur_qp) ++{ ++ uint32_t wr_num; ++ ++ wr_num = hr_reg_read(cqe, CQE_WQE_IDX) & (cur_qp->rq.wqe_cnt - 1); ++ ++ handle_recv_inl_data(cqe, &(cur_qp->rq_rinl_buf), wr_num, ++ (uint8_t *)cqe->payload); ++} ++ ++static void handle_recv_cqe_inl_from_srq(struct hns_roce_v2_cqe *cqe, ++ struct hns_roce_srq *srq) ++{ ++ uint32_t wr_num; ++ ++ wr_num = hr_reg_read(cqe, CQE_WQE_IDX) & (srq->wqe_cnt - 1); ++ ++ handle_recv_inl_data(cqe, &(srq->srq_rinl_buf), wr_num, ++ (uint8_t *)cqe->payload); ++} ++ + static void handle_recv_rq_inl(struct hns_roce_v2_cqe *cqe, + struct hns_roce_qp *cur_qp) + { +@@ -473,6 +495,9 @@ static void parse_cqe_for_srq(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, + wqe_idx = hr_reg_read(cqe, CQE_WQE_IDX); + wc->wr_id = srq->wrid[wqe_idx & (srq->wqe_cnt - 1)]; + hns_roce_free_srq_wqe(srq, wqe_idx); ++ ++ if (hr_reg_read(cqe, CQE_CQE_INLINE)) ++ handle_recv_cqe_inl_from_srq(cqe, srq); + } + + static int parse_cqe_for_resp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, +@@ -487,7 +512,9 @@ static int parse_cqe_for_resp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, + if (hr_qp->verbs_qp.qp.qp_type == IBV_QPT_UD) + parse_for_ud_qp(cqe, wc); + +- if (hr_reg_read(cqe, CQE_RQ_INLINE)) ++ if (hr_reg_read(cqe, CQE_CQE_INLINE)) ++ handle_recv_cqe_inl_from_rq(cqe, hr_qp); ++ else if (hr_reg_read(cqe, CQE_RQ_INLINE)) + handle_recv_rq_inl(cqe, hr_qp); + + return 0; +@@ -559,6 +586,9 @@ static void cqe_proc_srq(struct hns_roce_srq *srq, uint32_t wqe_idx, + { + cq->verbs_cq.cq_ex.wr_id = srq->wrid[wqe_idx & (srq->wqe_cnt - 1)]; + hns_roce_free_srq_wqe(srq, wqe_idx); ++ ++ if (hr_reg_read(cq->cqe, CQE_CQE_INLINE)) ++ handle_recv_cqe_inl_from_srq(cq->cqe, srq); + } + + static void cqe_proc_rq(struct hns_roce_qp *hr_qp, struct hns_roce_cq *cq) +@@ -568,7 +598,9 @@ static void cqe_proc_rq(struct hns_roce_qp *hr_qp, struct hns_roce_cq *cq) + cq->verbs_cq.cq_ex.wr_id = wq->wrid[wq->tail & (wq->wqe_cnt - 1)]; + ++wq->tail; + +- if (hr_reg_read(cq->cqe, CQE_RQ_INLINE)) ++ if (hr_reg_read(cq->cqe, CQE_CQE_INLINE)) ++ handle_recv_cqe_inl_from_rq(cq->cqe, hr_qp); ++ else if (hr_reg_read(cq->cqe, CQE_RQ_INLINE)) + handle_recv_rq_inl(cq->cqe, hr_qp); + } + +@@ -1725,6 +1757,9 @@ static int hns_roce_u_v2_post_srq_recv(struct ibv_srq *ib_srq, + + wqe = get_srq_wqe(srq, wqe_idx); + fill_recv_sge_to_wqe(wr, wqe, max_sge, srq->rsv_sge); ++ ++ fill_recv_inl_buf(&srq->srq_rinl_buf, wqe_idx, wr); ++ + fill_wqe_idx(srq, wqe_idx); + + srq->wrid[wqe_idx] = wr->wr_id; +diff --git a/providers/hns/hns_roce_u_hw_v2.h b/providers/hns/hns_roce_u_hw_v2.h +index 098dbdf..d71c695 100644 +--- a/providers/hns/hns_roce_u_hw_v2.h ++++ b/providers/hns/hns_roce_u_hw_v2.h +@@ -157,7 +157,7 @@ struct hns_roce_v2_cqe { + __le32 smac; + __le32 byte_28; + __le32 byte_32; +- __le32 rsv[8]; ++ __le32 payload[8]; + }; + + #define CQE_FIELD_LOC(h, l) FIELD_LOC(struct hns_roce_v2_cqe, h, l) +@@ -170,7 +170,7 @@ struct hns_roce_v2_cqe { + #define CQE_WQE_IDX CQE_FIELD_LOC(31, 16) + #define CQE_RKEY_IMMTDATA CQE_FIELD_LOC(63, 32) + #define CQE_XRC_SRQN CQE_FIELD_LOC(87, 64) +-#define CQE_RSV0 CQE_FIELD_LOC(95, 88) ++#define CQE_CQE_INLINE CQE_FIELD_LOC(89, 88) + #define CQE_LCL_QPN CQE_FIELD_LOC(119, 96) + #define CQE_SUB_STATUS CQE_FIELD_LOC(127, 120) + #define CQE_BYTE_CNT CQE_FIELD_LOC(159, 128) +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index 1d661dd..cff9d1d 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -522,6 +522,8 @@ static int verify_srq_create_attr(struct hns_roce_context *context, + static void set_srq_param(struct ibv_context *context, struct hns_roce_srq *srq, + struct ibv_srq_init_attr_ex *attr) + { ++ struct hns_roce_context *ctx = to_hr_ctx(context); ++ + if (to_hr_dev(context->device)->hw_version == HNS_ROCE_HW_VER2) + srq->rsv_sge = 1; + +@@ -531,6 +533,10 @@ static void set_srq_param(struct ibv_context *context, struct hns_roce_srq *srq, + srq->max_gs)); + attr->attr.max_sge = srq->max_gs; + attr->attr.srq_limit = 0; ++ ++ srq->srq_rinl_buf.wqe_cnt = 0; ++ if (ctx->config & HNS_ROCE_RSP_CQE_INLINE_FLAGS) ++ srq->srq_rinl_buf.wqe_cnt = srq->wqe_cnt; + } + + static int alloc_srq_idx_que(struct hns_roce_srq *srq) +@@ -570,6 +576,11 @@ static int alloc_srq_wqe_buf(struct hns_roce_srq *srq) + return hns_roce_alloc_buf(&srq->wqe_buf, buf_size, HNS_HW_PAGE_SIZE); + } + ++static int alloc_recv_rinl_buf(uint32_t max_sge, ++ struct hns_roce_rinl_buf *rinl_buf); ++ ++static void free_recv_rinl_buf(struct hns_roce_rinl_buf *rinl_buf); ++ + static int alloc_srq_buf(struct hns_roce_srq *srq) + { + int ret; +@@ -582,14 +593,22 @@ static int alloc_srq_buf(struct hns_roce_srq *srq) + if (ret) + goto err_idx_que; + ++ if (srq->srq_rinl_buf.wqe_cnt) { ++ ret = alloc_recv_rinl_buf(srq->max_gs, &srq->srq_rinl_buf); ++ if (ret) ++ goto err_wqe_buf; ++ } ++ + srq->wrid = calloc(srq->wqe_cnt, sizeof(*srq->wrid)); + if (!srq->wrid) { + ret = -ENOMEM; +- goto err_wqe_buf; ++ goto err_inl_buf; + } + + return 0; + ++err_inl_buf: ++ free_recv_rinl_buf(&srq->srq_rinl_buf); + err_wqe_buf: + hns_roce_free_buf(&srq->wqe_buf); + err_idx_que: +@@ -603,6 +622,7 @@ static void free_srq_buf(struct hns_roce_srq *srq) + { + free(srq->wrid); + hns_roce_free_buf(&srq->wqe_buf); ++ free_recv_rinl_buf(&srq->srq_rinl_buf); + hns_roce_free_buf(&srq->idx_que.buf); + free(srq->idx_que.bitmap); + } +@@ -1082,7 +1102,8 @@ static void hns_roce_set_qp_params(struct ibv_qp_init_attr_ex *attr, + qp->rq.wqe_cnt = cnt; + qp->rq.shift = hr_ilog32(cnt); + qp->rq_rinl_buf.wqe_cnt = 0; +- if (ctx->config & HNS_ROCE_RSP_RQ_INLINE_FLAGS) ++ if (ctx->config & (HNS_ROCE_RSP_RQ_INLINE_FLAGS | ++ HNS_ROCE_RSP_CQE_INLINE_FLAGS)) + qp->rq_rinl_buf.wqe_cnt = cnt; + + attr->cap.max_recv_wr = qp->rq.wqe_cnt; +-- +2.30.0 + diff --git a/0011-Update-kernel-headers.patch b/0011-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..7a86e1957fa707c6f8252bf53b338f9f45382b4b --- /dev/null +++ b/0011-Update-kernel-headers.patch @@ -0,0 +1,38 @@ +From 12d2a17d404e3d5ba76863f64307ea52a7d15d15 Mon Sep 17 00:00:00 2001 +From: Yixing Liu +Date: Sat, 29 Oct 2022 10:44:17 +0800 +Subject: [PATCH 11/12] Update kernel headers + +To commit ?? ("RDMA/hns: Support DSCP of userspace"). + +Signed-off-by: Yixing Liu +--- + kernel-headers/rdma/hns-abi.h | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index 41738b8..542be5e 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -85,6 +85,18 @@ struct hns_roce_ib_create_qp_resp { + __aligned_u64 dwqe_mmap_key; + }; + ++struct hns_roce_ib_create_ah_resp { ++ __u8 priority; ++ __u8 tc_mode; ++ __u8 reserved[6]; ++}; ++ ++struct hns_roce_ib_modify_qp_resp { ++ __u8 tc_mode; ++ __u8 priority; ++ __u8 reserved[6]; ++}; ++ + enum { + HNS_ROCE_EXSGE_FLAGS = 1 << 0, + HNS_ROCE_RQ_INLINE_FLAGS = 1 << 1, +-- +2.30.0 + diff --git a/0012-libhns-Support-DSCP.patch b/0012-libhns-Support-DSCP.patch new file mode 100644 index 0000000000000000000000000000000000000000..6433809e6e64555207f17e5282ce053d79184c99 --- /dev/null +++ b/0012-libhns-Support-DSCP.patch @@ -0,0 +1,150 @@ +From b88e6ae3e144651092bce923123ca20361cdacab Mon Sep 17 00:00:00 2001 +From: Yixing Liu +Date: Tue, 27 Sep 2022 19:06:00 +0800 +Subject: [PATCH 12/12] libhns: Support DSCP + +This patch adds user mode DSCP function through +the mapping of dscp-tc configured in kernel mode. + +Signed-off-by: Yixing Liu +--- + providers/hns/hns_roce_u.h | 7 +++++++ + providers/hns/hns_roce_u_abi.h | 6 ++++++ + providers/hns/hns_roce_u_hw_v2.c | 19 +++++++++++++++---- + providers/hns/hns_roce_u_verbs.c | 7 +++++-- + 4 files changed, 33 insertions(+), 6 deletions(-) + +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 6b64cd0..8c1cb1e 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -175,6 +175,11 @@ enum hns_roce_db_type { + HNS_ROCE_DB_TYPE_NUM + }; + ++enum hns_roce_tc_map_mode { ++ HNS_ROCE_TC_MAP_MODE_PRIO, ++ HNS_ROCE_TC_MAP_MODE_DSCP, ++}; ++ + struct hns_roce_db_page { + struct hns_roce_db_page *prev, *next; + struct hns_roce_buf buf; +@@ -315,6 +320,8 @@ struct hns_roce_qp { + unsigned int next_sge; + int port_num; + uint8_t sl; ++ uint8_t tc_mode; ++ uint8_t priority; + unsigned int qkey; + enum ibv_mtu path_mtu; + +diff --git a/providers/hns/hns_roce_u_abi.h b/providers/hns/hns_roce_u_abi.h +index 2753d30..0519ac7 100644 +--- a/providers/hns/hns_roce_u_abi.h ++++ b/providers/hns/hns_roce_u_abi.h +@@ -49,6 +49,9 @@ DECLARE_DRV_CMD(hns_roce_create_cq_ex, IB_USER_VERBS_EX_CMD_CREATE_CQ, + DECLARE_DRV_CMD(hns_roce_alloc_ucontext, IB_USER_VERBS_CMD_GET_CONTEXT, + hns_roce_ib_alloc_ucontext, hns_roce_ib_alloc_ucontext_resp); + ++DECLARE_DRV_CMD(hns_roce_create_ah, IB_USER_VERBS_CMD_CREATE_AH, empty, ++ hns_roce_ib_create_ah_resp); ++ + DECLARE_DRV_CMD(hns_roce_create_qp, IB_USER_VERBS_CMD_CREATE_QP, + hns_roce_ib_create_qp, hns_roce_ib_create_qp_resp); + +@@ -61,4 +64,7 @@ DECLARE_DRV_CMD(hns_roce_create_srq, IB_USER_VERBS_CMD_CREATE_SRQ, + DECLARE_DRV_CMD(hns_roce_create_srq_ex, IB_USER_VERBS_CMD_CREATE_XSRQ, + hns_roce_ib_create_srq, hns_roce_ib_create_srq_resp); + ++DECLARE_DRV_CMD(hns_roce_modify_qp_ex, IB_USER_VERBS_EX_CMD_MODIFY_QP, ++ empty, hns_roce_ib_modify_qp_resp); ++ + #endif /* _HNS_ROCE_U_ABI_H */ +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index a30d461..c652eea 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -1543,10 +1543,11 @@ static void record_qp_attr(struct ibv_qp *qp, struct ibv_qp_attr *attr, + static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + int attr_mask) + { +- int ret; +- struct ibv_modify_qp cmd; ++ struct hns_roce_modify_qp_ex_resp resp_ex = {}; ++ struct hns_roce_modify_qp_ex cmd_ex = {}; + struct hns_roce_qp *hr_qp = to_hr_qp(qp); + bool flag = false; /* modify qp to error */ ++ int ret; + + if ((attr_mask & IBV_QP_STATE) && (attr->qp_state == IBV_QPS_ERR)) { + pthread_spin_lock(&hr_qp->sq.lock); +@@ -1554,7 +1555,9 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + flag = true; + } + +- ret = ibv_cmd_modify_qp(qp, attr, attr_mask, &cmd, sizeof(cmd)); ++ ret = ibv_cmd_modify_qp_ex(qp, attr, attr_mask, &cmd_ex.ibv_cmd, ++ sizeof(cmd_ex), &resp_ex.ibv_resp, ++ sizeof(resp_ex)); + + if (flag) { + pthread_spin_unlock(&hr_qp->rq.lock); +@@ -1564,8 +1567,13 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + if (ret) + return ret; + +- if (attr_mask & IBV_QP_STATE) ++ if (attr_mask & IBV_QP_STATE) { + qp->state = attr->qp_state; ++ if (attr->qp_state == IBV_QPS_RTR) { ++ hr_qp->tc_mode = resp_ex.drv_payload.tc_mode; ++ hr_qp->priority = resp_ex.drv_payload.priority; ++ } ++ } + + if ((attr_mask & IBV_QP_STATE) && attr->qp_state == IBV_QPS_RESET) { + if (qp->recv_cq) +@@ -1579,6 +1587,9 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + hns_roce_init_qp_indices(to_hr_qp(qp)); + } + ++ if (hr_qp->tc_mode == HNS_ROCE_TC_MAP_MODE_DSCP) ++ hr_qp->sl = hr_qp->priority; ++ + record_qp_attr(qp, attr, attr_mask); + + return ret; +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index cff9d1d..3b7a67d 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -1449,7 +1449,7 @@ static int get_tclass(struct ibv_context *context, struct ibv_ah_attr *attr, + struct ibv_ah *hns_roce_u_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr) + { + struct hns_roce_device *hr_dev = to_hr_dev(pd->context->device); +- struct ib_uverbs_create_ah_resp resp = {}; ++ struct hns_roce_create_ah_resp resp = {}; + struct hns_roce_ah *ah; + + /* HIP08 don't support create ah */ +@@ -1477,12 +1477,15 @@ struct ibv_ah *hns_roce_u_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr) + memcpy(ah->av.dgid, attr->grh.dgid.raw, ARRAY_SIZE(ah->av.dgid)); + } + +- if (ibv_cmd_create_ah(pd, &ah->ibv_ah, attr, &resp, sizeof(resp))) ++ if (ibv_cmd_create_ah(pd, &ah->ibv_ah, attr, &resp.ibv_resp, sizeof(resp))) + goto err; + + if (ibv_resolve_eth_l2_from_gid(pd->context, attr, ah->av.mac, NULL)) + goto err; + ++ if (resp.tc_mode == HNS_ROCE_TC_MAP_MODE_DSCP) ++ ah->av.sl = resp.priority; ++ + ah->av.udp_sport = get_ah_udp_sport(attr); + + return &ah->ibv_ah; +-- +2.30.0 + diff --git a/0013-cma-Release-allocated-port-array.patch b/0013-cma-Release-allocated-port-array.patch new file mode 100644 index 0000000000000000000000000000000000000000..dcbc3d5ea051864bb13042e1bd8d209e0fe77c72 --- /dev/null +++ b/0013-cma-Release-allocated-port-array.patch @@ -0,0 +1,28 @@ +From 6be317e9e2b894d460c4f3422f349895d475ef8d Mon Sep 17 00:00:00 2001 +From: Kirill Martynov +Date: Mon, 20 Jun 2022 16:29:09 +0300 +Subject: cma: Release allocated port array + +Fix mem leak for allocated port array + +Fixes: 1b9125689fec ("cma: Workaround for rdma_ucm kernel bug") +Signed-off-by: Kirill Martynov +--- + librdmacm/cma.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/librdmacm/cma.c b/librdmacm/cma.c +index 2bde34a..7b924bd 100644 +--- a/librdmacm/cma.c ++++ b/librdmacm/cma.c +@@ -304,6 +304,7 @@ static void remove_cma_dev(struct cma_device *cma_dev) + ibv_dealloc_pd(cma_dev->pd); + if (cma_dev->verbs) + ibv_close_device(cma_dev->verbs); ++ free(cma_dev->port); + list_del_from(&cma_dev_list, &cma_dev->entry); + free(cma_dev); + } +-- +2.34.1 + diff --git a/0014-rsockets-Fix-allocation-size-There-is-memory-allocat.patch b/0014-rsockets-Fix-allocation-size-There-is-memory-allocat.patch new file mode 100644 index 0000000000000000000000000000000000000000..0e0d7610531a77ff014fa335196c9dd9ee48d657 --- /dev/null +++ b/0014-rsockets-Fix-allocation-size-There-is-memory-allocat.patch @@ -0,0 +1,28 @@ +From 3704db8f8496ffd967ef8d8840eef2c04b7f4b06 Mon Sep 17 00:00:00 2001 +From: Mikhail Sokolovskiy +Date: Fri, 1 Jul 2022 17:34:24 +0300 +Subject: rsockets: Fix allocation size There is memory allocation for (nfds + + 1) elements, but actually less space is allocated (1 byte for new element + instead of sizeof(pollfd)). This is caused by operators precedence mistake. + +Signed-off-by: Mikhail Sokolovskiy +--- + librdmacm/rsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/librdmacm/rsocket.c b/librdmacm/rsocket.c +index 8c81096..e26a053 100644 +--- a/librdmacm/rsocket.c ++++ b/librdmacm/rsocket.c +@@ -3173,7 +3173,7 @@ static struct pollfd *rs_fds_alloc(nfds_t nfds) + else if (rs_pollinit()) + return NULL; + +- rfds = malloc(sizeof(*rfds) * nfds + 1); ++ rfds = malloc(sizeof(*rfds) * (nfds + 1)); + rnfds = rfds ? nfds + 1 : 0; + } + +-- +2.34.1 + diff --git a/0015-tests-test_mr.py-Change-the-argument-of-DmaBufMR-to-.patch b/0015-tests-test_mr.py-Change-the-argument-of-DmaBufMR-to-.patch new file mode 100644 index 0000000000000000000000000000000000000000..7ebafb7518eecafba3f6cd9979c64db80c47e8ec --- /dev/null +++ b/0015-tests-test_mr.py-Change-the-argument-of-DmaBufMR-to-.patch @@ -0,0 +1,95 @@ +From 9cad02f325f48434343970d54bff5a5e897d9be2 Mon Sep 17 00:00:00 2001 +From: Wei Xu +Date: Thu, 11 Aug 2022 02:30:56 +0000 +Subject: tests/test_mr.py: Change the argument of DmaBufMR to fix the + TypeError + +Replaced the argument 'unit' with 'gpu' to fix following error for the DmaBufMRTest: + +TypeError: __init__() got an unexpected keyword argument 'unit' + +Fixed: ffa97cb59f82 ("tests: Let PyverbsAPITestCase have one default device") +Signed-off-by: Wei Xu +--- + tests/test_mr.py | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/tests/test_mr.py b/tests/test_mr.py +index 3ec1fb3..f34b4d0 100644 +--- a/tests/test_mr.py ++++ b/tests/test_mr.py +@@ -490,7 +490,7 @@ class DmaBufMRTest(PyverbsAPITestCase): + for f in flags: + len = u.get_mr_length() + for off in [0, len//2]: +- with DmaBufMR(pd, len, f, offset=off, unit=self.gpu, ++ with DmaBufMR(pd, len, f, offset=off, gpu=self.gpu, + gtt=self.gtt) as mr: + pass + +@@ -505,7 +505,7 @@ class DmaBufMRTest(PyverbsAPITestCase): + for f in flags: + len = u.get_mr_length() + for off in [0, len//2]: +- with DmaBufMR(pd, len, f, offset=off, unit=self.gpu, ++ with DmaBufMR(pd, len, f, offset=off, gpu=self.gpu, + gtt=self.gtt) as mr: + mr.close() + +@@ -520,7 +520,7 @@ class DmaBufMRTest(PyverbsAPITestCase): + for f in flags: + len = u.get_mr_length() + for off in [0, len//2]: +- with DmaBufMR(pd, len, f, offset=off, unit=self.gpu, ++ with DmaBufMR(pd, len, f, offset=off, gpu=self.gpu, + gtt=self.gtt) as mr: + # Pyverbs supports multiple destruction of objects, + # we are not expecting an exception here. +@@ -543,7 +543,7 @@ class DmaBufMRTest(PyverbsAPITestCase): + mr_flags += i.value + try: + DmaBufMR(pd, u.get_mr_length(), mr_flags, +- unit=self.gpu, gtt=self.gtt) ++ gpu=self.gpu, gtt=self.gtt) + except PyverbsRDMAError as err: + assert 'Failed to register a dma-buf MR' in err.args[0] + else: +@@ -562,7 +562,7 @@ class DmaBufMRTest(PyverbsAPITestCase): + for f in flags: + for mr_off in [0, mr_len//2]: + with DmaBufMR(pd, mr_len, f, offset=mr_off, +- unit=self.gpu, gtt=self.gtt) as mr: ++ gpu=self.gpu, gtt=self.gtt) as mr: + write_len = min(random.randint(1, MAX_IO_LEN), + mr_len) + mr.write('a' * write_len, write_len) +@@ -580,7 +580,7 @@ class DmaBufMRTest(PyverbsAPITestCase): + for f in flags: + for mr_off in [0, mr_len//2]: + with DmaBufMR(pd, mr_len, f, offset=mr_off, +- unit=self.gpu, gtt=self.gtt) as mr: ++ gpu=self.gpu, gtt=self.gtt) as mr: + write_len = min(random.randint(1, MAX_IO_LEN), + mr_len) + write_str = 'a' * write_len +@@ -600,7 +600,7 @@ class DmaBufMRTest(PyverbsAPITestCase): + length = u.get_mr_length() + flags = u.get_dmabuf_access_flags(self.ctx) + for f in flags: +- with DmaBufMR(pd, length, f, unit=self.gpu, ++ with DmaBufMR(pd, length, f, gpu=self.gpu, + gtt=self.gtt) as mr: + mr.lkey + +@@ -614,7 +614,7 @@ class DmaBufMRTest(PyverbsAPITestCase): + length = u.get_mr_length() + flags = u.get_dmabuf_access_flags(self.ctx) + for f in flags: +- with DmaBufMR(pd, length, f, unit=self.gpu, ++ with DmaBufMR(pd, length, f, gpu=self.gpu, + gtt=self.gtt) as mr: + mr.rkey + +-- +2.34.1 + diff --git a/0016-ABI-Files.patch b/0016-ABI-Files.patch new file mode 100644 index 0000000000000000000000000000000000000000..bf4b81097a144a6c6f6b750a6452c2dfbe27a071 --- /dev/null +++ b/0016-ABI-Files.patch @@ -0,0 +1,56073 @@ +From 4f3b083dc7e9e8b4ab65252ab09e61f3811c1faa Mon Sep 17 00:00:00 2001 +From: Nicolas Morey-Chaisemartin +Date: Mon, 13 Jun 2022 13:19:36 +0200 +Subject: ABI Files + +Signed-off-by: Nicolas Morey-Chaisemartin +--- + ABI/.gitignore | 0 + ABI/efa.dump | 2731 +++++++ + ABI/ibmad.dump | 7398 +++++++++++++++++ + ABI/ibnetdisc.dump | 1145 +++ + ABI/ibumad.dump | 1427 ++++ + ABI/ibverbs.dump | 18607 +++++++++++++++++++++++++++++++++++++++++++ + ABI/mlx4.dump | 3245 ++++++++ + ABI/mlx5.dump | 15572 ++++++++++++++++++++++++++++++++++++ + ABI/rdmacm.dump | 5867 ++++++++++++++ + 9 files changed, 55992 insertions(+) + create mode 100644 ABI/.gitignore + create mode 100644 ABI/efa.dump + create mode 100644 ABI/ibmad.dump + create mode 100644 ABI/ibnetdisc.dump + create mode 100644 ABI/ibumad.dump + create mode 100644 ABI/ibverbs.dump + create mode 100644 ABI/mlx4.dump + create mode 100644 ABI/mlx5.dump + create mode 100644 ABI/rdmacm.dump + +diff --git a/ABI/.gitignore b/ABI/.gitignore +new file mode 100644 +index 0000000..e69de29 +diff --git a/ABI/efa.dump b/ABI/efa.dump +new file mode 100644 +index 0000000..718115a +--- /dev/null ++++ b/ABI/efa.dump +@@ -0,0 +1,2731 @@ ++$VAR1 = { ++ 'ABI_DUMPER_VERSION' => '1.1', ++ 'ABI_DUMP_VERSION' => '3.5', ++ 'Arch' => 'x86_64', ++ 'GccVersion' => '11.1.0', ++ 'Headers' => {}, ++ 'Language' => 'C', ++ 'LibraryName' => 'libefa.so.1.1.41.0', ++ 'LibraryVersion' => 'efa', ++ 'MissedOffsets' => '1', ++ 'MissedRegs' => '1', ++ 'NameSpaces' => {}, ++ 'Needed' => { ++ 'libc.so.6' => 1, ++ 'libibverbs.so.1' => 1, ++ 'libpthread.so.0' => 1 ++ }, ++ 'Sources' => {}, ++ 'SymbolInfo' => { ++ '51330' => { ++ 'Header' => undef, ++ 'Line' => '2183', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibvah', ++ 'type' => '10368' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '51842' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '2203' ++ } ++ }, ++ 'Return' => '121', ++ 'ShortName' => 'efadv_query_ah' ++ }, ++ '65701' => { ++ 'Header' => undef, ++ 'Line' => '1394', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibvctx', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'attr_ex', ++ 'type' => '16510' ++ }, ++ '2' => { ++ 'name' => 'efa_attr', ++ 'type' => '66289' ++ }, ++ '3' => { ++ 'name' => 'inlen', ++ 'type' => '2203' ++ } ++ }, ++ 'Return' => '6244', ++ 'ShortName' => 'efadv_create_qp_ex' ++ }, ++ '66316' => { ++ 'Header' => undef, ++ 'Line' => '1361', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibvpd', ++ 'type' => '7648' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '19485' ++ }, ++ '2' => { ++ 'name' => 'driver_qp_type', ++ 'type' => '2203' ++ } ++ }, ++ 'Return' => '6244', ++ 'ShortName' => 'efadv_create_driver_qp' ++ }, ++ '82747' => { ++ 'Header' => undef, ++ 'Line' => '144', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibvctx', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '83281' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '2203' ++ } ++ }, ++ 'Return' => '121', ++ 'ShortName' => 'efadv_query_device' ++ } ++ }, ++ 'SymbolVersion' => { ++ 'efadv_create_driver_qp' => 'efadv_create_driver_qp@@EFA_1.0', ++ 'efadv_create_qp_ex' => 'efadv_create_qp_ex@@EFA_1.1', ++ 'efadv_query_ah' => 'efadv_query_ah@@EFA_1.1', ++ 'efadv_query_device' => 'efadv_query_device@@EFA_1.1' ++ }, ++ 'Symbols' => { ++ 'libefa.so.1.1.41.0' => { ++ 'efadv_create_driver_qp@@EFA_1.0' => 1, ++ 'efadv_create_qp_ex@@EFA_1.1' => 1, ++ 'efadv_query_ah@@EFA_1.1' => 1, ++ 'efadv_query_device@@EFA_1.1' => 1 ++ } ++ }, ++ 'Target' => 'unix', ++ 'TypeInfo' => { ++ '1' => { ++ 'Name' => 'void', ++ 'Type' => 'Intrinsic' ++ }, ++ '10055' => { ++ 'Header' => undef, ++ 'Line' => '1114', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '2203' ++ }, ++ '2' => { ++ 'name' => 'lkey', ++ 'offset' => '12', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct ibv_sge', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '10117' => { ++ 'Header' => undef, ++ 'Line' => '1130', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '2316' ++ }, ++ '1' => { ++ 'name' => 'invalidate_rkey', ++ 'offset' => '0', ++ 'type' => '2203' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '10154' => { ++ 'Header' => undef, ++ 'Line' => '1135', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '2203' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '10193' => { ++ 'Header' => undef, ++ 'Line' => '1139', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'compare_add', ++ 'offset' => '8', ++ 'type' => '2215' ++ }, ++ '2' => { ++ 'name' => 'swap', ++ 'offset' => '16', ++ 'type' => '2215' ++ }, ++ '3' => { ++ 'name' => 'rkey', ++ 'offset' => '24', ++ 'type' => '2203' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '10260' => { ++ 'Header' => undef, ++ 'Line' => '1145', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ah', ++ 'offset' => '0', ++ 'type' => '10368' ++ }, ++ '1' => { ++ 'name' => 'remote_qpn', ++ 'offset' => '8', ++ 'type' => '2203' ++ }, ++ '2' => { ++ 'name' => 'remote_qkey', ++ 'offset' => '12', ++ 'type' => '2203' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '10312' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '7648' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct ibv_ah', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '10368' => { ++ 'BaseType' => '10312', ++ 'Name' => 'struct ibv_ah*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10374' => { ++ 'Header' => undef, ++ 'Line' => '1134', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rdma', ++ 'offset' => '0', ++ 'type' => '10154' ++ }, ++ '1' => { ++ 'name' => 'atomic', ++ 'offset' => '0', ++ 'type' => '10193' ++ }, ++ '2' => { ++ 'name' => 'ud', ++ 'offset' => '0', ++ 'type' => '10260' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '10423' => { ++ 'Header' => undef, ++ 'Line' => '1152', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_srqn', ++ 'offset' => '0', ++ 'type' => '2203' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '10448' => { ++ 'Header' => undef, ++ 'Line' => '1151', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'xrc', ++ 'offset' => '0', ++ 'type' => '10423' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '10472' => { ++ 'Header' => undef, ++ 'Line' => '1157', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mw', ++ 'offset' => '0', ++ 'type' => '10524' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '2203' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '7269' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '10524' => { ++ 'BaseType' => '7686', ++ 'Name' => 'struct ibv_mw*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10530' => { ++ 'Header' => undef, ++ 'Line' => '1162', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '67' ++ }, ++ '1' => { ++ 'name' => 'hdr_sz', ++ 'offset' => '8', ++ 'type' => '2191' ++ }, ++ '2' => { ++ 'name' => 'mss', ++ 'offset' => '10', ++ 'type' => '2191' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '10583' => { ++ 'Header' => undef, ++ 'Line' => '1156', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'bind_mw', ++ 'offset' => '0', ++ 'type' => '10472' ++ }, ++ '1' => { ++ 'name' => 'tso', ++ 'offset' => '0', ++ 'type' => '10530' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '10620' => { ++ 'Header' => undef, ++ 'Line' => '1120', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '10758' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '10764' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '121' ++ }, ++ '4' => { ++ 'name' => 'opcode', ++ 'offset' => '28', ++ 'type' => '9915' ++ }, ++ '5' => { ++ 'name' => 'send_flags', ++ 'offset' => '32', ++ 'type' => '60' ++ }, ++ '6' => { ++ 'name' => 'unnamed0', ++ 'offset' => '36', ++ 'type' => '10117' ++ }, ++ '7' => { ++ 'name' => 'wr', ++ 'offset' => '40', ++ 'type' => '10374' ++ }, ++ '8' => { ++ 'name' => 'qp_type', ++ 'offset' => '72', ++ 'type' => '10448' ++ }, ++ '9' => { ++ 'name' => 'unnamed1', ++ 'offset' => '80', ++ 'type' => '10583' ++ } ++ }, ++ 'Name' => 'struct ibv_send_wr', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '10758' => { ++ 'BaseType' => '10620', ++ 'Name' => 'struct ibv_send_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10764' => { ++ 'BaseType' => '10055', ++ 'Name' => 'struct ibv_sge*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10770' => { ++ 'Header' => undef, ++ 'Line' => '1170', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '10841' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '10764' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '121' ++ } ++ }, ++ 'Name' => 'struct ibv_recv_wr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '10841' => { ++ 'BaseType' => '10770', ++ 'Name' => 'struct ibv_recv_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '109' => { ++ 'BaseType' => '76', ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Name' => '__uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '11109' => { ++ 'Header' => undef, ++ 'Line' => '1206', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'send_flags', ++ 'offset' => '8', ++ 'type' => '60' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '7269' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '11191' => { ++ 'BaseType' => '10841', ++ 'Name' => 'struct ibv_recv_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12066' => { ++ 'Header' => undef, ++ 'Line' => '1452', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '8', ++ 'type' => '121' ++ }, ++ '2' => { ++ 'name' => 'refcnt', ++ 'offset' => '12', ++ 'type' => '121' ++ } ++ }, ++ 'Name' => 'struct ibv_comp_channel', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '121' => { ++ 'Name' => 'int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '12122' => { ++ 'BaseType' => '12066', ++ 'Name' => 'struct ibv_comp_channel*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '133' => { ++ 'BaseType' => '60', ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Name' => '__uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '13416' => { ++ 'Header' => undef, ++ 'Line' => '1918', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_dummy1', ++ 'offset' => '0', ++ 'type' => '13605' ++ }, ++ '1' => { ++ 'name' => '_dummy2', ++ 'offset' => '8', ++ 'type' => '13622' ++ } ++ }, ++ 'Name' => 'struct _ibv_device_ops', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '13479' => { ++ 'BaseType' => '13485', ++ 'Name' => 'struct ibv_device*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '13485' => { ++ 'Header' => undef, ++ 'Line' => '1928', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_ops', ++ 'offset' => '0', ++ 'type' => '13416' ++ }, ++ '1' => { ++ 'name' => 'node_type', ++ 'offset' => '16', ++ 'type' => '3458' ++ }, ++ '2' => { ++ 'name' => 'transport_type', ++ 'offset' => '20', ++ 'type' => '3525' ++ }, ++ '3' => { ++ 'name' => 'name', ++ 'offset' => '24', ++ 'type' => '4486' ++ }, ++ '4' => { ++ 'name' => 'dev_name', ++ 'offset' => '88', ++ 'type' => '4486' ++ }, ++ '5' => { ++ 'name' => 'dev_path', ++ 'offset' => '152', ++ 'type' => '13657' ++ }, ++ '6' => { ++ 'name' => 'ibdev_path', ++ 'offset' => '408', ++ 'type' => '13657' ++ } ++ }, ++ 'Name' => 'struct ibv_device', ++ 'Size' => '664', ++ 'Type' => 'Struct' ++ }, ++ '13605' => { ++ 'Name' => 'struct ibv_context*(*)(struct ibv_device*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '13479' ++ }, ++ '1' => { ++ 'type' => '121' ++ } ++ }, ++ 'Return' => '3868', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '13622' => { ++ 'Name' => 'void(*)(struct ibv_context*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '3868' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '13657' => { ++ 'BaseType' => '200', ++ 'Name' => 'char[256]', ++ 'Size' => '256', ++ 'Type' => 'Array' ++ }, ++ '13673' => { ++ 'Header' => undef, ++ 'Line' => '1943', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_compat_query_device', ++ 'offset' => '0', ++ 'type' => '14163' ++ }, ++ '1' => { ++ 'name' => '_compat_query_port', ++ 'offset' => '8', ++ 'type' => '14205' ++ }, ++ '10' => { ++ 'name' => '_compat_create_cq', ++ 'offset' => '80', ++ 'type' => '14216' ++ }, ++ '11' => { ++ 'name' => 'poll_cq', ++ 'offset' => '88', ++ 'type' => '14337' ++ }, ++ '12' => { ++ 'name' => 'req_notify_cq', ++ 'offset' => '96', ++ 'type' => '14363' ++ }, ++ '13' => { ++ 'name' => '_compat_cq_event', ++ 'offset' => '104', ++ 'type' => '14216' ++ }, ++ '14' => { ++ 'name' => '_compat_resize_cq', ++ 'offset' => '112', ++ 'type' => '14216' ++ }, ++ '15' => { ++ 'name' => '_compat_destroy_cq', ++ 'offset' => '120', ++ 'type' => '14216' ++ }, ++ '16' => { ++ 'name' => '_compat_create_srq', ++ 'offset' => '128', ++ 'type' => '14216' ++ }, ++ '17' => { ++ 'name' => '_compat_modify_srq', ++ 'offset' => '136', ++ 'type' => '14216' ++ }, ++ '18' => { ++ 'name' => '_compat_query_srq', ++ 'offset' => '144', ++ 'type' => '14216' ++ }, ++ '19' => { ++ 'name' => '_compat_destroy_srq', ++ 'offset' => '152', ++ 'type' => '14216' ++ }, ++ '2' => { ++ 'name' => '_compat_alloc_pd', ++ 'offset' => '16', ++ 'type' => '14216' ++ }, ++ '20' => { ++ 'name' => 'post_srq_recv', ++ 'offset' => '160', ++ 'type' => '14394' ++ }, ++ '21' => { ++ 'name' => '_compat_create_qp', ++ 'offset' => '168', ++ 'type' => '14216' ++ }, ++ '22' => { ++ 'name' => '_compat_query_qp', ++ 'offset' => '176', ++ 'type' => '14216' ++ }, ++ '23' => { ++ 'name' => '_compat_modify_qp', ++ 'offset' => '184', ++ 'type' => '14216' ++ }, ++ '24' => { ++ 'name' => '_compat_destroy_qp', ++ 'offset' => '192', ++ 'type' => '14216' ++ }, ++ '25' => { ++ 'name' => 'post_send', ++ 'offset' => '200', ++ 'type' => '14431' ++ }, ++ '26' => { ++ 'name' => 'post_recv', ++ 'offset' => '208', ++ 'type' => '14462' ++ }, ++ '27' => { ++ 'name' => '_compat_create_ah', ++ 'offset' => '216', ++ 'type' => '14216' ++ }, ++ '28' => { ++ 'name' => '_compat_destroy_ah', ++ 'offset' => '224', ++ 'type' => '14216' ++ }, ++ '29' => { ++ 'name' => '_compat_attach_mcast', ++ 'offset' => '232', ++ 'type' => '14216' ++ }, ++ '3' => { ++ 'name' => '_compat_dealloc_pd', ++ 'offset' => '24', ++ 'type' => '14216' ++ }, ++ '30' => { ++ 'name' => '_compat_detach_mcast', ++ 'offset' => '240', ++ 'type' => '14216' ++ }, ++ '31' => { ++ 'name' => '_compat_async_event', ++ 'offset' => '248', ++ 'type' => '14216' ++ }, ++ '4' => { ++ 'name' => '_compat_reg_mr', ++ 'offset' => '32', ++ 'type' => '14216' ++ }, ++ '5' => { ++ 'name' => '_compat_rereg_mr', ++ 'offset' => '40', ++ 'type' => '14216' ++ }, ++ '6' => { ++ 'name' => '_compat_dereg_mr', ++ 'offset' => '48', ++ 'type' => '14216' ++ }, ++ '7' => { ++ 'name' => 'alloc_mw', ++ 'offset' => '56', ++ 'type' => '14242' ++ }, ++ '8' => { ++ 'name' => 'bind_mw', ++ 'offset' => '64', ++ 'type' => '14279' ++ }, ++ '9' => { ++ 'name' => 'dealloc_mw', ++ 'offset' => '72', ++ 'type' => '14300' ++ } ++ }, ++ 'Name' => 'struct ibv_context_ops', ++ 'Size' => '256', ++ 'Type' => 'Struct' ++ }, ++ '14157' => { ++ 'BaseType' => '3952', ++ 'Name' => 'struct ibv_device_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14163' => { ++ 'Name' => 'int(*)(struct ibv_context*, struct ibv_device_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'type' => '14157' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14194' => { ++ 'BaseType' => '14200', ++ 'Name' => 'struct _compat_ibv_port_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14200' => { ++ 'Name' => 'struct _compat_ibv_port_attr', ++ 'Type' => 'Struct' ++ }, ++ '14205' => { ++ 'Name' => 'int(*)(struct ibv_context*, uint8_t, struct _compat_ibv_port_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'type' => '2179' ++ }, ++ '2' => { ++ 'type' => '14194' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14216' => { ++ 'Name' => 'void*(*)()', ++ 'Return' => '67', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14242' => { ++ 'Name' => 'struct ibv_mw*(*)(struct ibv_pd*, enum ibv_mw_type)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7648' ++ }, ++ '1' => { ++ 'type' => '7654' ++ } ++ }, ++ 'Return' => '10524', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14273' => { ++ 'BaseType' => '11109', ++ 'Name' => 'struct ibv_mw_bind*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14279' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_mw*, struct ibv_mw_bind*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6244' ++ }, ++ '1' => { ++ 'type' => '10524' ++ }, ++ '2' => { ++ 'type' => '14273' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14300' => { ++ 'Name' => 'int(*)(struct ibv_mw*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10524' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14331' => { ++ 'BaseType' => '7081', ++ 'Name' => 'struct ibv_wc*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14337' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int, struct ibv_wc*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6042' ++ }, ++ '1' => { ++ 'type' => '121' ++ }, ++ '2' => { ++ 'type' => '14331' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14363' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6042' ++ }, ++ '1' => { ++ 'type' => '121' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14394' => { ++ 'Name' => 'int(*)(struct ibv_srq*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6362' ++ }, ++ '1' => { ++ 'type' => '10841' ++ }, ++ '2' => { ++ 'type' => '11191' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14425' => { ++ 'BaseType' => '10758', ++ 'Name' => 'struct ibv_send_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14431' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_send_wr*, struct ibv_send_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6244' ++ }, ++ '1' => { ++ 'type' => '10758' ++ }, ++ '2' => { ++ 'type' => '14425' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14462' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6244' ++ }, ++ '1' => { ++ 'type' => '10841' ++ }, ++ '2' => { ++ 'type' => '11191' ++ } ++ }, ++ 'Return' => '121', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '152' => { ++ 'BaseType' => '53', ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Name' => '__uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '16510' => { ++ 'BaseType' => '9030', ++ 'Name' => 'struct ibv_qp_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19485' => { ++ 'BaseType' => '8840', ++ 'Name' => 'struct ibv_qp_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '200' => { ++ 'Name' => 'char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '2179' => { ++ 'BaseType' => '90', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => 'uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '2191' => { ++ 'BaseType' => '109', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => 'uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '2203' => { ++ 'BaseType' => '133', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => 'uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '2215' => { ++ 'BaseType' => '152', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => 'uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '2292' => { ++ 'BaseType' => '60', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__u32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '2304' => { ++ 'BaseType' => '523', ++ 'Header' => undef, ++ 'Line' => '31', ++ 'Name' => '__u64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '2316' => { ++ 'BaseType' => '2292', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__be32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '2328' => { ++ 'BaseType' => '2304', ++ 'Header' => undef, ++ 'Line' => '29', ++ 'Name' => '__be64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '3458' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_NODE_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_NODE_CA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_NODE_SWITCH', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_NODE_ROUTER', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_NODE_RNIC', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_NODE_USNIC', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_NODE_USNIC_UDP', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_NODE_UNSPECIFIED', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_node_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '3525' => { ++ 'Header' => undef, ++ 'Line' => '106', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_TRANSPORT_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_TRANSPORT_IB', ++ 'value' => '0' ++ }, ++ '2' => { ++ 'name' => 'IBV_TRANSPORT_IWARP', ++ 'value' => '1' ++ }, ++ '3' => { ++ 'name' => 'IBV_TRANSPORT_USNIC', ++ 'value' => '2' ++ }, ++ '4' => { ++ 'name' => 'IBV_TRANSPORT_USNIC_UDP', ++ 'value' => '3' ++ }, ++ '5' => { ++ 'name' => 'IBV_TRANSPORT_UNSPECIFIED', ++ 'value' => '4' ++ } ++ }, ++ 'Name' => 'enum ibv_transport_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '3580' => { ++ 'Header' => undef, ++ 'Line' => '155', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_ATOMIC_NONE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_ATOMIC_HCA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_ATOMIC_GLOB', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_atomic_cap', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '3749' => { ++ 'Header' => undef, ++ 'Line' => '1986', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'device', ++ 'offset' => '0', ++ 'type' => '13479' ++ }, ++ '1' => { ++ 'name' => 'ops', ++ 'offset' => '8', ++ 'type' => '13673' ++ }, ++ '2' => { ++ 'name' => 'cmd_fd', ++ 'offset' => '264', ++ 'type' => '121' ++ }, ++ '3' => { ++ 'name' => 'async_fd', ++ 'offset' => '268', ++ 'type' => '121' ++ }, ++ '4' => { ++ 'name' => 'num_comp_vectors', ++ 'offset' => '272', ++ 'type' => '121' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '280', ++ 'type' => '769' ++ }, ++ '6' => { ++ 'name' => 'abi_compat', ++ 'offset' => '320', ++ 'type' => '67' ++ } ++ }, ++ 'Name' => 'struct ibv_context', ++ 'Size' => '328', ++ 'Type' => 'Struct' ++ }, ++ '3868' => { ++ 'BaseType' => '3749', ++ 'Name' => 'struct ibv_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '38762' => { ++ 'BaseType' => '2179', ++ 'Name' => 'uint8_t[6]', ++ 'Size' => '6', ++ 'Type' => 'Array' ++ }, ++ '3952' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fw_ver', ++ 'offset' => '0', ++ 'type' => '4486' ++ }, ++ '1' => { ++ 'name' => 'node_guid', ++ 'offset' => '64', ++ 'type' => '2328' ++ }, ++ '10' => { ++ 'name' => 'device_cap_flags', ++ 'offset' => '116', ++ 'type' => '60' ++ }, ++ '11' => { ++ 'name' => 'max_sge', ++ 'offset' => '120', ++ 'type' => '121' ++ }, ++ '12' => { ++ 'name' => 'max_sge_rd', ++ 'offset' => '124', ++ 'type' => '121' ++ }, ++ '13' => { ++ 'name' => 'max_cq', ++ 'offset' => '128', ++ 'type' => '121' ++ }, ++ '14' => { ++ 'name' => 'max_cqe', ++ 'offset' => '132', ++ 'type' => '121' ++ }, ++ '15' => { ++ 'name' => 'max_mr', ++ 'offset' => '136', ++ 'type' => '121' ++ }, ++ '16' => { ++ 'name' => 'max_pd', ++ 'offset' => '140', ++ 'type' => '121' ++ }, ++ '17' => { ++ 'name' => 'max_qp_rd_atom', ++ 'offset' => '144', ++ 'type' => '121' ++ }, ++ '18' => { ++ 'name' => 'max_ee_rd_atom', ++ 'offset' => '148', ++ 'type' => '121' ++ }, ++ '19' => { ++ 'name' => 'max_res_rd_atom', ++ 'offset' => '152', ++ 'type' => '121' ++ }, ++ '2' => { ++ 'name' => 'sys_image_guid', ++ 'offset' => '72', ++ 'type' => '2328' ++ }, ++ '20' => { ++ 'name' => 'max_qp_init_rd_atom', ++ 'offset' => '156', ++ 'type' => '121' ++ }, ++ '21' => { ++ 'name' => 'max_ee_init_rd_atom', ++ 'offset' => '160', ++ 'type' => '121' ++ }, ++ '22' => { ++ 'name' => 'atomic_cap', ++ 'offset' => '164', ++ 'type' => '3580' ++ }, ++ '23' => { ++ 'name' => 'max_ee', ++ 'offset' => '168', ++ 'type' => '121' ++ }, ++ '24' => { ++ 'name' => 'max_rdd', ++ 'offset' => '172', ++ 'type' => '121' ++ }, ++ '25' => { ++ 'name' => 'max_mw', ++ 'offset' => '176', ++ 'type' => '121' ++ }, ++ '26' => { ++ 'name' => 'max_raw_ipv6_qp', ++ 'offset' => '180', ++ 'type' => '121' ++ }, ++ '27' => { ++ 'name' => 'max_raw_ethy_qp', ++ 'offset' => '184', ++ 'type' => '121' ++ }, ++ '28' => { ++ 'name' => 'max_mcast_grp', ++ 'offset' => '188', ++ 'type' => '121' ++ }, ++ '29' => { ++ 'name' => 'max_mcast_qp_attach', ++ 'offset' => '192', ++ 'type' => '121' ++ }, ++ '3' => { ++ 'name' => 'max_mr_size', ++ 'offset' => '80', ++ 'type' => '2215' ++ }, ++ '30' => { ++ 'name' => 'max_total_mcast_qp_attach', ++ 'offset' => '196', ++ 'type' => '121' ++ }, ++ '31' => { ++ 'name' => 'max_ah', ++ 'offset' => '200', ++ 'type' => '121' ++ }, ++ '32' => { ++ 'name' => 'max_fmr', ++ 'offset' => '204', ++ 'type' => '121' ++ }, ++ '33' => { ++ 'name' => 'max_map_per_fmr', ++ 'offset' => '208', ++ 'type' => '121' ++ }, ++ '34' => { ++ 'name' => 'max_srq', ++ 'offset' => '212', ++ 'type' => '121' ++ }, ++ '35' => { ++ 'name' => 'max_srq_wr', ++ 'offset' => '216', ++ 'type' => '121' ++ }, ++ '36' => { ++ 'name' => 'max_srq_sge', ++ 'offset' => '220', ++ 'type' => '121' ++ }, ++ '37' => { ++ 'name' => 'max_pkeys', ++ 'offset' => '224', ++ 'type' => '2191' ++ }, ++ '38' => { ++ 'name' => 'local_ca_ack_delay', ++ 'offset' => '226', ++ 'type' => '2179' ++ }, ++ '39' => { ++ 'name' => 'phys_port_cnt', ++ 'offset' => '227', ++ 'type' => '2179' ++ }, ++ '4' => { ++ 'name' => 'page_size_cap', ++ 'offset' => '88', ++ 'type' => '2215' ++ }, ++ '5' => { ++ 'name' => 'vendor_id', ++ 'offset' => '96', ++ 'type' => '2203' ++ }, ++ '6' => { ++ 'name' => 'vendor_part_id', ++ 'offset' => '100', ++ 'type' => '2203' ++ }, ++ '7' => { ++ 'name' => 'hw_ver', ++ 'offset' => '104', ++ 'type' => '2203' ++ }, ++ '8' => { ++ 'name' => 'max_qp', ++ 'offset' => '108', ++ 'type' => '121' ++ }, ++ '9' => { ++ 'name' => 'max_qp_wr', ++ 'offset' => '112', ++ 'type' => '121' ++ } ++ }, ++ 'Name' => 'struct ibv_device_attr', ++ 'Size' => '232', ++ 'Type' => 'Struct' ++ }, ++ '41' => { ++ 'BaseType' => '53', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => 'size_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '4486' => { ++ 'BaseType' => '200', ++ 'Name' => 'char[64]', ++ 'Size' => '64', ++ 'Type' => 'Array' ++ }, ++ '49201' => { ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'driver_qp_type', ++ 'offset' => '8', ++ 'type' => '2203' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '12', ++ 'type' => '49254' ++ } ++ }, ++ 'Name' => 'struct efadv_qp_init_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '49254' => { ++ 'BaseType' => '2179', ++ 'Name' => 'uint8_t[4]', ++ 'Size' => '4', ++ 'Type' => 'Array' ++ }, ++ '49297' => { ++ 'Header' => undef, ++ 'Line' => '43', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'max_sq_wr', ++ 'offset' => '8', ++ 'type' => '2203' ++ }, ++ '2' => { ++ 'name' => 'max_rq_wr', ++ 'offset' => '12', ++ 'type' => '2203' ++ }, ++ '3' => { ++ 'name' => 'max_sq_sge', ++ 'offset' => '16', ++ 'type' => '2191' ++ }, ++ '4' => { ++ 'name' => 'max_rq_sge', ++ 'offset' => '18', ++ 'type' => '2191' ++ }, ++ '5' => { ++ 'name' => 'inline_buf_size', ++ 'offset' => '20', ++ 'type' => '2191' ++ }, ++ '6' => { ++ 'name' => 'reserved', ++ 'offset' => '22', ++ 'type' => '49428' ++ }, ++ '7' => { ++ 'name' => 'device_caps', ++ 'offset' => '24', ++ 'type' => '2203' ++ }, ++ '8' => { ++ 'name' => 'max_rdma_size', ++ 'offset' => '28', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct efadv_device_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '49428' => { ++ 'BaseType' => '2179', ++ 'Name' => 'uint8_t[2]', ++ 'Size' => '2', ++ 'Type' => 'Array' ++ }, ++ '49444' => { ++ 'Header' => undef, ++ 'Line' => '59', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'ahn', ++ 'offset' => '8', ++ 'type' => '2191' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '10', ++ 'type' => '38762' ++ } ++ }, ++ 'Name' => 'struct efadv_ah_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '51842' => { ++ 'BaseType' => '49444', ++ 'Name' => 'struct efadv_ah_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '523' => { ++ 'Name' => 'unsigned long long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '53' => { ++ 'Name' => 'unsigned long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '5901' => { ++ 'Header' => undef, ++ 'Line' => '1458', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'offset' => '8', ++ 'type' => '12122' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'offset' => '16', ++ 'type' => '67' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '2203' ++ }, ++ '4' => { ++ 'name' => 'cqe', ++ 'offset' => '28', ++ 'type' => '121' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '769' ++ }, ++ '6' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '843' ++ }, ++ '7' => { ++ 'name' => 'comp_events_completed', ++ 'offset' => '120', ++ 'type' => '2203' ++ }, ++ '8' => { ++ 'name' => 'async_events_completed', ++ 'offset' => '124', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct ibv_cq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '60' => { ++ 'Name' => 'unsigned int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '6042' => { ++ 'BaseType' => '5901', ++ 'Name' => 'struct ibv_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6048' => { ++ 'Header' => undef, ++ 'Line' => '1252', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'qp_context', ++ 'offset' => '8', ++ 'type' => '67' ++ }, ++ '10' => { ++ 'name' => 'mutex', ++ 'offset' => '64', ++ 'type' => '769' ++ }, ++ '11' => { ++ 'name' => 'cond', ++ 'offset' => '104', ++ 'type' => '843' ++ }, ++ '12' => { ++ 'name' => 'events_completed', ++ 'offset' => '152', ++ 'type' => '2203' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '7648' ++ }, ++ '3' => { ++ 'name' => 'send_cq', ++ 'offset' => '24', ++ 'type' => '6042' ++ }, ++ '4' => { ++ 'name' => 'recv_cq', ++ 'offset' => '32', ++ 'type' => '6042' ++ }, ++ '5' => { ++ 'name' => 'srq', ++ 'offset' => '40', ++ 'type' => '6362' ++ }, ++ '6' => { ++ 'name' => 'handle', ++ 'offset' => '48', ++ 'type' => '2203' ++ }, ++ '7' => { ++ 'name' => 'qp_num', ++ 'offset' => '52', ++ 'type' => '2203' ++ }, ++ '8' => { ++ 'name' => 'state', ++ 'offset' => '56', ++ 'type' => '9359' ++ }, ++ '9' => { ++ 'name' => 'qp_type', ++ 'offset' => '60', ++ 'type' => '8693' ++ } ++ }, ++ 'Name' => 'struct ibv_qp', ++ 'Size' => '160', ++ 'Type' => 'Struct' ++ }, ++ '6244' => { ++ 'BaseType' => '6048', ++ 'Name' => 'struct ibv_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6250' => { ++ 'Header' => undef, ++ 'Line' => '1212', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'srq_context', ++ 'offset' => '8', ++ 'type' => '67' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '7648' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '2203' ++ }, ++ '4' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '769' ++ }, ++ '5' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '843' ++ }, ++ '6' => { ++ 'name' => 'events_completed', ++ 'offset' => '120', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct ibv_srq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '6362' => { ++ 'BaseType' => '6250', ++ 'Name' => 'struct ibv_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6612' => { ++ 'Header' => undef, ++ 'Line' => '483', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SUCCESS', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_LOC_LEN_ERR', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_REM_ACCESS_ERR', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_REM_OP_ERR', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_RETRY_EXC_ERR', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_RNR_RETRY_EXC_ERR', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_LOC_RDD_VIOL_ERR', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_REM_INV_RD_REQ_ERR', ++ 'value' => '15' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_REM_ABORT_ERR', ++ 'value' => '16' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_INV_EECN_ERR', ++ 'value' => '17' ++ }, ++ '18' => { ++ 'name' => 'IBV_WC_INV_EEC_STATE_ERR', ++ 'value' => '18' ++ }, ++ '19' => { ++ 'name' => 'IBV_WC_FATAL_ERR', ++ 'value' => '19' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_LOC_QP_OP_ERR', ++ 'value' => '2' ++ }, ++ '20' => { ++ 'name' => 'IBV_WC_RESP_TIMEOUT_ERR', ++ 'value' => '20' ++ }, ++ '21' => { ++ 'name' => 'IBV_WC_GENERAL_ERR', ++ 'value' => '21' ++ }, ++ '22' => { ++ 'name' => 'IBV_WC_TM_ERR', ++ 'value' => '22' ++ }, ++ '23' => { ++ 'name' => 'IBV_WC_TM_RNDV_INCOMPLETE', ++ 'value' => '23' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_LOC_EEC_OP_ERR', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_LOC_PROT_ERR', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_WR_FLUSH_ERR', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_MW_BIND_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_BAD_RESP_ERR', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_LOC_ACCESS_ERR', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_REM_INV_REQ_ERR', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_status', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '66289' => { ++ 'BaseType' => '49201', ++ 'Name' => 'struct efadv_qp_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '67' => { ++ 'BaseType' => '1', ++ 'Name' => 'void*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6776' => { ++ 'Header' => undef, ++ 'Line' => '511', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SEND', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_RDMA_WRITE', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_TM_ADD', ++ 'value' => '130' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_TM_DEL', ++ 'value' => '131' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_TM_SYNC', ++ 'value' => '132' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_TM_RECV', ++ 'value' => '133' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_TM_NO_TAG', ++ 'value' => '134' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_DRIVER1', ++ 'value' => '135' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_DRIVER2', ++ 'value' => '136' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_DRIVER3', ++ 'value' => '137' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_RDMA_READ', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_COMP_SWAP', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_FETCH_ADD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_BIND_MW', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_LOCAL_INV', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_TSO', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_RECV', ++ 'value' => '128' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_RECV_RDMA_WITH_IMM', ++ 'value' => '129' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '69' => { ++ 'Name' => 'unsigned char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '7044' => { ++ 'Header' => undef, ++ 'Line' => '594', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '2316' ++ }, ++ '1' => { ++ 'name' => 'invalidated_rkey', ++ 'offset' => '0', ++ 'type' => '2203' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '7081' => { ++ 'Header' => undef, ++ 'Line' => '585', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2215' ++ }, ++ '1' => { ++ 'name' => 'status', ++ 'offset' => '8', ++ 'type' => '6612' ++ }, ++ '10' => { ++ 'name' => 'slid', ++ 'offset' => '42', ++ 'type' => '2191' ++ }, ++ '11' => { ++ 'name' => 'sl', ++ 'offset' => '44', ++ 'type' => '2179' ++ }, ++ '12' => { ++ 'name' => 'dlid_path_bits', ++ 'offset' => '45', ++ 'type' => '2179' ++ }, ++ '2' => { ++ 'name' => 'opcode', ++ 'offset' => '12', ++ 'type' => '6776' ++ }, ++ '3' => { ++ 'name' => 'vendor_err', ++ 'offset' => '16', ++ 'type' => '2203' ++ }, ++ '4' => { ++ 'name' => 'byte_len', ++ 'offset' => '20', ++ 'type' => '2203' ++ }, ++ '5' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '7044' ++ }, ++ '6' => { ++ 'name' => 'qp_num', ++ 'offset' => '28', ++ 'type' => '2203' ++ }, ++ '7' => { ++ 'name' => 'src_qp', ++ 'offset' => '32', ++ 'type' => '2203' ++ }, ++ '8' => { ++ 'name' => 'wc_flags', ++ 'offset' => '36', ++ 'type' => '60' ++ }, ++ '9' => { ++ 'name' => 'pkey_index', ++ 'offset' => '40', ++ 'type' => '2191' ++ } ++ }, ++ 'Name' => 'struct ibv_wc', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '7269' => { ++ 'Header' => undef, ++ 'Line' => '619', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mr', ++ 'offset' => '0', ++ 'type' => '7456' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'offset' => '8', ++ 'type' => '2215' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'offset' => '16', ++ 'type' => '2215' ++ }, ++ '3' => { ++ 'name' => 'mw_access_flags', ++ 'offset' => '24', ++ 'type' => '60' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind_info', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '7344' => { ++ 'Header' => undef, ++ 'Line' => '662', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '7648' ++ }, ++ '2' => { ++ 'name' => 'addr', ++ 'offset' => '16', ++ 'type' => '67' ++ }, ++ '3' => { ++ 'name' => 'length', ++ 'offset' => '24', ++ 'type' => '41' ++ }, ++ '4' => { ++ 'name' => 'handle', ++ 'offset' => '32', ++ 'type' => '2203' ++ }, ++ '5' => { ++ 'name' => 'lkey', ++ 'offset' => '36', ++ 'type' => '2203' ++ }, ++ '6' => { ++ 'name' => 'rkey', ++ 'offset' => '40', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct ibv_mr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '7456' => { ++ 'BaseType' => '7344', ++ 'Name' => 'struct ibv_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7462' => { ++ 'Header' => undef, ++ 'Line' => '626', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct ibv_pd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '76' => { ++ 'Name' => 'unsigned short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ }, ++ '7619' => { ++ 'Header' => undef, ++ 'Line' => '651', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ } ++ }, ++ 'Name' => 'struct ibv_xrcd', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '7648' => { ++ 'BaseType' => '7462', ++ 'Name' => 'struct ibv_pd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7654' => { ++ 'Header' => undef, ++ 'Line' => '672', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MW_TYPE_1', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'IBV_MW_TYPE_2', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_mw_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '7686' => { ++ 'Header' => undef, ++ 'Line' => '677', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '7648' ++ }, ++ '2' => { ++ 'name' => 'rkey', ++ 'offset' => '16', ++ 'type' => '2203' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '20', ++ 'type' => '2203' ++ }, ++ '4' => { ++ 'name' => 'type', ++ 'offset' => '24', ++ 'type' => '7654' ++ } ++ }, ++ 'Name' => 'struct ibv_mw', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '8273' => { ++ 'BaseType' => '7619', ++ 'Name' => 'struct ibv_xrcd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '83281' => { ++ 'BaseType' => '49297', ++ 'Name' => 'struct efadv_device_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '8559' => { ++ 'Header' => undef, ++ 'Line' => '874', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '3868' ++ }, ++ '1' => { ++ 'name' => 'ind_tbl_handle', ++ 'offset' => '8', ++ 'type' => '121' ++ }, ++ '2' => { ++ 'name' => 'ind_tbl_num', ++ 'offset' => '12', ++ 'type' => '121' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct ibv_rwq_ind_table', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '8693' => { ++ 'Header' => undef, ++ 'Line' => '895', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPT_RC', ++ 'value' => '2' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPT_UC', ++ 'value' => '3' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPT_UD', ++ 'value' => '4' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPT_RAW_PACKET', ++ 'value' => '8' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPT_XRC_SEND', ++ 'value' => '9' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPT_XRC_RECV', ++ 'value' => '10' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPT_DRIVER', ++ 'value' => '255' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '8755' => { ++ 'Header' => undef, ++ 'Line' => '905', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '0', ++ 'type' => '2203' ++ }, ++ '1' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '4', ++ 'type' => '2203' ++ }, ++ '2' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '8', ++ 'type' => '2203' ++ }, ++ '3' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '12', ++ 'type' => '2203' ++ }, ++ '4' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '16', ++ 'type' => '2203' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_cap', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '8840' => { ++ 'Header' => undef, ++ 'Line' => '913', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '67' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '6042' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '6042' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '6362' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '8755' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '8693' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '121' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '8953' => { ++ 'Header' => undef, ++ 'Line' => '955', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rx_hash_function', ++ 'offset' => '0', ++ 'type' => '2179' ++ }, ++ '1' => { ++ 'name' => 'rx_hash_key_len', ++ 'offset' => '1', ++ 'type' => '2179' ++ }, ++ '2' => { ++ 'name' => 'rx_hash_key', ++ 'offset' => '8', ++ 'type' => '9024' ++ }, ++ '3' => { ++ 'name' => 'rx_hash_fields_mask', ++ 'offset' => '16', ++ 'type' => '2215' ++ } ++ }, ++ 'Name' => 'struct ibv_rx_hash_conf', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '90' => { ++ 'BaseType' => '69', ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Name' => '__uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '9024' => { ++ 'BaseType' => '2179', ++ 'Name' => 'uint8_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9030' => { ++ 'Header' => undef, ++ 'Line' => '964', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '67' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '6042' ++ }, ++ '10' => { ++ 'name' => 'create_flags', ++ 'offset' => '80', ++ 'type' => '2203' ++ }, ++ '11' => { ++ 'name' => 'max_tso_header', ++ 'offset' => '84', ++ 'type' => '2191' ++ }, ++ '12' => { ++ 'name' => 'rwq_ind_tbl', ++ 'offset' => '88', ++ 'type' => '9268' ++ }, ++ '13' => { ++ 'name' => 'rx_hash_conf', ++ 'offset' => '96', ++ 'type' => '8953' ++ }, ++ '14' => { ++ 'name' => 'source_qpn', ++ 'offset' => '120', ++ 'type' => '2203' ++ }, ++ '15' => { ++ 'name' => 'send_ops_flags', ++ 'offset' => '128', ++ 'type' => '2215' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '6042' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '6362' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '8755' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '8693' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '121' ++ }, ++ '7' => { ++ 'name' => 'comp_mask', ++ 'offset' => '60', ++ 'type' => '2203' ++ }, ++ '8' => { ++ 'name' => 'pd', ++ 'offset' => '64', ++ 'type' => '7648' ++ }, ++ '9' => { ++ 'name' => 'xrcd', ++ 'offset' => '72', ++ 'type' => '8273' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr_ex', ++ 'Size' => '136', ++ 'Type' => 'Struct' ++ }, ++ '9268' => { ++ 'BaseType' => '8559', ++ 'Name' => 'struct ibv_rwq_ind_table*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9359' => { ++ 'Header' => undef, ++ 'Line' => '1033', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPS_RESET', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPS_INIT', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPS_RTR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPS_RTS', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPS_SQD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPS_SQE', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPS_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_QPS_UNKNOWN', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '9915' => { ++ 'Header' => undef, ++ 'Line' => '1086', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WR_RDMA_WRITE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WR_RDMA_WRITE_WITH_IMM', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WR_TSO', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WR_DRIVER1', ++ 'value' => '11' ++ }, ++ '2' => { ++ 'name' => 'IBV_WR_SEND', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WR_SEND_WITH_IMM', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WR_RDMA_READ', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WR_ATOMIC_CMP_AND_SWP', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WR_ATOMIC_FETCH_AND_ADD', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WR_LOCAL_INV', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WR_BIND_MW', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WR_SEND_WITH_INV', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wr_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ } ++ }, ++ 'UndefinedSymbols' => { ++ 'libefa.so.1.1.41.0' => { ++ '_ITM_deregisterTMCloneTable' => 0, ++ '_ITM_registerTMCloneTable' => 0, ++ '__cxa_finalize@GLIBC_2.2.5' => 0, ++ '__errno_location@GLIBC_2.2.5' => 0, ++ '__gmon_start__' => 0, ++ '__snprintf_chk@GLIBC_2.3.4' => 0, ++ '__stack_chk_fail@GLIBC_2.4' => 0, ++ '__verbs_log@IBVERBS_PRIVATE_34' => 0, ++ '_verbs_init_and_alloc_context@IBVERBS_PRIVATE_34' => 0, ++ 'calloc@GLIBC_2.2.5' => 0, ++ 'free@GLIBC_2.2.5' => 0, ++ 'ibv_cmd_alloc_pd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_ah@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_cq_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_qp_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_dealloc_pd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_dereg_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_ah@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_cq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_get_context@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_device_any@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_port@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_reg_dmabuf_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_reg_mr@IBVERBS_PRIVATE_34' => 0, ++ 'malloc@GLIBC_2.2.5' => 0, ++ 'memcpy@GLIBC_2.14' => 0, ++ 'memset@GLIBC_2.2.5' => 0, ++ 'mmap@GLIBC_2.2.5' => 0, ++ 'munmap@GLIBC_2.2.5' => 0, ++ 'pthread_spin_destroy@GLIBC_2.2.5' => 0, ++ 'pthread_spin_init@GLIBC_2.2.5' => 0, ++ 'pthread_spin_lock@GLIBC_2.2.5' => 0, ++ 'pthread_spin_unlock@GLIBC_2.2.5' => 0, ++ 'sysconf@GLIBC_2.2.5' => 0, ++ 'verbs_register_driver_34@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_set_ops@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_uninit_context@IBVERBS_PRIVATE_34' => 0 ++ } ++ }, ++ 'WordSize' => '8' ++ }; +diff --git a/ABI/ibmad.dump b/ABI/ibmad.dump +new file mode 100644 +index 0000000..f49a090 +--- /dev/null ++++ b/ABI/ibmad.dump +@@ -0,0 +1,7398 @@ ++$VAR1 = { ++ 'ABI_DUMPER_VERSION' => '1.1', ++ 'ABI_DUMP_VERSION' => '3.5', ++ 'Arch' => 'x86_64', ++ 'GccVersion' => '11.1.0', ++ 'Headers' => {}, ++ 'Language' => 'C', ++ 'LibraryName' => 'libibmad.so.5.3.41.0', ++ 'LibraryVersion' => 'ibmad', ++ 'MissedOffsets' => '1', ++ 'MissedRegs' => '1', ++ 'NameSpaces' => {}, ++ 'Needed' => { ++ 'libc.so.6' => 1, ++ 'libibumad.so.3' => 1 ++ }, ++ 'Sources' => {}, ++ 'SymbolInfo' => { ++ '103861' => { ++ 'Header' => undef, ++ 'Line' => '112', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port', ++ 'type' => '1912' ++ }, ++ '1' => { ++ 'name' => 'class', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_rpc_class_agent' ++ }, ++ '103973' => { ++ 'Header' => undef, ++ 'Line' => '102', ++ 'Return' => '71', ++ 'ShortName' => 'madrpc_portid' ++ }, ++ '104003' => { ++ 'Header' => undef, ++ 'Line' => '97', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port', ++ 'type' => '1912' ++ }, ++ '1' => { ++ 'name' => 'timeout', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_rpc_set_timeout' ++ }, ++ '104062' => { ++ 'Header' => undef, ++ 'Line' => '92', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port', ++ 'type' => '1912' ++ }, ++ '1' => { ++ 'name' => 'retries', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_rpc_set_retries' ++ }, ++ '104121' => { ++ 'Header' => undef, ++ 'Line' => '86', ++ 'Param' => { ++ '0' => { ++ 'name' => 'timeout', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'madrpc_set_timeout' ++ }, ++ '104170' => { ++ 'Header' => undef, ++ 'Line' => '79', ++ 'Param' => { ++ '0' => { ++ 'name' => 'retries', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'madrpc_set_retries' ++ }, ++ '104219' => { ++ 'Header' => undef, ++ 'Line' => '73', ++ 'Param' => { ++ '0' => { ++ 'name' => 'madbuf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'len', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'madrpc_save_mad' ++ }, ++ '104278' => { ++ 'Header' => undef, ++ 'Line' => '68', ++ 'Param' => { ++ '0' => { ++ 'name' => 'set', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'madrpc_show_errors' ++ }, ++ '111530' => { ++ 'Header' => undef, ++ 'Line' => '164', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ }, ++ '1' => { ++ 'name' => 'guid', ++ 'type' => '269' ++ }, ++ '2' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_node_query_via' ++ }, ++ '112070' => { ++ 'Header' => undef, ++ 'Line' => '139', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srcgid', ++ 'type' => '2937' ++ }, ++ '1' => { ++ 'name' => 'destgid', ++ 'type' => '2937' ++ }, ++ '2' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_path_query' ++ }, ++ '112847' => { ++ 'Header' => undef, ++ 'Line' => '79', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'sa', ++ 'type' => '113003' ++ }, ++ '3' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'sa_call' ++ }, ++ '113009' => { ++ 'Header' => undef, ++ 'Line' => '44', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibmad_port', ++ 'type' => '1971' ++ }, ++ '1' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '2' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'sa', ++ 'type' => '113003' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'sa_rpc_call' ++ }, ++ '11931' => { ++ 'Header' => undef, ++ 'Line' => '1258', ++ 'Param' => { ++ '0' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '2' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'val', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '227', ++ 'ShortName' => 'mad_dump_field' ++ }, ++ '11969' => { ++ 'Header' => undef, ++ 'Line' => '1459', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '2937' ++ }, ++ '1' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_decode_field' ++ }, ++ '12078' => { ++ 'Header' => undef, ++ 'Line' => '1714', ++ 'Param' => { ++ '0' => { ++ 'name' => 'file', ++ 'type' => '795' ++ }, ++ '1' => { ++ 'name' => 'msg', ++ 'type' => '78' ++ }, ++ '2' => { ++ 'name' => 'p', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'size', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'xdump' ++ }, ++ '121056' => { ++ 'Header' => undef, ++ 'Line' => '193', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_free' ++ }, ++ '121175' => { ++ 'Header' => undef, ++ 'Line' => '188', ++ 'Return' => '220', ++ 'ShortName' => 'mad_alloc' ++ }, ++ '121287' => { ++ 'Header' => undef, ++ 'Line' => '171', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'timeout', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'mad_receive_via' ++ }, ++ '121907' => { ++ 'Header' => undef, ++ 'Line' => '166', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'timeout', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'mad_receive' ++ }, ++ '122010' => { ++ 'Header' => undef, ++ 'Line' => '87', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'rstatus', ++ 'type' => '257' ++ }, ++ '3' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_respond_via' ++ }, ++ '123366' => { ++ 'Header' => undef, ++ 'Line' => '82', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'rstatus', ++ 'type' => '257' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_respond' ++ }, ++ '123831' => { ++ 'Header' => undef, ++ 'Line' => '47', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rpc', ++ 'type' => '121019' ++ }, ++ '1' => { ++ 'name' => 'dport', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'rmpp', ++ 'type' => '121025' ++ }, ++ '3' => { ++ 'name' => 'data', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_send' ++ }, ++ '12437' => { ++ 'Header' => undef, ++ 'Line' => '1195', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_portinfo_ext' ++ }, ++ '126035' => { ++ 'Header' => undef, ++ 'Line' => '141', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'attrid', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'mod', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'smp_query' ++ }, ++ '126434' => { ++ 'Header' => undef, ++ 'Line' => '101', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'attrid', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'mod', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ }, ++ '5' => { ++ 'name' => 'rstatus', ++ 'type' => '5723' ++ }, ++ '6' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'smp_query_status_via' ++ }, ++ '126882' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Param' => { ++ '0' => { ++ 'name' => 'data', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'attrid', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'mod', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'smp_set' ++ }, ++ '127066' => { ++ 'Header' => undef, ++ 'Line' => '87', ++ 'Param' => { ++ '0' => { ++ 'name' => 'data', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'attrid', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'mod', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ }, ++ '5' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'smp_set_via' ++ }, ++ '127275' => { ++ 'Header' => undef, ++ 'Line' => '55', ++ 'Param' => { ++ '0' => { ++ 'name' => 'data', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'attrid', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'mod', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ }, ++ '5' => { ++ 'name' => 'rstatus', ++ 'type' => '5723' ++ }, ++ '6' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'smp_set_status_via' ++ }, ++ '12740' => { ++ 'Header' => undef, ++ 'Line' => '1189', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_classportinfo' ++ }, ++ '127717' => { ++ 'Header' => undef, ++ 'Line' => '50', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '269', ++ 'ShortName' => 'smp_mkey_get' ++ }, ++ '127766' => { ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ }, ++ '1' => { ++ 'name' => 'mkey', ++ 'type' => '269' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'smp_mkey_set' ++ }, ++ '12903' => { ++ 'Header' => undef, ++ 'Line' => '1183', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_timestamp' ++ }, ++ '130135' => { ++ 'Header' => undef, ++ 'Line' => '58', ++ 'Param' => { ++ '0' => { ++ 'name' => 'data', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'call', ++ 'type' => '130891' ++ }, ++ '3' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'ib_vendor_call_via' ++ }, ++ '13068' => { ++ 'Header' => undef, ++ 'Line' => '1177', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestioncontroltableentry' ++ }, ++ '130918' => { ++ 'Header' => undef, ++ 'Line' => '52', ++ 'Param' => { ++ '0' => { ++ 'name' => 'data', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'call', ++ 'type' => '130891' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'ib_vendor_call' ++ }, ++ '13233' => { ++ 'Header' => undef, ++ 'Line' => '1171', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestioncontroltable' ++ }, ++ '13398' => { ++ 'Header' => undef, ++ 'Line' => '1165', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_cacongestionentry' ++ }, ++ '13563' => { ++ 'Header' => undef, ++ 'Line' => '1159', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_cacongestionsetting' ++ }, ++ '13728' => { ++ 'Header' => undef, ++ 'Line' => '1153', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_switchportcongestionsettingelement' ++ }, ++ '13893' => { ++ 'Header' => undef, ++ 'Line' => '1147', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_switchcongestionsetting' ++ }, ++ '14058' => { ++ 'Header' => undef, ++ 'Line' => '1141', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestionlogentryca' ++ }, ++ '14223' => { ++ 'Header' => undef, ++ 'Line' => '1135', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestionlogca' ++ }, ++ '14388' => { ++ 'Header' => undef, ++ 'Line' => '1129', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestionlogentryswitch' ++ }, ++ '14553' => { ++ 'Header' => undef, ++ 'Line' => '1123', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestionlogswitch' ++ }, ++ '14718' => { ++ 'Header' => undef, ++ 'Line' => '1117', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestionlog' ++ }, ++ '14883' => { ++ 'Header' => undef, ++ 'Line' => '1111', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestionkeyinfo' ++ }, ++ '15048' => { ++ 'Header' => undef, ++ 'Line' => '1105', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_cc_congestioninfo' ++ }, ++ '15213' => { ++ 'Header' => undef, ++ 'Line' => '1099', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_mlnx_ext_port_info' ++ }, ++ '15378' => { ++ 'Header' => undef, ++ 'Line' => '1086', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_vl_xmit_time_cong' ++ }, ++ '15598' => { ++ 'Header' => undef, ++ 'Line' => '1073', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_xmit_con_ctrl' ++ }, ++ '15818' => { ++ 'Header' => undef, ++ 'Line' => '1060', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_sl_rcv_becn' ++ }, ++ '16038' => { ++ 'Header' => undef, ++ 'Line' => '1047', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_sl_rcv_fecn' ++ }, ++ '16258' => { ++ 'Header' => undef, ++ 'Line' => '1033', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_rcv_con_ctrl' ++ }, ++ '16478' => { ++ 'Header' => undef, ++ 'Line' => '1020', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_sw_port_vl_congestion' ++ }, ++ '16698' => { ++ 'Header' => undef, ++ 'Line' => '1007', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_port_vl_xmit_wait_counters' ++ }, ++ '16918' => { ++ 'Header' => undef, ++ 'Line' => '994', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_port_vl_xmit_flow_ctl_update_errors' ++ }, ++ '17138' => { ++ 'Header' => undef, ++ 'Line' => '981', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_port_vl_op_data' ++ }, ++ '17358' => { ++ 'Header' => undef, ++ 'Line' => '968', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_port_vl_op_packet' ++ }, ++ '17578' => { ++ 'Header' => undef, ++ 'Line' => '955', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_port_flow_ctl_counters' ++ }, ++ '17798' => { ++ 'Header' => undef, ++ 'Line' => '942', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_port_op_rcv_counters' ++ }, ++ '18018' => { ++ 'Header' => undef, ++ 'Line' => '937', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_port_ext_speeds_counters' ++ }, ++ '1805' => { ++ 'Data' => 1, ++ 'Header' => undef, ++ 'Line' => '1676', ++ 'Return' => '71', ++ 'ShortName' => 'ibdebug' ++ }, ++ '18183' => { ++ 'Header' => undef, ++ 'Line' => '930', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_port_ext_speeds_counters_rsfec_active' ++ }, ++ '18348' => { ++ 'Header' => undef, ++ 'Line' => '925', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_portsamples_result' ++ }, ++ '1851' => { ++ 'Header' => undef, ++ 'Line' => '1521', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rpc', ++ 'type' => '121019' ++ }, ++ '1' => { ++ 'name' => 'dport', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'rmpp', ++ 'type' => '121025' ++ }, ++ '3' => { ++ 'name' => 'data', ++ 'type' => '220' ++ }, ++ '4' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_send_via' ++ }, ++ '18513' => { ++ 'Header' => undef, ++ 'Line' => '920', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_portsamples_control' ++ }, ++ '18678' => { ++ 'Header' => undef, ++ 'Line' => '907', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_rcv_err' ++ }, ++ '18898' => { ++ 'Header' => undef, ++ 'Line' => '894', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_xmt_disc' ++ }, ++ '19118' => { ++ 'Header' => undef, ++ 'Line' => '881', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_rcv_sl' ++ }, ++ '1928' => { ++ 'Header' => undef, ++ 'Line' => '1485', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port', ++ 'type' => '1971' ++ }, ++ '1' => { ++ 'name' => 'rpc', ++ 'type' => '96745' ++ }, ++ '2' => { ++ 'name' => 'dport', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'payload', ++ 'type' => '220' ++ }, ++ '4' => { ++ 'name' => 'rcvdata', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'mad_rpc' ++ }, ++ '19337' => { ++ 'Header' => undef, ++ 'Line' => '868', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_xmt_sl' ++ }, ++ '19555' => { ++ 'Header' => undef, ++ 'Line' => '856', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters_ext' ++ }, ++ '19775' => { ++ 'Header' => undef, ++ 'Line' => '838', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_perfcounters' ++ }, ++ '1990' => { ++ 'Header' => undef, ++ 'Line' => '1434', ++ 'Param' => { ++ '0' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ } ++ }, ++ 'Return' => '227', ++ 'ShortName' => 'portid2str' ++ }, ++ '20067' => { ++ 'Header' => undef, ++ 'Line' => '833', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_switchinfo' ++ }, ++ '2013' => { ++ 'Header' => undef, ++ 'Line' => '47', ++ 'Param' => { ++ '0' => { ++ 'name' => 'data', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'call', ++ 'type' => '2943' ++ }, ++ '3' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'bm_call_via' ++ }, ++ '20230' => { ++ 'Header' => undef, ++ 'Line' => '828', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_portstates' ++ }, ++ '20393' => { ++ 'Header' => undef, ++ 'Line' => '816', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_portinfo' ++ }, ++ '20612' => { ++ 'Header' => undef, ++ 'Line' => '811', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_nodeinfo' ++ }, ++ '20775' => { ++ 'Header' => undef, ++ 'Line' => '803', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_nodedesc' ++ }, ++ '20994' => { ++ 'Header' => undef, ++ 'Line' => '797', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'start', ++ 'type' => '71' ++ }, ++ '5' => { ++ 'name' => 'end', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_fields' ++ }, ++ '21549' => { ++ 'Header' => undef, ++ 'Line' => '745', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'num', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_vlarbitration' ++ }, ++ '22448' => { ++ 'Header' => undef, ++ 'Line' => '730', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_sltovl' ++ }, ++ '23134' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_node_type' ++ }, ++ '23746' => { ++ 'Header' => undef, ++ 'Line' => '1639', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_string' ++ }, ++ '24014' => { ++ 'Header' => undef, ++ 'Line' => '1639', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_array' ++ }, ++ '24274' => { ++ 'Header' => undef, ++ 'Line' => '659', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_bitfield' ++ }, ++ '24514' => { ++ 'Header' => undef, ++ 'Line' => '1644', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_portcapmask2' ++ }, ++ '25364' => { ++ 'Header' => undef, ++ 'Line' => '1644', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_portcapmask' ++ }, ++ '27240' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_opervls' ++ }, ++ '28178' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_vlcap' ++ }, ++ '29003' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_mtu' ++ }, ++ '29828' => { ++ 'Header' => undef, ++ 'Line' => '1644', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_physportstate' ++ }, ++ '30992' => { ++ 'Header' => undef, ++ 'Line' => '1640', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkdowndefstate' ++ }, ++ '31604' => { ++ 'Header' => undef, ++ 'Line' => '1643', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_portstate' ++ }, ++ '32429' => { ++ 'Header' => undef, ++ 'Line' => '1643', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkspeedexten' ++ }, ++ '32648' => { ++ 'Header' => undef, ++ 'Line' => '1642', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkspeedextsup' ++ }, ++ '33608' => { ++ 'Header' => undef, ++ 'Line' => '1642', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkspeedext' ++ }, ++ '34433' => { ++ 'Header' => undef, ++ 'Line' => '1641', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkspeeden' ++ }, ++ '34512' => { ++ 'Header' => undef, ++ 'Line' => '1641', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkspeedsup' ++ }, ++ '35345' => { ++ 'Header' => undef, ++ 'Line' => '1641', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkspeed' ++ }, ++ '36063' => { ++ 'Header' => undef, ++ 'Line' => '1640', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkwidthen' ++ }, ++ '36222' => { ++ 'Header' => undef, ++ 'Line' => '1640', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkwidthsup' ++ }, ++ '37323' => { ++ 'Header' => undef, ++ 'Line' => '1639', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_linkwidth' ++ }, ++ '38150' => { ++ 'Header' => undef, ++ 'Line' => '1638', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_rhex' ++ }, ++ '39010' => { ++ 'Header' => undef, ++ 'Line' => '1638', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_hex' ++ }, ++ '39870' => { ++ 'Header' => undef, ++ 'Line' => '1638', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_uint' ++ }, ++ '40496' => { ++ 'Header' => undef, ++ 'Line' => '43', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'valsz', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_dump_int' ++ }, ++ '48872' => { ++ 'Header' => undef, ++ 'Line' => '1272', ++ 'Param' => { ++ '0' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ } ++ }, ++ 'Return' => '78', ++ 'ShortName' => 'mad_field_name' ++ }, ++ '48923' => { ++ 'Header' => undef, ++ 'Line' => '1265', ++ 'Param' => { ++ '0' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '227' ++ }, ++ '2' => { ++ 'name' => 'bufsz', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'val', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '227', ++ 'ShortName' => 'mad_dump_val' ++ }, ++ '49339' => { ++ 'Header' => undef, ++ 'Line' => '1251', ++ 'Param' => { ++ '0' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '1' => { ++ 'name' => 'name', ++ 'type' => '78' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_print_field' ++ }, ++ '50615' => { ++ 'Header' => undef, ++ 'Line' => '1460', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '2937' ++ }, ++ '1' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '2' => { ++ 'name' => 'val', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_encode_field' ++ }, ++ '51647' => { ++ 'Header' => undef, ++ 'Line' => '1153', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'base_offs', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '3' => { ++ 'name' => 'val', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_get_array' ++ }, ++ '51951' => { ++ 'Header' => undef, ++ 'Line' => '1457', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'base_offs', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '3' => { ++ 'name' => 'val', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_set_array' ++ }, ++ '52255' => { ++ 'Header' => undef, ++ 'Line' => '1455', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'base_offs', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '3' => { ++ 'name' => 'val', ++ 'type' => '269' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_set_field64' ++ }, ++ '52558' => { ++ 'Header' => undef, ++ 'Line' => '1454', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'base_offs', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ } ++ }, ++ 'Return' => '269', ++ 'ShortName' => 'mad_get_field64' ++ }, ++ '5272' => { ++ 'Header' => undef, ++ 'Line' => '79', ++ 'Param' => { ++ '0' => { ++ 'name' => 'payload', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '2' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'attrid', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'mod', ++ 'type' => '108' ++ }, ++ '5' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ }, ++ '6' => { ++ 'name' => 'rstatus', ++ 'type' => '5723' ++ }, ++ '7' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ }, ++ '8' => { ++ 'name' => 'cckey', ++ 'type' => '269' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'cc_config_status_via' ++ }, ++ '52760' => { ++ 'Header' => undef, ++ 'Line' => '1451', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'base_offs', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ }, ++ '3' => { ++ 'name' => 'val', ++ 'type' => '257' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_set_field' ++ }, ++ '52938' => { ++ 'Header' => undef, ++ 'Line' => '1450', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'base_offs', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'field', ++ 'type' => '7042' ++ } ++ }, ++ 'Return' => '257', ++ 'ShortName' => 'mad_get_field' ++ }, ++ '5750' => { ++ 'Header' => undef, ++ 'Line' => '44', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'attrid', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'mod', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ }, ++ '5' => { ++ 'name' => 'rstatus', ++ 'type' => '5723' ++ }, ++ '6' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ }, ++ '7' => { ++ 'name' => 'cckey', ++ 'type' => '269' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'cc_query_status_via' ++ }, ++ '60930' => { ++ 'Header' => undef, ++ 'Line' => '83', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'dest', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'port', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'mask', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ }, ++ '5' => { ++ 'name' => 'id', ++ 'type' => '108' ++ }, ++ '6' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'performance_reset_via' ++ }, ++ '61751' => { ++ 'Header' => undef, ++ 'Line' => '46', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'dest', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'port', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'id', ++ 'type' => '108' ++ }, ++ '5' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'pma_query_via' ++ }, ++ '69975' => { ++ 'Header' => undef, ++ 'Line' => '1469', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'rpc', ++ 'type' => '70758' ++ }, ++ '2' => { ++ 'name' => 'dport', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'rmpp', ++ 'type' => '70770' ++ }, ++ '4' => { ++ 'name' => 'data', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_build_pkt' ++ }, ++ '70782' => { ++ 'Header' => undef, ++ 'Line' => '82', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'rpc', ++ 'type' => '70758' ++ }, ++ '2' => { ++ 'name' => 'drpath', ++ 'type' => '72191' ++ }, ++ '3' => { ++ 'name' => 'data', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'mad_encode' ++ }, ++ '72224' => { ++ 'Header' => undef, ++ 'Line' => '1496', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_get_retries' ++ }, ++ '72279' => { ++ 'Header' => undef, ++ 'Line' => '1495', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ }, ++ '1' => { ++ 'name' => 'override_ms', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_get_timeout' ++ }, ++ '72342' => { ++ 'Header' => undef, ++ 'Line' => '1468', ++ 'Return' => '269', ++ 'ShortName' => 'mad_trid' ++ }, ++ '73926' => { ++ 'Header' => undef, ++ 'Line' => '110', ++ 'Param' => { ++ '0' => { ++ 'name' => 'path', ++ 'type' => '74295' ++ }, ++ '1' => { ++ 'name' => 'dstr', ++ 'type' => '227' ++ }, ++ '2' => { ++ 'name' => 'dstr_size', ++ 'type' => '45' ++ } ++ }, ++ 'Return' => '227', ++ 'ShortName' => 'drpath2str' ++ }, ++ '74301' => { ++ 'Header' => undef, ++ 'Line' => '1436', ++ 'Param' => { ++ '0' => { ++ 'name' => 'path', ++ 'type' => '74295' ++ }, ++ '1' => { ++ 'name' => 'routepath', ++ 'type' => '227' ++ }, ++ '2' => { ++ 'name' => 'drslid', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'drdlid', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'str2drpath' ++ }, ++ '75356' => { ++ 'Header' => undef, ++ 'Line' => '44', ++ 'Param' => { ++ '0' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'portid2portnum' ++ }, ++ '76704' => { ++ 'Header' => undef, ++ 'Line' => '107', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_rpc_portid' ++ }, ++ '76815' => { ++ 'Header' => undef, ++ 'Line' => '126', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mgmt', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'rmpp_version', ++ 'type' => '233' ++ }, ++ '2' => { ++ 'name' => 'method_mask', ++ 'type' => '76698' ++ }, ++ '3' => { ++ 'name' => 'class_oui', ++ 'type' => '257' ++ }, ++ '4' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_register_server_via' ++ }, ++ '77621' => { ++ 'Header' => undef, ++ 'Line' => '119', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mgmt', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'rmpp_version', ++ 'type' => '233' ++ }, ++ '2' => { ++ 'name' => 'method_mask', ++ 'type' => '76698' ++ }, ++ '3' => { ++ 'name' => 'class_oui', ++ 'type' => '257' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_register_server' ++ }, ++ '77781' => { ++ 'Header' => undef, ++ 'Line' => '1506', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mgmt', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'rmpp_version', ++ 'type' => '233' ++ }, ++ '2' => { ++ 'name' => 'srcport', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_register_client_via' ++ }, ++ '77949' => { ++ 'Header' => undef, ++ 'Line' => '97', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mgmt', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'rmpp_version', ++ 'type' => '233' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_register_client' ++ }, ++ '78436' => { ++ 'Header' => undef, ++ 'Line' => '74', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mgmt', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'mad_class_agent' ++ }, ++ '85050' => { ++ 'Header' => undef, ++ 'Line' => '111', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ }, ++ '1' => { ++ 'name' => 'srcgid', ++ 'type' => '2937' ++ }, ++ '2' => { ++ 'name' => 'destgid', ++ 'type' => '2937' ++ }, ++ '3' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ }, ++ '4' => { ++ 'name' => 'buf', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_path_query_via' ++ }, ++ '85152' => { ++ 'Header' => undef, ++ 'Line' => '133', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rcvbuf', ++ 'type' => '220' ++ }, ++ '1' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'attrid', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'mod', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '108' ++ }, ++ '5' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '2937', ++ 'ShortName' => 'smp_query_via' ++ }, ++ '85200' => { ++ 'Header' => undef, ++ 'Line' => '241', ++ 'Param' => { ++ '0' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '1' => { ++ 'name' => 'portnum', ++ 'type' => '5723' ++ }, ++ '2' => { ++ 'name' => 'gid', ++ 'type' => '85330' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_resolve_self' ++ }, ++ '85336' => { ++ 'Header' => undef, ++ 'Line' => '213', ++ 'Param' => { ++ '0' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '1' => { ++ 'name' => 'portnum', ++ 'type' => '5723' ++ }, ++ '2' => { ++ 'name' => 'gid', ++ 'type' => '85330' ++ }, ++ '3' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_resolve_self_via' ++ }, ++ '85907' => { ++ 'Header' => undef, ++ 'Line' => '206', ++ 'Param' => { ++ '0' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '1' => { ++ 'name' => 'addr_str', ++ 'type' => '227' ++ }, ++ '2' => { ++ 'name' => 'dest_type', ++ 'type' => '84623' ++ }, ++ '3' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_resolve_portid_str' ++ }, ++ '86064' => { ++ 'Header' => undef, ++ 'Line' => '137', ++ 'Param' => { ++ '0' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '1' => { ++ 'name' => 'addr_str', ++ 'type' => '227' ++ }, ++ '2' => { ++ 'name' => 'dest_type', ++ 'type' => '84623' ++ }, ++ '3' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ }, ++ '4' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_resolve_portid_str_via' ++ }, ++ '87052' => { ++ 'Header' => undef, ++ 'Line' => '97', ++ 'Param' => { ++ '0' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '1' => { ++ 'name' => 'guid', ++ 'type' => '87671' ++ }, ++ '2' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'timeout', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_resolve_guid_via' ++ }, ++ '87693' => { ++ 'Header' => undef, ++ 'Line' => '75', ++ 'Param' => { ++ '0' => { ++ 'name' => 'portid', ++ 'type' => '1900' ++ }, ++ '1' => { ++ 'name' => 'gid', ++ 'type' => '2937' ++ }, ++ '2' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'timeout', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_resolve_gid_via' ++ }, ++ '87968' => { ++ 'Header' => undef, ++ 'Line' => '70', ++ 'Param' => { ++ '0' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ }, ++ '1' => { ++ 'name' => 'timeout', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_resolve_smlid' ++ }, ++ '88071' => { ++ 'Header' => undef, ++ 'Line' => '48', ++ 'Param' => { ++ '0' => { ++ 'name' => 'sm_id', ++ 'type' => '1900' ++ }, ++ '1' => { ++ 'name' => 'timeout', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'srcport', ++ 'type' => '1971' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => 'ib_resolve_smlid_via' ++ }, ++ '96769' => { ++ 'Header' => undef, ++ 'Line' => '434', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port', ++ 'type' => '1912' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mad_rpc_close_port' ++ }, ++ '96856' => { ++ 'Header' => undef, ++ 'Line' => '373', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dev_name', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'dev_port', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'mgmt_classes', ++ 'type' => '5723' ++ }, ++ '3' => { ++ 'name' => 'num_classes', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1912', ++ 'ShortName' => 'mad_rpc_open_port' ++ }, ++ '97973' => { ++ 'Header' => undef, ++ 'Line' => '345', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dev_name', ++ 'type' => '227' ++ }, ++ '1' => { ++ 'name' => 'dev_port', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'mgmt_classes', ++ 'type' => '5723' ++ }, ++ '3' => { ++ 'name' => 'num_classes', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'madrpc_init' ++ }, ++ '98777' => { ++ 'Header' => undef, ++ 'Line' => '338', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rpc', ++ 'type' => '96745' ++ }, ++ '1' => { ++ 'name' => 'dport', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'rmpp', ++ 'type' => '96751' ++ }, ++ '3' => { ++ 'name' => 'data', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'madrpc_rmpp' ++ }, ++ '98939' => { ++ 'Header' => undef, ++ 'Line' => '333', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rpc', ++ 'type' => '96745' ++ }, ++ '1' => { ++ 'name' => 'dport', ++ 'type' => '1900' ++ }, ++ '2' => { ++ 'name' => 'payload', ++ 'type' => '220' ++ }, ++ '3' => { ++ 'name' => 'rcvdata', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'madrpc' ++ }, ++ '99101' => { ++ 'Header' => undef, ++ 'Line' => '1488', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port', ++ 'type' => '1971' ++ }, ++ '1' => { ++ 'name' => 'rpc', ++ 'type' => '96745' ++ }, ++ '2' => { ++ 'name' => 'dport', ++ 'type' => '1900' ++ }, ++ '3' => { ++ 'name' => 'rmpp', ++ 'type' => '96751' ++ }, ++ '4' => { ++ 'name' => 'data', ++ 'type' => '220' ++ } ++ }, ++ 'Return' => '220', ++ 'ShortName' => 'mad_rpc_rmpp' ++ } ++ }, ++ 'SymbolVersion' => { ++ 'bm_call_via' => 'bm_call_via@@IBMAD_1.3', ++ 'cc_config_status_via' => 'cc_config_status_via@@IBMAD_1.3', ++ 'cc_query_status_via' => 'cc_query_status_via@@IBMAD_1.3', ++ 'drpath2str' => 'drpath2str@@IBMAD_1.3', ++ 'ib_node_query_via' => 'ib_node_query_via@@IBMAD_1.3', ++ 'ib_path_query' => 'ib_path_query@@IBMAD_1.3', ++ 'ib_path_query_via' => 'ib_path_query_via@@IBMAD_1.3', ++ 'ib_resolve_gid_via' => 'ib_resolve_gid_via@@IBMAD_1.3', ++ 'ib_resolve_guid_via' => 'ib_resolve_guid_via@@IBMAD_1.3', ++ 'ib_resolve_portid_str' => 'ib_resolve_portid_str@@IBMAD_1.3', ++ 'ib_resolve_portid_str_via' => 'ib_resolve_portid_str_via@@IBMAD_1.3', ++ 'ib_resolve_self' => 'ib_resolve_self@@IBMAD_1.3', ++ 'ib_resolve_self_via' => 'ib_resolve_self_via@@IBMAD_1.3', ++ 'ib_resolve_smlid' => 'ib_resolve_smlid@@IBMAD_1.3', ++ 'ib_resolve_smlid_via' => 'ib_resolve_smlid_via@@IBMAD_1.3', ++ 'ib_vendor_call' => 'ib_vendor_call@@IBMAD_1.3', ++ 'ib_vendor_call_via' => 'ib_vendor_call_via@@IBMAD_1.3', ++ 'ibdebug' => 'ibdebug@@IBMAD_1.3', ++ 'mad_alloc' => 'mad_alloc@@IBMAD_1.3', ++ 'mad_build_pkt' => 'mad_build_pkt@@IBMAD_1.3', ++ 'mad_class_agent' => 'mad_class_agent@@IBMAD_1.3', ++ 'mad_decode_field' => 'mad_decode_field@@IBMAD_1.3', ++ 'mad_dump_array' => 'mad_dump_array@@IBMAD_1.3', ++ 'mad_dump_bitfield' => 'mad_dump_bitfield@@IBMAD_1.3', ++ 'mad_dump_cc_cacongestionentry' => 'mad_dump_cc_cacongestionentry@@IBMAD_1.3', ++ 'mad_dump_cc_cacongestionsetting' => 'mad_dump_cc_cacongestionsetting@@IBMAD_1.3', ++ 'mad_dump_cc_congestioncontroltable' => 'mad_dump_cc_congestioncontroltable@@IBMAD_1.3', ++ 'mad_dump_cc_congestioncontroltableentry' => 'mad_dump_cc_congestioncontroltableentry@@IBMAD_1.3', ++ 'mad_dump_cc_congestioninfo' => 'mad_dump_cc_congestioninfo@@IBMAD_1.3', ++ 'mad_dump_cc_congestionkeyinfo' => 'mad_dump_cc_congestionkeyinfo@@IBMAD_1.3', ++ 'mad_dump_cc_congestionlog' => 'mad_dump_cc_congestionlog@@IBMAD_1.3', ++ 'mad_dump_cc_congestionlogca' => 'mad_dump_cc_congestionlogca@@IBMAD_1.3', ++ 'mad_dump_cc_congestionlogentryca' => 'mad_dump_cc_congestionlogentryca@@IBMAD_1.3', ++ 'mad_dump_cc_congestionlogentryswitch' => 'mad_dump_cc_congestionlogentryswitch@@IBMAD_1.3', ++ 'mad_dump_cc_congestionlogswitch' => 'mad_dump_cc_congestionlogswitch@@IBMAD_1.3', ++ 'mad_dump_cc_switchcongestionsetting' => 'mad_dump_cc_switchcongestionsetting@@IBMAD_1.3', ++ 'mad_dump_cc_switchportcongestionsettingelement' => 'mad_dump_cc_switchportcongestionsettingelement@@IBMAD_1.3', ++ 'mad_dump_cc_timestamp' => 'mad_dump_cc_timestamp@@IBMAD_1.3', ++ 'mad_dump_classportinfo' => 'mad_dump_classportinfo@@IBMAD_1.3', ++ 'mad_dump_field' => 'mad_dump_field@@IBMAD_1.3', ++ 'mad_dump_fields' => 'mad_dump_fields@@IBMAD_1.3', ++ 'mad_dump_hex' => 'mad_dump_hex@@IBMAD_1.3', ++ 'mad_dump_int' => 'mad_dump_int@@IBMAD_1.3', ++ 'mad_dump_linkdowndefstate' => 'mad_dump_linkdowndefstate@@IBMAD_1.3', ++ 'mad_dump_linkspeed' => 'mad_dump_linkspeed@@IBMAD_1.3', ++ 'mad_dump_linkspeeden' => 'mad_dump_linkspeeden@@IBMAD_1.3', ++ 'mad_dump_linkspeedext' => 'mad_dump_linkspeedext@@IBMAD_1.3', ++ 'mad_dump_linkspeedexten' => 'mad_dump_linkspeedexten@@IBMAD_1.3', ++ 'mad_dump_linkspeedextsup' => 'mad_dump_linkspeedextsup@@IBMAD_1.3', ++ 'mad_dump_linkspeedsup' => 'mad_dump_linkspeedsup@@IBMAD_1.3', ++ 'mad_dump_linkwidth' => 'mad_dump_linkwidth@@IBMAD_1.3', ++ 'mad_dump_linkwidthen' => 'mad_dump_linkwidthen@@IBMAD_1.3', ++ 'mad_dump_linkwidthsup' => 'mad_dump_linkwidthsup@@IBMAD_1.3', ++ 'mad_dump_mlnx_ext_port_info' => 'mad_dump_mlnx_ext_port_info@@IBMAD_1.3', ++ 'mad_dump_mtu' => 'mad_dump_mtu@@IBMAD_1.3', ++ 'mad_dump_node_type' => 'mad_dump_node_type@@IBMAD_1.3', ++ 'mad_dump_nodedesc' => 'mad_dump_nodedesc@@IBMAD_1.3', ++ 'mad_dump_nodeinfo' => 'mad_dump_nodeinfo@@IBMAD_1.3', ++ 'mad_dump_opervls' => 'mad_dump_opervls@@IBMAD_1.3', ++ 'mad_dump_perfcounters' => 'mad_dump_perfcounters@@IBMAD_1.3', ++ 'mad_dump_perfcounters_ext' => 'mad_dump_perfcounters_ext@@IBMAD_1.3', ++ 'mad_dump_perfcounters_port_flow_ctl_counters' => 'mad_dump_perfcounters_port_flow_ctl_counters@@IBMAD_1.3', ++ 'mad_dump_perfcounters_port_op_rcv_counters' => 'mad_dump_perfcounters_port_op_rcv_counters@@IBMAD_1.3', ++ 'mad_dump_perfcounters_port_vl_op_data' => 'mad_dump_perfcounters_port_vl_op_data@@IBMAD_1.3', ++ 'mad_dump_perfcounters_port_vl_op_packet' => 'mad_dump_perfcounters_port_vl_op_packet@@IBMAD_1.3', ++ 'mad_dump_perfcounters_port_vl_xmit_flow_ctl_update_errors' => 'mad_dump_perfcounters_port_vl_xmit_flow_ctl_update_errors@@IBMAD_1.3', ++ 'mad_dump_perfcounters_port_vl_xmit_wait_counters' => 'mad_dump_perfcounters_port_vl_xmit_wait_counters@@IBMAD_1.3', ++ 'mad_dump_perfcounters_rcv_con_ctrl' => 'mad_dump_perfcounters_rcv_con_ctrl@@IBMAD_1.3', ++ 'mad_dump_perfcounters_rcv_err' => 'mad_dump_perfcounters_rcv_err@@IBMAD_1.3', ++ 'mad_dump_perfcounters_rcv_sl' => 'mad_dump_perfcounters_rcv_sl@@IBMAD_1.3', ++ 'mad_dump_perfcounters_sl_rcv_becn' => 'mad_dump_perfcounters_sl_rcv_becn@@IBMAD_1.3', ++ 'mad_dump_perfcounters_sl_rcv_fecn' => 'mad_dump_perfcounters_sl_rcv_fecn@@IBMAD_1.3', ++ 'mad_dump_perfcounters_sw_port_vl_congestion' => 'mad_dump_perfcounters_sw_port_vl_congestion@@IBMAD_1.3', ++ 'mad_dump_perfcounters_vl_xmit_time_cong' => 'mad_dump_perfcounters_vl_xmit_time_cong@@IBMAD_1.3', ++ 'mad_dump_perfcounters_xmit_con_ctrl' => 'mad_dump_perfcounters_xmit_con_ctrl@@IBMAD_1.3', ++ 'mad_dump_perfcounters_xmt_disc' => 'mad_dump_perfcounters_xmt_disc@@IBMAD_1.3', ++ 'mad_dump_perfcounters_xmt_sl' => 'mad_dump_perfcounters_xmt_sl@@IBMAD_1.3', ++ 'mad_dump_physportstate' => 'mad_dump_physportstate@@IBMAD_1.3', ++ 'mad_dump_port_ext_speeds_counters' => 'mad_dump_port_ext_speeds_counters@@IBMAD_1.3', ++ 'mad_dump_port_ext_speeds_counters_rsfec_active' => 'mad_dump_port_ext_speeds_counters_rsfec_active@@IBMAD_1.3', ++ 'mad_dump_portcapmask' => 'mad_dump_portcapmask@@IBMAD_1.3', ++ 'mad_dump_portcapmask2' => 'mad_dump_portcapmask2@@IBMAD_1.3', ++ 'mad_dump_portinfo' => 'mad_dump_portinfo@@IBMAD_1.3', ++ 'mad_dump_portinfo_ext' => 'mad_dump_portinfo_ext@@IBMAD_1.3', ++ 'mad_dump_portsamples_control' => 'mad_dump_portsamples_control@@IBMAD_1.3', ++ 'mad_dump_portsamples_result' => 'mad_dump_portsamples_result@@IBMAD_1.3', ++ 'mad_dump_portstate' => 'mad_dump_portstate@@IBMAD_1.3', ++ 'mad_dump_portstates' => 'mad_dump_portstates@@IBMAD_1.3', ++ 'mad_dump_rhex' => 'mad_dump_rhex@@IBMAD_1.3', ++ 'mad_dump_sltovl' => 'mad_dump_sltovl@@IBMAD_1.3', ++ 'mad_dump_string' => 'mad_dump_string@@IBMAD_1.3', ++ 'mad_dump_switchinfo' => 'mad_dump_switchinfo@@IBMAD_1.3', ++ 'mad_dump_uint' => 'mad_dump_uint@@IBMAD_1.3', ++ 'mad_dump_val' => 'mad_dump_val@@IBMAD_1.3', ++ 'mad_dump_vlarbitration' => 'mad_dump_vlarbitration@@IBMAD_1.3', ++ 'mad_dump_vlcap' => 'mad_dump_vlcap@@IBMAD_1.3', ++ 'mad_encode' => 'mad_encode@@IBMAD_1.3', ++ 'mad_encode_field' => 'mad_encode_field@@IBMAD_1.3', ++ 'mad_field_name' => 'mad_field_name@@IBMAD_1.3', ++ 'mad_free' => 'mad_free@@IBMAD_1.3', ++ 'mad_get_array' => 'mad_get_array@@IBMAD_1.3', ++ 'mad_get_field' => 'mad_get_field@@IBMAD_1.3', ++ 'mad_get_field64' => 'mad_get_field64@@IBMAD_1.3', ++ 'mad_get_retries' => 'mad_get_retries@@IBMAD_1.3', ++ 'mad_get_timeout' => 'mad_get_timeout@@IBMAD_1.3', ++ 'mad_print_field' => 'mad_print_field@@IBMAD_1.3', ++ 'mad_receive' => 'mad_receive@@IBMAD_1.3', ++ 'mad_receive_via' => 'mad_receive_via@@IBMAD_1.3', ++ 'mad_register_client' => 'mad_register_client@@IBMAD_1.3', ++ 'mad_register_client_via' => 'mad_register_client_via@@IBMAD_1.3', ++ 'mad_register_server' => 'mad_register_server@@IBMAD_1.3', ++ 'mad_register_server_via' => 'mad_register_server_via@@IBMAD_1.3', ++ 'mad_respond' => 'mad_respond@@IBMAD_1.3', ++ 'mad_respond_via' => 'mad_respond_via@@IBMAD_1.3', ++ 'mad_rpc' => 'mad_rpc@@IBMAD_1.3', ++ 'mad_rpc_class_agent' => 'mad_rpc_class_agent@@IBMAD_1.3', ++ 'mad_rpc_close_port' => 'mad_rpc_close_port@@IBMAD_1.3', ++ 'mad_rpc_open_port' => 'mad_rpc_open_port@@IBMAD_1.3', ++ 'mad_rpc_portid' => 'mad_rpc_portid@@IBMAD_1.3', ++ 'mad_rpc_rmpp' => 'mad_rpc_rmpp@@IBMAD_1.3', ++ 'mad_rpc_set_retries' => 'mad_rpc_set_retries@@IBMAD_1.3', ++ 'mad_rpc_set_timeout' => 'mad_rpc_set_timeout@@IBMAD_1.3', ++ 'mad_send' => 'mad_send@@IBMAD_1.3', ++ 'mad_send_via' => 'mad_send_via@@IBMAD_1.3', ++ 'mad_set_array' => 'mad_set_array@@IBMAD_1.3', ++ 'mad_set_field' => 'mad_set_field@@IBMAD_1.3', ++ 'mad_set_field64' => 'mad_set_field64@@IBMAD_1.3', ++ 'mad_trid' => 'mad_trid@@IBMAD_1.3', ++ 'madrpc' => 'madrpc@@IBMAD_1.3', ++ 'madrpc_init' => 'madrpc_init@@IBMAD_1.3', ++ 'madrpc_portid' => 'madrpc_portid@@IBMAD_1.3', ++ 'madrpc_rmpp' => 'madrpc_rmpp@@IBMAD_1.3', ++ 'madrpc_save_mad' => 'madrpc_save_mad@@IBMAD_1.3', ++ 'madrpc_set_retries' => 'madrpc_set_retries@@IBMAD_1.3', ++ 'madrpc_set_timeout' => 'madrpc_set_timeout@@IBMAD_1.3', ++ 'madrpc_show_errors' => 'madrpc_show_errors@@IBMAD_1.3', ++ 'performance_reset_via' => 'performance_reset_via@@IBMAD_1.3', ++ 'pma_query_via' => 'pma_query_via@@IBMAD_1.3', ++ 'portid2portnum' => 'portid2portnum@@IBMAD_1.3', ++ 'portid2str' => 'portid2str@@IBMAD_1.3', ++ 'sa_call' => 'sa_call@@IBMAD_1.3', ++ 'sa_rpc_call' => 'sa_rpc_call@@IBMAD_1.3', ++ 'smp_mkey_get' => 'smp_mkey_get@@IBMAD_1.3', ++ 'smp_mkey_set' => 'smp_mkey_set@@IBMAD_1.3', ++ 'smp_query' => 'smp_query@@IBMAD_1.3', ++ 'smp_query_status_via' => 'smp_query_status_via@@IBMAD_1.3', ++ 'smp_query_via' => 'smp_query_via@@IBMAD_1.3', ++ 'smp_set' => 'smp_set@@IBMAD_1.3', ++ 'smp_set_status_via' => 'smp_set_status_via@@IBMAD_1.3', ++ 'smp_set_via' => 'smp_set_via@@IBMAD_1.3', ++ 'str2drpath' => 'str2drpath@@IBMAD_1.3', ++ 'xdump' => 'xdump@@IBMAD_1.3' ++ }, ++ 'Symbols' => { ++ 'libibmad.so.5.3.41.0' => { ++ 'bm_call_via@@IBMAD_1.3' => 1, ++ 'cc_config_status_via@@IBMAD_1.3' => 1, ++ 'cc_query_status_via@@IBMAD_1.3' => 1, ++ 'drpath2str@@IBMAD_1.3' => 1, ++ 'ib_node_query_via@@IBMAD_1.3' => 1, ++ 'ib_path_query@@IBMAD_1.3' => 1, ++ 'ib_path_query_via@@IBMAD_1.3' => 1, ++ 'ib_resolve_gid_via@@IBMAD_1.3' => 1, ++ 'ib_resolve_guid_via@@IBMAD_1.3' => 1, ++ 'ib_resolve_portid_str@@IBMAD_1.3' => 1, ++ 'ib_resolve_portid_str_via@@IBMAD_1.3' => 1, ++ 'ib_resolve_self@@IBMAD_1.3' => 1, ++ 'ib_resolve_self_via@@IBMAD_1.3' => 1, ++ 'ib_resolve_smlid@@IBMAD_1.3' => 1, ++ 'ib_resolve_smlid_via@@IBMAD_1.3' => 1, ++ 'ib_vendor_call@@IBMAD_1.3' => 1, ++ 'ib_vendor_call_via@@IBMAD_1.3' => 1, ++ 'ibdebug@@IBMAD_1.3' => -4, ++ 'mad_alloc@@IBMAD_1.3' => 1, ++ 'mad_build_pkt@@IBMAD_1.3' => 1, ++ 'mad_class_agent@@IBMAD_1.3' => 1, ++ 'mad_decode_field@@IBMAD_1.3' => 1, ++ 'mad_dump_array@@IBMAD_1.3' => 1, ++ 'mad_dump_bitfield@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_cacongestionentry@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_cacongestionsetting@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestioncontroltable@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestioncontroltableentry@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestioninfo@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestionkeyinfo@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestionlog@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestionlogca@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestionlogentryca@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestionlogentryswitch@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_congestionlogswitch@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_switchcongestionsetting@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_switchportcongestionsettingelement@@IBMAD_1.3' => 1, ++ 'mad_dump_cc_timestamp@@IBMAD_1.3' => 1, ++ 'mad_dump_classportinfo@@IBMAD_1.3' => 1, ++ 'mad_dump_field@@IBMAD_1.3' => 1, ++ 'mad_dump_fields@@IBMAD_1.3' => 1, ++ 'mad_dump_hex@@IBMAD_1.3' => 1, ++ 'mad_dump_int@@IBMAD_1.3' => 1, ++ 'mad_dump_linkdowndefstate@@IBMAD_1.3' => 1, ++ 'mad_dump_linkspeed@@IBMAD_1.3' => 1, ++ 'mad_dump_linkspeeden@@IBMAD_1.3' => 1, ++ 'mad_dump_linkspeedext@@IBMAD_1.3' => 1, ++ 'mad_dump_linkspeedexten@@IBMAD_1.3' => 1, ++ 'mad_dump_linkspeedextsup@@IBMAD_1.3' => 1, ++ 'mad_dump_linkspeedsup@@IBMAD_1.3' => 1, ++ 'mad_dump_linkwidth@@IBMAD_1.3' => 1, ++ 'mad_dump_linkwidthen@@IBMAD_1.3' => 1, ++ 'mad_dump_linkwidthsup@@IBMAD_1.3' => 1, ++ 'mad_dump_mlnx_ext_port_info@@IBMAD_1.3' => 1, ++ 'mad_dump_mtu@@IBMAD_1.3' => 1, ++ 'mad_dump_node_type@@IBMAD_1.3' => 1, ++ 'mad_dump_nodedesc@@IBMAD_1.3' => 1, ++ 'mad_dump_nodeinfo@@IBMAD_1.3' => 1, ++ 'mad_dump_opervls@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_ext@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_port_flow_ctl_counters@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_port_op_rcv_counters@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_port_vl_op_data@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_port_vl_op_packet@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_port_vl_xmit_flow_ctl_update_errors@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_port_vl_xmit_wait_counters@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_rcv_con_ctrl@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_rcv_err@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_rcv_sl@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_sl_rcv_becn@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_sl_rcv_fecn@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_sw_port_vl_congestion@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_vl_xmit_time_cong@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_xmit_con_ctrl@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_xmt_disc@@IBMAD_1.3' => 1, ++ 'mad_dump_perfcounters_xmt_sl@@IBMAD_1.3' => 1, ++ 'mad_dump_physportstate@@IBMAD_1.3' => 1, ++ 'mad_dump_port_ext_speeds_counters@@IBMAD_1.3' => 1, ++ 'mad_dump_port_ext_speeds_counters_rsfec_active@@IBMAD_1.3' => 1, ++ 'mad_dump_portcapmask2@@IBMAD_1.3' => 1, ++ 'mad_dump_portcapmask@@IBMAD_1.3' => 1, ++ 'mad_dump_portinfo@@IBMAD_1.3' => 1, ++ 'mad_dump_portinfo_ext@@IBMAD_1.3' => 1, ++ 'mad_dump_portsamples_control@@IBMAD_1.3' => 1, ++ 'mad_dump_portsamples_result@@IBMAD_1.3' => 1, ++ 'mad_dump_portstate@@IBMAD_1.3' => 1, ++ 'mad_dump_portstates@@IBMAD_1.3' => 1, ++ 'mad_dump_rhex@@IBMAD_1.3' => 1, ++ 'mad_dump_sltovl@@IBMAD_1.3' => 1, ++ 'mad_dump_string@@IBMAD_1.3' => 1, ++ 'mad_dump_switchinfo@@IBMAD_1.3' => 1, ++ 'mad_dump_uint@@IBMAD_1.3' => 1, ++ 'mad_dump_val@@IBMAD_1.3' => 1, ++ 'mad_dump_vlarbitration@@IBMAD_1.3' => 1, ++ 'mad_dump_vlcap@@IBMAD_1.3' => 1, ++ 'mad_encode@@IBMAD_1.3' => 1, ++ 'mad_encode_field@@IBMAD_1.3' => 1, ++ 'mad_field_name@@IBMAD_1.3' => 1, ++ 'mad_free@@IBMAD_1.3' => 1, ++ 'mad_get_array@@IBMAD_1.3' => 1, ++ 'mad_get_field64@@IBMAD_1.3' => 1, ++ 'mad_get_field@@IBMAD_1.3' => 1, ++ 'mad_get_retries@@IBMAD_1.3' => 1, ++ 'mad_get_timeout@@IBMAD_1.3' => 1, ++ 'mad_print_field@@IBMAD_1.3' => 1, ++ 'mad_receive@@IBMAD_1.3' => 1, ++ 'mad_receive_via@@IBMAD_1.3' => 1, ++ 'mad_register_client@@IBMAD_1.3' => 1, ++ 'mad_register_client_via@@IBMAD_1.3' => 1, ++ 'mad_register_server@@IBMAD_1.3' => 1, ++ 'mad_register_server_via@@IBMAD_1.3' => 1, ++ 'mad_respond@@IBMAD_1.3' => 1, ++ 'mad_respond_via@@IBMAD_1.3' => 1, ++ 'mad_rpc@@IBMAD_1.3' => 1, ++ 'mad_rpc_class_agent@@IBMAD_1.3' => 1, ++ 'mad_rpc_close_port@@IBMAD_1.3' => 1, ++ 'mad_rpc_open_port@@IBMAD_1.3' => 1, ++ 'mad_rpc_portid@@IBMAD_1.3' => 1, ++ 'mad_rpc_rmpp@@IBMAD_1.3' => 1, ++ 'mad_rpc_set_retries@@IBMAD_1.3' => 1, ++ 'mad_rpc_set_timeout@@IBMAD_1.3' => 1, ++ 'mad_send@@IBMAD_1.3' => 1, ++ 'mad_send_via@@IBMAD_1.3' => 1, ++ 'mad_set_array@@IBMAD_1.3' => 1, ++ 'mad_set_field64@@IBMAD_1.3' => 1, ++ 'mad_set_field@@IBMAD_1.3' => 1, ++ 'mad_trid@@IBMAD_1.3' => 1, ++ 'madrpc@@IBMAD_1.3' => 1, ++ 'madrpc_init@@IBMAD_1.3' => 1, ++ 'madrpc_portid@@IBMAD_1.3' => 1, ++ 'madrpc_rmpp@@IBMAD_1.3' => 1, ++ 'madrpc_save_mad@@IBMAD_1.3' => 1, ++ 'madrpc_set_retries@@IBMAD_1.3' => 1, ++ 'madrpc_set_timeout@@IBMAD_1.3' => 1, ++ 'madrpc_show_errors@@IBMAD_1.3' => 1, ++ 'performance_reset_via@@IBMAD_1.3' => 1, ++ 'pma_query_via@@IBMAD_1.3' => 1, ++ 'portid2portnum@@IBMAD_1.3' => 1, ++ 'portid2str@@IBMAD_1.3' => 1, ++ 'sa_call@@IBMAD_1.3' => 1, ++ 'sa_rpc_call@@IBMAD_1.3' => 1, ++ 'smp_mkey_get@@IBMAD_1.3' => 1, ++ 'smp_mkey_set@@IBMAD_1.3' => 1, ++ 'smp_query@@IBMAD_1.3' => 1, ++ 'smp_query_status_via@@IBMAD_1.3' => 1, ++ 'smp_query_via@@IBMAD_1.3' => 1, ++ 'smp_set@@IBMAD_1.3' => 1, ++ 'smp_set_status_via@@IBMAD_1.3' => 1, ++ 'smp_set_via@@IBMAD_1.3' => 1, ++ 'str2drpath@@IBMAD_1.3' => 1, ++ 'xdump@@IBMAD_1.3' => 1 ++ } ++ }, ++ 'Target' => 'unix', ++ 'TypeInfo' => { ++ '1' => { ++ 'Name' => 'void', ++ 'Type' => 'Intrinsic' ++ }, ++ '101' => { ++ 'Name' => 'unsigned char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '1052' => { ++ 'BaseType' => '818', ++ 'Header' => undef, ++ 'Line' => '243', ++ 'Name' => 'ibmad_gid_t', ++ 'Size' => '16', ++ 'Type' => 'Typedef' ++ }, ++ '108' => { ++ 'Name' => 'unsigned int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '111056' => { ++ 'Header' => undef, ++ 'Line' => '1374', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'attrid', ++ 'offset' => '0', ++ 'type' => '108' ++ }, ++ '1' => { ++ 'name' => 'mod', ++ 'offset' => '4', ++ 'type' => '108' ++ }, ++ '2' => { ++ 'name' => 'mask', ++ 'offset' => '8', ++ 'type' => '269' ++ }, ++ '3' => { ++ 'name' => 'method', ++ 'offset' => '16', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'trid', ++ 'offset' => '24', ++ 'type' => '269' ++ }, ++ '5' => { ++ 'name' => 'recsz', ++ 'offset' => '32', ++ 'type' => '108' ++ }, ++ '6' => { ++ 'name' => 'rmpp', ++ 'offset' => '36', ++ 'type' => '111043' ++ } ++ }, ++ 'Name' => 'struct ib_sa_call', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '111169' => { ++ 'BaseType' => '111056', ++ 'Header' => undef, ++ 'Line' => '1383', ++ 'Name' => 'ib_sa_call_t', ++ 'Size' => '56', ++ 'Type' => 'Typedef' ++ }, ++ '113003' => { ++ 'BaseType' => '111169', ++ 'Name' => 'ib_sa_call_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '115' => { ++ 'Name' => 'signed char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '122' => { ++ 'BaseType' => '101', ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Name' => '__uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '129677' => { ++ 'Header' => undef, ++ 'Line' => '1385', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'method', ++ 'offset' => '0', ++ 'type' => '108' ++ }, ++ '1' => { ++ 'name' => 'mgmt_class', ++ 'offset' => '4', ++ 'type' => '108' ++ }, ++ '2' => { ++ 'name' => 'attrid', ++ 'offset' => '8', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'mod', ++ 'offset' => '12', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'oui', ++ 'offset' => '16', ++ 'type' => '257' ++ }, ++ '5' => { ++ 'name' => 'timeout', ++ 'offset' => '20', ++ 'type' => '108' ++ }, ++ '6' => { ++ 'name' => 'rmpp', ++ 'offset' => '24', ++ 'type' => '129664' ++ } ++ }, ++ 'Name' => 'struct ib_vendor_call', ++ 'Size' => '44', ++ 'Type' => 'Struct' ++ }, ++ '129790' => { ++ 'BaseType' => '129677', ++ 'Header' => undef, ++ 'Line' => '1393', ++ 'Name' => 'ib_vendor_call_t', ++ 'Size' => '44', ++ 'Type' => 'Typedef' ++ }, ++ '130891' => { ++ 'BaseType' => '129790', ++ 'Name' => 'ib_vendor_call_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1394' => { ++ 'Header' => undef, ++ 'Line' => '308', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'lid', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'drpath', ++ 'offset' => '4', ++ 'type' => '1140' ++ }, ++ '2' => { ++ 'name' => 'grh_present', ++ 'offset' => '76', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'gid', ++ 'offset' => '80', ++ 'type' => '1052' ++ }, ++ '4' => { ++ 'name' => 'qp', ++ 'offset' => '96', ++ 'type' => '257' ++ }, ++ '5' => { ++ 'name' => 'qkey', ++ 'offset' => '100', ++ 'type' => '257' ++ }, ++ '6' => { ++ 'name' => 'sl', ++ 'offset' => '104', ++ 'type' => '233' ++ }, ++ '7' => { ++ 'name' => 'pkey_idx', ++ 'offset' => '108', ++ 'type' => '108' ++ } ++ }, ++ 'Name' => 'struct portid', ++ 'Size' => '112', ++ 'Type' => 'Struct' ++ }, ++ '1519' => { ++ 'BaseType' => '1394', ++ 'Header' => undef, ++ 'Line' => '317', ++ 'Name' => 'ib_portid_t', ++ 'Size' => '112', ++ 'Type' => 'Typedef' ++ }, ++ '153' => { ++ 'BaseType' => '108', ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Name' => '__uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '165' => { ++ 'Name' => 'long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '1707' => { ++ 'Header' => undef, ++ 'Line' => '1395', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'method', ++ 'offset' => '0', ++ 'type' => '108' ++ }, ++ '1' => { ++ 'name' => 'attrid', ++ 'offset' => '4', ++ 'type' => '108' ++ }, ++ '2' => { ++ 'name' => 'mod', ++ 'offset' => '8', ++ 'type' => '108' ++ }, ++ '3' => { ++ 'name' => 'timeout', ++ 'offset' => '12', ++ 'type' => '108' ++ }, ++ '4' => { ++ 'name' => 'bkey', ++ 'offset' => '16', ++ 'type' => '269' ++ } ++ }, ++ 'Name' => 'struct ib_bm_call', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '172' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Name' => '__uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1792' => { ++ 'BaseType' => '1707', ++ 'Header' => undef, ++ 'Line' => '1401', ++ 'Name' => 'ib_bm_call_t', ++ 'Size' => '24', ++ 'Type' => 'Typedef' ++ }, ++ '184' => { ++ 'BaseType' => '165', ++ 'Header' => undef, ++ 'Line' => '152', ++ 'Name' => '__off_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1900' => { ++ 'BaseType' => '1519', ++ 'Name' => 'ib_portid_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1912' => { ++ 'BaseType' => '1918', ++ 'Name' => 'struct ibmad_port*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1918' => { ++ 'Header' => undef, ++ 'Line' => '39', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'port_id', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'class_agents', ++ 'offset' => '4', ++ 'type' => '5126' ++ }, ++ '2' => { ++ 'name' => 'timeout', ++ 'offset' => '1028', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'retries', ++ 'offset' => '1032', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'smp_mkey', ++ 'offset' => '1040', ++ 'type' => '269' ++ } ++ }, ++ 'Name' => 'struct ibmad_port', ++ 'Size' => '1048', ++ 'Type' => 'Struct' ++ }, ++ '1923' => { ++ 'BaseType' => '1918', ++ 'Name' => 'struct ibmad_port const', ++ 'Type' => 'Const' ++ }, ++ '196' => { ++ 'BaseType' => '165', ++ 'Header' => undef, ++ 'Line' => '153', ++ 'Name' => '__off64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1971' => { ++ 'BaseType' => '1923', ++ 'Name' => 'struct ibmad_port const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '220' => { ++ 'BaseType' => '1', ++ 'Name' => 'void*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '227' => { ++ 'BaseType' => '89', ++ 'Name' => 'char*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '233' => { ++ 'BaseType' => '122', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => 'uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '257' => { ++ 'BaseType' => '153', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => 'uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '269' => { ++ 'BaseType' => '172', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => 'uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '2937' => { ++ 'BaseType' => '233', ++ 'Name' => 'uint8_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2943' => { ++ 'BaseType' => '1792', ++ 'Name' => 'ib_bm_call_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '307' => { ++ 'Header' => undef, ++ 'Line' => '49', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_flags', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => '_IO_read_ptr', ++ 'offset' => '8', ++ 'type' => '227' ++ }, ++ '10' => { ++ 'name' => '_IO_backup_base', ++ 'offset' => '80', ++ 'type' => '227' ++ }, ++ '11' => { ++ 'name' => '_IO_save_end', ++ 'offset' => '88', ++ 'type' => '227' ++ }, ++ '12' => { ++ 'name' => '_markers', ++ 'offset' => '96', ++ 'type' => '723' ++ }, ++ '13' => { ++ 'name' => '_chain', ++ 'offset' => '104', ++ 'type' => '729' ++ }, ++ '14' => { ++ 'name' => '_fileno', ++ 'offset' => '112', ++ 'type' => '71' ++ }, ++ '15' => { ++ 'name' => '_flags2', ++ 'offset' => '116', ++ 'type' => '71' ++ }, ++ '16' => { ++ 'name' => '_old_offset', ++ 'offset' => '120', ++ 'type' => '184' ++ }, ++ '17' => { ++ 'name' => '_cur_column', ++ 'offset' => '128', ++ 'type' => '64' ++ }, ++ '18' => { ++ 'name' => '_vtable_offset', ++ 'offset' => '130', ++ 'type' => '115' ++ }, ++ '19' => { ++ 'name' => '_shortbuf', ++ 'offset' => '131', ++ 'type' => '735' ++ }, ++ '2' => { ++ 'name' => '_IO_read_end', ++ 'offset' => '16', ++ 'type' => '227' ++ }, ++ '20' => { ++ 'name' => '_lock', ++ 'offset' => '136', ++ 'type' => '751' ++ }, ++ '21' => { ++ 'name' => '_offset', ++ 'offset' => '144', ++ 'type' => '196' ++ }, ++ '22' => { ++ 'name' => '_codecvt', ++ 'offset' => '152', ++ 'type' => '762' ++ }, ++ '23' => { ++ 'name' => '_wide_data', ++ 'offset' => '160', ++ 'type' => '773' ++ }, ++ '24' => { ++ 'name' => '_freeres_list', ++ 'offset' => '168', ++ 'type' => '729' ++ }, ++ '25' => { ++ 'name' => '_freeres_buf', ++ 'offset' => '176', ++ 'type' => '220' ++ }, ++ '26' => { ++ 'name' => '__pad5', ++ 'offset' => '184', ++ 'type' => '45' ++ }, ++ '27' => { ++ 'name' => '_mode', ++ 'offset' => '192', ++ 'type' => '71' ++ }, ++ '28' => { ++ 'name' => '_unused2', ++ 'offset' => '196', ++ 'type' => '779' ++ }, ++ '3' => { ++ 'name' => '_IO_read_base', ++ 'offset' => '24', ++ 'type' => '227' ++ }, ++ '4' => { ++ 'name' => '_IO_write_base', ++ 'offset' => '32', ++ 'type' => '227' ++ }, ++ '5' => { ++ 'name' => '_IO_write_ptr', ++ 'offset' => '40', ++ 'type' => '227' ++ }, ++ '6' => { ++ 'name' => '_IO_write_end', ++ 'offset' => '48', ++ 'type' => '227' ++ }, ++ '7' => { ++ 'name' => '_IO_buf_base', ++ 'offset' => '56', ++ 'type' => '227' ++ }, ++ '8' => { ++ 'name' => '_IO_buf_end', ++ 'offset' => '64', ++ 'type' => '227' ++ }, ++ '9' => { ++ 'name' => '_IO_save_base', ++ 'offset' => '72', ++ 'type' => '227' ++ } ++ }, ++ 'Name' => 'struct _IO_FILE', ++ 'Size' => '216', ++ 'Type' => 'Struct' ++ }, ++ '45' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => 'size_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '5126' => { ++ 'BaseType' => '71', ++ 'Name' => 'int[256]', ++ 'Size' => '1024', ++ 'Type' => 'Array' ++ }, ++ '57' => { ++ 'Name' => 'unsigned long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '5723' => { ++ 'BaseType' => '71', ++ 'Name' => 'int*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '64' => { ++ 'Name' => 'unsigned short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ }, ++ '698' => { ++ 'BaseType' => '307', ++ 'Header' => undef, ++ 'Line' => '7', ++ 'Name' => 'FILE', ++ 'Size' => '216', ++ 'Type' => 'Typedef' ++ }, ++ '7042' => { ++ 'Header' => undef, ++ 'Line' => '330', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IB_NO_FIELD', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IB_GID_PREFIX_F', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IB_DRSMP_HOPPTR_F', ++ 'value' => '10' ++ }, ++ '100' => { ++ 'name' => 'IB_SW_OPT_SLTOVL_MAPPING_F', ++ 'value' => '97' ++ }, ++ '101' => { ++ 'name' => 'IB_SW_LIDS_PER_PORT_F', ++ 'value' => '98' ++ }, ++ '102' => { ++ 'name' => 'IB_SW_PARTITION_ENFORCE_CAP_F', ++ 'value' => '99' ++ }, ++ '103' => { ++ 'name' => 'IB_SW_PARTITION_ENF_INB_F', ++ 'value' => '100' ++ }, ++ '104' => { ++ 'name' => 'IB_SW_PARTITION_ENF_OUTB_F', ++ 'value' => '101' ++ }, ++ '105' => { ++ 'name' => 'IB_SW_FILTER_RAW_INB_F', ++ 'value' => '102' ++ }, ++ '106' => { ++ 'name' => 'IB_SW_FILTER_RAW_OUTB_F', ++ 'value' => '103' ++ }, ++ '107' => { ++ 'name' => 'IB_SW_ENHANCED_PORT0_F', ++ 'value' => '104' ++ }, ++ '108' => { ++ 'name' => 'IB_SW_MCAST_FDB_TOP_F', ++ 'value' => '105' ++ }, ++ '109' => { ++ 'name' => 'IB_SW_LAST_F', ++ 'value' => '106' ++ }, ++ '11' => { ++ 'name' => 'IB_DRSMP_STATUS_F', ++ 'value' => '11' ++ }, ++ '110' => { ++ 'name' => 'IB_LINEAR_FORW_TBL_F', ++ 'value' => '107' ++ }, ++ '111' => { ++ 'name' => 'IB_MULTICAST_FORW_TBL_F', ++ 'value' => '108' ++ }, ++ '112' => { ++ 'name' => 'IB_NODE_DESC_F', ++ 'value' => '109' ++ }, ++ '113' => { ++ 'name' => 'IB_NOTICE_IS_GENERIC_F', ++ 'value' => '110' ++ }, ++ '114' => { ++ 'name' => 'IB_NOTICE_TYPE_F', ++ 'value' => '111' ++ }, ++ '115' => { ++ 'name' => 'IB_NOTICE_PRODUCER_F', ++ 'value' => '112' ++ }, ++ '116' => { ++ 'name' => 'IB_NOTICE_TRAP_NUMBER_F', ++ 'value' => '113' ++ }, ++ '117' => { ++ 'name' => 'IB_NOTICE_ISSUER_LID_F', ++ 'value' => '114' ++ }, ++ '118' => { ++ 'name' => 'IB_NOTICE_TOGGLE_F', ++ 'value' => '115' ++ }, ++ '119' => { ++ 'name' => 'IB_NOTICE_COUNT_F', ++ 'value' => '116' ++ }, ++ '12' => { ++ 'name' => 'IB_DRSMP_DIRECTION_F', ++ 'value' => '12' ++ }, ++ '120' => { ++ 'name' => 'IB_NOTICE_DATA_DETAILS_F', ++ 'value' => '117' ++ }, ++ '121' => { ++ 'name' => 'IB_NOTICE_DATA_LID_F', ++ 'value' => '118' ++ }, ++ '122' => { ++ 'name' => 'IB_NOTICE_DATA_144_LID_F', ++ 'value' => '119' ++ }, ++ '123' => { ++ 'name' => 'IB_NOTICE_DATA_144_CAPMASK_F', ++ 'value' => '120' ++ }, ++ '124' => { ++ 'name' => 'IB_PC_FIRST_F', ++ 'value' => '121' ++ }, ++ '125' => { ++ 'name' => 'IB_PC_PORT_SELECT_F', ++ 'value' => '121' ++ }, ++ '126' => { ++ 'name' => 'IB_PC_COUNTER_SELECT_F', ++ 'value' => '122' ++ }, ++ '127' => { ++ 'name' => 'IB_PC_ERR_SYM_F', ++ 'value' => '123' ++ }, ++ '128' => { ++ 'name' => 'IB_PC_LINK_RECOVERS_F', ++ 'value' => '124' ++ }, ++ '129' => { ++ 'name' => 'IB_PC_LINK_DOWNED_F', ++ 'value' => '125' ++ }, ++ '13' => { ++ 'name' => 'IB_MAD_TRID_F', ++ 'value' => '13' ++ }, ++ '130' => { ++ 'name' => 'IB_PC_ERR_RCV_F', ++ 'value' => '126' ++ }, ++ '131' => { ++ 'name' => 'IB_PC_ERR_PHYSRCV_F', ++ 'value' => '127' ++ }, ++ '132' => { ++ 'name' => 'IB_PC_ERR_SWITCH_REL_F', ++ 'value' => '128' ++ }, ++ '133' => { ++ 'name' => 'IB_PC_XMT_DISCARDS_F', ++ 'value' => '129' ++ }, ++ '134' => { ++ 'name' => 'IB_PC_ERR_XMTCONSTR_F', ++ 'value' => '130' ++ }, ++ '135' => { ++ 'name' => 'IB_PC_ERR_RCVCONSTR_F', ++ 'value' => '131' ++ }, ++ '136' => { ++ 'name' => 'IB_PC_COUNTER_SELECT2_F', ++ 'value' => '132' ++ }, ++ '137' => { ++ 'name' => 'IB_PC_ERR_LOCALINTEG_F', ++ 'value' => '133' ++ }, ++ '138' => { ++ 'name' => 'IB_PC_ERR_EXCESS_OVR_F', ++ 'value' => '134' ++ }, ++ '139' => { ++ 'name' => 'IB_PC_VL15_DROPPED_F', ++ 'value' => '135' ++ }, ++ '14' => { ++ 'name' => 'IB_MAD_ATTRID_F', ++ 'value' => '14' ++ }, ++ '140' => { ++ 'name' => 'IB_PC_XMT_BYTES_F', ++ 'value' => '136' ++ }, ++ '141' => { ++ 'name' => 'IB_PC_RCV_BYTES_F', ++ 'value' => '137' ++ }, ++ '142' => { ++ 'name' => 'IB_PC_XMT_PKTS_F', ++ 'value' => '138' ++ }, ++ '143' => { ++ 'name' => 'IB_PC_RCV_PKTS_F', ++ 'value' => '139' ++ }, ++ '144' => { ++ 'name' => 'IB_PC_XMT_WAIT_F', ++ 'value' => '140' ++ }, ++ '145' => { ++ 'name' => 'IB_PC_LAST_F', ++ 'value' => '141' ++ }, ++ '146' => { ++ 'name' => 'IB_SMINFO_GUID_F', ++ 'value' => '142' ++ }, ++ '147' => { ++ 'name' => 'IB_SMINFO_KEY_F', ++ 'value' => '143' ++ }, ++ '148' => { ++ 'name' => 'IB_SMINFO_ACT_F', ++ 'value' => '144' ++ }, ++ '149' => { ++ 'name' => 'IB_SMINFO_PRIO_F', ++ 'value' => '145' ++ }, ++ '15' => { ++ 'name' => 'IB_MAD_ATTRMOD_F', ++ 'value' => '15' ++ }, ++ '150' => { ++ 'name' => 'IB_SMINFO_STATE_F', ++ 'value' => '146' ++ }, ++ '151' => { ++ 'name' => 'IB_SA_RMPP_VERS_F', ++ 'value' => '147' ++ }, ++ '152' => { ++ 'name' => 'IB_SA_RMPP_TYPE_F', ++ 'value' => '148' ++ }, ++ '153' => { ++ 'name' => 'IB_SA_RMPP_RESP_F', ++ 'value' => '149' ++ }, ++ '154' => { ++ 'name' => 'IB_SA_RMPP_FLAGS_F', ++ 'value' => '150' ++ }, ++ '155' => { ++ 'name' => 'IB_SA_RMPP_STATUS_F', ++ 'value' => '151' ++ }, ++ '156' => { ++ 'name' => 'IB_SA_RMPP_D1_F', ++ 'value' => '152' ++ }, ++ '157' => { ++ 'name' => 'IB_SA_RMPP_SEGNUM_F', ++ 'value' => '153' ++ }, ++ '158' => { ++ 'name' => 'IB_SA_RMPP_D2_F', ++ 'value' => '154' ++ }, ++ '159' => { ++ 'name' => 'IB_SA_RMPP_LEN_F', ++ 'value' => '155' ++ }, ++ '16' => { ++ 'name' => 'IB_MAD_MKEY_F', ++ 'value' => '16' ++ }, ++ '160' => { ++ 'name' => 'IB_SA_RMPP_NEWWIN_F', ++ 'value' => '156' ++ }, ++ '161' => { ++ 'name' => 'IB_SA_MP_NPATH_F', ++ 'value' => '157' ++ }, ++ '162' => { ++ 'name' => 'IB_SA_MP_NSRC_F', ++ 'value' => '158' ++ }, ++ '163' => { ++ 'name' => 'IB_SA_MP_NDEST_F', ++ 'value' => '159' ++ }, ++ '164' => { ++ 'name' => 'IB_SA_MP_GID0_F', ++ 'value' => '160' ++ }, ++ '165' => { ++ 'name' => 'IB_SA_PR_DGID_F', ++ 'value' => '161' ++ }, ++ '166' => { ++ 'name' => 'IB_SA_PR_SGID_F', ++ 'value' => '162' ++ }, ++ '167' => { ++ 'name' => 'IB_SA_PR_DLID_F', ++ 'value' => '163' ++ }, ++ '168' => { ++ 'name' => 'IB_SA_PR_SLID_F', ++ 'value' => '164' ++ }, ++ '169' => { ++ 'name' => 'IB_SA_PR_NPATH_F', ++ 'value' => '165' ++ }, ++ '17' => { ++ 'name' => 'IB_DRSMP_DRDLID_F', ++ 'value' => '17' ++ }, ++ '170' => { ++ 'name' => 'IB_SA_PR_SL_F', ++ 'value' => '166' ++ }, ++ '171' => { ++ 'name' => 'IB_SA_MCM_MGID_F', ++ 'value' => '167' ++ }, ++ '172' => { ++ 'name' => 'IB_SA_MCM_PORTGID_F', ++ 'value' => '168' ++ }, ++ '173' => { ++ 'name' => 'IB_SA_MCM_QKEY_F', ++ 'value' => '169' ++ }, ++ '174' => { ++ 'name' => 'IB_SA_MCM_MLID_F', ++ 'value' => '170' ++ }, ++ '175' => { ++ 'name' => 'IB_SA_MCM_SL_F', ++ 'value' => '171' ++ }, ++ '176' => { ++ 'name' => 'IB_SA_MCM_MTU_F', ++ 'value' => '172' ++ }, ++ '177' => { ++ 'name' => 'IB_SA_MCM_RATE_F', ++ 'value' => '173' ++ }, ++ '178' => { ++ 'name' => 'IB_SA_MCM_TCLASS_F', ++ 'value' => '174' ++ }, ++ '179' => { ++ 'name' => 'IB_SA_MCM_PKEY_F', ++ 'value' => '175' ++ }, ++ '18' => { ++ 'name' => 'IB_DRSMP_DRSLID_F', ++ 'value' => '18' ++ }, ++ '180' => { ++ 'name' => 'IB_SA_MCM_FLOW_LABEL_F', ++ 'value' => '176' ++ }, ++ '181' => { ++ 'name' => 'IB_SA_MCM_JOIN_STATE_F', ++ 'value' => '177' ++ }, ++ '182' => { ++ 'name' => 'IB_SA_MCM_PROXY_JOIN_F', ++ 'value' => '178' ++ }, ++ '183' => { ++ 'name' => 'IB_SA_SR_ID_F', ++ 'value' => '179' ++ }, ++ '184' => { ++ 'name' => 'IB_SA_SR_GID_F', ++ 'value' => '180' ++ }, ++ '185' => { ++ 'name' => 'IB_SA_SR_PKEY_F', ++ 'value' => '181' ++ }, ++ '186' => { ++ 'name' => 'IB_SA_SR_LEASE_F', ++ 'value' => '182' ++ }, ++ '187' => { ++ 'name' => 'IB_SA_SR_KEY_F', ++ 'value' => '183' ++ }, ++ '188' => { ++ 'name' => 'IB_SA_SR_NAME_F', ++ 'value' => '184' ++ }, ++ '189' => { ++ 'name' => 'IB_SA_SR_DATA_F', ++ 'value' => '185' ++ }, ++ '19' => { ++ 'name' => 'IB_SA_MKEY_F', ++ 'value' => '19' ++ }, ++ '190' => { ++ 'name' => 'IB_ATS_SM_NODE_ADDR_F', ++ 'value' => '186' ++ }, ++ '191' => { ++ 'name' => 'IB_ATS_SM_MAGIC_KEY_F', ++ 'value' => '187' ++ }, ++ '192' => { ++ 'name' => 'IB_ATS_SM_NODE_TYPE_F', ++ 'value' => '188' ++ }, ++ '193' => { ++ 'name' => 'IB_ATS_SM_NODE_NAME_F', ++ 'value' => '189' ++ }, ++ '194' => { ++ 'name' => 'IB_SLTOVL_MAPPING_TABLE_F', ++ 'value' => '190' ++ }, ++ '195' => { ++ 'name' => 'IB_VL_ARBITRATION_TABLE_F', ++ 'value' => '191' ++ }, ++ '196' => { ++ 'name' => 'IB_VEND2_OUI_F', ++ 'value' => '192' ++ }, ++ '197' => { ++ 'name' => 'IB_VEND2_DATA_F', ++ 'value' => '193' ++ }, ++ '198' => { ++ 'name' => 'IB_PC_EXT_FIRST_F', ++ 'value' => '194' ++ }, ++ '199' => { ++ 'name' => 'IB_PC_EXT_PORT_SELECT_F', ++ 'value' => '194' ++ }, ++ '2' => { ++ 'name' => 'IB_GID_GUID_F', ++ 'value' => '2' ++ }, ++ '20' => { ++ 'name' => 'IB_SA_ATTROFFS_F', ++ 'value' => '20' ++ }, ++ '200' => { ++ 'name' => 'IB_PC_EXT_COUNTER_SELECT_F', ++ 'value' => '195' ++ }, ++ '201' => { ++ 'name' => 'IB_PC_EXT_XMT_BYTES_F', ++ 'value' => '196' ++ }, ++ '202' => { ++ 'name' => 'IB_PC_EXT_RCV_BYTES_F', ++ 'value' => '197' ++ }, ++ '203' => { ++ 'name' => 'IB_PC_EXT_XMT_PKTS_F', ++ 'value' => '198' ++ }, ++ '204' => { ++ 'name' => 'IB_PC_EXT_RCV_PKTS_F', ++ 'value' => '199' ++ }, ++ '205' => { ++ 'name' => 'IB_PC_EXT_XMT_UPKTS_F', ++ 'value' => '200' ++ }, ++ '206' => { ++ 'name' => 'IB_PC_EXT_RCV_UPKTS_F', ++ 'value' => '201' ++ }, ++ '207' => { ++ 'name' => 'IB_PC_EXT_XMT_MPKTS_F', ++ 'value' => '202' ++ }, ++ '208' => { ++ 'name' => 'IB_PC_EXT_RCV_MPKTS_F', ++ 'value' => '203' ++ }, ++ '209' => { ++ 'name' => 'IB_PC_EXT_LAST_F', ++ 'value' => '204' ++ }, ++ '21' => { ++ 'name' => 'IB_SA_COMPMASK_F', ++ 'value' => '21' ++ }, ++ '210' => { ++ 'name' => 'IB_GUID_GUID0_F', ++ 'value' => '205' ++ }, ++ '211' => { ++ 'name' => 'IB_CPI_BASEVER_F', ++ 'value' => '206' ++ }, ++ '212' => { ++ 'name' => 'IB_CPI_CLASSVER_F', ++ 'value' => '207' ++ }, ++ '213' => { ++ 'name' => 'IB_CPI_CAPMASK_F', ++ 'value' => '208' ++ }, ++ '214' => { ++ 'name' => 'IB_CPI_CAPMASK2_F', ++ 'value' => '209' ++ }, ++ '215' => { ++ 'name' => 'IB_CPI_RESP_TIME_VALUE_F', ++ 'value' => '210' ++ }, ++ '216' => { ++ 'name' => 'IB_CPI_REDIRECT_GID_F', ++ 'value' => '211' ++ }, ++ '217' => { ++ 'name' => 'IB_CPI_REDIRECT_TC_F', ++ 'value' => '212' ++ }, ++ '218' => { ++ 'name' => 'IB_CPI_REDIRECT_SL_F', ++ 'value' => '213' ++ }, ++ '219' => { ++ 'name' => 'IB_CPI_REDIRECT_FL_F', ++ 'value' => '214' ++ }, ++ '22' => { ++ 'name' => 'IB_SA_DATA_F', ++ 'value' => '22' ++ }, ++ '220' => { ++ 'name' => 'IB_CPI_REDIRECT_LID_F', ++ 'value' => '215' ++ }, ++ '221' => { ++ 'name' => 'IB_CPI_REDIRECT_PKEY_F', ++ 'value' => '216' ++ }, ++ '222' => { ++ 'name' => 'IB_CPI_REDIRECT_QP_F', ++ 'value' => '217' ++ }, ++ '223' => { ++ 'name' => 'IB_CPI_REDIRECT_QKEY_F', ++ 'value' => '218' ++ }, ++ '224' => { ++ 'name' => 'IB_CPI_TRAP_GID_F', ++ 'value' => '219' ++ }, ++ '225' => { ++ 'name' => 'IB_CPI_TRAP_TC_F', ++ 'value' => '220' ++ }, ++ '226' => { ++ 'name' => 'IB_CPI_TRAP_SL_F', ++ 'value' => '221' ++ }, ++ '227' => { ++ 'name' => 'IB_CPI_TRAP_FL_F', ++ 'value' => '222' ++ }, ++ '228' => { ++ 'name' => 'IB_CPI_TRAP_LID_F', ++ 'value' => '223' ++ }, ++ '229' => { ++ 'name' => 'IB_CPI_TRAP_PKEY_F', ++ 'value' => '224' ++ }, ++ '23' => { ++ 'name' => 'IB_SM_DATA_F', ++ 'value' => '23' ++ }, ++ '230' => { ++ 'name' => 'IB_CPI_TRAP_HL_F', ++ 'value' => '225' ++ }, ++ '231' => { ++ 'name' => 'IB_CPI_TRAP_QP_F', ++ 'value' => '226' ++ }, ++ '232' => { ++ 'name' => 'IB_CPI_TRAP_QKEY_F', ++ 'value' => '227' ++ }, ++ '233' => { ++ 'name' => 'IB_PC_XMT_DATA_SL_FIRST_F', ++ 'value' => '228' ++ }, ++ '234' => { ++ 'name' => 'IB_PC_XMT_DATA_SL0_F', ++ 'value' => '228' ++ }, ++ '235' => { ++ 'name' => 'IB_PC_XMT_DATA_SL1_F', ++ 'value' => '229' ++ }, ++ '236' => { ++ 'name' => 'IB_PC_XMT_DATA_SL2_F', ++ 'value' => '230' ++ }, ++ '237' => { ++ 'name' => 'IB_PC_XMT_DATA_SL3_F', ++ 'value' => '231' ++ }, ++ '238' => { ++ 'name' => 'IB_PC_XMT_DATA_SL4_F', ++ 'value' => '232' ++ }, ++ '239' => { ++ 'name' => 'IB_PC_XMT_DATA_SL5_F', ++ 'value' => '233' ++ }, ++ '24' => { ++ 'name' => 'IB_GS_DATA_F', ++ 'value' => '24' ++ }, ++ '240' => { ++ 'name' => 'IB_PC_XMT_DATA_SL6_F', ++ 'value' => '234' ++ }, ++ '241' => { ++ 'name' => 'IB_PC_XMT_DATA_SL7_F', ++ 'value' => '235' ++ }, ++ '242' => { ++ 'name' => 'IB_PC_XMT_DATA_SL8_F', ++ 'value' => '236' ++ }, ++ '243' => { ++ 'name' => 'IB_PC_XMT_DATA_SL9_F', ++ 'value' => '237' ++ }, ++ '244' => { ++ 'name' => 'IB_PC_XMT_DATA_SL10_F', ++ 'value' => '238' ++ }, ++ '245' => { ++ 'name' => 'IB_PC_XMT_DATA_SL11_F', ++ 'value' => '239' ++ }, ++ '246' => { ++ 'name' => 'IB_PC_XMT_DATA_SL12_F', ++ 'value' => '240' ++ }, ++ '247' => { ++ 'name' => 'IB_PC_XMT_DATA_SL13_F', ++ 'value' => '241' ++ }, ++ '248' => { ++ 'name' => 'IB_PC_XMT_DATA_SL14_F', ++ 'value' => '242' ++ }, ++ '249' => { ++ 'name' => 'IB_PC_XMT_DATA_SL15_F', ++ 'value' => '243' ++ }, ++ '25' => { ++ 'name' => 'IB_DRSMP_PATH_F', ++ 'value' => '25' ++ }, ++ '250' => { ++ 'name' => 'IB_PC_XMT_DATA_SL_LAST_F', ++ 'value' => '244' ++ }, ++ '251' => { ++ 'name' => 'IB_PC_RCV_DATA_SL_FIRST_F', ++ 'value' => '245' ++ }, ++ '252' => { ++ 'name' => 'IB_PC_RCV_DATA_SL0_F', ++ 'value' => '245' ++ }, ++ '253' => { ++ 'name' => 'IB_PC_RCV_DATA_SL1_F', ++ 'value' => '246' ++ }, ++ '254' => { ++ 'name' => 'IB_PC_RCV_DATA_SL2_F', ++ 'value' => '247' ++ }, ++ '255' => { ++ 'name' => 'IB_PC_RCV_DATA_SL3_F', ++ 'value' => '248' ++ }, ++ '256' => { ++ 'name' => 'IB_PC_RCV_DATA_SL4_F', ++ 'value' => '249' ++ }, ++ '257' => { ++ 'name' => 'IB_PC_RCV_DATA_SL5_F', ++ 'value' => '250' ++ }, ++ '258' => { ++ 'name' => 'IB_PC_RCV_DATA_SL6_F', ++ 'value' => '251' ++ }, ++ '259' => { ++ 'name' => 'IB_PC_RCV_DATA_SL7_F', ++ 'value' => '252' ++ }, ++ '26' => { ++ 'name' => 'IB_DRSMP_RPATH_F', ++ 'value' => '26' ++ }, ++ '260' => { ++ 'name' => 'IB_PC_RCV_DATA_SL8_F', ++ 'value' => '253' ++ }, ++ '261' => { ++ 'name' => 'IB_PC_RCV_DATA_SL9_F', ++ 'value' => '254' ++ }, ++ '262' => { ++ 'name' => 'IB_PC_RCV_DATA_SL10_F', ++ 'value' => '255' ++ }, ++ '263' => { ++ 'name' => 'IB_PC_RCV_DATA_SL11_F', ++ 'value' => '256' ++ }, ++ '264' => { ++ 'name' => 'IB_PC_RCV_DATA_SL12_F', ++ 'value' => '257' ++ }, ++ '265' => { ++ 'name' => 'IB_PC_RCV_DATA_SL13_F', ++ 'value' => '258' ++ }, ++ '266' => { ++ 'name' => 'IB_PC_RCV_DATA_SL14_F', ++ 'value' => '259' ++ }, ++ '267' => { ++ 'name' => 'IB_PC_RCV_DATA_SL15_F', ++ 'value' => '260' ++ }, ++ '268' => { ++ 'name' => 'IB_PC_RCV_DATA_SL_LAST_F', ++ 'value' => '261' ++ }, ++ '269' => { ++ 'name' => 'IB_PC_XMT_INACT_DISC_F', ++ 'value' => '262' ++ }, ++ '27' => { ++ 'name' => 'IB_PORT_FIRST_F', ++ 'value' => '27' ++ }, ++ '270' => { ++ 'name' => 'IB_PC_XMT_NEIGH_MTU_DISC_F', ++ 'value' => '263' ++ }, ++ '271' => { ++ 'name' => 'IB_PC_XMT_SW_LIFE_DISC_F', ++ 'value' => '264' ++ }, ++ '272' => { ++ 'name' => 'IB_PC_XMT_SW_HOL_DISC_F', ++ 'value' => '265' ++ }, ++ '273' => { ++ 'name' => 'IB_PC_XMT_DISC_LAST_F', ++ 'value' => '266' ++ }, ++ '274' => { ++ 'name' => 'IB_PC_RCV_LOCAL_PHY_ERR_F', ++ 'value' => '267' ++ }, ++ '275' => { ++ 'name' => 'IB_PC_RCV_MALFORMED_PKT_ERR_F', ++ 'value' => '268' ++ }, ++ '276' => { ++ 'name' => 'IB_PC_RCV_BUF_OVR_ERR_F', ++ 'value' => '269' ++ }, ++ '277' => { ++ 'name' => 'IB_PC_RCV_DLID_MAP_ERR_F', ++ 'value' => '270' ++ }, ++ '278' => { ++ 'name' => 'IB_PC_RCV_VL_MAP_ERR_F', ++ 'value' => '271' ++ }, ++ '279' => { ++ 'name' => 'IB_PC_RCV_LOOPING_ERR_F', ++ 'value' => '272' ++ }, ++ '28' => { ++ 'name' => 'IB_PORT_MKEY_F', ++ 'value' => '27' ++ }, ++ '280' => { ++ 'name' => 'IB_PC_RCV_ERR_LAST_F', ++ 'value' => '273' ++ }, ++ '281' => { ++ 'name' => 'IB_PSC_OPCODE_F', ++ 'value' => '274' ++ }, ++ '282' => { ++ 'name' => 'IB_PSC_PORT_SELECT_F', ++ 'value' => '275' ++ }, ++ '283' => { ++ 'name' => 'IB_PSC_TICK_F', ++ 'value' => '276' ++ }, ++ '284' => { ++ 'name' => 'IB_PSC_COUNTER_WIDTH_F', ++ 'value' => '277' ++ }, ++ '285' => { ++ 'name' => 'IB_PSC_COUNTER_MASK0_F', ++ 'value' => '278' ++ }, ++ '286' => { ++ 'name' => 'IB_PSC_COUNTER_MASKS1TO9_F', ++ 'value' => '279' ++ }, ++ '287' => { ++ 'name' => 'IB_PSC_COUNTER_MASKS10TO14_F', ++ 'value' => '280' ++ }, ++ '288' => { ++ 'name' => 'IB_PSC_SAMPLE_MECHS_F', ++ 'value' => '281' ++ }, ++ '289' => { ++ 'name' => 'IB_PSC_SAMPLE_STATUS_F', ++ 'value' => '282' ++ }, ++ '29' => { ++ 'name' => 'IB_PORT_GID_PREFIX_F', ++ 'value' => '28' ++ }, ++ '290' => { ++ 'name' => 'IB_PSC_OPTION_MASK_F', ++ 'value' => '283' ++ }, ++ '291' => { ++ 'name' => 'IB_PSC_VENDOR_MASK_F', ++ 'value' => '284' ++ }, ++ '292' => { ++ 'name' => 'IB_PSC_SAMPLE_START_F', ++ 'value' => '285' ++ }, ++ '293' => { ++ 'name' => 'IB_PSC_SAMPLE_INTVL_F', ++ 'value' => '286' ++ }, ++ '294' => { ++ 'name' => 'IB_PSC_TAG_F', ++ 'value' => '287' ++ }, ++ '295' => { ++ 'name' => 'IB_PSC_COUNTER_SEL0_F', ++ 'value' => '288' ++ }, ++ '296' => { ++ 'name' => 'IB_PSC_COUNTER_SEL1_F', ++ 'value' => '289' ++ }, ++ '297' => { ++ 'name' => 'IB_PSC_COUNTER_SEL2_F', ++ 'value' => '290' ++ }, ++ '298' => { ++ 'name' => 'IB_PSC_COUNTER_SEL3_F', ++ 'value' => '291' ++ }, ++ '299' => { ++ 'name' => 'IB_PSC_COUNTER_SEL4_F', ++ 'value' => '292' ++ }, ++ '3' => { ++ 'name' => 'IB_MAD_METHOD_F', ++ 'value' => '3' ++ }, ++ '30' => { ++ 'name' => 'IB_PORT_LID_F', ++ 'value' => '29' ++ }, ++ '300' => { ++ 'name' => 'IB_PSC_COUNTER_SEL5_F', ++ 'value' => '293' ++ }, ++ '301' => { ++ 'name' => 'IB_PSC_COUNTER_SEL6_F', ++ 'value' => '294' ++ }, ++ '302' => { ++ 'name' => 'IB_PSC_COUNTER_SEL7_F', ++ 'value' => '295' ++ }, ++ '303' => { ++ 'name' => 'IB_PSC_COUNTER_SEL8_F', ++ 'value' => '296' ++ }, ++ '304' => { ++ 'name' => 'IB_PSC_COUNTER_SEL9_F', ++ 'value' => '297' ++ }, ++ '305' => { ++ 'name' => 'IB_PSC_COUNTER_SEL10_F', ++ 'value' => '298' ++ }, ++ '306' => { ++ 'name' => 'IB_PSC_COUNTER_SEL11_F', ++ 'value' => '299' ++ }, ++ '307' => { ++ 'name' => 'IB_PSC_COUNTER_SEL12_F', ++ 'value' => '300' ++ }, ++ '308' => { ++ 'name' => 'IB_PSC_COUNTER_SEL13_F', ++ 'value' => '301' ++ }, ++ '309' => { ++ 'name' => 'IB_PSC_COUNTER_SEL14_F', ++ 'value' => '302' ++ }, ++ '31' => { ++ 'name' => 'IB_PORT_SMLID_F', ++ 'value' => '30' ++ }, ++ '310' => { ++ 'name' => 'IB_PSC_SAMPLES_ONLY_OPT_MASK_F', ++ 'value' => '303' ++ }, ++ '311' => { ++ 'name' => 'IB_PSC_LAST_F', ++ 'value' => '304' ++ }, ++ '312' => { ++ 'name' => 'IB_GI_GUID0_F', ++ 'value' => '305' ++ }, ++ '313' => { ++ 'name' => 'IB_GI_GUID1_F', ++ 'value' => '306' ++ }, ++ '314' => { ++ 'name' => 'IB_GI_GUID2_F', ++ 'value' => '307' ++ }, ++ '315' => { ++ 'name' => 'IB_GI_GUID3_F', ++ 'value' => '308' ++ }, ++ '316' => { ++ 'name' => 'IB_GI_GUID4_F', ++ 'value' => '309' ++ }, ++ '317' => { ++ 'name' => 'IB_GI_GUID5_F', ++ 'value' => '310' ++ }, ++ '318' => { ++ 'name' => 'IB_GI_GUID6_F', ++ 'value' => '311' ++ }, ++ '319' => { ++ 'name' => 'IB_GI_GUID7_F', ++ 'value' => '312' ++ }, ++ '32' => { ++ 'name' => 'IB_PORT_CAPMASK_F', ++ 'value' => '31' ++ }, ++ '320' => { ++ 'name' => 'IB_SA_GIR_LID_F', ++ 'value' => '313' ++ }, ++ '321' => { ++ 'name' => 'IB_SA_GIR_BLOCKNUM_F', ++ 'value' => '314' ++ }, ++ '322' => { ++ 'name' => 'IB_SA_GIR_GUID0_F', ++ 'value' => '315' ++ }, ++ '323' => { ++ 'name' => 'IB_SA_GIR_GUID1_F', ++ 'value' => '316' ++ }, ++ '324' => { ++ 'name' => 'IB_SA_GIR_GUID2_F', ++ 'value' => '317' ++ }, ++ '325' => { ++ 'name' => 'IB_SA_GIR_GUID3_F', ++ 'value' => '318' ++ }, ++ '326' => { ++ 'name' => 'IB_SA_GIR_GUID4_F', ++ 'value' => '319' ++ }, ++ '327' => { ++ 'name' => 'IB_SA_GIR_GUID5_F', ++ 'value' => '320' ++ }, ++ '328' => { ++ 'name' => 'IB_SA_GIR_GUID6_F', ++ 'value' => '321' ++ }, ++ '329' => { ++ 'name' => 'IB_SA_GIR_GUID7_F', ++ 'value' => '322' ++ }, ++ '33' => { ++ 'name' => 'IB_PORT_DIAG_F', ++ 'value' => '32' ++ }, ++ '330' => { ++ 'name' => 'IB_PORT_CAPMASK2_F', ++ 'value' => '323' ++ }, ++ '331' => { ++ 'name' => 'IB_PORT_LINK_SPEED_EXT_ACTIVE_F', ++ 'value' => '324' ++ }, ++ '332' => { ++ 'name' => 'IB_PORT_LINK_SPEED_EXT_SUPPORTED_F', ++ 'value' => '325' ++ }, ++ '333' => { ++ 'name' => 'IB_PORT_LINK_SPEED_EXT_ENABLED_F', ++ 'value' => '326' ++ }, ++ '334' => { ++ 'name' => 'IB_PORT_LINK_SPEED_EXT_LAST_F', ++ 'value' => '327' ++ }, ++ '335' => { ++ 'name' => 'IB_PESC_PORT_SELECT_F', ++ 'value' => '328' ++ }, ++ '336' => { ++ 'name' => 'IB_PESC_COUNTER_SELECT_F', ++ 'value' => '329' ++ }, ++ '337' => { ++ 'name' => 'IB_PESC_SYNC_HDR_ERR_CTR_F', ++ 'value' => '330' ++ }, ++ '338' => { ++ 'name' => 'IB_PESC_UNK_BLOCK_CTR_F', ++ 'value' => '331' ++ }, ++ '339' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE0_F', ++ 'value' => '332' ++ }, ++ '34' => { ++ 'name' => 'IB_PORT_MKEY_LEASE_F', ++ 'value' => '33' ++ }, ++ '340' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE1_F', ++ 'value' => '333' ++ }, ++ '341' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE2_F', ++ 'value' => '334' ++ }, ++ '342' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE3_F', ++ 'value' => '335' ++ }, ++ '343' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE4_F', ++ 'value' => '336' ++ }, ++ '344' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE5_F', ++ 'value' => '337' ++ }, ++ '345' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE6_F', ++ 'value' => '338' ++ }, ++ '346' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE7_F', ++ 'value' => '339' ++ }, ++ '347' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE8_F', ++ 'value' => '340' ++ }, ++ '348' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE9_F', ++ 'value' => '341' ++ }, ++ '349' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE10_F', ++ 'value' => '342' ++ }, ++ '35' => { ++ 'name' => 'IB_PORT_LOCAL_PORT_F', ++ 'value' => '34' ++ }, ++ '350' => { ++ 'name' => 'IB_PESC_ERR_DET_CTR_LANE11_F', ++ 'value' => '343' ++ }, ++ '351' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE0_F', ++ 'value' => '344' ++ }, ++ '352' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE1_F', ++ 'value' => '345' ++ }, ++ '353' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE2_F', ++ 'value' => '346' ++ }, ++ '354' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE3_F', ++ 'value' => '347' ++ }, ++ '355' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE4_F', ++ 'value' => '348' ++ }, ++ '356' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE5_F', ++ 'value' => '349' ++ }, ++ '357' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE6_F', ++ 'value' => '350' ++ }, ++ '358' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE7_F', ++ 'value' => '351' ++ }, ++ '359' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE8_F', ++ 'value' => '352' ++ }, ++ '36' => { ++ 'name' => 'IB_PORT_LINK_WIDTH_ENABLED_F', ++ 'value' => '35' ++ }, ++ '360' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE9_F', ++ 'value' => '353' ++ }, ++ '361' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE10_F', ++ 'value' => '354' ++ }, ++ '362' => { ++ 'name' => 'IB_PESC_FEC_CORR_BLOCK_CTR_LANE11_F', ++ 'value' => '355' ++ }, ++ '363' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE0_F', ++ 'value' => '356' ++ }, ++ '364' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE1_F', ++ 'value' => '357' ++ }, ++ '365' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE2_F', ++ 'value' => '358' ++ }, ++ '366' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE3_F', ++ 'value' => '359' ++ }, ++ '367' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE4_F', ++ 'value' => '360' ++ }, ++ '368' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE5_F', ++ 'value' => '361' ++ }, ++ '369' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE6_F', ++ 'value' => '362' ++ }, ++ '37' => { ++ 'name' => 'IB_PORT_LINK_WIDTH_SUPPORTED_F', ++ 'value' => '36' ++ }, ++ '370' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE7_F', ++ 'value' => '363' ++ }, ++ '371' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE8_F', ++ 'value' => '364' ++ }, ++ '372' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE9_F', ++ 'value' => '365' ++ }, ++ '373' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE10_F', ++ 'value' => '366' ++ }, ++ '374' => { ++ 'name' => 'IB_PESC_FEC_UNCORR_BLOCK_CTR_LANE11_F', ++ 'value' => '367' ++ }, ++ '375' => { ++ 'name' => 'IB_PESC_LAST_F', ++ 'value' => '368' ++ }, ++ '376' => { ++ 'name' => 'IB_PC_PORT_OP_RCV_COUNTERS_FIRST_F', ++ 'value' => '369' ++ }, ++ '377' => { ++ 'name' => 'IB_PC_PORT_OP_RCV_PKTS_F', ++ 'value' => '369' ++ }, ++ '378' => { ++ 'name' => 'IB_PC_PORT_OP_RCV_DATA_F', ++ 'value' => '370' ++ }, ++ '379' => { ++ 'name' => 'IB_PC_PORT_OP_RCV_COUNTERS_LAST_F', ++ 'value' => '371' ++ }, ++ '38' => { ++ 'name' => 'IB_PORT_LINK_WIDTH_ACTIVE_F', ++ 'value' => '37' ++ }, ++ '380' => { ++ 'name' => 'IB_PC_PORT_FLOW_CTL_COUNTERS_FIRST_F', ++ 'value' => '372' ++ }, ++ '381' => { ++ 'name' => 'IB_PC_PORT_XMIT_FLOW_PKTS_F', ++ 'value' => '372' ++ }, ++ '382' => { ++ 'name' => 'IB_PC_PORT_RCV_FLOW_PKTS_F', ++ 'value' => '373' ++ }, ++ '383' => { ++ 'name' => 'IB_PC_PORT_FLOW_CTL_COUNTERS_LAST_F', ++ 'value' => '374' ++ }, ++ '384' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS_FIRST_F', ++ 'value' => '375' ++ }, ++ '385' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS0_F', ++ 'value' => '375' ++ }, ++ '386' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS1_F', ++ 'value' => '376' ++ }, ++ '387' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS2_F', ++ 'value' => '377' ++ }, ++ '388' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS3_F', ++ 'value' => '378' ++ }, ++ '389' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS4_F', ++ 'value' => '379' ++ }, ++ '39' => { ++ 'name' => 'IB_PORT_LINK_SPEED_SUPPORTED_F', ++ 'value' => '38' ++ }, ++ '390' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS5_F', ++ 'value' => '380' ++ }, ++ '391' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS6_F', ++ 'value' => '381' ++ }, ++ '392' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS7_F', ++ 'value' => '382' ++ }, ++ '393' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS8_F', ++ 'value' => '383' ++ }, ++ '394' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS9_F', ++ 'value' => '384' ++ }, ++ '395' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS10_F', ++ 'value' => '385' ++ }, ++ '396' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS11_F', ++ 'value' => '386' ++ }, ++ '397' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS12_F', ++ 'value' => '387' ++ }, ++ '398' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS13_F', ++ 'value' => '388' ++ }, ++ '399' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS14_F', ++ 'value' => '389' ++ }, ++ '4' => { ++ 'name' => 'IB_MAD_RESPONSE_F', ++ 'value' => '4' ++ }, ++ '40' => { ++ 'name' => 'IB_PORT_STATE_F', ++ 'value' => '39' ++ }, ++ '400' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS15_F', ++ 'value' => '390' ++ }, ++ '401' => { ++ 'name' => 'IB_PC_PORT_VL_OP_PACKETS_LAST_F', ++ 'value' => '391' ++ }, ++ '402' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA_FIRST_F', ++ 'value' => '392' ++ }, ++ '403' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA0_F', ++ 'value' => '392' ++ }, ++ '404' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA1_F', ++ 'value' => '393' ++ }, ++ '405' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA2_F', ++ 'value' => '394' ++ }, ++ '406' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA3_F', ++ 'value' => '395' ++ }, ++ '407' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA4_F', ++ 'value' => '396' ++ }, ++ '408' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA5_F', ++ 'value' => '397' ++ }, ++ '409' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA6_F', ++ 'value' => '398' ++ }, ++ '41' => { ++ 'name' => 'IB_PORT_PHYS_STATE_F', ++ 'value' => '40' ++ }, ++ '410' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA7_F', ++ 'value' => '399' ++ }, ++ '411' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA8_F', ++ 'value' => '400' ++ }, ++ '412' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA9_F', ++ 'value' => '401' ++ }, ++ '413' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA10_F', ++ 'value' => '402' ++ }, ++ '414' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA11_F', ++ 'value' => '403' ++ }, ++ '415' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA12_F', ++ 'value' => '404' ++ }, ++ '416' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA13_F', ++ 'value' => '405' ++ }, ++ '417' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA14_F', ++ 'value' => '406' ++ }, ++ '418' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA15_F', ++ 'value' => '407' ++ }, ++ '419' => { ++ 'name' => 'IB_PC_PORT_VL_OP_DATA_LAST_F', ++ 'value' => '408' ++ }, ++ '42' => { ++ 'name' => 'IB_PORT_LINK_DOWN_DEF_F', ++ 'value' => '41' ++ }, ++ '420' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS_FIRST_F', ++ 'value' => '409' ++ }, ++ '421' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS0_F', ++ 'value' => '409' ++ }, ++ '422' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS1_F', ++ 'value' => '410' ++ }, ++ '423' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS2_F', ++ 'value' => '411' ++ }, ++ '424' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS3_F', ++ 'value' => '412' ++ }, ++ '425' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS4_F', ++ 'value' => '413' ++ }, ++ '426' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS5_F', ++ 'value' => '414' ++ }, ++ '427' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS6_F', ++ 'value' => '415' ++ }, ++ '428' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS7_F', ++ 'value' => '416' ++ }, ++ '429' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS8_F', ++ 'value' => '417' ++ }, ++ '43' => { ++ 'name' => 'IB_PORT_MKEY_PROT_BITS_F', ++ 'value' => '42' ++ }, ++ '430' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS9_F', ++ 'value' => '418' ++ }, ++ '431' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS10_F', ++ 'value' => '419' ++ }, ++ '432' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS11_F', ++ 'value' => '420' ++ }, ++ '433' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS12_F', ++ 'value' => '421' ++ }, ++ '434' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS13_F', ++ 'value' => '422' ++ }, ++ '435' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS14_F', ++ 'value' => '423' ++ }, ++ '436' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS15_F', ++ 'value' => '424' ++ }, ++ '437' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_FLOW_CTL_UPDATE_ERRORS_LAST_F', ++ 'value' => '425' ++ }, ++ '438' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT_COUNTERS_FIRST_F', ++ 'value' => '426' ++ }, ++ '439' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT0_F', ++ 'value' => '426' ++ }, ++ '44' => { ++ 'name' => 'IB_PORT_LMC_F', ++ 'value' => '43' ++ }, ++ '440' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT1_F', ++ 'value' => '427' ++ }, ++ '441' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT2_F', ++ 'value' => '428' ++ }, ++ '442' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT3_F', ++ 'value' => '429' ++ }, ++ '443' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT4_F', ++ 'value' => '430' ++ }, ++ '444' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT5_F', ++ 'value' => '431' ++ }, ++ '445' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT6_F', ++ 'value' => '432' ++ }, ++ '446' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT7_F', ++ 'value' => '433' ++ }, ++ '447' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT8_F', ++ 'value' => '434' ++ }, ++ '448' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT9_F', ++ 'value' => '435' ++ }, ++ '449' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT10_F', ++ 'value' => '436' ++ }, ++ '45' => { ++ 'name' => 'IB_PORT_LINK_SPEED_ACTIVE_F', ++ 'value' => '44' ++ }, ++ '450' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT11_F', ++ 'value' => '437' ++ }, ++ '451' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT12_F', ++ 'value' => '438' ++ }, ++ '452' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT13_F', ++ 'value' => '439' ++ }, ++ '453' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT14_F', ++ 'value' => '440' ++ }, ++ '454' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT15_F', ++ 'value' => '441' ++ }, ++ '455' => { ++ 'name' => 'IB_PC_PORT_VL_XMIT_WAIT_COUNTERS_LAST_F', ++ 'value' => '442' ++ }, ++ '456' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION_FIRST_F', ++ 'value' => '443' ++ }, ++ '457' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION0_F', ++ 'value' => '443' ++ }, ++ '458' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION1_F', ++ 'value' => '444' ++ }, ++ '459' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION2_F', ++ 'value' => '445' ++ }, ++ '46' => { ++ 'name' => 'IB_PORT_LINK_SPEED_ENABLED_F', ++ 'value' => '45' ++ }, ++ '460' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION3_F', ++ 'value' => '446' ++ }, ++ '461' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION4_F', ++ 'value' => '447' ++ }, ++ '462' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION5_F', ++ 'value' => '448' ++ }, ++ '463' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION6_F', ++ 'value' => '449' ++ }, ++ '464' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION7_F', ++ 'value' => '450' ++ }, ++ '465' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION8_F', ++ 'value' => '451' ++ }, ++ '466' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION9_F', ++ 'value' => '452' ++ }, ++ '467' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION10_F', ++ 'value' => '453' ++ }, ++ '468' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION11_F', ++ 'value' => '454' ++ }, ++ '469' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION12_F', ++ 'value' => '455' ++ }, ++ '47' => { ++ 'name' => 'IB_PORT_NEIGHBOR_MTU_F', ++ 'value' => '46' ++ }, ++ '470' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION13_F', ++ 'value' => '456' ++ }, ++ '471' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION14_F', ++ 'value' => '457' ++ }, ++ '472' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION15_F', ++ 'value' => '458' ++ }, ++ '473' => { ++ 'name' => 'IB_PC_SW_PORT_VL_CONGESTION_LAST_F', ++ 'value' => '459' ++ }, ++ '474' => { ++ 'name' => 'IB_PC_RCV_CON_CTRL_FIRST_F', ++ 'value' => '460' ++ }, ++ '475' => { ++ 'name' => 'IB_PC_RCV_CON_CTRL_PKT_RCV_FECN_F', ++ 'value' => '460' ++ }, ++ '476' => { ++ 'name' => 'IB_PC_RCV_CON_CTRL_PKT_RCV_BECN_F', ++ 'value' => '461' ++ }, ++ '477' => { ++ 'name' => 'IB_PC_RCV_CON_CTRL_LAST_F', ++ 'value' => '462' ++ }, ++ '478' => { ++ 'name' => 'IB_PC_SL_RCV_FECN_FIRST_F', ++ 'value' => '463' ++ }, ++ '479' => { ++ 'name' => 'IB_PC_SL_RCV_FECN0_F', ++ 'value' => '463' ++ }, ++ '48' => { ++ 'name' => 'IB_PORT_SMSL_F', ++ 'value' => '47' ++ }, ++ '480' => { ++ 'name' => 'IB_PC_SL_RCV_FECN1_F', ++ 'value' => '464' ++ }, ++ '481' => { ++ 'name' => 'IB_PC_SL_RCV_FECN2_F', ++ 'value' => '465' ++ }, ++ '482' => { ++ 'name' => 'IB_PC_SL_RCV_FECN3_F', ++ 'value' => '466' ++ }, ++ '483' => { ++ 'name' => 'IB_PC_SL_RCV_FECN4_F', ++ 'value' => '467' ++ }, ++ '484' => { ++ 'name' => 'IB_PC_SL_RCV_FECN5_F', ++ 'value' => '468' ++ }, ++ '485' => { ++ 'name' => 'IB_PC_SL_RCV_FECN6_F', ++ 'value' => '469' ++ }, ++ '486' => { ++ 'name' => 'IB_PC_SL_RCV_FECN7_F', ++ 'value' => '470' ++ }, ++ '487' => { ++ 'name' => 'IB_PC_SL_RCV_FECN8_F', ++ 'value' => '471' ++ }, ++ '488' => { ++ 'name' => 'IB_PC_SL_RCV_FECN9_F', ++ 'value' => '472' ++ }, ++ '489' => { ++ 'name' => 'IB_PC_SL_RCV_FECN10_F', ++ 'value' => '473' ++ }, ++ '49' => { ++ 'name' => 'IB_PORT_VL_CAP_F', ++ 'value' => '48' ++ }, ++ '490' => { ++ 'name' => 'IB_PC_SL_RCV_FECN11_F', ++ 'value' => '474' ++ }, ++ '491' => { ++ 'name' => 'IB_PC_SL_RCV_FECN12_F', ++ 'value' => '475' ++ }, ++ '492' => { ++ 'name' => 'IB_PC_SL_RCV_FECN13_F', ++ 'value' => '476' ++ }, ++ '493' => { ++ 'name' => 'IB_PC_SL_RCV_FECN14_F', ++ 'value' => '477' ++ }, ++ '494' => { ++ 'name' => 'IB_PC_SL_RCV_FECN15_F', ++ 'value' => '478' ++ }, ++ '495' => { ++ 'name' => 'IB_PC_SL_RCV_FECN_LAST_F', ++ 'value' => '479' ++ }, ++ '496' => { ++ 'name' => 'IB_PC_SL_RCV_BECN_FIRST_F', ++ 'value' => '480' ++ }, ++ '497' => { ++ 'name' => 'IB_PC_SL_RCV_BECN0_F', ++ 'value' => '480' ++ }, ++ '498' => { ++ 'name' => 'IB_PC_SL_RCV_BECN1_F', ++ 'value' => '481' ++ }, ++ '499' => { ++ 'name' => 'IB_PC_SL_RCV_BECN2_F', ++ 'value' => '482' ++ }, ++ '5' => { ++ 'name' => 'IB_MAD_CLASSVER_F', ++ 'value' => '5' ++ }, ++ '50' => { ++ 'name' => 'IB_PORT_INIT_TYPE_F', ++ 'value' => '49' ++ }, ++ '500' => { ++ 'name' => 'IB_PC_SL_RCV_BECN3_F', ++ 'value' => '483' ++ }, ++ '501' => { ++ 'name' => 'IB_PC_SL_RCV_BECN4_F', ++ 'value' => '484' ++ }, ++ '502' => { ++ 'name' => 'IB_PC_SL_RCV_BECN5_F', ++ 'value' => '485' ++ }, ++ '503' => { ++ 'name' => 'IB_PC_SL_RCV_BECN6_F', ++ 'value' => '486' ++ }, ++ '504' => { ++ 'name' => 'IB_PC_SL_RCV_BECN7_F', ++ 'value' => '487' ++ }, ++ '505' => { ++ 'name' => 'IB_PC_SL_RCV_BECN8_F', ++ 'value' => '488' ++ }, ++ '506' => { ++ 'name' => 'IB_PC_SL_RCV_BECN9_F', ++ 'value' => '489' ++ }, ++ '507' => { ++ 'name' => 'IB_PC_SL_RCV_BECN10_F', ++ 'value' => '490' ++ }, ++ '508' => { ++ 'name' => 'IB_PC_SL_RCV_BECN11_F', ++ 'value' => '491' ++ }, ++ '509' => { ++ 'name' => 'IB_PC_SL_RCV_BECN12_F', ++ 'value' => '492' ++ }, ++ '51' => { ++ 'name' => 'IB_PORT_VL_HIGH_LIMIT_F', ++ 'value' => '50' ++ }, ++ '510' => { ++ 'name' => 'IB_PC_SL_RCV_BECN13_F', ++ 'value' => '493' ++ }, ++ '511' => { ++ 'name' => 'IB_PC_SL_RCV_BECN14_F', ++ 'value' => '494' ++ }, ++ '512' => { ++ 'name' => 'IB_PC_SL_RCV_BECN15_F', ++ 'value' => '495' ++ }, ++ '513' => { ++ 'name' => 'IB_PC_SL_RCV_BECN_LAST_F', ++ 'value' => '496' ++ }, ++ '514' => { ++ 'name' => 'IB_PC_XMIT_CON_CTRL_FIRST_F', ++ 'value' => '497' ++ }, ++ '515' => { ++ 'name' => 'IB_PC_XMIT_CON_CTRL_TIME_CONG_F', ++ 'value' => '497' ++ }, ++ '516' => { ++ 'name' => 'IB_PC_XMIT_CON_CTRL_LAST_F', ++ 'value' => '498' ++ }, ++ '517' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG_FIRST_F', ++ 'value' => '499' ++ }, ++ '518' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG0_F', ++ 'value' => '499' ++ }, ++ '519' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG1_F', ++ 'value' => '500' ++ }, ++ '52' => { ++ 'name' => 'IB_PORT_VL_ARBITRATION_HIGH_CAP_F', ++ 'value' => '51' ++ }, ++ '520' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG2_F', ++ 'value' => '501' ++ }, ++ '521' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG3_F', ++ 'value' => '502' ++ }, ++ '522' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG4_F', ++ 'value' => '503' ++ }, ++ '523' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG5_F', ++ 'value' => '504' ++ }, ++ '524' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG6_F', ++ 'value' => '505' ++ }, ++ '525' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG7_F', ++ 'value' => '506' ++ }, ++ '526' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG8_F', ++ 'value' => '507' ++ }, ++ '527' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG9_F', ++ 'value' => '508' ++ }, ++ '528' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG10_F', ++ 'value' => '509' ++ }, ++ '529' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG11_F', ++ 'value' => '510' ++ }, ++ '53' => { ++ 'name' => 'IB_PORT_VL_ARBITRATION_LOW_CAP_F', ++ 'value' => '52' ++ }, ++ '530' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG12_F', ++ 'value' => '511' ++ }, ++ '531' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG13_F', ++ 'value' => '512' ++ }, ++ '532' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG14_F', ++ 'value' => '513' ++ }, ++ '533' => { ++ 'name' => 'IB_PC_VL_XMIT_TIME_CONG_LAST_F', ++ 'value' => '514' ++ }, ++ '534' => { ++ 'name' => 'IB_MLNX_EXT_PORT_STATE_CHG_ENABLE_F', ++ 'value' => '515' ++ }, ++ '535' => { ++ 'name' => 'IB_MLNX_EXT_PORT_LINK_SPEED_SUPPORTED_F', ++ 'value' => '516' ++ }, ++ '536' => { ++ 'name' => 'IB_MLNX_EXT_PORT_LINK_SPEED_ENABLED_F', ++ 'value' => '517' ++ }, ++ '537' => { ++ 'name' => 'IB_MLNX_EXT_PORT_LINK_SPEED_ACTIVE_F', ++ 'value' => '518' ++ }, ++ '538' => { ++ 'name' => 'IB_MLNX_EXT_PORT_LAST_F', ++ 'value' => '519' ++ }, ++ '539' => { ++ 'name' => 'IB_CC_CCKEY_F', ++ 'value' => '520' ++ }, ++ '54' => { ++ 'name' => 'IB_PORT_INIT_TYPE_REPLY_F', ++ 'value' => '53' ++ }, ++ '540' => { ++ 'name' => 'IB_CC_CONGESTION_INFO_FIRST_F', ++ 'value' => '521' ++ }, ++ '541' => { ++ 'name' => 'IB_CC_CONGESTION_INFO_F', ++ 'value' => '521' ++ }, ++ '542' => { ++ 'name' => 'IB_CC_CONGESTION_INFO_CONTROL_TABLE_CAP_F', ++ 'value' => '522' ++ }, ++ '543' => { ++ 'name' => 'IB_CC_CONGESTION_INFO_LAST_F', ++ 'value' => '523' ++ }, ++ '544' => { ++ 'name' => 'IB_CC_CONGESTION_KEY_INFO_FIRST_F', ++ 'value' => '524' ++ }, ++ '545' => { ++ 'name' => 'IB_CC_CONGESTION_KEY_INFO_CC_KEY_F', ++ 'value' => '524' ++ }, ++ '546' => { ++ 'name' => 'IB_CC_CONGESTION_KEY_INFO_CC_KEY_PROTECT_BIT_F', ++ 'value' => '525' ++ }, ++ '547' => { ++ 'name' => 'IB_CC_CONGESTION_KEY_INFO_CC_KEY_LEASE_PERIOD_F', ++ 'value' => '526' ++ }, ++ '548' => { ++ 'name' => 'IB_CC_CONGESTION_KEY_INFO_CC_KEY_VIOLATIONS_F', ++ 'value' => '527' ++ }, ++ '549' => { ++ 'name' => 'IB_CC_CONGESTION_KEY_INFO_LAST_F', ++ 'value' => '528' ++ }, ++ '55' => { ++ 'name' => 'IB_PORT_MTU_CAP_F', ++ 'value' => '54' ++ }, ++ '550' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_FIRST_F', ++ 'value' => '529' ++ }, ++ '551' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_LOGTYPE_F', ++ 'value' => '529' ++ }, ++ '552' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_CONGESTION_FLAGS_F', ++ 'value' => '530' ++ }, ++ '553' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_LAST_F', ++ 'value' => '531' ++ }, ++ '554' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_SWITCH_FIRST_F', ++ 'value' => '532' ++ }, ++ '555' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_SWITCH_LOG_EVENTS_COUNTER_F', ++ 'value' => '532' ++ }, ++ '556' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_SWITCH_CURRENT_TIME_STAMP_F', ++ 'value' => '533' ++ }, ++ '557' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_SWITCH_PORTMAP_F', ++ 'value' => '534' ++ }, ++ '558' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_SWITCH_LAST_F', ++ 'value' => '535' ++ }, ++ '559' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_SWITCH_FIRST_F', ++ 'value' => '536' ++ }, ++ '56' => { ++ 'name' => 'IB_PORT_VL_STALL_COUNT_F', ++ 'value' => '55' ++ }, ++ '560' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_SWITCH_SLID_F', ++ 'value' => '536' ++ }, ++ '561' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_SWITCH_DLID_F', ++ 'value' => '537' ++ }, ++ '562' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_SWITCH_SL_F', ++ 'value' => '538' ++ }, ++ '563' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_SWITCH_TIMESTAMP_F', ++ 'value' => '539' ++ }, ++ '564' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_SWITCH_LAST_F', ++ 'value' => '540' ++ }, ++ '565' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_CA_FIRST_F', ++ 'value' => '541' ++ }, ++ '566' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_CA_THRESHOLD_EVENT_COUNTER_F', ++ 'value' => '541' ++ }, ++ '567' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_CA_THRESHOLD_CONGESTION_EVENT_MAP_F', ++ 'value' => '542' ++ }, ++ '568' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_CA_CURRENT_TIMESTAMP_F', ++ 'value' => '543' ++ }, ++ '569' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_CA_LAST_F', ++ 'value' => '544' ++ }, ++ '57' => { ++ 'name' => 'IB_PORT_HOQ_LIFE_F', ++ 'value' => '56' ++ }, ++ '570' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_FIRST_F', ++ 'value' => '545' ++ }, ++ '571' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_LOCAL_QP_CN_ENTRY_F', ++ 'value' => '545' ++ }, ++ '572' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_SL_CN_ENTRY_F', ++ 'value' => '546' ++ }, ++ '573' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_SERVICE_TYPE_CN_ENTRY_F', ++ 'value' => '547' ++ }, ++ '574' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_REMOTE_QP_NUMBER_CN_ENTRY_F', ++ 'value' => '548' ++ }, ++ '575' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_LOCAL_LID_CN_F', ++ 'value' => '549' ++ }, ++ '576' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_REMOTE_LID_CN_ENTRY_F', ++ 'value' => '550' ++ }, ++ '577' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_TIMESTAMP_CN_ENTRY_F', ++ 'value' => '551' ++ }, ++ '578' => { ++ 'name' => 'IB_CC_CONGESTION_LOG_ENTRY_CA_LAST_F', ++ 'value' => '552' ++ }, ++ '579' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_FIRST_F', ++ 'value' => '553' ++ }, ++ '58' => { ++ 'name' => 'IB_PORT_OPER_VLS_F', ++ 'value' => '57' ++ }, ++ '580' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_CONTROL_MAP_F', ++ 'value' => '553' ++ }, ++ '581' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_VICTIM_MASK_F', ++ 'value' => '554' ++ }, ++ '582' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_CREDIT_MASK_F', ++ 'value' => '555' ++ }, ++ '583' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_THRESHOLD_F', ++ 'value' => '556' ++ }, ++ '584' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_PACKET_SIZE_F', ++ 'value' => '557' ++ }, ++ '585' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_CS_THRESHOLD_F', ++ 'value' => '558' ++ }, ++ '586' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_CS_RETURN_DELAY_F', ++ 'value' => '559' ++ }, ++ '587' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_MARKING_RATE_F', ++ 'value' => '560' ++ }, ++ '588' => { ++ 'name' => 'IB_CC_SWITCH_CONGESTION_SETTING_LAST_F', ++ 'value' => '561' ++ }, ++ '589' => { ++ 'name' => 'IB_CC_SWITCH_PORT_CONGESTION_SETTING_ELEMENT_FIRST_F', ++ 'value' => '562' ++ }, ++ '59' => { ++ 'name' => 'IB_PORT_PART_EN_INB_F', ++ 'value' => '58' ++ }, ++ '590' => { ++ 'name' => 'IB_CC_SWITCH_PORT_CONGESTION_SETTING_ELEMENT_VALID_F', ++ 'value' => '562' ++ }, ++ '591' => { ++ 'name' => 'IB_CC_SWITCH_PORT_CONGESTION_SETTING_ELEMENT_CONTROL_TYPE_F', ++ 'value' => '563' ++ }, ++ '592' => { ++ 'name' => 'IB_CC_SWITCH_PORT_CONGESTION_SETTING_ELEMENT_THRESHOLD_F', ++ 'value' => '564' ++ }, ++ '593' => { ++ 'name' => 'IB_CC_SWITCH_PORT_CONGESTION_SETTING_ELEMENT_PACKET_SIZE_F', ++ 'value' => '565' ++ }, ++ '594' => { ++ 'name' => 'IB_CC_SWITCH_PORT_CONGESTION_SETTING_ELEMENT_CONG_PARM_MARKING_RATE_F', ++ 'value' => '566' ++ }, ++ '595' => { ++ 'name' => 'IB_CC_SWITCH_PORT_CONGESTION_SETTING_ELEMENT_LAST_F', ++ 'value' => '567' ++ }, ++ '596' => { ++ 'name' => 'IB_CC_CA_CONGESTION_SETTING_FIRST_F', ++ 'value' => '568' ++ }, ++ '597' => { ++ 'name' => 'IB_CC_CA_CONGESTION_SETTING_PORT_CONTROL_F', ++ 'value' => '568' ++ }, ++ '598' => { ++ 'name' => 'IB_CC_CA_CONGESTION_SETTING_CONTROL_MAP_F', ++ 'value' => '569' ++ }, ++ '599' => { ++ 'name' => 'IB_CC_CA_CONGESTION_SETTING_LAST_F', ++ 'value' => '570' ++ }, ++ '6' => { ++ 'name' => 'IB_MAD_MGMTCLASS_F', ++ 'value' => '6' ++ }, ++ '60' => { ++ 'name' => 'IB_PORT_PART_EN_OUTB_F', ++ 'value' => '59' ++ }, ++ '600' => { ++ 'name' => 'IB_CC_CA_CONGESTION_ENTRY_FIRST_F', ++ 'value' => '571' ++ }, ++ '601' => { ++ 'name' => 'IB_CC_CA_CONGESTION_ENTRY_CCTI_TIMER_F', ++ 'value' => '571' ++ }, ++ '602' => { ++ 'name' => 'IB_CC_CA_CONGESTION_ENTRY_CCTI_INCREASE_F', ++ 'value' => '572' ++ }, ++ '603' => { ++ 'name' => 'IB_CC_CA_CONGESTION_ENTRY_TRIGGER_THRESHOLD_F', ++ 'value' => '573' ++ }, ++ '604' => { ++ 'name' => 'IB_CC_CA_CONGESTION_ENTRY_CCTI_MIN_F', ++ 'value' => '574' ++ }, ++ '605' => { ++ 'name' => 'IB_CC_CA_CONGESTION_ENTRY_LAST_F', ++ 'value' => '575' ++ }, ++ '606' => { ++ 'name' => 'IB_CC_CONGESTION_CONTROL_TABLE_FIRST_F', ++ 'value' => '576' ++ }, ++ '607' => { ++ 'name' => 'IB_CC_CONGESTION_CONTROL_TABLE_CCTI_LIMIT_F', ++ 'value' => '576' ++ }, ++ '608' => { ++ 'name' => 'IB_CC_CONGESTION_CONTROL_TABLE_LAST_F', ++ 'value' => '577' ++ }, ++ '609' => { ++ 'name' => 'IB_CC_CONGESTION_CONTROL_TABLE_ENTRY_FIRST_F', ++ 'value' => '578' ++ }, ++ '61' => { ++ 'name' => 'IB_PORT_FILTER_RAW_INB_F', ++ 'value' => '60' ++ }, ++ '610' => { ++ 'name' => 'IB_CC_CONGESTION_CONTROL_TABLE_ENTRY_CCT_SHIFT_F', ++ 'value' => '578' ++ }, ++ '611' => { ++ 'name' => 'IB_CC_CONGESTION_CONTROL_TABLE_ENTRY_CCT_MULTIPLIER_F', ++ 'value' => '579' ++ }, ++ '612' => { ++ 'name' => 'IB_CC_CONGESTION_CONTROL_TABLE_ENTRY_LAST_F', ++ 'value' => '580' ++ }, ++ '613' => { ++ 'name' => 'IB_CC_TIMESTAMP_FIRST_F', ++ 'value' => '581' ++ }, ++ '614' => { ++ 'name' => 'IB_CC_TIMESTAMP_F', ++ 'value' => '581' ++ }, ++ '615' => { ++ 'name' => 'IB_CC_TIMESTAMP_LAST_F', ++ 'value' => '582' ++ }, ++ '616' => { ++ 'name' => 'IB_SA_NR_FIRST_F', ++ 'value' => '583' ++ }, ++ '617' => { ++ 'name' => 'IB_SA_NR_LID_F', ++ 'value' => '583' ++ }, ++ '618' => { ++ 'name' => 'IB_SA_NR_BASEVER_F', ++ 'value' => '584' ++ }, ++ '619' => { ++ 'name' => 'IB_SA_NR_CLASSVER_F', ++ 'value' => '585' ++ }, ++ '62' => { ++ 'name' => 'IB_PORT_FILTER_RAW_OUTB_F', ++ 'value' => '61' ++ }, ++ '620' => { ++ 'name' => 'IB_SA_NR_TYPE_F', ++ 'value' => '586' ++ }, ++ '621' => { ++ 'name' => 'IB_SA_NR_NPORTS_F', ++ 'value' => '587' ++ }, ++ '622' => { ++ 'name' => 'IB_SA_NR_SYSTEM_GUID_F', ++ 'value' => '588' ++ }, ++ '623' => { ++ 'name' => 'IB_SA_NR_GUID_F', ++ 'value' => '589' ++ }, ++ '624' => { ++ 'name' => 'IB_SA_NR_PORT_GUID_F', ++ 'value' => '590' ++ }, ++ '625' => { ++ 'name' => 'IB_SA_NR_PARTITION_CAP_F', ++ 'value' => '591' ++ }, ++ '626' => { ++ 'name' => 'IB_SA_NR_DEVID_F', ++ 'value' => '592' ++ }, ++ '627' => { ++ 'name' => 'IB_SA_NR_REVISION_F', ++ 'value' => '593' ++ }, ++ '628' => { ++ 'name' => 'IB_SA_NR_LOCAL_PORT_F', ++ 'value' => '594' ++ }, ++ '629' => { ++ 'name' => 'IB_SA_NR_VENDORID_F', ++ 'value' => '595' ++ }, ++ '63' => { ++ 'name' => 'IB_PORT_MKEY_VIOL_F', ++ 'value' => '62' ++ }, ++ '630' => { ++ 'name' => 'IB_SA_NR_NODEDESC_F', ++ 'value' => '596' ++ }, ++ '631' => { ++ 'name' => 'IB_SA_NR_LAST_F', ++ 'value' => '597' ++ }, ++ '632' => { ++ 'name' => 'IB_PSR_TAG_F', ++ 'value' => '598' ++ }, ++ '633' => { ++ 'name' => 'IB_PSR_SAMPLE_STATUS_F', ++ 'value' => '599' ++ }, ++ '634' => { ++ 'name' => 'IB_PSR_COUNTER0_F', ++ 'value' => '600' ++ }, ++ '635' => { ++ 'name' => 'IB_PSR_COUNTER1_F', ++ 'value' => '601' ++ }, ++ '636' => { ++ 'name' => 'IB_PSR_COUNTER2_F', ++ 'value' => '602' ++ }, ++ '637' => { ++ 'name' => 'IB_PSR_COUNTER3_F', ++ 'value' => '603' ++ }, ++ '638' => { ++ 'name' => 'IB_PSR_COUNTER4_F', ++ 'value' => '604' ++ }, ++ '639' => { ++ 'name' => 'IB_PSR_COUNTER5_F', ++ 'value' => '605' ++ }, ++ '64' => { ++ 'name' => 'IB_PORT_PKEY_VIOL_F', ++ 'value' => '63' ++ }, ++ '640' => { ++ 'name' => 'IB_PSR_COUNTER6_F', ++ 'value' => '606' ++ }, ++ '641' => { ++ 'name' => 'IB_PSR_COUNTER7_F', ++ 'value' => '607' ++ }, ++ '642' => { ++ 'name' => 'IB_PSR_COUNTER8_F', ++ 'value' => '608' ++ }, ++ '643' => { ++ 'name' => 'IB_PSR_COUNTER9_F', ++ 'value' => '609' ++ }, ++ '644' => { ++ 'name' => 'IB_PSR_COUNTER10_F', ++ 'value' => '610' ++ }, ++ '645' => { ++ 'name' => 'IB_PSR_COUNTER11_F', ++ 'value' => '611' ++ }, ++ '646' => { ++ 'name' => 'IB_PSR_COUNTER12_F', ++ 'value' => '612' ++ }, ++ '647' => { ++ 'name' => 'IB_PSR_COUNTER13_F', ++ 'value' => '613' ++ }, ++ '648' => { ++ 'name' => 'IB_PSR_COUNTER14_F', ++ 'value' => '614' ++ }, ++ '649' => { ++ 'name' => 'IB_PSR_LAST_F', ++ 'value' => '615' ++ }, ++ '65' => { ++ 'name' => 'IB_PORT_QKEY_VIOL_F', ++ 'value' => '64' ++ }, ++ '650' => { ++ 'name' => 'IB_PORT_EXT_FIRST_F', ++ 'value' => '616' ++ }, ++ '651' => { ++ 'name' => 'IB_PORT_EXT_CAPMASK_F', ++ 'value' => '616' ++ }, ++ '652' => { ++ 'name' => 'IB_PORT_EXT_FEC_MODE_ACTIVE_F', ++ 'value' => '617' ++ }, ++ '653' => { ++ 'name' => 'IB_PORT_EXT_FDR_FEC_MODE_SUPPORTED_F', ++ 'value' => '618' ++ }, ++ '654' => { ++ 'name' => 'IB_PORT_EXT_FDR_FEC_MODE_ENABLED_F', ++ 'value' => '619' ++ }, ++ '655' => { ++ 'name' => 'IB_PORT_EXT_EDR_FEC_MODE_SUPPORTED_F', ++ 'value' => '620' ++ }, ++ '656' => { ++ 'name' => 'IB_PORT_EXT_EDR_FEC_MODE_ENABLED_F', ++ 'value' => '621' ++ }, ++ '657' => { ++ 'name' => 'IB_PORT_EXT_LAST_F', ++ 'value' => '622' ++ }, ++ '658' => { ++ 'name' => 'IB_PESC_RSFEC_FIRST_F', ++ 'value' => '623' ++ }, ++ '659' => { ++ 'name' => 'IB_PESC_RSFEC_PORT_SELECT_F', ++ 'value' => '623' ++ }, ++ '66' => { ++ 'name' => 'IB_PORT_GUID_CAP_F', ++ 'value' => '65' ++ }, ++ '660' => { ++ 'name' => 'IB_PESC_RSFEC_COUNTER_SELECT_F', ++ 'value' => '624' ++ }, ++ '661' => { ++ 'name' => 'IB_PESC_RSFEC_SYNC_HDR_ERR_CTR_F', ++ 'value' => '625' ++ }, ++ '662' => { ++ 'name' => 'IB_PESC_RSFEC_UNK_BLOCK_CTR_F', ++ 'value' => '626' ++ }, ++ '663' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE0_F', ++ 'value' => '627' ++ }, ++ '664' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE1_F', ++ 'value' => '628' ++ }, ++ '665' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE2_F', ++ 'value' => '629' ++ }, ++ '666' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE3_F', ++ 'value' => '630' ++ }, ++ '667' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE4_F', ++ 'value' => '631' ++ }, ++ '668' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE5_F', ++ 'value' => '632' ++ }, ++ '669' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE6_F', ++ 'value' => '633' ++ }, ++ '67' => { ++ 'name' => 'IB_PORT_CLIENT_REREG_F', ++ 'value' => '66' ++ }, ++ '670' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE7_F', ++ 'value' => '634' ++ }, ++ '671' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE8_F', ++ 'value' => '635' ++ }, ++ '672' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE9_F', ++ 'value' => '636' ++ }, ++ '673' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE10_F', ++ 'value' => '637' ++ }, ++ '674' => { ++ 'name' => 'IB_PESC_RSFEC_FEC_CORR_SYMBOL_CTR_LANE11_F', ++ 'value' => '638' ++ }, ++ '675' => { ++ 'name' => 'IB_PESC_PORT_FEC_CORR_BLOCK_CTR_F', ++ 'value' => '639' ++ }, ++ '676' => { ++ 'name' => 'IB_PESC_PORT_FEC_UNCORR_BLOCK_CTR_F', ++ 'value' => '640' ++ }, ++ '677' => { ++ 'name' => 'IB_PESC_PORT_FEC_CORR_SYMBOL_CTR_F', ++ 'value' => '641' ++ }, ++ '678' => { ++ 'name' => 'IB_PESC_RSFEC_LAST_F', ++ 'value' => '642' ++ }, ++ '679' => { ++ 'name' => 'IB_PC_EXT_COUNTER_SELECT2_F', ++ 'value' => '643' ++ }, ++ '68' => { ++ 'name' => 'IB_PORT_MCAST_PKEY_SUPR_ENAB_F', ++ 'value' => '67' ++ }, ++ '680' => { ++ 'name' => 'IB_PC_EXT_ERR_SYM_F', ++ 'value' => '644' ++ }, ++ '681' => { ++ 'name' => 'IB_PC_EXT_LINK_RECOVERS_F', ++ 'value' => '645' ++ }, ++ '682' => { ++ 'name' => 'IB_PC_EXT_LINK_DOWNED_F', ++ 'value' => '646' ++ }, ++ '683' => { ++ 'name' => 'IB_PC_EXT_ERR_RCV_F', ++ 'value' => '647' ++ }, ++ '684' => { ++ 'name' => 'IB_PC_EXT_ERR_PHYSRCV_F', ++ 'value' => '648' ++ }, ++ '685' => { ++ 'name' => 'IB_PC_EXT_ERR_SWITCH_REL_F', ++ 'value' => '649' ++ }, ++ '686' => { ++ 'name' => 'IB_PC_EXT_XMT_DISCARDS_F', ++ 'value' => '650' ++ }, ++ '687' => { ++ 'name' => 'IB_PC_EXT_ERR_XMTCONSTR_F', ++ 'value' => '651' ++ }, ++ '688' => { ++ 'name' => 'IB_PC_EXT_ERR_RCVCONSTR_F', ++ 'value' => '652' ++ }, ++ '689' => { ++ 'name' => 'IB_PC_EXT_ERR_LOCALINTEG_F', ++ 'value' => '653' ++ }, ++ '69' => { ++ 'name' => 'IB_PORT_SUBN_TIMEOUT_F', ++ 'value' => '68' ++ }, ++ '690' => { ++ 'name' => 'IB_PC_EXT_ERR_EXCESS_OVR_F', ++ 'value' => '654' ++ }, ++ '691' => { ++ 'name' => 'IB_PC_EXT_VL15_DROPPED_F', ++ 'value' => '655' ++ }, ++ '692' => { ++ 'name' => 'IB_PC_EXT_XMT_WAIT_F', ++ 'value' => '656' ++ }, ++ '693' => { ++ 'name' => 'IB_PC_EXT_QP1_DROP_F', ++ 'value' => '657' ++ }, ++ '694' => { ++ 'name' => 'IB_PC_EXT_ERR_LAST_F', ++ 'value' => '658' ++ }, ++ '695' => { ++ 'name' => 'IB_PC_QP1_DROP_F', ++ 'value' => '659' ++ }, ++ '696' => { ++ 'name' => 'IB_PORT_EXT_HDR_FEC_MODE_SUPPORTED_F', ++ 'value' => '660' ++ }, ++ '697' => { ++ 'name' => 'IB_PORT_EXT_HDR_FEC_MODE_ENABLED_F', ++ 'value' => '661' ++ }, ++ '698' => { ++ 'name' => 'IB_PORT_EXT_HDR_FEC_MODE_LAST_F', ++ 'value' => '662' ++ }, ++ '699' => { ++ 'name' => 'IB_PORT_EXT_NDR_FEC_MODE_SUPPORTED_F', ++ 'value' => '663' ++ }, ++ '7' => { ++ 'name' => 'IB_MAD_BASEVER_F', ++ 'value' => '7' ++ }, ++ '70' => { ++ 'name' => 'IB_PORT_RESP_TIME_VAL_F', ++ 'value' => '69' ++ }, ++ '700' => { ++ 'name' => 'IB_PORT_EXT_NDR_FEC_MODE_ENABLED_F', ++ 'value' => '664' ++ }, ++ '701' => { ++ 'name' => 'IB_PORT_EXT_NDR_FEC_MODE_LAST_F', ++ 'value' => '665' ++ }, ++ '702' => { ++ 'name' => 'IB_FIELD_LAST_', ++ 'value' => '666' ++ }, ++ '71' => { ++ 'name' => 'IB_PORT_LOCAL_PHYS_ERR_F', ++ 'value' => '70' ++ }, ++ '72' => { ++ 'name' => 'IB_PORT_OVERRUN_ERR_F', ++ 'value' => '71' ++ }, ++ '73' => { ++ 'name' => 'IB_PORT_MAX_CREDIT_HINT_F', ++ 'value' => '72' ++ }, ++ '74' => { ++ 'name' => 'IB_PORT_LINK_ROUND_TRIP_F', ++ 'value' => '73' ++ }, ++ '75' => { ++ 'name' => 'IB_PORT_LAST_F', ++ 'value' => '74' ++ }, ++ '76' => { ++ 'name' => 'IB_NODE_FIRST_F', ++ 'value' => '75' ++ }, ++ '77' => { ++ 'name' => 'IB_NODE_BASE_VERS_F', ++ 'value' => '75' ++ }, ++ '78' => { ++ 'name' => 'IB_NODE_CLASS_VERS_F', ++ 'value' => '76' ++ }, ++ '79' => { ++ 'name' => 'IB_NODE_TYPE_F', ++ 'value' => '77' ++ }, ++ '8' => { ++ 'name' => 'IB_MAD_STATUS_F', ++ 'value' => '8' ++ }, ++ '80' => { ++ 'name' => 'IB_NODE_NPORTS_F', ++ 'value' => '78' ++ }, ++ '81' => { ++ 'name' => 'IB_NODE_SYSTEM_GUID_F', ++ 'value' => '79' ++ }, ++ '82' => { ++ 'name' => 'IB_NODE_GUID_F', ++ 'value' => '80' ++ }, ++ '83' => { ++ 'name' => 'IB_NODE_PORT_GUID_F', ++ 'value' => '81' ++ }, ++ '84' => { ++ 'name' => 'IB_NODE_PARTITION_CAP_F', ++ 'value' => '82' ++ }, ++ '85' => { ++ 'name' => 'IB_NODE_DEVID_F', ++ 'value' => '83' ++ }, ++ '86' => { ++ 'name' => 'IB_NODE_REVISION_F', ++ 'value' => '84' ++ }, ++ '87' => { ++ 'name' => 'IB_NODE_LOCAL_PORT_F', ++ 'value' => '85' ++ }, ++ '88' => { ++ 'name' => 'IB_NODE_VENDORID_F', ++ 'value' => '86' ++ }, ++ '89' => { ++ 'name' => 'IB_NODE_LAST_F', ++ 'value' => '87' ++ }, ++ '9' => { ++ 'name' => 'IB_DRSMP_HOPCNT_F', ++ 'value' => '9' ++ }, ++ '90' => { ++ 'name' => 'IB_SW_FIRST_F', ++ 'value' => '88' ++ }, ++ '91' => { ++ 'name' => 'IB_SW_LINEAR_FDB_CAP_F', ++ 'value' => '88' ++ }, ++ '92' => { ++ 'name' => 'IB_SW_RANDOM_FDB_CAP_F', ++ 'value' => '89' ++ }, ++ '93' => { ++ 'name' => 'IB_SW_MCAST_FDB_CAP_F', ++ 'value' => '90' ++ }, ++ '94' => { ++ 'name' => 'IB_SW_LINEAR_FDB_TOP_F', ++ 'value' => '91' ++ }, ++ '95' => { ++ 'name' => 'IB_SW_DEF_PORT_F', ++ 'value' => '92' ++ }, ++ '96' => { ++ 'name' => 'IB_SW_DEF_MCAST_PRIM_F', ++ 'value' => '93' ++ }, ++ '97' => { ++ 'name' => 'IB_SW_DEF_MCAST_NOT_PRIM_F', ++ 'value' => '94' ++ }, ++ '98' => { ++ 'name' => 'IB_SW_LIFE_TIME_F', ++ 'value' => '95' ++ }, ++ '99' => { ++ 'name' => 'IB_SW_STATE_CHANGE_F', ++ 'value' => '96' ++ } ++ }, ++ 'Name' => 'enum MAD_FIELDS', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '71' => { ++ 'Name' => 'int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '710' => { ++ 'BaseType' => '1', ++ 'Header' => undef, ++ 'Line' => '43', ++ 'Name' => '_IO_lock_t', ++ 'Type' => 'Typedef' ++ }, ++ '718' => { ++ 'Name' => 'struct _IO_marker', ++ 'Type' => 'Struct' ++ }, ++ '723' => { ++ 'BaseType' => '718', ++ 'Name' => 'struct _IO_marker*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '729' => { ++ 'BaseType' => '307', ++ 'Name' => 'struct _IO_FILE*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '735' => { ++ 'BaseType' => '89', ++ 'Name' => 'char[1]', ++ 'Size' => '1', ++ 'Type' => 'Array' ++ }, ++ '751' => { ++ 'BaseType' => '710', ++ 'Name' => '_IO_lock_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '757' => { ++ 'Name' => 'struct _IO_codecvt', ++ 'Type' => 'Struct' ++ }, ++ '762' => { ++ 'BaseType' => '757', ++ 'Name' => 'struct _IO_codecvt*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '76698' => { ++ 'BaseType' => '165', ++ 'Name' => 'long*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '768' => { ++ 'Name' => 'struct _IO_wide_data', ++ 'Type' => 'Struct' ++ }, ++ '773' => { ++ 'BaseType' => '768', ++ 'Name' => 'struct _IO_wide_data*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '779' => { ++ 'BaseType' => '89', ++ 'Name' => 'char[20]', ++ 'Size' => '20', ++ 'Type' => 'Array' ++ }, ++ '78' => { ++ 'BaseType' => '96', ++ 'Name' => 'char const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '795' => { ++ 'BaseType' => '698', ++ 'Name' => 'FILE*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '818' => { ++ 'BaseType' => '233', ++ 'Name' => 'uint8_t[16]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '84623' => { ++ 'Header' => undef, ++ 'Line' => '1414', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IB_DEST_LID', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IB_DEST_DRPATH', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IB_DEST_GUID', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IB_DEST_DRSLID', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IB_DEST_GID', ++ 'value' => '4' ++ } ++ }, ++ 'Name' => 'enum MAD_DEST', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '85330' => { ++ 'BaseType' => '1052', ++ 'Name' => 'ibmad_gid_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '87671' => { ++ 'BaseType' => '269', ++ 'Name' => 'uint64_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '89' => { ++ 'Name' => 'char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '96' => { ++ 'BaseType' => '89', ++ 'Name' => 'char const', ++ 'Size' => '1', ++ 'Type' => 'Const' ++ } ++ }, ++ 'UndefinedSymbols' => { ++ 'libibmad.so.5.3.41.0' => { ++ '_ITM_deregisterTMCloneTable' => 0, ++ '_ITM_registerTMCloneTable' => 0, ++ '__cxa_finalize@GLIBC_2.2.5' => 0, ++ '__errno_location@GLIBC_2.2.5' => 0, ++ '__fprintf_chk@GLIBC_2.3.4' => 0, ++ '__gmon_start__' => 0, ++ '__memset_chk@GLIBC_2.3.4' => 0, ++ '__printf_chk@GLIBC_2.3.4' => 0, ++ '__snprintf_chk@GLIBC_2.3.4' => 0, ++ '__sprintf_chk@GLIBC_2.3.4' => 0, ++ '__stack_chk_fail@GLIBC_2.4' => 0, ++ 'calloc@GLIBC_2.2.5' => 0, ++ 'exit@GLIBC_2.2.5' => 0, ++ 'fputc@GLIBC_2.2.5' => 0, ++ 'fputs@GLIBC_2.2.5' => 0, ++ 'free@GLIBC_2.2.5' => 0, ++ 'getenv@GLIBC_2.2.5' => 0, ++ 'getpid@GLIBC_2.2.5' => 0, ++ 'inet_ntop@GLIBC_2.2.5' => 0, ++ 'inet_pton@GLIBC_2.2.5' => 0, ++ 'memcpy@GLIBC_2.14' => 0, ++ 'random@GLIBC_2.2.5' => 0, ++ 'snprintf@GLIBC_2.2.5' => 0, ++ 'srandom@GLIBC_2.2.5' => 0, ++ 'stderr@GLIBC_2.2.5' => 0, ++ 'strchr@GLIBC_2.2.5' => 0, ++ 'strdup@GLIBC_2.2.5' => 0, ++ 'strerror@GLIBC_2.2.5' => 0, ++ 'strlen@GLIBC_2.2.5' => 0, ++ 'strncpy@GLIBC_2.2.5' => 0, ++ 'strtol@GLIBC_2.2.5' => 0, ++ 'strtoull@GLIBC_2.2.5' => 0, ++ 'time@GLIBC_2.2.5' => 0, ++ 'umad_addr_dump@IBUMAD_1.0' => 0, ++ 'umad_close_port@IBUMAD_1.0' => 0, ++ 'umad_get_mad@IBUMAD_1.0' => 0, ++ 'umad_get_mad_addr@IBUMAD_1.0' => 0, ++ 'umad_init@IBUMAD_1.0' => 0, ++ 'umad_open_port@IBUMAD_1.0' => 0, ++ 'umad_recv@IBUMAD_1.0' => 0, ++ 'umad_register@IBUMAD_1.0' => 0, ++ 'umad_register_oui@IBUMAD_1.0' => 0, ++ 'umad_send@IBUMAD_1.0' => 0, ++ 'umad_set_addr@IBUMAD_1.0' => 0, ++ 'umad_set_grh@IBUMAD_1.0' => 0, ++ 'umad_set_pkey@IBUMAD_1.0' => 0, ++ 'umad_size@IBUMAD_1.0' => 0, ++ 'umad_status@IBUMAD_1.0' => 0 ++ } ++ }, ++ 'WordSize' => '8' ++ }; +diff --git a/ABI/ibnetdisc.dump b/ABI/ibnetdisc.dump +new file mode 100644 +index 0000000..a2086a1 +--- /dev/null ++++ b/ABI/ibnetdisc.dump +@@ -0,0 +1,1145 @@ ++$VAR1 = { ++ 'ABI_DUMPER_VERSION' => '1.1', ++ 'ABI_DUMP_VERSION' => '3.5', ++ 'Arch' => 'x86_64', ++ 'GccVersion' => '11.1.0', ++ 'Headers' => {}, ++ 'Language' => 'C', ++ 'LibraryName' => 'libibnetdisc.so.5.0.41.0', ++ 'LibraryVersion' => 'ibnetdisc', ++ 'MissedOffsets' => '1', ++ 'MissedRegs' => '1', ++ 'NameSpaces' => {}, ++ 'Needed' => { ++ 'libc.so.6' => 1, ++ 'libibmad.so.5' => 1, ++ 'libibumad.so.3' => 1 ++ }, ++ 'Sources' => {}, ++ 'SymbolInfo' => { ++ '17390' => { ++ 'Header' => undef, ++ 'Line' => '249', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'chassisnum', ++ 'type' => '92' ++ } ++ }, ++ 'Return' => '277', ++ 'ShortName' => 'ibnd_get_chassis_guid' ++ }, ++ '18351' => { ++ 'Header' => undef, ++ 'Line' => '164', ++ 'Param' => { ++ '0' => { ++ 'name' => 'guid', ++ 'type' => '277' ++ } ++ }, ++ 'Return' => '64', ++ 'ShortName' => 'ibnd_is_xsigo_tca' ++ }, ++ '18406' => { ++ 'Header' => undef, ++ 'Line' => '155', ++ 'Param' => { ++ '0' => { ++ 'name' => 'guid', ++ 'type' => '277' ++ } ++ }, ++ 'Return' => '64', ++ 'ShortName' => 'ibnd_is_xsigo_hca' ++ }, ++ '18491' => { ++ 'Header' => undef, ++ 'Line' => '139', ++ 'Param' => { ++ '0' => { ++ 'name' => 'guid', ++ 'type' => '277' ++ } ++ }, ++ 'Return' => '64', ++ 'ShortName' => 'ibnd_is_xsigo_guid' ++ }, ++ '18630' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Param' => { ++ '0' => { ++ 'name' => 'node', ++ 'type' => '6437' ++ }, ++ '1' => { ++ 'name' => 'str', ++ 'type' => '199' ++ }, ++ '2' => { ++ 'name' => 'size', ++ 'type' => '45' ++ } ++ }, ++ 'Return' => '199', ++ 'ShortName' => 'ibnd_get_chassis_slot_str' ++ }, ++ '18996' => { ++ 'Header' => undef, ++ 'Line' => '59', ++ 'Param' => { ++ '0' => { ++ 'name' => 'node', ++ 'type' => '6437' ++ } ++ }, ++ 'Return' => '289', ++ 'ShortName' => 'ibnd_get_chassis_type' ++ }, ++ '31117' => { ++ 'Header' => undef, ++ 'Line' => '1006', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'func', ++ 'type' => '29340' ++ }, ++ '2' => { ++ 'name' => 'user_data', ++ 'type' => '192' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibnd_iter_ports' ++ }, ++ '31481' => { ++ 'Header' => undef, ++ 'Line' => '966', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'dr_str', ++ 'type' => '199' ++ } ++ }, ++ 'Return' => '6699', ++ 'ShortName' => 'ibnd_find_port_dr' ++ }, ++ '31920' => { ++ 'Header' => undef, ++ 'Line' => '949', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'guid', ++ 'type' => '277' ++ } ++ }, ++ 'Return' => '6699', ++ 'ShortName' => 'ibnd_find_port_guid' ++ }, ++ '32144' => { ++ 'Header' => undef, ++ 'Line' => '934', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'lid', ++ 'type' => '253' ++ } ++ }, ++ 'Return' => '6699', ++ 'ShortName' => 'ibnd_find_port_lid' ++ }, ++ '32293' => { ++ 'Header' => undef, ++ 'Line' => '899', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'func', ++ 'type' => '29306' ++ }, ++ '2' => { ++ 'name' => 'node_type', ++ 'type' => '64' ++ }, ++ '3' => { ++ 'name' => 'user_data', ++ 'type' => '192' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibnd_iter_nodes_type' ++ }, ++ '32774' => { ++ 'Header' => undef, ++ 'Line' => '880', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'func', ++ 'type' => '29306' ++ }, ++ '2' => { ++ 'name' => 'user_data', ++ 'type' => '192' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibnd_iter_nodes' ++ }, ++ '33113' => { ++ 'Header' => undef, ++ 'Line' => '198', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibnd_destroy_fabric' ++ }, ++ '33439' => { ++ 'Header' => undef, ++ 'Line' => '767', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ca_name', ++ 'type' => '199' ++ }, ++ '1' => { ++ 'name' => 'ca_port', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'from', ++ 'type' => '30528' ++ }, ++ '3' => { ++ 'name' => 'cfg', ++ 'type' => '29836' ++ } ++ }, ++ 'Return' => '14049', ++ 'ShortName' => 'ibnd_discover_fabric' ++ }, ++ '36127' => { ++ 'Header' => undef, ++ 'Line' => '634', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'dr_str', ++ 'type' => '199' ++ } ++ }, ++ 'Return' => '6437', ++ 'ShortName' => 'ibnd_find_node_dr' ++ }, ++ '36253' => { ++ 'Header' => undef, ++ 'Line' => '617', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'guid', ++ 'type' => '277' ++ } ++ }, ++ 'Return' => '6437', ++ 'ShortName' => 'ibnd_find_node_guid' ++ }, ++ '49776' => { ++ 'Header' => undef, ++ 'Line' => '878', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fabric', ++ 'type' => '14049' ++ }, ++ '1' => { ++ 'name' => 'file', ++ 'type' => '289' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '64', ++ 'ShortName' => 'ibnd_cache_fabric' ++ }, ++ '54605' => { ++ 'Header' => undef, ++ 'Line' => '620', ++ 'Param' => { ++ '0' => { ++ 'name' => 'file', ++ 'type' => '289' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '14049', ++ 'ShortName' => 'ibnd_load_fabric' ++ } ++ }, ++ 'SymbolVersion' => { ++ 'ibnd_cache_fabric' => 'ibnd_cache_fabric@@IBNETDISC_1.0', ++ 'ibnd_destroy_fabric' => 'ibnd_destroy_fabric@@IBNETDISC_1.0', ++ 'ibnd_discover_fabric' => 'ibnd_discover_fabric@@IBNETDISC_1.0', ++ 'ibnd_find_node_dr' => 'ibnd_find_node_dr@@IBNETDISC_1.0', ++ 'ibnd_find_node_guid' => 'ibnd_find_node_guid@@IBNETDISC_1.0', ++ 'ibnd_find_port_dr' => 'ibnd_find_port_dr@@IBNETDISC_1.0', ++ 'ibnd_find_port_guid' => 'ibnd_find_port_guid@@IBNETDISC_1.0', ++ 'ibnd_find_port_lid' => 'ibnd_find_port_lid@@IBNETDISC_1.0', ++ 'ibnd_get_chassis_guid' => 'ibnd_get_chassis_guid@@IBNETDISC_1.0', ++ 'ibnd_get_chassis_slot_str' => 'ibnd_get_chassis_slot_str@@IBNETDISC_1.0', ++ 'ibnd_get_chassis_type' => 'ibnd_get_chassis_type@@IBNETDISC_1.0', ++ 'ibnd_is_xsigo_guid' => 'ibnd_is_xsigo_guid@@IBNETDISC_1.0', ++ 'ibnd_is_xsigo_hca' => 'ibnd_is_xsigo_hca@@IBNETDISC_1.0', ++ 'ibnd_is_xsigo_tca' => 'ibnd_is_xsigo_tca@@IBNETDISC_1.0', ++ 'ibnd_iter_nodes' => 'ibnd_iter_nodes@@IBNETDISC_1.0', ++ 'ibnd_iter_nodes_type' => 'ibnd_iter_nodes_type@@IBNETDISC_1.0', ++ 'ibnd_iter_ports' => 'ibnd_iter_ports@@IBNETDISC_1.0', ++ 'ibnd_load_fabric' => 'ibnd_load_fabric@@IBNETDISC_1.0' ++ }, ++ 'Symbols' => { ++ 'libibnetdisc.so.5.0.41.0' => { ++ 'ibnd_cache_fabric@@IBNETDISC_1.0' => 1, ++ 'ibnd_destroy_fabric@@IBNETDISC_1.0' => 1, ++ 'ibnd_discover_fabric@@IBNETDISC_1.0' => 1, ++ 'ibnd_find_node_dr@@IBNETDISC_1.0' => 1, ++ 'ibnd_find_node_guid@@IBNETDISC_1.0' => 1, ++ 'ibnd_find_port_dr@@IBNETDISC_1.0' => 1, ++ 'ibnd_find_port_guid@@IBNETDISC_1.0' => 1, ++ 'ibnd_find_port_lid@@IBNETDISC_1.0' => 1, ++ 'ibnd_get_chassis_guid@@IBNETDISC_1.0' => 1, ++ 'ibnd_get_chassis_slot_str@@IBNETDISC_1.0' => 1, ++ 'ibnd_get_chassis_type@@IBNETDISC_1.0' => 1, ++ 'ibnd_is_xsigo_guid@@IBNETDISC_1.0' => 1, ++ 'ibnd_is_xsigo_hca@@IBNETDISC_1.0' => 1, ++ 'ibnd_is_xsigo_tca@@IBNETDISC_1.0' => 1, ++ 'ibnd_iter_nodes@@IBNETDISC_1.0' => 1, ++ 'ibnd_iter_nodes_type@@IBNETDISC_1.0' => 1, ++ 'ibnd_iter_ports@@IBNETDISC_1.0' => 1, ++ 'ibnd_load_fabric@@IBNETDISC_1.0' => 1 ++ } ++ }, ++ 'Target' => 'unix', ++ 'TypeInfo' => { ++ '1' => { ++ 'Name' => 'void', ++ 'Type' => 'Intrinsic' ++ }, ++ '1068' => { ++ 'BaseType' => '943', ++ 'Header' => undef, ++ 'Line' => '317', ++ 'Name' => 'ib_portid_t', ++ 'Size' => '112', ++ 'Type' => 'Typedef' ++ }, ++ '113' => { ++ 'BaseType' => '92', ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Name' => '__uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '132' => { ++ 'BaseType' => '99', ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Name' => '__uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '14049' => { ++ 'BaseType' => '6705', ++ 'Name' => 'ibnd_fabric_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '144' => { ++ 'BaseType' => '71', ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Name' => '__uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '156' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Name' => '__uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '192' => { ++ 'BaseType' => '1', ++ 'Name' => 'void*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '199' => { ++ 'BaseType' => '210', ++ 'Name' => 'char*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '210' => { ++ 'Name' => 'char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '217' => { ++ 'BaseType' => '210', ++ 'Name' => 'char const', ++ 'Size' => '1', ++ 'Type' => 'Const' ++ }, ++ '241' => { ++ 'BaseType' => '113', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => 'uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '253' => { ++ 'BaseType' => '132', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => 'uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '265' => { ++ 'BaseType' => '144', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => 'uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '277' => { ++ 'BaseType' => '156', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => 'uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '289' => { ++ 'BaseType' => '217', ++ 'Name' => 'char const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '28929' => { ++ 'Header' => undef, ++ 'Line' => '145', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_smps', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'show_progress', ++ 'offset' => '4', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'max_hops', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'debug', ++ 'offset' => '12', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'timeout_ms', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '5' => { ++ 'name' => 'retries', ++ 'offset' => '20', ++ 'type' => '71' ++ }, ++ '6' => { ++ 'name' => 'flags', ++ 'offset' => '24', ++ 'type' => '265' ++ }, ++ '7' => { ++ 'name' => 'mkey', ++ 'offset' => '32', ++ 'type' => '277' ++ }, ++ '8' => { ++ 'name' => 'pad', ++ 'offset' => '40', ++ 'type' => '29060' ++ } ++ }, ++ 'Name' => 'struct ibnd_config', ++ 'Size' => '88', ++ 'Type' => 'Struct' ++ }, ++ '29060' => { ++ 'BaseType' => '241', ++ 'Name' => 'uint8_t[44]', ++ 'Size' => '44', ++ 'Type' => 'Array' ++ }, ++ '29306' => { ++ 'BaseType' => '29318', ++ 'Header' => undef, ++ 'Line' => '214', ++ 'Name' => 'ibnd_iter_node_func_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '29318' => { ++ 'Name' => 'void(*)(ibnd_node_t*, void*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6437' ++ }, ++ '1' => { ++ 'type' => '192' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29340' => { ++ 'BaseType' => '29352', ++ 'Header' => undef, ++ 'Line' => '227', ++ 'Name' => 'ibnd_iter_port_func_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '29352' => { ++ 'Name' => 'void(*)(ibnd_port_t*, void*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6699' ++ }, ++ '1' => { ++ 'type' => '192' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29836' => { ++ 'BaseType' => '28929', ++ 'Name' => 'struct ibnd_config*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30528' => { ++ 'BaseType' => '1068', ++ 'Name' => 'ib_portid_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '45' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => 'size_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '57' => { ++ 'Name' => 'unsigned long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '5822' => { ++ 'Header' => undef, ++ 'Line' => '54', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next', ++ 'offset' => '0', ++ 'type' => '6135' ++ }, ++ '1' => { ++ 'name' => 'path_portid', ++ 'offset' => '8', ++ 'type' => '1068' ++ }, ++ '10' => { ++ 'name' => 'nodedesc', ++ 'offset' => '272', ++ 'type' => '6141' ++ }, ++ '11' => { ++ 'name' => 'ports', ++ 'offset' => '336', ++ 'type' => '6301' ++ }, ++ '12' => { ++ 'name' => 'next_chassis_node', ++ 'offset' => '344', ++ 'type' => '6135' ++ }, ++ '13' => { ++ 'name' => 'chassis', ++ 'offset' => '352', ++ 'type' => '6419' ++ }, ++ '14' => { ++ 'name' => 'ch_type', ++ 'offset' => '360', ++ 'type' => '92' ++ }, ++ '15' => { ++ 'name' => 'ch_type_str', ++ 'offset' => '361', ++ 'type' => '777' ++ }, ++ '16' => { ++ 'name' => 'ch_anafanum', ++ 'offset' => '381', ++ 'type' => '92' ++ }, ++ '17' => { ++ 'name' => 'ch_slotnum', ++ 'offset' => '382', ++ 'type' => '92' ++ }, ++ '18' => { ++ 'name' => 'ch_slot', ++ 'offset' => '383', ++ 'type' => '92' ++ }, ++ '19' => { ++ 'name' => 'ch_found', ++ 'offset' => '384', ++ 'type' => '92' ++ }, ++ '2' => { ++ 'name' => 'smalid', ++ 'offset' => '120', ++ 'type' => '253' ++ }, ++ '20' => { ++ 'name' => 'htnext', ++ 'offset' => '392', ++ 'type' => '6135' ++ }, ++ '21' => { ++ 'name' => 'type_next', ++ 'offset' => '400', ++ 'type' => '6135' ++ }, ++ '3' => { ++ 'name' => 'smalmc', ++ 'offset' => '122', ++ 'type' => '241' ++ }, ++ '4' => { ++ 'name' => 'smaenhsp0', ++ 'offset' => '124', ++ 'type' => '64' ++ }, ++ '5' => { ++ 'name' => 'switchinfo', ++ 'offset' => '128', ++ 'type' => '915' ++ }, ++ '6' => { ++ 'name' => 'guid', ++ 'offset' => '192', ++ 'type' => '277' ++ }, ++ '7' => { ++ 'name' => 'type', ++ 'offset' => '200', ++ 'type' => '64' ++ }, ++ '8' => { ++ 'name' => 'numports', ++ 'offset' => '204', ++ 'type' => '64' ++ }, ++ '9' => { ++ 'name' => 'info', ++ 'offset' => '208', ++ 'type' => '915' ++ } ++ }, ++ 'Name' => 'struct ibnd_node', ++ 'Size' => '408', ++ 'Type' => 'Struct' ++ }, ++ '6135' => { ++ 'BaseType' => '5822', ++ 'Name' => 'struct ibnd_node*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6141' => { ++ 'BaseType' => '210', ++ 'Name' => 'char[64]', ++ 'Size' => '64', ++ 'Type' => 'Array' ++ }, ++ '6157' => { ++ 'Header' => undef, ++ 'Line' => '104', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'guid', ++ 'offset' => '0', ++ 'type' => '277' ++ }, ++ '1' => { ++ 'name' => 'portnum', ++ 'offset' => '8', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'ext_portnum', ++ 'offset' => '12', ++ 'type' => '64' ++ }, ++ '3' => { ++ 'name' => 'node', ++ 'offset' => '16', ++ 'type' => '6437' ++ }, ++ '4' => { ++ 'name' => 'remoteport', ++ 'offset' => '24', ++ 'type' => '6307' ++ }, ++ '5' => { ++ 'name' => 'base_lid', ++ 'offset' => '32', ++ 'type' => '253' ++ }, ++ '6' => { ++ 'name' => 'lmc', ++ 'offset' => '34', ++ 'type' => '241' ++ }, ++ '7' => { ++ 'name' => 'info', ++ 'offset' => '35', ++ 'type' => '915' ++ }, ++ '8' => { ++ 'name' => 'ext_info', ++ 'offset' => '99', ++ 'type' => '915' ++ }, ++ '9' => { ++ 'name' => 'htnext', ++ 'offset' => '168', ++ 'type' => '6307' ++ } ++ }, ++ 'Name' => 'struct ibnd_port', ++ 'Size' => '176', ++ 'Type' => 'Struct' ++ }, ++ '6301' => { ++ 'BaseType' => '6307', ++ 'Name' => 'struct ibnd_port**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6307' => { ++ 'BaseType' => '6157', ++ 'Name' => 'struct ibnd_port*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6313' => { ++ 'Header' => undef, ++ 'Line' => '124', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next', ++ 'offset' => '0', ++ 'type' => '6419' ++ }, ++ '1' => { ++ 'name' => 'chassisguid', ++ 'offset' => '8', ++ 'type' => '277' ++ }, ++ '2' => { ++ 'name' => 'chassisnum', ++ 'offset' => '16', ++ 'type' => '92' ++ }, ++ '3' => { ++ 'name' => 'nodecount', ++ 'offset' => '17', ++ 'type' => '92' ++ }, ++ '4' => { ++ 'name' => 'nodes', ++ 'offset' => '24', ++ 'type' => '6437' ++ }, ++ '5' => { ++ 'name' => 'spinenode', ++ 'offset' => '32', ++ 'type' => '6455' ++ }, ++ '6' => { ++ 'name' => 'linenode', ++ 'offset' => '184', ++ 'type' => '6471' ++ } ++ }, ++ 'Name' => 'struct ibnd_chassis', ++ 'Size' => '480', ++ 'Type' => 'Struct' ++ }, ++ '64' => { ++ 'Name' => 'int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '6419' => { ++ 'BaseType' => '6313', ++ 'Name' => 'struct ibnd_chassis*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6425' => { ++ 'BaseType' => '5822', ++ 'Header' => undef, ++ 'Line' => '99', ++ 'Name' => 'ibnd_node_t', ++ 'Size' => '408', ++ 'Type' => 'Typedef' ++ }, ++ '6437' => { ++ 'BaseType' => '6425', ++ 'Name' => 'ibnd_node_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6443' => { ++ 'BaseType' => '6157', ++ 'Header' => undef, ++ 'Line' => '119', ++ 'Name' => 'ibnd_port_t', ++ 'Size' => '176', ++ 'Type' => 'Typedef' ++ }, ++ '6455' => { ++ 'BaseType' => '6437', ++ 'Name' => 'ibnd_node_t*[19]', ++ 'Size' => '152', ++ 'Type' => 'Array' ++ }, ++ '6471' => { ++ 'BaseType' => '6437', ++ 'Name' => 'ibnd_node_t*[37]', ++ 'Size' => '296', ++ 'Type' => 'Array' ++ }, ++ '6487' => { ++ 'BaseType' => '6313', ++ 'Header' => undef, ++ 'Line' => '138', ++ 'Name' => 'ibnd_chassis_t', ++ 'Size' => '480', ++ 'Type' => 'Typedef' ++ }, ++ '6499' => { ++ 'Header' => undef, ++ 'Line' => '161', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'from_node', ++ 'offset' => '0', ++ 'type' => '6437' ++ }, ++ '1' => { ++ 'name' => 'from_portnum', ++ 'offset' => '8', ++ 'type' => '64' ++ }, ++ '10' => { ++ 'name' => 'routers', ++ 'offset' => '2248', ++ 'type' => '6437' ++ }, ++ '2' => { ++ 'name' => 'nodes', ++ 'offset' => '16', ++ 'type' => '6437' ++ }, ++ '3' => { ++ 'name' => 'chassis', ++ 'offset' => '24', ++ 'type' => '6661' ++ }, ++ '4' => { ++ 'name' => 'maxhops_discovered', ++ 'offset' => '32', ++ 'type' => '71' ++ }, ++ '5' => { ++ 'name' => 'total_mads_used', ++ 'offset' => '36', ++ 'type' => '71' ++ }, ++ '6' => { ++ 'name' => 'nodestbl', ++ 'offset' => '40', ++ 'type' => '6667' ++ }, ++ '7' => { ++ 'name' => 'portstbl', ++ 'offset' => '1136', ++ 'type' => '6683' ++ }, ++ '8' => { ++ 'name' => 'switches', ++ 'offset' => '2232', ++ 'type' => '6437' ++ }, ++ '9' => { ++ 'name' => 'ch_adapters', ++ 'offset' => '2240', ++ 'type' => '6437' ++ } ++ }, ++ 'Name' => 'struct ibnd_fabric', ++ 'Size' => '2256', ++ 'Type' => 'Struct' ++ }, ++ '6661' => { ++ 'BaseType' => '6487', ++ 'Name' => 'ibnd_chassis_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6667' => { ++ 'BaseType' => '6437', ++ 'Name' => 'ibnd_node_t*[137]', ++ 'Size' => '1096', ++ 'Type' => 'Array' ++ }, ++ '6683' => { ++ 'BaseType' => '6699', ++ 'Name' => 'ibnd_port_t*[137]', ++ 'Size' => '1096', ++ 'Type' => 'Array' ++ }, ++ '6699' => { ++ 'BaseType' => '6443', ++ 'Name' => 'ibnd_port_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6705' => { ++ 'BaseType' => '6499', ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Name' => 'ibnd_fabric_t', ++ 'Size' => '2256', ++ 'Type' => 'Typedef' ++ }, ++ '71' => { ++ 'Name' => 'unsigned int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '777' => { ++ 'BaseType' => '210', ++ 'Name' => 'char[20]', ++ 'Size' => '20', ++ 'Type' => 'Array' ++ }, ++ '827' => { ++ 'BaseType' => '241', ++ 'Name' => 'uint8_t[16]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '843' => { ++ 'BaseType' => '827', ++ 'Header' => undef, ++ 'Line' => '243', ++ 'Name' => 'ibmad_gid_t', ++ 'Size' => '16', ++ 'Type' => 'Typedef' ++ }, ++ '915' => { ++ 'BaseType' => '241', ++ 'Name' => 'uint8_t[64]', ++ 'Size' => '64', ++ 'Type' => 'Array' ++ }, ++ '92' => { ++ 'Name' => 'unsigned char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '943' => { ++ 'Header' => undef, ++ 'Line' => '308', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'lid', ++ 'offset' => '0', ++ 'type' => '64' ++ }, ++ '1' => { ++ 'name' => 'drpath', ++ 'offset' => '4', ++ 'type' => '931' ++ }, ++ '2' => { ++ 'name' => 'grh_present', ++ 'offset' => '76', ++ 'type' => '64' ++ }, ++ '3' => { ++ 'name' => 'gid', ++ 'offset' => '80', ++ 'type' => '843' ++ }, ++ '4' => { ++ 'name' => 'qp', ++ 'offset' => '96', ++ 'type' => '265' ++ }, ++ '5' => { ++ 'name' => 'qkey', ++ 'offset' => '100', ++ 'type' => '265' ++ }, ++ '6' => { ++ 'name' => 'sl', ++ 'offset' => '104', ++ 'type' => '241' ++ }, ++ '7' => { ++ 'name' => 'pkey_idx', ++ 'offset' => '108', ++ 'type' => '71' ++ } ++ }, ++ 'Name' => 'struct portid', ++ 'Size' => '112', ++ 'Type' => 'Struct' ++ }, ++ '99' => { ++ 'Name' => 'unsigned short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ } ++ }, ++ 'UndefinedSymbols' => { ++ 'libibnetdisc.so.5.0.41.0' => { ++ '_ITM_deregisterTMCloneTable' => 0, ++ '_ITM_registerTMCloneTable' => 0, ++ '__cxa_finalize@GLIBC_2.2.5' => 0, ++ '__errno_location@GLIBC_2.2.5' => 0, ++ '__fprintf_chk@GLIBC_2.3.4' => 0, ++ '__gmon_start__' => 0, ++ '__memset_chk@GLIBC_2.3.4' => 0, ++ '__printf_chk@GLIBC_2.3.4' => 0, ++ '__snprintf_chk@GLIBC_2.3.4' => 0, ++ '__stack_chk_fail@GLIBC_2.4' => 0, ++ '__xstat@GLIBC_2.2.5' => 0, ++ 'calloc@GLIBC_2.2.5' => 0, ++ 'close@GLIBC_2.2.5' => 0, ++ 'free@GLIBC_2.2.5' => 0, ++ 'ib_resolve_self_via@IBMAD_1.3' => 0, ++ 'ibdebug@IBMAD_1.3' => 0, ++ 'lseek@GLIBC_2.2.5' => 0, ++ 'mad_build_pkt@IBMAD_1.3' => 0, ++ 'mad_decode_field@IBMAD_1.3' => 0, ++ 'mad_dump_node_type@IBMAD_1.3' => 0, ++ 'mad_dump_val@IBMAD_1.3' => 0, ++ 'mad_get_field64@IBMAD_1.3' => 0, ++ 'mad_get_field@IBMAD_1.3' => 0, ++ 'mad_rpc_close_port@IBMAD_1.3' => 0, ++ 'mad_rpc_open_port@IBMAD_1.3' => 0, ++ 'mad_rpc_set_retries@IBMAD_1.3' => 0, ++ 'mad_rpc_set_timeout@IBMAD_1.3' => 0, ++ 'mad_trid@IBMAD_1.3' => 0, ++ 'malloc@GLIBC_2.2.5' => 0, ++ 'open@GLIBC_2.2.5' => 0, ++ 'portid2str@IBMAD_1.3' => 0, ++ 'read@GLIBC_2.2.5' => 0, ++ 'smp_mkey_set@IBMAD_1.3' => 0, ++ 'stderr@GLIBC_2.2.5' => 0, ++ 'str2drpath@IBMAD_1.3' => 0, ++ 'strerror@GLIBC_2.2.5' => 0, ++ 'strncpy@GLIBC_2.2.5' => 0, ++ 'strtol@GLIBC_2.2.5' => 0, ++ 'umad_close_port@IBUMAD_1.0' => 0, ++ 'umad_get_mad@IBUMAD_1.0' => 0, ++ 'umad_init@IBUMAD_1.0' => 0, ++ 'umad_open_port@IBUMAD_1.0' => 0, ++ 'umad_recv@IBUMAD_1.0' => 0, ++ 'umad_register@IBUMAD_1.0' => 0, ++ 'umad_send@IBUMAD_1.0' => 0, ++ 'umad_size@IBUMAD_1.0' => 0, ++ 'umad_status@IBUMAD_1.0' => 0, ++ 'unlink@GLIBC_2.2.5' => 0, ++ 'write@GLIBC_2.2.5' => 0 ++ } ++ }, ++ 'WordSize' => '8' ++ }; +diff --git a/ABI/ibumad.dump b/ABI/ibumad.dump +new file mode 100644 +index 0000000..21ba5bb +--- /dev/null ++++ b/ABI/ibumad.dump +@@ -0,0 +1,1427 @@ ++$VAR1 = { ++ 'ABI_DUMPER_VERSION' => '1.1', ++ 'ABI_DUMP_VERSION' => '3.5', ++ 'Arch' => 'x86_64', ++ 'GccVersion' => '11.1.0', ++ 'Headers' => {}, ++ 'Language' => 'C', ++ 'LibraryName' => 'libibumad.so.3.2.41.0', ++ 'LibraryVersion' => 'ibumad', ++ 'MissedOffsets' => '1', ++ 'MissedRegs' => '1', ++ 'NameSpaces' => {}, ++ 'Needed' => { ++ 'libc.so.6' => 1 ++ }, ++ 'Sources' => {}, ++ 'SymbolInfo' => { ++ '10514' => { ++ 'Header' => undef, ++ 'Line' => '1044', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fd', ++ 'type' => '111' ++ }, ++ '1' => { ++ 'name' => 'mgmt_class', ++ 'type' => '111' ++ }, ++ '2' => { ++ 'name' => 'mgmt_version', ++ 'type' => '111' ++ }, ++ '3' => { ++ 'name' => 'rmpp_version', ++ 'type' => '174' ++ }, ++ '4' => { ++ 'name' => 'method_mask', ++ 'type' => '11327' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_register' ++ }, ++ '11354' => { ++ 'Header' => undef, ++ 'Line' => '1005', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fd', ++ 'type' => '111' ++ }, ++ '1' => { ++ 'name' => 'mgmt_class', ++ 'type' => '111' ++ }, ++ '2' => { ++ 'name' => 'rmpp_version', ++ 'type' => '174' ++ }, ++ '3' => { ++ 'name' => 'oui', ++ 'type' => '12251' ++ }, ++ '4' => { ++ 'name' => 'method_mask', ++ 'type' => '11327' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_register_oui' ++ }, ++ '12278' => { ++ 'Header' => undef, ++ 'Line' => '999', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fd', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_get_fd' ++ }, ++ '12491' => { ++ 'Header' => undef, ++ 'Line' => '993', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fd', ++ 'type' => '111' ++ }, ++ '1' => { ++ 'name' => 'timeout_ms', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_poll' ++ }, ++ '12896' => { ++ 'Header' => undef, ++ 'Line' => '946', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fd', ++ 'type' => '111' ++ }, ++ '1' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'type' => '784' ++ }, ++ '3' => { ++ 'name' => 'timeout_ms', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_recv' ++ }, ++ '13934' => { ++ 'Header' => undef, ++ 'Line' => '901', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fd', ++ 'type' => '111' ++ }, ++ '1' => { ++ 'name' => 'agentid', ++ 'type' => '111' ++ }, ++ '2' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ }, ++ '3' => { ++ 'name' => 'length', ++ 'type' => '111' ++ }, ++ '4' => { ++ 'name' => 'timeout_ms', ++ 'type' => '111' ++ }, ++ '5' => { ++ 'name' => 'retries', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_send' ++ }, ++ '14510' => { ++ 'Header' => undef, ++ 'Line' => '887', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ }, ++ '1' => { ++ 'name' => 'dlid', ++ 'type' => '298' ++ }, ++ '2' => { ++ 'name' => 'dqp', ++ 'type' => '4339' ++ }, ++ '3' => { ++ 'name' => 'sl', ++ 'type' => '111' ++ }, ++ '4' => { ++ 'name' => 'qkey', ++ 'type' => '4339' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_set_addr_net' ++ }, ++ '14954' => { ++ 'Header' => undef, ++ 'Line' => '873', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ }, ++ '1' => { ++ 'name' => 'dlid', ++ 'type' => '111' ++ }, ++ '2' => { ++ 'name' => 'dqp', ++ 'type' => '111' ++ }, ++ '3' => { ++ 'name' => 'sl', ++ 'type' => '111' ++ }, ++ '4' => { ++ 'name' => 'qkey', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_set_addr' ++ }, ++ '15366' => { ++ 'Header' => undef, ++ 'Line' => '863', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_get_pkey' ++ }, ++ '15438' => { ++ 'Header' => undef, ++ 'Line' => '853', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ }, ++ '1' => { ++ 'name' => 'pkey_index', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_set_pkey' ++ }, ++ '15525' => { ++ 'Header' => undef, ++ 'Line' => '835', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ }, ++ '1' => { ++ 'name' => 'mad_addr', ++ 'type' => '137' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_set_grh' ++ }, ++ '15675' => { ++ 'Header' => undef, ++ 'Line' => '829', ++ 'Return' => '198', ++ 'ShortName' => 'umad_size' ++ }, ++ '15706' => { ++ 'Header' => undef, ++ 'Line' => '823', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ } ++ }, ++ 'Return' => '137', ++ 'ShortName' => 'umad_get_mad' ++ }, ++ '15757' => { ++ 'Header' => undef, ++ 'Line' => '816', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fd', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_close_port' ++ }, ++ '15973' => { ++ 'Header' => undef, ++ 'Line' => '801', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port', ++ 'type' => '5205' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_release_port' ++ }, ++ '16368' => { ++ 'Header' => undef, ++ 'Line' => '778', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ca_name', ++ 'type' => '210' ++ }, ++ '1' => { ++ 'name' => 'portnum', ++ 'type' => '111' ++ }, ++ '2' => { ++ 'name' => 'port', ++ 'type' => '5205' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_get_port' ++ }, ++ '17080' => { ++ 'Header' => undef, ++ 'Line' => '763', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ca', ++ 'type' => '17521' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_release_ca' ++ }, ++ '17527' => { ++ 'Header' => undef, ++ 'Line' => '738', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ca_name', ++ 'type' => '210' ++ }, ++ '1' => { ++ 'name' => 'ca', ++ 'type' => '17521' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_get_ca' ++ }, ++ '18153' => { ++ 'Header' => undef, ++ 'Line' => '688', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ca_name', ++ 'type' => '210' ++ }, ++ '1' => { ++ 'name' => 'portnum', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_open_port' ++ }, ++ '19480' => { ++ 'Header' => undef, ++ 'Line' => '661', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ca_name', ++ 'type' => '210' ++ }, ++ '1' => { ++ 'name' => 'portnum', ++ 'type' => '111' ++ }, ++ '2' => { ++ 'name' => 'path', ++ 'type' => '151' ++ }, ++ '3' => { ++ 'name' => 'max', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_get_issm_path' ++ }, ++ '20215' => { ++ 'Header' => undef, ++ 'Line' => '622', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ca_name', ++ 'type' => '210' ++ }, ++ '1' => { ++ 'name' => 'portguids', ++ 'type' => '2006' ++ }, ++ '2' => { ++ 'name' => 'max', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_get_ca_portguids' ++ }, ++ '20986' => { ++ 'Header' => undef, ++ 'Line' => '592', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cas', ++ 'type' => '21775' ++ }, ++ '1' => { ++ 'name' => 'max', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_get_cas_names' ++ }, ++ '22062' => { ++ 'Header' => undef, ++ 'Line' => '572', ++ 'Return' => '111', ++ 'ShortName' => 'umad_done' ++ }, ++ '22228' => { ++ 'Header' => undef, ++ 'Line' => '566', ++ 'Return' => '111', ++ 'ShortName' => 'umad_init' ++ }, ++ '30376' => { ++ 'Header' => undef, ++ 'Line' => '339', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mgmt_class', ++ 'type' => '174' ++ }, ++ '1' => { ++ 'name' => 'attr_id', ++ 'type' => '298' ++ } ++ }, ++ 'Return' => '210', ++ 'ShortName' => 'umad_attribute_str' ++ }, ++ '30890' => { ++ 'Header' => undef, ++ 'Line' => '165', ++ 'Param' => { ++ '0' => { ++ 'name' => '_status', ++ 'type' => '298' ++ } ++ }, ++ 'Return' => '210', ++ 'ShortName' => 'umad_sa_mad_status_str' ++ }, ++ '31006' => { ++ 'Header' => undef, ++ 'Line' => '142', ++ 'Param' => { ++ '0' => { ++ 'name' => '_status', ++ 'type' => '298' ++ } ++ }, ++ 'Return' => '210', ++ 'ShortName' => 'umad_common_mad_status_str' ++ }, ++ '31110' => { ++ 'Header' => undef, ++ 'Line' => '134', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mgmt_class', ++ 'type' => '174' ++ }, ++ '1' => { ++ 'name' => 'method', ++ 'type' => '174' ++ } ++ }, ++ 'Return' => '210', ++ 'ShortName' => 'umad_method_str' ++ }, ++ '31348' => { ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mgmt_class', ++ 'type' => '174' ++ } ++ }, ++ 'Return' => '210', ++ 'ShortName' => 'umad_class_str' ++ }, ++ '6984' => { ++ 'Header' => undef, ++ 'Line' => '1322', ++ 'Param' => { ++ '0' => { ++ 'name' => 'head', ++ 'type' => '5263' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'umad_free_ca_device_list' ++ }, ++ '7092' => { ++ 'Header' => undef, ++ 'Line' => '1265', ++ 'Return' => '5263', ++ 'ShortName' => 'umad_get_ca_device_list' ++ }, ++ '7801' => { ++ 'Header' => undef, ++ 'Line' => '1218', ++ 'Param' => { ++ '0' => { ++ 'name' => 'head', ++ 'type' => '8065' ++ }, ++ '1' => { ++ 'name' => 'size', ++ 'type' => '198' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_sort_ca_device_list' ++ }, ++ '8071' => { ++ 'Header' => undef, ++ 'Line' => '1209', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'umad_dump' ++ }, ++ '8331' => { ++ 'Header' => undef, ++ 'Line' => '1189', ++ 'Param' => { ++ '0' => { ++ 'name' => 'addr', ++ 'type' => '8693' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'umad_addr_dump' ++ }, ++ '8736' => { ++ 'Header' => undef, ++ 'Line' => '1182', ++ 'Param' => { ++ '0' => { ++ 'name' => 'level', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_debug' ++ }, ++ '8787' => { ++ 'Header' => undef, ++ 'Line' => '1175', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ } ++ }, ++ 'Return' => '8693', ++ 'ShortName' => 'umad_get_mad_addr' ++ }, ++ '8859' => { ++ 'Header' => undef, ++ 'Line' => '1168', ++ 'Param' => { ++ '0' => { ++ 'name' => 'umad', ++ 'type' => '137' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_status' ++ }, ++ '8931' => { ++ 'Header' => undef, ++ 'Line' => '1162', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fd', ++ 'type' => '111' ++ }, ++ '1' => { ++ 'name' => 'agentid', ++ 'type' => '111' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_unregister' ++ }, ++ '9207' => { ++ 'Header' => undef, ++ 'Line' => '1079', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port_fd', ++ 'type' => '111' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '10481' ++ }, ++ '2' => { ++ 'name' => 'agent_id', ++ 'type' => '10487' ++ } ++ }, ++ 'Return' => '111', ++ 'ShortName' => 'umad_register2' ++ } ++ }, ++ 'SymbolVersion' => { ++ 'umad_addr_dump' => 'umad_addr_dump@@IBUMAD_1.0', ++ 'umad_attribute_str' => 'umad_attribute_str@@IBUMAD_1.0', ++ 'umad_class_str' => 'umad_class_str@@IBUMAD_1.0', ++ 'umad_close_port' => 'umad_close_port@@IBUMAD_1.0', ++ 'umad_common_mad_status_str' => 'umad_common_mad_status_str@@IBUMAD_1.0', ++ 'umad_debug' => 'umad_debug@@IBUMAD_1.0', ++ 'umad_done' => 'umad_done@@IBUMAD_1.0', ++ 'umad_dump' => 'umad_dump@@IBUMAD_1.0', ++ 'umad_free_ca_device_list' => 'umad_free_ca_device_list@@IBUMAD_1.1', ++ 'umad_get_ca' => 'umad_get_ca@@IBUMAD_1.0', ++ 'umad_get_ca_device_list' => 'umad_get_ca_device_list@@IBUMAD_1.1', ++ 'umad_get_ca_portguids' => 'umad_get_ca_portguids@@IBUMAD_1.0', ++ 'umad_get_cas_names' => 'umad_get_cas_names@@IBUMAD_1.0', ++ 'umad_get_fd' => 'umad_get_fd@@IBUMAD_1.0', ++ 'umad_get_issm_path' => 'umad_get_issm_path@@IBUMAD_1.0', ++ 'umad_get_mad' => 'umad_get_mad@@IBUMAD_1.0', ++ 'umad_get_mad_addr' => 'umad_get_mad_addr@@IBUMAD_1.0', ++ 'umad_get_pkey' => 'umad_get_pkey@@IBUMAD_1.0', ++ 'umad_get_port' => 'umad_get_port@@IBUMAD_1.0', ++ 'umad_init' => 'umad_init@@IBUMAD_1.0', ++ 'umad_method_str' => 'umad_method_str@@IBUMAD_1.0', ++ 'umad_open_port' => 'umad_open_port@@IBUMAD_1.0', ++ 'umad_poll' => 'umad_poll@@IBUMAD_1.0', ++ 'umad_recv' => 'umad_recv@@IBUMAD_1.0', ++ 'umad_register' => 'umad_register@@IBUMAD_1.0', ++ 'umad_register2' => 'umad_register2@@IBUMAD_1.0', ++ 'umad_register_oui' => 'umad_register_oui@@IBUMAD_1.0', ++ 'umad_release_ca' => 'umad_release_ca@@IBUMAD_1.0', ++ 'umad_release_port' => 'umad_release_port@@IBUMAD_1.0', ++ 'umad_sa_mad_status_str' => 'umad_sa_mad_status_str@@IBUMAD_1.0', ++ 'umad_send' => 'umad_send@@IBUMAD_1.0', ++ 'umad_set_addr' => 'umad_set_addr@@IBUMAD_1.0', ++ 'umad_set_addr_net' => 'umad_set_addr_net@@IBUMAD_1.0', ++ 'umad_set_grh' => 'umad_set_grh@@IBUMAD_1.0', ++ 'umad_set_pkey' => 'umad_set_pkey@@IBUMAD_1.0', ++ 'umad_size' => 'umad_size@@IBUMAD_1.0', ++ 'umad_sort_ca_device_list' => 'umad_sort_ca_device_list@@IBUMAD_1.2', ++ 'umad_status' => 'umad_status@@IBUMAD_1.0', ++ 'umad_unregister' => 'umad_unregister@@IBUMAD_1.0' ++ }, ++ 'Symbols' => { ++ 'libibumad.so.3.2.41.0' => { ++ 'umad_addr_dump@@IBUMAD_1.0' => 1, ++ 'umad_attribute_str@@IBUMAD_1.0' => 1, ++ 'umad_class_str@@IBUMAD_1.0' => 1, ++ 'umad_close_port@@IBUMAD_1.0' => 1, ++ 'umad_common_mad_status_str@@IBUMAD_1.0' => 1, ++ 'umad_debug@@IBUMAD_1.0' => 1, ++ 'umad_done@@IBUMAD_1.0' => 1, ++ 'umad_dump@@IBUMAD_1.0' => 1, ++ 'umad_free_ca_device_list@@IBUMAD_1.1' => 1, ++ 'umad_get_ca@@IBUMAD_1.0' => 1, ++ 'umad_get_ca_device_list@@IBUMAD_1.1' => 1, ++ 'umad_get_ca_portguids@@IBUMAD_1.0' => 1, ++ 'umad_get_cas_names@@IBUMAD_1.0' => 1, ++ 'umad_get_fd@@IBUMAD_1.0' => 1, ++ 'umad_get_issm_path@@IBUMAD_1.0' => 1, ++ 'umad_get_mad@@IBUMAD_1.0' => 1, ++ 'umad_get_mad_addr@@IBUMAD_1.0' => 1, ++ 'umad_get_pkey@@IBUMAD_1.0' => 1, ++ 'umad_get_port@@IBUMAD_1.0' => 1, ++ 'umad_init@@IBUMAD_1.0' => 1, ++ 'umad_method_str@@IBUMAD_1.0' => 1, ++ 'umad_open_port@@IBUMAD_1.0' => 1, ++ 'umad_poll@@IBUMAD_1.0' => 1, ++ 'umad_recv@@IBUMAD_1.0' => 1, ++ 'umad_register2@@IBUMAD_1.0' => 1, ++ 'umad_register@@IBUMAD_1.0' => 1, ++ 'umad_register_oui@@IBUMAD_1.0' => 1, ++ 'umad_release_ca@@IBUMAD_1.0' => 1, ++ 'umad_release_port@@IBUMAD_1.0' => 1, ++ 'umad_sa_mad_status_str@@IBUMAD_1.0' => 1, ++ 'umad_send@@IBUMAD_1.0' => 1, ++ 'umad_set_addr@@IBUMAD_1.0' => 1, ++ 'umad_set_addr_net@@IBUMAD_1.0' => 1, ++ 'umad_set_grh@@IBUMAD_1.0' => 1, ++ 'umad_set_pkey@@IBUMAD_1.0' => 1, ++ 'umad_size@@IBUMAD_1.0' => 1, ++ 'umad_sort_ca_device_list@@IBUMAD_1.2' => 1, ++ 'umad_status@@IBUMAD_1.0' => 1, ++ 'umad_unregister@@IBUMAD_1.0' => 1 ++ } ++ }, ++ 'Target' => 'unix', ++ 'TypeInfo' => { ++ '1' => { ++ 'Name' => 'void', ++ 'Type' => 'Intrinsic' ++ }, ++ '10481' => { ++ 'BaseType' => '5269', ++ 'Name' => 'struct umad_reg_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10487' => { ++ 'BaseType' => '4184', ++ 'Name' => 'uint32_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '111' => { ++ 'Name' => 'int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '11327' => { ++ 'BaseType' => '118', ++ 'Name' => 'long*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '118' => { ++ 'Name' => 'long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '12251' => { ++ 'BaseType' => '174', ++ 'Name' => 'uint8_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '125' => { ++ 'BaseType' => '66', ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Name' => '__uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '137' => { ++ 'BaseType' => '1', ++ 'Name' => 'void*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '151' => { ++ 'BaseType' => '162', ++ 'Name' => 'char*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '162' => { ++ 'Name' => 'char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '169' => { ++ 'BaseType' => '162', ++ 'Name' => 'char const', ++ 'Size' => '1', ++ 'Type' => 'Const' ++ }, ++ '174' => { ++ 'BaseType' => '80', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => 'uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '17521' => { ++ 'BaseType' => '5211', ++ 'Name' => 'umad_ca_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '186' => { ++ 'BaseType' => '125', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => 'uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '198' => { ++ 'BaseType' => '66', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => 'size_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '2006' => { ++ 'BaseType' => '310', ++ 'Name' => '__be64*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '210' => { ++ 'BaseType' => '169', ++ 'Name' => 'char const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '21775' => { ++ 'BaseType' => '3878', ++ 'Name' => 'char[20]*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '240' => { ++ 'Name' => 'unsigned long long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '274' => { ++ 'BaseType' => '52', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => '__u16', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '286' => { ++ 'BaseType' => '240', ++ 'Header' => undef, ++ 'Line' => '31', ++ 'Name' => '__u64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '298' => { ++ 'BaseType' => '274', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => '__be16', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '310' => { ++ 'BaseType' => '286', ++ 'Header' => undef, ++ 'Line' => '29', ++ 'Name' => '__be64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '322' => { ++ 'BaseType' => '174', ++ 'Name' => 'uint8_t[16]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '3233' => { ++ 'BaseType' => '59', ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Name' => '__uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '338' => { ++ 'Header' => undef, ++ 'Line' => '59', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'subnet_prefix', ++ 'offset' => '0', ++ 'type' => '310' ++ }, ++ '1' => { ++ 'name' => 'interface_id', ++ 'offset' => '8', ++ 'type' => '310' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '374' => { ++ 'Header' => undef, ++ 'Line' => '56', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'raw', ++ 'offset' => '0', ++ 'type' => '322' ++ }, ++ '1' => { ++ 'name' => 'raw_be16', ++ 'offset' => '0', ++ 'type' => '425' ++ }, ++ '2' => { ++ 'name' => 'global', ++ 'offset' => '0', ++ 'type' => '338' ++ } ++ }, ++ 'Name' => 'union umad_gid', ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '3878' => { ++ 'BaseType' => '162', ++ 'Name' => 'char[20]', ++ 'Size' => '20', ++ 'Type' => 'Array' ++ }, ++ '3924' => { ++ 'BaseType' => '162', ++ 'Name' => 'char[40]', ++ 'Size' => '40', ++ 'Type' => 'Array' ++ }, ++ '4172' => { ++ 'BaseType' => '99', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => 'uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '4184' => { ++ 'BaseType' => '3233', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => 'uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '425' => { ++ 'BaseType' => '298', ++ 'Name' => '__be16[8]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '4303' => { ++ 'BaseType' => '59', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__u32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '4339' => { ++ 'BaseType' => '4303', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__be32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '4466' => { ++ 'Header' => undef, ++ 'Line' => '77', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'gid', ++ 'offset' => '0', ++ 'type' => '322' ++ }, ++ '1' => { ++ 'name' => 'ib_gid', ++ 'offset' => '0', ++ 'type' => '374' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '45' => { ++ 'Name' => 'unsigned char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '4502' => { ++ 'Header' => undef, ++ 'Line' => '67', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qpn', ++ 'offset' => '0', ++ 'type' => '4339' ++ }, ++ '1' => { ++ 'name' => 'qkey', ++ 'offset' => '4', ++ 'type' => '4339' ++ }, ++ '10' => { ++ 'name' => 'flow_label', ++ 'offset' => '32', ++ 'type' => '4339' ++ }, ++ '11' => { ++ 'name' => 'pkey_index', ++ 'offset' => '36', ++ 'type' => '4172' ++ }, ++ '12' => { ++ 'name' => 'reserved', ++ 'offset' => '38', ++ 'type' => '4679' ++ }, ++ '2' => { ++ 'name' => 'lid', ++ 'offset' => '8', ++ 'type' => '298' ++ }, ++ '3' => { ++ 'name' => 'sl', ++ 'offset' => '10', ++ 'type' => '174' ++ }, ++ '4' => { ++ 'name' => 'path_bits', ++ 'offset' => '11', ++ 'type' => '174' ++ }, ++ '5' => { ++ 'name' => 'grh_present', ++ 'offset' => '12', ++ 'type' => '174' ++ }, ++ '6' => { ++ 'name' => 'gid_index', ++ 'offset' => '13', ++ 'type' => '174' ++ }, ++ '7' => { ++ 'name' => 'hop_limit', ++ 'offset' => '14', ++ 'type' => '174' ++ }, ++ '8' => { ++ 'name' => 'traffic_class', ++ 'offset' => '15', ++ 'type' => '174' ++ }, ++ '9' => { ++ 'name' => 'unnamed0', ++ 'offset' => '16', ++ 'type' => '4466' ++ } ++ }, ++ 'Name' => 'struct ib_mad_addr', ++ 'Size' => '44', ++ 'Type' => 'Struct' ++ }, ++ '4679' => { ++ 'BaseType' => '174', ++ 'Name' => 'uint8_t[6]', ++ 'Size' => '6', ++ 'Type' => 'Array' ++ }, ++ '4695' => { ++ 'BaseType' => '4502', ++ 'Header' => undef, ++ 'Line' => '84', ++ 'Name' => 'ib_mad_addr_t', ++ 'Size' => '44', ++ 'Type' => 'Typedef' ++ }, ++ '4831' => { ++ 'Header' => undef, ++ 'Line' => '142', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ca_name', ++ 'offset' => '0', ++ 'type' => '3878' ++ }, ++ '1' => { ++ 'name' => 'portnum', ++ 'offset' => '20', ++ 'type' => '111' ++ }, ++ '10' => { ++ 'name' => 'gid_prefix', ++ 'offset' => '56', ++ 'type' => '310' ++ }, ++ '11' => { ++ 'name' => 'port_guid', ++ 'offset' => '64', ++ 'type' => '310' ++ }, ++ '12' => { ++ 'name' => 'pkeys_size', ++ 'offset' => '72', ++ 'type' => '59' ++ }, ++ '13' => { ++ 'name' => 'pkeys', ++ 'offset' => '80', ++ 'type' => '5040' ++ }, ++ '14' => { ++ 'name' => 'link_layer', ++ 'offset' => '88', ++ 'type' => '3878' ++ }, ++ '2' => { ++ 'name' => 'base_lid', ++ 'offset' => '24', ++ 'type' => '59' ++ }, ++ '3' => { ++ 'name' => 'lmc', ++ 'offset' => '28', ++ 'type' => '59' ++ }, ++ '4' => { ++ 'name' => 'sm_lid', ++ 'offset' => '32', ++ 'type' => '59' ++ }, ++ '5' => { ++ 'name' => 'sm_sl', ++ 'offset' => '36', ++ 'type' => '59' ++ }, ++ '6' => { ++ 'name' => 'state', ++ 'offset' => '40', ++ 'type' => '59' ++ }, ++ '7' => { ++ 'name' => 'phys_state', ++ 'offset' => '44', ++ 'type' => '59' ++ }, ++ '8' => { ++ 'name' => 'rate', ++ 'offset' => '48', ++ 'type' => '59' ++ }, ++ '9' => { ++ 'name' => 'capmask', ++ 'offset' => '52', ++ 'type' => '4339' ++ } ++ }, ++ 'Name' => 'struct umad_port', ++ 'Size' => '112', ++ 'Type' => 'Struct' ++ }, ++ '5040' => { ++ 'BaseType' => '4172', ++ 'Name' => 'uint16_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5046' => { ++ 'BaseType' => '4831', ++ 'Header' => undef, ++ 'Line' => '158', ++ 'Name' => 'umad_port_t', ++ 'Size' => '112', ++ 'Type' => 'Typedef' ++ }, ++ '5058' => { ++ 'Header' => undef, ++ 'Line' => '160', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ca_name', ++ 'offset' => '0', ++ 'type' => '3878' ++ }, ++ '1' => { ++ 'name' => 'node_type', ++ 'offset' => '20', ++ 'type' => '59' ++ }, ++ '2' => { ++ 'name' => 'numports', ++ 'offset' => '24', ++ 'type' => '111' ++ }, ++ '3' => { ++ 'name' => 'fw_ver', ++ 'offset' => '28', ++ 'type' => '3878' ++ }, ++ '4' => { ++ 'name' => 'ca_type', ++ 'offset' => '48', ++ 'type' => '3924' ++ }, ++ '5' => { ++ 'name' => 'hw_ver', ++ 'offset' => '88', ++ 'type' => '3878' ++ }, ++ '6' => { ++ 'name' => 'node_guid', ++ 'offset' => '112', ++ 'type' => '310' ++ }, ++ '7' => { ++ 'name' => 'system_guid', ++ 'offset' => '120', ++ 'type' => '310' ++ }, ++ '8' => { ++ 'name' => 'ports', ++ 'offset' => '128', ++ 'type' => '5189' ++ } ++ }, ++ 'Name' => 'struct umad_ca', ++ 'Size' => '208', ++ 'Type' => 'Struct' ++ }, ++ '5189' => { ++ 'BaseType' => '5205', ++ 'Name' => 'umad_port_t*[10]', ++ 'Size' => '80', ++ 'Type' => 'Array' ++ }, ++ '52' => { ++ 'Name' => 'unsigned short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ }, ++ '5205' => { ++ 'BaseType' => '5046', ++ 'Name' => 'umad_port_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5211' => { ++ 'BaseType' => '5058', ++ 'Header' => undef, ++ 'Line' => '170', ++ 'Name' => 'umad_ca_t', ++ 'Size' => '208', ++ 'Type' => 'Typedef' ++ }, ++ '5223' => { ++ 'Header' => undef, ++ 'Line' => '172', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next', ++ 'offset' => '0', ++ 'type' => '5263' ++ }, ++ '1' => { ++ 'name' => 'ca_name', ++ 'offset' => '8', ++ 'type' => '210' ++ } ++ }, ++ 'Name' => 'struct umad_device_node', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '5263' => { ++ 'BaseType' => '5223', ++ 'Name' => 'struct umad_device_node*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5269' => { ++ 'Header' => undef, ++ 'Line' => '224', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mgmt_class', ++ 'offset' => '0', ++ 'type' => '174' ++ }, ++ '1' => { ++ 'name' => 'mgmt_class_version', ++ 'offset' => '1', ++ 'type' => '174' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '4', ++ 'type' => '4184' ++ }, ++ '3' => { ++ 'name' => 'method_mask', ++ 'offset' => '8', ++ 'type' => '5361' ++ }, ++ '4' => { ++ 'name' => 'oui', ++ 'offset' => '24', ++ 'type' => '4184' ++ }, ++ '5' => { ++ 'name' => 'rmpp_version', ++ 'offset' => '28', ++ 'type' => '174' ++ } ++ }, ++ 'Name' => 'struct umad_reg_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '5361' => { ++ 'BaseType' => '186', ++ 'Name' => 'uint64_t[2]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '59' => { ++ 'Name' => 'unsigned int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '66' => { ++ 'Name' => 'unsigned long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '784' => { ++ 'BaseType' => '111', ++ 'Name' => 'int*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '80' => { ++ 'BaseType' => '45', ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Name' => '__uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '8065' => { ++ 'BaseType' => '5263', ++ 'Name' => 'struct umad_device_node**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '8693' => { ++ 'BaseType' => '4695', ++ 'Name' => 'ib_mad_addr_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '99' => { ++ 'BaseType' => '52', ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Name' => '__uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ } ++ }, ++ 'UndefinedSymbols' => { ++ 'libibumad.so.3.2.41.0' => { ++ '_ITM_deregisterTMCloneTable' => 0, ++ '_ITM_registerTMCloneTable' => 0, ++ '__ctype_b_loc@GLIBC_2.3' => 0, ++ '__cxa_finalize@GLIBC_2.2.5' => 0, ++ '__errno_location@GLIBC_2.2.5' => 0, ++ '__fprintf_chk@GLIBC_2.3.4' => 0, ++ '__gmon_start__' => 0, ++ '__snprintf_chk@GLIBC_2.3.4' => 0, ++ '__stack_chk_fail@GLIBC_2.4' => 0, ++ 'alphasort@GLIBC_2.2.5' => 0, ++ 'calloc@GLIBC_2.2.5' => 0, ++ 'close@GLIBC_2.2.5' => 0, ++ 'closedir@GLIBC_2.2.5' => 0, ++ 'free@GLIBC_2.2.5' => 0, ++ 'getpid@GLIBC_2.2.5' => 0, ++ 'ioctl@GLIBC_2.2.5' => 0, ++ 'open@GLIBC_2.2.5' => 0, ++ 'opendir@GLIBC_2.2.5' => 0, ++ 'poll@GLIBC_2.2.5' => 0, ++ 'qsort@GLIBC_2.2.5' => 0, ++ 'read@GLIBC_2.2.5' => 0, ++ 'readdir@GLIBC_2.2.5' => 0, ++ 'scandir@GLIBC_2.2.5' => 0, ++ 'snprintf@GLIBC_2.2.5' => 0, ++ 'stderr@GLIBC_2.2.5' => 0, ++ 'strcmp@GLIBC_2.2.5' => 0, ++ 'strcpy@GLIBC_2.2.5' => 0, ++ 'strdup@GLIBC_2.2.5' => 0, ++ 'strerror@GLIBC_2.2.5' => 0, ++ 'strlen@GLIBC_2.2.5' => 0, ++ 'strncmp@GLIBC_2.2.5' => 0, ++ 'strncpy@GLIBC_2.2.5' => 0, ++ 'strrchr@GLIBC_2.2.5' => 0, ++ 'strsep@GLIBC_2.2.5' => 0, ++ 'strtol@GLIBC_2.2.5' => 0, ++ 'strtoul@GLIBC_2.2.5' => 0, ++ 'strtoull@GLIBC_2.2.5' => 0, ++ 'write@GLIBC_2.2.5' => 0 ++ } ++ }, ++ 'WordSize' => '8' ++ }; +diff --git a/ABI/ibverbs.dump b/ABI/ibverbs.dump +new file mode 100644 +index 0000000..69d8d53 +--- /dev/null ++++ b/ABI/ibverbs.dump +@@ -0,0 +1,18607 @@ ++$VAR1 = { ++ 'ABI_DUMPER_VERSION' => '1.1', ++ 'ABI_DUMP_VERSION' => '3.5', ++ 'Arch' => 'x86_64', ++ 'GccVersion' => '11.1.0', ++ 'Headers' => {}, ++ 'Language' => 'C', ++ 'LibraryName' => 'libibverbs.so.1.14.41.0', ++ 'LibraryVersion' => 'ibverbs', ++ 'MissedOffsets' => '1', ++ 'MissedRegs' => '1', ++ 'NameSpaces' => {}, ++ 'Needed' => { ++ 'libc.so.6' => 1, ++ 'libdl.so.2' => 1, ++ 'libnl-3.so.200' => 1, ++ 'libnl-route-3.so.200' => 1, ++ 'libpthread.so.0' => 1 ++ }, ++ 'Sources' => {}, ++ 'SymbolInfo' => { ++ '101327' => { ++ 'Header' => undef, ++ 'Line' => '186', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'driver', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_query_context' ++ }, ++ '102114' => { ++ 'Header' => undef, ++ 'Line' => '174', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context_ex', ++ 'type' => '93323' ++ }, ++ '1' => { ++ 'name' => 'cmd', ++ 'type' => '103456' ++ }, ++ '2' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'resp', ++ 'type' => '103462' ++ }, ++ '4' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_get_context' ++ }, ++ '104219' => { ++ 'Header' => undef, ++ 'Line' => '68', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'port_attr', ++ 'type' => '66022' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '105302' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_query_port' ++ }, ++ '112971' => { ++ 'Header' => undef, ++ 'Line' => '78', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'dm', ++ 'type' => '114981' ++ }, ++ '2' => { ++ 'name' => 'offset', ++ 'type' => '956' ++ }, ++ '3' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '4' => { ++ 'name' => 'access', ++ 'type' => '64' ++ }, ++ '5' => { ++ 'name' => 'vmr', ++ 'type' => '24587' ++ }, ++ '6' => { ++ 'name' => 'link', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_reg_dm_mr' ++ }, ++ '115007' => { ++ 'Header' => undef, ++ 'Line' => '63', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dm', ++ 'type' => '114981' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_free_dm' ++ }, ++ '115452' => { ++ 'Header' => undef, ++ 'Line' => '35', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'dm_attr', ++ 'type' => '116456' ++ }, ++ '2' => { ++ 'name' => 'dm', ++ 'type' => '114981' ++ }, ++ '3' => { ++ 'name' => 'link', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_alloc_dm' ++ }, ++ '146045' => { ++ 'Header' => undef, ++ 'Line' => '35', ++ 'Param' => { ++ '0' => { ++ 'name' => 'flow_id', ++ 'type' => '18997' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_flow' ++ }, ++ '153544' => { ++ 'Header' => undef, ++ 'Line' => '120', ++ 'Param' => { ++ '0' => { ++ 'name' => 'action', ++ 'type' => '153972' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_flow_action' ++ }, ++ '153996' => { ++ 'Header' => undef, ++ 'Line' => '101', ++ 'Param' => { ++ '0' => { ++ 'name' => 'flow_action', ++ 'type' => '153972' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '66354' ++ }, ++ '2' => { ++ 'name' => 'driver', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_modify_flow_action_esp' ++ }, ++ '154518' => { ++ 'Header' => undef, ++ 'Line' => '72', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '66354' ++ }, ++ '2' => { ++ 'name' => 'flow_action', ++ 'type' => '153972' ++ }, ++ '3' => { ++ 'name' => 'driver', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_flow_action_esp' ++ }, ++ '182966' => { ++ 'Header' => undef, ++ 'Line' => '120', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'offset', ++ 'type' => '956' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'iova', ++ 'type' => '956' ++ }, ++ '4' => { ++ 'name' => 'fd', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'access', ++ 'type' => '130' ++ }, ++ '6' => { ++ 'name' => 'vmr', ++ 'type' => '24587' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_reg_dmabuf_mr' ++ }, ++ '185089' => { ++ 'Header' => undef, ++ 'Line' => '90', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'vmr', ++ 'type' => '24587' ++ }, ++ '2' => { ++ 'name' => 'mr_handle', ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_query_mr' ++ }, ++ '186193' => { ++ 'Header' => undef, ++ 'Line' => '58', ++ 'Param' => { ++ '0' => { ++ 'name' => 'vmr', ++ 'type' => '24587' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_dereg_mr' ++ }, ++ '186714' => { ++ 'Header' => undef, ++ 'Line' => '39', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'advice', ++ 'type' => '54649' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'sg_list', ++ 'type' => '14748' ++ }, ++ '4' => { ++ 'name' => 'num_sge', ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_advise_mr' ++ }, ++ '195259' => { ++ 'Header' => undef, ++ 'Line' => '35', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mw', ++ 'type' => '14508' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_dealloc_mw' ++ }, ++ '202578' => { ++ 'Header' => undef, ++ 'Line' => '35', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_dealloc_pd' ++ }, ++ '225008' => { ++ 'Header' => undef, ++ 'Line' => '449', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_qp' ++ }, ++ '225848' => { ++ 'Header' => undef, ++ 'Line' => '422', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'qp', ++ 'type' => '31688' ++ }, ++ '2' => { ++ 'name' => 'attr_ex', ++ 'type' => '67048' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '226371' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '226377' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_qp_ex2' ++ }, ++ '226401' => { ++ 'Header' => undef, ++ 'Line' => '401', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'qp', ++ 'type' => '31688' ++ }, ++ '2' => { ++ 'name' => 'attr_ex', ++ 'type' => '67048' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '226918' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '31700' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_qp_ex' ++ }, ++ '226948' => { ++ 'Header' => undef, ++ 'Line' => '373', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'type' => '24581' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '226918' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '31700' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_qp' ++ }, ++ '240099' => { ++ 'Header' => undef, ++ 'Line' => '35', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rwq_ind_table', ++ 'type' => '13095' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_rwq_ind_table' ++ }, ++ '24660' => { ++ 'Data' => 1, ++ 'Header' => undef, ++ 'Line' => '324', ++ 'Return' => '19039', ++ 'ShortName' => 'verbs_allow_disassociate_destroy' ++ }, ++ '25011' => { ++ 'Header' => undef, ++ 'Line' => '1205', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '19003' ++ }, ++ '2' => { ++ 'name' => 'cmd', ++ 'type' => '25175' ++ }, ++ '3' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_modify_cq' ++ }, ++ '25181' => { ++ 'Header' => undef, ++ 'Line' => '1160', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'init_attr', ++ 'type' => '19009' ++ }, ++ '2' => { ++ 'name' => 'rwq_ind_table', ++ 'type' => '13095' ++ }, ++ '3' => { ++ 'name' => 'resp', ++ 'type' => '25593' ++ }, ++ '4' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_rwq_ind_table' ++ }, ++ '25605' => { ++ 'Header' => undef, ++ 'Line' => '1128', ++ 'Param' => { ++ '0' => { ++ 'name' => 'wq', ++ 'type' => '10901' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '19015' ++ }, ++ '2' => { ++ 'name' => 'cmd', ++ 'type' => '25850' ++ }, ++ '3' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_modify_wq' ++ }, ++ '25856' => { ++ 'Header' => undef, ++ 'Line' => '1069', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'flow_id', ++ 'type' => '18997' ++ }, ++ '2' => { ++ 'name' => 'flow_attr', ++ 'type' => '19021' ++ }, ++ '3' => { ++ 'name' => 'ucmd', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'ucmd_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_flow' ++ }, ++ '259987' => { ++ 'Header' => undef, ++ 'Line' => '245', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '10700' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_srq' ++ }, ++ '260819' => { ++ 'Header' => undef, ++ 'Line' => '222', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'srq', ++ 'type' => '261265' ++ }, ++ '2' => { ++ 'name' => 'attr_ex', ++ 'type' => '67112' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '261271' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '261277' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_srq_ex' ++ }, ++ '261301' => { ++ 'Header' => undef, ++ 'Line' => '200', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'srq', ++ 'type' => '10700' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'type' => '69531' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '261829' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '261277' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_srq' ++ }, ++ '28091' => { ++ 'Header' => undef, ++ 'Line' => '858', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'gid', ++ 'type' => '24569' ++ }, ++ '2' => { ++ 'name' => 'lid', ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_detach_mcast' ++ }, ++ '28338' => { ++ 'Header' => undef, ++ 'Line' => '845', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'gid', ++ 'type' => '24569' ++ }, ++ '2' => { ++ 'name' => 'lid', ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_attach_mcast' ++ }, ++ '28511' => { ++ 'Header' => undef, ++ 'Line' => '809', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'ah', ++ 'type' => '14352' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'type' => '24575' ++ }, ++ '3' => { ++ 'name' => 'resp', ++ 'type' => '28802' ++ }, ++ '4' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_ah' ++ }, ++ '285302' => { ++ 'Header' => undef, ++ 'Line' => '141', ++ 'Param' => { ++ '0' => { ++ 'name' => 'wq', ++ 'type' => '10901' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_wq' ++ }, ++ '286134' => { ++ 'Header' => undef, ++ 'Line' => '121', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'wq_init_attr', ++ 'type' => '66725' ++ }, ++ '2' => { ++ 'name' => 'wq', ++ 'type' => '10901' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '289570' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '289576' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_wq' ++ }, ++ '28808' => { ++ 'Header' => undef, ++ 'Line' => '750', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'name' => 'wr', ++ 'type' => '14825' ++ }, ++ '2' => { ++ 'name' => 'bad_wr', ++ 'type' => '14913' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_post_srq_recv' ++ }, ++ '29301' => { ++ 'Header' => undef, ++ 'Line' => '691', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibqp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'wr', ++ 'type' => '14825' ++ }, ++ '2' => { ++ 'name' => 'bad_wr', ++ 'type' => '14913' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_post_recv' ++ }, ++ '297342' => { ++ 'Header' => undef, ++ 'Line' => '35', ++ 'Param' => { ++ '0' => { ++ 'name' => 'xrcd', ++ 'type' => '24209' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_close_xrcd' ++ }, ++ '29787' => { ++ 'Header' => undef, ++ 'Line' => '603', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibqp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'wr', ++ 'type' => '14742' ++ }, ++ '2' => { ++ 'name' => 'bad_wr', ++ 'type' => '18954' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_post_send' ++ }, ++ '30281' => { ++ 'Header' => undef, ++ 'Line' => '583', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '30534' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '30540' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_modify_qp_ex' ++ }, ++ '30546' => { ++ 'Header' => undef, ++ 'Line' => '566', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '30767' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_modify_qp' ++ }, ++ '30845' => { ++ 'Header' => undef, ++ 'Line' => '393', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'init_attr', ++ 'type' => '24581' ++ }, ++ '4' => { ++ 'name' => 'cmd', ++ 'type' => '31281' ++ }, ++ '5' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_query_qp' ++ }, ++ '31287' => { ++ 'Header' => undef, ++ 'Line' => '343', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'qp', ++ 'type' => '31688' ++ }, ++ '2' => { ++ 'name' => 'vqp_sz', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'attr', ++ 'type' => '19027' ++ }, ++ '4' => { ++ 'name' => 'cmd', ++ 'type' => '31694' ++ }, ++ '5' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '6' => { ++ 'name' => 'resp', ++ 'type' => '31700' ++ }, ++ '7' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_open_qp' ++ }, ++ '316440' => { ++ 'Header' => undef, ++ 'Line' => '310', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'iova', ++ 'type' => '956' ++ }, ++ '4' => { ++ 'name' => 'access', ++ 'type' => '64' ++ } ++ }, ++ 'Return' => '11828', ++ 'ShortName' => 'ibv_reg_mr_iova2' ++ }, ++ '316973' => { ++ 'Alias' => '__ibv_register_driver_1_1', ++ 'Header' => undef, ++ 'Line' => '979', ++ 'Param' => { ++ '0' => { ++ 'name' => 'name', ++ 'type' => '76632' ++ }, ++ '1' => { ++ 'name' => 'init_func', ++ 'type' => '315865' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_register_driver' ++ }, ++ '317035' => { ++ 'Alias' => '__ibv_detach_mcast_1_0', ++ 'Header' => undef, ++ 'Line' => '972', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '315773' ++ }, ++ '1' => { ++ 'name' => 'gid', ++ 'type' => '101173' ++ }, ++ '2' => { ++ 'name' => 'lid', ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_detach_mcast' ++ }, ++ '31706' => { ++ 'Header' => undef, ++ 'Line' => '314', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'name' => 'srq_attr', ++ 'type' => '24599' ++ }, ++ '2' => { ++ 'name' => 'cmd', ++ 'type' => '31966' ++ }, ++ '3' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_query_srq' ++ }, ++ '317165' => { ++ 'Alias' => '__ibv_attach_mcast_1_0', ++ 'Header' => undef, ++ 'Line' => '965', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '315773' ++ }, ++ '1' => { ++ 'name' => 'gid', ++ 'type' => '101173' ++ }, ++ '2' => { ++ 'name' => 'lid', ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_attach_mcast' ++ }, ++ '317295' => { ++ 'Alias' => '__ibv_destroy_ah_1_0', ++ 'Header' => undef, ++ 'Line' => '951', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ah', ++ 'type' => '314725' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_ah' ++ }, ++ '317405' => { ++ 'Alias' => '__ibv_create_ah_1_0', ++ 'Header' => undef, ++ 'Line' => '927', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '314143' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24575' ++ } ++ }, ++ 'Return' => '314725', ++ 'ShortName' => 'ibv_create_ah' ++ }, ++ '317584' => { ++ 'Alias' => '__ibv_destroy_qp_1_0', ++ 'Header' => undef, ++ 'Line' => '913', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '315773' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_qp' ++ }, ++ '317694' => { ++ 'Alias' => '__ibv_modify_qp_1_0', ++ 'Header' => undef, ++ 'Line' => '904', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '315773' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_modify_qp' ++ }, ++ '317820' => { ++ 'Alias' => '__ibv_query_qp_1_0', ++ 'Header' => undef, ++ 'Line' => '881', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '315773' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'init_attr', ++ 'type' => '318029' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_qp' ++ }, ++ '318035' => { ++ 'Alias' => '__ibv_create_qp_1_0', ++ 'Header' => undef, ++ 'Line' => '836', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '314143' ++ }, ++ '1' => { ++ 'name' => 'qp_init_attr', ++ 'type' => '318029' ++ } ++ }, ++ 'Return' => '315773', ++ 'ShortName' => 'ibv_create_qp' ++ }, ++ '318245' => { ++ 'Alias' => '__ibv_destroy_srq_1_0', ++ 'Header' => undef, ++ 'Line' => '822', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '314508' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_srq' ++ }, ++ '318356' => { ++ 'Alias' => '__ibv_query_srq_1_0', ++ 'Header' => undef, ++ 'Line' => '814', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '314508' ++ }, ++ '1' => { ++ 'name' => 'srq_attr', ++ 'type' => '24599' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_srq' ++ }, ++ '318455' => { ++ 'Alias' => '__ibv_modify_srq_1_0', ++ 'Header' => undef, ++ 'Line' => '805', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '314508' ++ }, ++ '1' => { ++ 'name' => 'srq_attr', ++ 'type' => '24599' ++ }, ++ '2' => { ++ 'name' => 'srq_attr_mask', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_modify_srq' ++ }, ++ '318582' => { ++ 'Alias' => '__ibv_create_srq_1_0', ++ 'Header' => undef, ++ 'Line' => '777', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '314143' ++ }, ++ '1' => { ++ 'name' => 'srq_init_attr', ++ 'type' => '69531' ++ } ++ }, ++ 'Return' => '314508', ++ 'ShortName' => 'ibv_create_srq' ++ }, ++ '318762' => { ++ 'Alias' => '__ibv_ack_cq_events_1_0', ++ 'Header' => undef, ++ 'Line' => '769', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '314502' ++ }, ++ '1' => { ++ 'name' => 'nevents', ++ 'type' => '64' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_ack_cq_events' ++ }, ++ '318856' => { ++ 'Alias' => '__ibv_get_cq_event_1_0', ++ 'Header' => undef, ++ 'Line' => '749', ++ 'Param' => { ++ '0' => { ++ 'name' => 'channel', ++ 'type' => '15787' ++ }, ++ '1' => { ++ 'name' => 'cq', ++ 'type' => '319057' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'type' => '157339' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_get_cq_event' ++ }, ++ '319063' => { ++ 'Alias' => '__ibv_destroy_cq_1_0', ++ 'Header' => undef, ++ 'Line' => '735', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '314502' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_cq' ++ }, ++ '319173' => { ++ 'Alias' => '__ibv_resize_cq_1_0', ++ 'Header' => undef, ++ 'Line' => '728', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '314502' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_resize_cq' ++ }, ++ '319271' => { ++ 'Alias' => '__ibv_create_cq_1_0', ++ 'Header' => undef, ++ 'Line' => '699', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'channel', ++ 'type' => '15787' ++ }, ++ '4' => { ++ 'name' => 'comp_vector', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '314502', ++ 'ShortName' => 'ibv_create_cq' ++ }, ++ '319532' => { ++ 'Alias' => '__ibv_dereg_mr_1_0', ++ 'Header' => undef, ++ 'Line' => '685', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mr', ++ 'type' => '319642' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_dereg_mr' ++ }, ++ '319648' => { ++ 'Alias' => '__ibv_reg_mr_1_0', ++ 'Header' => undef, ++ 'Line' => '658', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '314143' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'access', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '319642', ++ 'ShortName' => 'ibv_reg_mr' ++ }, ++ '31972' => { ++ 'Header' => undef, ++ 'Line' => '296', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'name' => 'srq_attr', ++ 'type' => '24599' ++ }, ++ '2' => { ++ 'name' => 'srq_attr_mask', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '32182' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_modify_srq' ++ }, ++ '319987' => { ++ 'Alias' => '__ibv_dealloc_pd_1_0', ++ 'Header' => undef, ++ 'Line' => '644', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '314143' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_dealloc_pd' ++ }, ++ '320097' => { ++ 'Alias' => '__ibv_alloc_pd_1_0', ++ 'Header' => undef, ++ 'Line' => '621', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '314046' ++ } ++ }, ++ 'Return' => '314143', ++ 'ShortName' => 'ibv_alloc_pd' ++ }, ++ '320244' => { ++ 'Alias' => '__ibv_query_pkey_1_0', ++ 'Header' => undef, ++ 'Line' => '612', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'index', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'pkey', ++ 'type' => '316605' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_pkey' ++ }, ++ '320402' => { ++ 'Alias' => '__ibv_query_gid_1_0', ++ 'Header' => undef, ++ 'Line' => '603', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'index', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'gid', ++ 'type' => '101173' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_gid' ++ }, ++ '320560' => { ++ 'Alias' => '__ibv_query_port_1_0', ++ 'Header' => undef, ++ 'Line' => '594', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'port_attr', ++ 'type' => '66022' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_port' ++ }, ++ '320954' => { ++ 'Alias' => '__ibv_query_device_1_0', ++ 'Header' => undef, ++ 'Line' => '586', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'device_attr', ++ 'type' => '18686' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_device' ++ }, ++ '321053' => { ++ 'Alias' => '__ibv_ack_async_event_1_0', ++ 'Header' => undef, ++ 'Line' => '549', ++ 'Param' => { ++ '0' => { ++ 'name' => 'event', ++ 'type' => '69345' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_ack_async_event' ++ }, ++ '321159' => { ++ 'Header' => undef, ++ 'Line' => '510', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'event', ++ 'type' => '69345' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => '__ibv_get_async_event_1_0' ++ }, ++ '321217' => { ++ 'Alias' => '__ibv_close_device_1_0', ++ 'Header' => undef, ++ 'Line' => '496', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '314046' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_close_device' ++ }, ++ '321328' => { ++ 'Alias' => '__ibv_open_device_1_0', ++ 'Header' => undef, ++ 'Line' => '467', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '315859' ++ } ++ }, ++ 'Return' => '314046', ++ 'ShortName' => 'ibv_open_device' ++ }, ++ '322542' => { ++ 'Alias' => '__ibv_get_device_guid_1_0', ++ 'Header' => undef, ++ 'Line' => '294', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '315859' ++ } ++ }, ++ 'Return' => '1052', ++ 'ShortName' => 'ibv_get_device_guid' ++ }, ++ '322612' => { ++ 'Alias' => '__ibv_get_device_name_1_0', ++ 'Header' => undef, ++ 'Line' => '287', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '315859' ++ } ++ }, ++ 'Return' => '76632', ++ 'ShortName' => 'ibv_get_device_name' ++ }, ++ '322682' => { ++ 'Alias' => '__ibv_free_device_list_1_0', ++ 'Header' => undef, ++ 'Line' => '272', ++ 'Param' => { ++ '0' => { ++ 'name' => 'list', ++ 'type' => '322803' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_free_device_list' ++ }, ++ '322809' => { ++ 'Alias' => '__ibv_get_device_list_1_0', ++ 'Header' => undef, ++ 'Line' => '231', ++ 'Param' => { ++ '0' => { ++ 'name' => 'num', ++ 'type' => '24942' ++ } ++ }, ++ 'Return' => '322803', ++ 'ShortName' => 'ibv_get_device_list' ++ }, ++ '32523' => { ++ 'Header' => undef, ++ 'Line' => '253', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'cmd', ++ 'type' => '32795' ++ }, ++ '3' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '4' => { ++ 'name' => 'resp', ++ 'type' => '32801' ++ }, ++ '5' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_resize_cq' ++ }, ++ '32807' => { ++ 'Header' => undef, ++ 'Line' => '240', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibcq', ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'name' => 'solicited_only', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_req_notify_cq' ++ }, ++ '32954' => { ++ 'Header' => undef, ++ 'Line' => '194', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibcq', ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'name' => 'ne', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'wc', ++ 'type' => '18860' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_poll_cq' ++ }, ++ '33322' => { ++ 'Header' => undef, ++ 'Line' => '169', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'type', ++ 'type' => '12050' ++ }, ++ '2' => { ++ 'name' => 'mw', ++ 'type' => '14508' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '33672' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '33678' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_alloc_mw' ++ }, ++ '33684' => { ++ 'Header' => undef, ++ 'Line' => '140', ++ 'Param' => { ++ '0' => { ++ 'name' => 'vmr', ++ 'type' => '24587' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '944' ++ }, ++ '10' => { ++ 'name' => 'resp_sz', ++ 'type' => '52' ++ }, ++ '2' => { ++ 'name' => 'addr', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '4' => { ++ 'name' => 'hca_va', ++ 'type' => '956' ++ }, ++ '5' => { ++ 'name' => 'access', ++ 'type' => '130' ++ }, ++ '6' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '7' => { ++ 'name' => 'cmd', ++ 'type' => '34030' ++ }, ++ '8' => { ++ 'name' => 'cmd_sz', ++ 'type' => '52' ++ }, ++ '9' => { ++ 'name' => 'resp', ++ 'type' => '34036' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_rereg_mr' ++ }, ++ '34042' => { ++ 'Header' => undef, ++ 'Line' => '99', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'hca_va', ++ 'type' => '956' ++ }, ++ '4' => { ++ 'name' => 'access', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'vmr', ++ 'type' => '24587' ++ }, ++ '6' => { ++ 'name' => 'cmd', ++ 'type' => '34390' ++ }, ++ '7' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '8' => { ++ 'name' => 'resp', ++ 'type' => '34396' ++ }, ++ '9' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_reg_mr' ++ }, ++ '342771' => { ++ 'Header' => undef, ++ 'Line' => '589', ++ 'Param' => { ++ '0' => { ++ 'name' => 'vctx', ++ 'type' => '93323' ++ }, ++ '1' => { ++ 'name' => 'ops', ++ 'type' => '342795' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'verbs_set_ops' ++ }, ++ '343156' => { ++ 'Alias' => '__ibv_ack_async_event_1_1', ++ 'Header' => undef, ++ 'Line' => '498', ++ 'Param' => { ++ '0' => { ++ 'name' => 'event', ++ 'type' => '69345' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_ack_async_event' ++ }, ++ '343468' => { ++ 'Alias' => '__ibv_get_async_event_1_1', ++ 'Header' => undef, ++ 'Line' => '452', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'event', ++ 'type' => '69345' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_get_async_event' ++ }, ++ '343782' => { ++ 'Alias' => '__ibv_close_device_1_1', ++ 'Header' => undef, ++ 'Line' => '442', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_close_device' ++ }, ++ '343976' => { ++ 'Header' => undef, ++ 'Line' => '432', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context_ex', ++ 'type' => '93323' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'verbs_uninit_context' ++ }, ++ '34402' => { ++ 'Header' => undef, ++ 'Line' => '67', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'xrcd', ++ 'type' => '24209' ++ }, ++ '2' => { ++ 'name' => 'vxrcd_size', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'attr', ++ 'type' => '19033' ++ }, ++ '4' => { ++ 'name' => 'cmd', ++ 'type' => '34711' ++ }, ++ '5' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '6' => { ++ 'name' => 'resp', ++ 'type' => '34717' ++ }, ++ '7' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_open_xrcd' ++ }, ++ '344081' => { ++ 'Header' => undef, ++ 'Line' => '370', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cmd_fd', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '9633', ++ 'ShortName' => 'ibv_import_device' ++ }, ++ '344581' => { ++ 'Alias' => '__ibv_open_device_1_1', ++ 'Header' => undef, ++ 'Line' => '363', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '18013' ++ } ++ }, ++ 'Return' => '9633', ++ 'ShortName' => 'ibv_open_device' ++ }, ++ '344664' => { ++ 'Header' => undef, ++ 'Line' => '323', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '18013' ++ }, ++ '1' => { ++ 'name' => 'private_data', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '9633', ++ 'ShortName' => 'verbs_open_device' ++ }, ++ '344977' => { ++ 'Header' => undef, ++ 'Line' => '265', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '18013' ++ }, ++ '1' => { ++ 'name' => 'cmd_fd', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'alloc_size', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'context_offset', ++ 'type' => '93323' ++ }, ++ '4' => { ++ 'name' => 'driver_id', ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '71', ++ 'ShortName' => '_verbs_init_and_alloc_context' ++ }, ++ '346100' => { ++ 'Header' => undef, ++ 'Line' => '502', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '2' => { ++ 'name' => 'channel', ++ 'type' => '15787' ++ }, ++ '3' => { ++ 'name' => 'cq_context', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'verbs_init_cq' ++ }, ++ '346315' => { ++ 'Header' => undef, ++ 'Line' => '153', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '18013' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_get_device_index' ++ }, ++ '346384' => { ++ 'Alias' => '__ibv_get_device_guid_1_1', ++ 'Header' => undef, ++ 'Line' => '116', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '18013' ++ } ++ }, ++ 'Return' => '1052', ++ 'ShortName' => 'ibv_get_device_guid' ++ }, ++ '346911' => { ++ 'Alias' => '__ibv_get_device_name_1_1', ++ 'Header' => undef, ++ 'Line' => '109', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '18013' ++ } ++ }, ++ 'Return' => '76632', ++ 'ShortName' => 'ibv_get_device_name' ++ }, ++ '346960' => { ++ 'Alias' => '__ibv_free_device_list_1_1', ++ 'Header' => undef, ++ 'Line' => '98', ++ 'Param' => { ++ '0' => { ++ 'name' => 'list', ++ 'type' => '316891' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_free_device_list' ++ }, ++ '347063' => { ++ 'Alias' => '__ibv_get_device_list_1_1', ++ 'Header' => undef, ++ 'Line' => '54', ++ 'Param' => { ++ '0' => { ++ 'name' => 'num', ++ 'type' => '24942' ++ } ++ }, ++ 'Return' => '316891', ++ 'ShortName' => 'ibv_get_device_list' ++ }, ++ '34723' => { ++ 'Header' => undef, ++ 'Line' => '50', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '2' => { ++ 'name' => 'cmd', ++ 'type' => '34999' ++ }, ++ '3' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '4' => { ++ 'name' => 'resp', ++ 'type' => '35005' ++ }, ++ '5' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_alloc_pd' ++ }, ++ '376512' => { ++ 'Header' => undef, ++ 'Line' => '101', ++ 'Param' => { ++ '0' => { ++ 'name' => 'status', ++ 'type' => '10907' ++ } ++ }, ++ 'Return' => '76632', ++ 'ShortName' => 'ibv_wc_status_str' ++ }, ++ '376610' => { ++ 'Header' => undef, ++ 'Line' => '70', ++ 'Param' => { ++ '0' => { ++ 'name' => 'event', ++ 'type' => '57023' ++ } ++ }, ++ 'Return' => '76632', ++ 'ShortName' => 'ibv_event_type_str' ++ }, ++ '376708' => { ++ 'Header' => undef, ++ 'Line' => '53', ++ 'Param' => { ++ '0' => { ++ 'name' => 'port_state', ++ 'type' => '56644' ++ } ++ }, ++ 'Return' => '76632', ++ 'ShortName' => 'ibv_port_state_str' ++ }, ++ '376806' => { ++ 'Header' => undef, ++ 'Line' => '35', ++ 'Param' => { ++ '0' => { ++ 'name' => 'node_type', ++ 'type' => '9355' ++ } ++ }, ++ 'Return' => '76632', ++ 'ShortName' => 'ibv_node_type_str' ++ }, ++ '379460' => { ++ 'Header' => undef, ++ 'Line' => '48', ++ 'Return' => '76632', ++ 'ShortName' => 'ibv_get_sysfs_path' ++ }, ++ '402752' => { ++ 'Header' => undef, ++ 'Line' => '125', ++ 'Return' => '130', ++ 'ShortName' => 'ibv_fork_init' ++ }, ++ '402878' => { ++ 'Header' => undef, ++ 'Line' => '108', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dir', ++ 'type' => '76632' ++ }, ++ '1' => { ++ 'name' => 'file', ++ 'type' => '76632' ++ }, ++ '2' => { ++ 'name' => 'buf', ++ 'type' => '180' ++ }, ++ '3' => { ++ 'name' => 'size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_read_sysfs_file' ++ }, ++ '409010' => { ++ 'Header' => undef, ++ 'Line' => '240', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ops', ++ 'type' => '93265' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'verbs_register_driver_34' ++ }, ++ '411982' => { ++ 'Header' => undef, ++ 'Line' => '66', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '93323' ++ }, ++ '1' => { ++ 'name' => 'level', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'fmt', ++ 'type' => '76632' ++ }, ++ '3' => { ++ 'type' => '-1' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => '__verbs_log' ++ }, ++ '416018' => { ++ 'Header' => undef, ++ 'Line' => '117', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dst', ++ 'type' => '416227' ++ }, ++ '1' => { ++ 'name' => 'src', ++ 'type' => '416233' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_copy_path_rec_to_kern' ++ }, ++ '416239' => { ++ 'Header' => undef, ++ 'Line' => '92', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dst', ++ 'type' => '416233' ++ }, ++ '1' => { ++ 'name' => 'src', ++ 'type' => '416227' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_copy_path_rec_from_kern' ++ }, ++ '416448' => { ++ 'Header' => undef, ++ 'Line' => '56', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dst', ++ 'type' => '24593' ++ }, ++ '1' => { ++ 'name' => 'src', ++ 'type' => '416583' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_copy_qp_attr_from_kern' ++ }, ++ '416589' => { ++ 'Header' => undef, ++ 'Line' => '39', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dst', ++ 'type' => '24575' ++ }, ++ '1' => { ++ 'name' => 'src', ++ 'type' => '416727' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_copy_ah_attr_from_kern' ++ }, ++ '421148' => { ++ 'Header' => undef, ++ 'Line' => '690', ++ 'Param' => { ++ '0' => { ++ 'name' => 'base', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_dofork_range' ++ }, ++ '421400' => { ++ 'Header' => undef, ++ 'Line' => '689', ++ 'Param' => { ++ '0' => { ++ 'name' => 'base', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_dontfork_range' ++ }, ++ '42316' => { ++ 'Header' => undef, ++ 'Line' => '35', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ah', ++ 'type' => '14352' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_ah' ++ }, ++ '423470' => { ++ 'Header' => undef, ++ 'Line' => '178', ++ 'Return' => '419513', ++ 'ShortName' => 'ibv_is_fork_initialized' ++ }, ++ '466961' => { ++ 'Header' => undef, ++ 'Line' => '1116', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'ece', ++ 'type' => '69847' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_ece' ++ }, ++ '467161' => { ++ 'Header' => undef, ++ 'Line' => '1106', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'ece', ++ 'type' => '69847' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_set_ece' ++ }, ++ '467378' => { ++ 'Header' => undef, ++ 'Line' => '1022', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24575' ++ }, ++ '2' => { ++ 'name' => 'eth_mac', ++ 'type' => '60310' ++ }, ++ '3' => { ++ 'name' => 'vid', ++ 'type' => '468450' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_resolve_eth_l2_from_gid' ++ }, ++ '468571' => { ++ 'Alias' => '__ibv_detach_mcast_1_1', ++ 'Header' => undef, ++ 'Line' => '981', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'gid', ++ 'type' => '24569' ++ }, ++ '2' => { ++ 'name' => 'lid', ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_detach_mcast' ++ }, ++ '468803' => { ++ 'Alias' => '__ibv_attach_mcast_1_1', ++ 'Header' => undef, ++ 'Line' => '974', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'gid', ++ 'type' => '24569' ++ }, ++ '2' => { ++ 'name' => 'lid', ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_attach_mcast' ++ }, ++ '469035' => { ++ 'Alias' => '__ibv_destroy_ah_1_1', ++ 'Header' => undef, ++ 'Line' => '967', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ah', ++ 'type' => '14352' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_ah' ++ }, ++ '469207' => { ++ 'Header' => undef, ++ 'Line' => '954', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'wc', ++ 'type' => '18860' ++ }, ++ '2' => { ++ 'name' => 'grh', ++ 'type' => '469456' ++ }, ++ '3' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ } ++ }, ++ 'Return' => '14352', ++ 'ShortName' => 'ibv_create_ah_from_wc' ++ }, ++ '469462' => { ++ 'Header' => undef, ++ 'Line' => '926', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'wc', ++ 'type' => '18860' ++ }, ++ '3' => { ++ 'name' => 'grh', ++ 'type' => '469456' ++ }, ++ '4' => { ++ 'name' => 'ah_attr', ++ 'type' => '24575' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_init_ah_from_wc' ++ }, ++ '471374' => { ++ 'Header' => undef, ++ 'Line' => '746', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'index', ++ 'type' => '64' ++ }, ++ '3' => { ++ 'name' => 'type', ++ 'type' => '101039' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_gid_type' ++ }, ++ '471609' => { ++ 'Alias' => '__ibv_create_ah_1_1', ++ 'Header' => undef, ++ 'Line' => '732', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24575' ++ } ++ }, ++ 'Return' => '14352', ++ 'ShortName' => 'ibv_create_ah' ++ }, ++ '471828' => { ++ 'Alias' => '__ibv_destroy_qp_1_1', ++ 'Header' => undef, ++ 'Line' => '725', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_qp' ++ }, ++ '472000' => { ++ 'Alias' => '__ibv_modify_qp_1_1', ++ 'Header' => undef, ++ 'Line' => '708', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_modify_qp' ++ }, ++ '472246' => { ++ 'Header' => undef, ++ 'Line' => '695', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'op', ++ 'type' => '13899' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_qp_data_in_order' ++ }, ++ '472473' => { ++ 'Alias' => '__ibv_query_qp_1_1', ++ 'Header' => undef, ++ 'Line' => '677', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'init_attr', ++ 'type' => '24581' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_qp' ++ }, ++ '472747' => { ++ 'Header' => undef, ++ 'Line' => '668', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '10582' ++ } ++ }, ++ 'Return' => '15319', ++ 'ShortName' => 'ibv_qp_to_qp_ex' ++ }, ++ '472824' => { ++ 'Alias' => '__ibv_create_qp_1_1', ++ 'Header' => undef, ++ 'Line' => '658', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'qp_init_attr', ++ 'type' => '24581' ++ } ++ }, ++ 'Return' => '10582', ++ 'ShortName' => 'ibv_create_qp' ++ }, ++ '473036' => { ++ 'Alias' => '__ibv_destroy_srq_1_1', ++ 'Header' => undef, ++ 'Line' => '651', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '10700' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_srq' ++ }, ++ '473209' => { ++ 'Alias' => '__ibv_query_srq_1_1', ++ 'Header' => undef, ++ 'Line' => '644', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'name' => 'srq_attr', ++ 'type' => '24599' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_srq' ++ }, ++ '473410' => { ++ 'Alias' => '__ibv_modify_srq_1_1', ++ 'Header' => undef, ++ 'Line' => '635', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'name' => 'srq_attr', ++ 'type' => '24599' ++ }, ++ '2' => { ++ 'name' => 'srq_attr_mask', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_modify_srq' ++ }, ++ '473639' => { ++ 'Alias' => '__ibv_create_srq_1_1', ++ 'Header' => undef, ++ 'Line' => '615', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'srq_init_attr', ++ 'type' => '69531' ++ } ++ }, ++ 'Return' => '10700', ++ 'ShortName' => 'ibv_create_srq' ++ }, ++ '473893' => { ++ 'Alias' => '__ibv_ack_cq_events_1_1', ++ 'Header' => undef, ++ 'Line' => '605', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'name' => 'nevents', ++ 'type' => '64' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_ack_cq_events' ++ }, ++ '474038' => { ++ 'Alias' => '__ibv_get_cq_event_1_1', ++ 'Header' => undef, ++ 'Line' => '587', ++ 'Param' => { ++ '0' => { ++ 'name' => 'channel', ++ 'type' => '15787' ++ }, ++ '1' => { ++ 'name' => 'cq', ++ 'type' => '316311' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'type' => '157339' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_get_cq_event' ++ }, ++ '474358' => { ++ 'Alias' => '__ibv_destroy_cq_1_1', ++ 'Header' => undef, ++ 'Line' => '567', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '10380' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_cq' ++ }, ++ '474578' => { ++ 'Alias' => '__ibv_resize_cq_1_1', ++ 'Header' => undef, ++ 'Line' => '560', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_resize_cq' ++ }, ++ '474778' => { ++ 'Alias' => '__ibv_create_cq_1_1', ++ 'Header' => undef, ++ 'Line' => '545', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'channel', ++ 'type' => '15787' ++ }, ++ '4' => { ++ 'name' => 'comp_vector', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '10380', ++ 'ShortName' => 'ibv_create_cq' ++ }, ++ '475116' => { ++ 'Header' => undef, ++ 'Line' => '522', ++ 'Param' => { ++ '0' => { ++ 'name' => 'channel', ++ 'type' => '15787' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_destroy_comp_channel' ++ }, ++ '475313' => { ++ 'Header' => undef, ++ 'Line' => '498', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ } ++ }, ++ 'Return' => '15787', ++ 'ShortName' => 'ibv_create_comp_channel' ++ }, ++ '475565' => { ++ 'Alias' => '__ibv_dereg_mr_1_1', ++ 'Header' => undef, ++ 'Line' => '481', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mr', ++ 'type' => '11828' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_dereg_mr' ++ }, ++ '475842' => { ++ 'Alias' => '__ibv_rereg_mr_1_1', ++ 'Header' => undef, ++ 'Line' => '416', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mr', ++ 'type' => '11828' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '3' => { ++ 'name' => 'addr', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'access', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_rereg_mr' ++ }, ++ '476352' => { ++ 'Header' => undef, ++ 'Line' => '398', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'offset', ++ 'type' => '956' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'iova', ++ 'type' => '956' ++ }, ++ '4' => { ++ 'name' => 'fd', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'access', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '11828', ++ 'ShortName' => 'ibv_reg_dmabuf_mr' ++ }, ++ '476680' => { ++ 'Header' => undef, ++ 'Line' => '393', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dm', ++ 'type' => '55227' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_unimport_dm' ++ }, ++ '476848' => { ++ 'Header' => undef, ++ 'Line' => '385', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'dm_handle', ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '55227', ++ 'ShortName' => 'ibv_import_dm' ++ }, ++ '477049' => { ++ 'Header' => undef, ++ 'Line' => '377', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mr', ++ 'type' => '11828' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_unimport_mr' ++ }, ++ '477217' => { ++ 'Header' => undef, ++ 'Line' => '369', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'mr_handle', ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '11828', ++ 'ShortName' => 'ibv_import_mr' ++ }, ++ '477417' => { ++ 'Header' => undef, ++ 'Line' => '360', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'ibv_unimport_pd' ++ }, ++ '477585' => { ++ 'Header' => undef, ++ 'Line' => '353', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'pd_handle', ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '12044', ++ 'ShortName' => 'ibv_import_pd' ++ }, ++ '477786' => { ++ 'Header' => undef, ++ 'Line' => '347', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'iova', ++ 'type' => '956' ++ }, ++ '4' => { ++ 'name' => 'access', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '11828', ++ 'ShortName' => 'ibv_reg_mr_iova' ++ }, ++ '477975' => { ++ 'Alias' => '__ibv_reg_mr_1_1', ++ 'Header' => undef, ++ 'Line' => '338', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'access', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '11828', ++ 'ShortName' => 'ibv_reg_mr' ++ }, ++ '478560' => { ++ 'Alias' => '__ibv_dealloc_pd_1_1', ++ 'Header' => undef, ++ 'Line' => '303', ++ 'Param' => { ++ '0' => { ++ 'name' => 'pd', ++ 'type' => '12044' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_dealloc_pd' ++ }, ++ '478732' => { ++ 'Alias' => '__ibv_alloc_pd_1_1', ++ 'Header' => undef, ++ 'Line' => '290', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ } ++ }, ++ 'Return' => '12044', ++ 'ShortName' => 'ibv_alloc_pd' ++ }, ++ '478924' => { ++ 'Alias' => '__ibv_get_pkey_index_1_5', ++ 'Header' => undef, ++ 'Line' => '274', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'pkey', ++ 'type' => '1028' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_get_pkey_index' ++ }, ++ '479134' => { ++ 'Alias' => '__ibv_query_pkey_1_1', ++ 'Header' => undef, ++ 'Line' => '254', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'index', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'pkey', ++ 'type' => '316605' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_pkey' ++ }, ++ '479449' => { ++ 'Header' => undef, ++ 'Line' => '231', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'index', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'gid', ++ 'type' => '101173' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => '__ibv_query_gid_1_1' ++ }, ++ '479539' => { ++ 'Alias' => '__ibv_query_port_1_1', ++ 'Header' => undef, ++ 'Line' => '221', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'port_attr', ++ 'type' => '18723' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_port' ++ }, ++ '479769' => { ++ 'Alias' => '__ibv_query_device_1_1', ++ 'Header' => undef, ++ 'Line' => '163', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'device_attr', ++ 'type' => '18686' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_query_device' ++ }, ++ '479977' => { ++ 'Header' => undef, ++ 'Line' => '133', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mbps', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '452864', ++ 'ShortName' => 'mbps_to_ibv_rate' ++ }, ++ '480026' => { ++ 'Header' => undef, ++ 'Line' => '103', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rate', ++ 'type' => '452864' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_rate_to_mbps' ++ }, ++ '480081' => { ++ 'Header' => undef, ++ 'Line' => '81', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mult', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '452864', ++ 'ShortName' => 'mult_to_ibv_rate' ++ }, ++ '480136' => { ++ 'Header' => undef, ++ 'Line' => '59', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rate', ++ 'type' => '452864' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_rate_to_mult' ++ }, ++ '49262' => { ++ 'Header' => undef, ++ 'Line' => '191', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'cmd', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'execute_ioctl' ++ }, ++ '49289' => { ++ 'Header' => undef, ++ 'Line' => '125', ++ 'Param' => { ++ '0' => { ++ 'name' => 'num_attrs', ++ 'type' => '64' ++ }, ++ '1' => { ++ 'name' => 'link', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '64', ++ 'ShortName' => '__ioctl_final_num_attrs' ++ }, ++ '49316' => { ++ 'Header' => undef, ++ 'Line' => '79', ++ 'Param' => { ++ '0' => { ++ 'name' => 'vcounters', ++ 'type' => '50290' ++ }, ++ '1' => { ++ 'name' => 'counters_value', ++ 'type' => '48730' ++ }, ++ '2' => { ++ 'name' => 'ncounters', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'link', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_read_counters' ++ }, ++ '50316' => { ++ 'Header' => undef, ++ 'Line' => '64', ++ 'Param' => { ++ '0' => { ++ 'name' => 'vcounters', ++ 'type' => '50290' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_counters' ++ }, ++ '50762' => { ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'init_attr', ++ 'type' => '48736' ++ }, ++ '2' => { ++ 'name' => 'vcounters', ++ 'type' => '50290' ++ }, ++ '3' => { ++ 'name' => 'link', ++ 'type' => '41839' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_counters' ++ }, ++ '70967' => { ++ 'Header' => undef, ++ 'Line' => '176', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '10380' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_destroy_cq' ++ }, ++ '71794' => { ++ 'Header' => undef, ++ 'Line' => '144', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'cq_attr', ++ 'type' => '72088' ++ }, ++ '2' => { ++ 'name' => 'cq', ++ 'type' => '72094' ++ }, ++ '3' => { ++ 'name' => 'cmd', ++ 'type' => '72100' ++ }, ++ '4' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '5' => { ++ 'name' => 'resp', ++ 'type' => '72106' ++ }, ++ '6' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ }, ++ '7' => { ++ 'name' => 'cmd_flags', ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_cq_ex' ++ }, ++ '72128' => { ++ 'Header' => undef, ++ 'Line' => '130', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'channel', ++ 'type' => '15787' ++ }, ++ '3' => { ++ 'name' => 'comp_vector', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'cq', ++ 'type' => '10380' ++ }, ++ '5' => { ++ 'name' => 'cmd', ++ 'type' => '72588' ++ }, ++ '6' => { ++ 'name' => 'cmd_size', ++ 'type' => '52' ++ }, ++ '7' => { ++ 'name' => 'resp', ++ 'type' => '72594' ++ }, ++ '8' => { ++ 'name' => 'resp_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_create_cq' ++ }, ++ '94839' => { ++ 'Header' => undef, ++ 'Line' => '714', ++ 'Param' => { ++ '0' => { ++ 'name' => 'buf', ++ 'type' => '180' ++ }, ++ '1' => { ++ 'name' => 'size', ++ 'type' => '52' ++ }, ++ '2' => { ++ 'name' => 'sysfs_dev', ++ 'type' => '93286' ++ }, ++ '3' => { ++ 'name' => 'fnfmt', ++ 'type' => '76632' ++ }, ++ '4' => { ++ 'type' => '-1' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_read_ibdev_sysfs_file' ++ }, ++ '95149' => { ++ 'Header' => undef, ++ 'Line' => '521', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'input', ++ 'type' => '66918' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'type' => '66924' ++ }, ++ '3' => { ++ 'name' => 'attr_size', ++ 'type' => '52' ++ }, ++ '4' => { ++ 'name' => 'resp', ++ 'type' => '95747' ++ }, ++ '5' => { ++ 'name' => 'resp_size', ++ 'type' => '95753' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'ibv_cmd_query_device_any' ++ }, ++ '95759' => { ++ 'Header' => undef, ++ 'Line' => '484', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'entries', ++ 'type' => '97012' ++ }, ++ '2' => { ++ 'name' => 'max_entries', ++ 'type' => '52' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'entry_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '209', ++ 'ShortName' => '_ibv_query_gid_table' ++ }, ++ '97036' => { ++ 'Header' => undef, ++ 'Line' => '473', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'gid_index', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'entry', ++ 'type' => '97012' ++ }, ++ '4' => { ++ 'name' => 'flags', ++ 'type' => '944' ++ }, ++ '5' => { ++ 'name' => 'entry_size', ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => '_ibv_query_gid_ex' ++ } ++ }, ++ 'SymbolVersion' => { ++ '__ibv_ack_async_event_1_0' => 'ibv_ack_async_event@IBVERBS_1.0', ++ '__ibv_ack_async_event_1_1' => 'ibv_ack_async_event@@IBVERBS_1.1', ++ '__ibv_ack_cq_events_1_0' => 'ibv_ack_cq_events@IBVERBS_1.0', ++ '__ibv_ack_cq_events_1_1' => 'ibv_ack_cq_events@@IBVERBS_1.1', ++ '__ibv_alloc_pd_1_0' => 'ibv_alloc_pd@IBVERBS_1.0', ++ '__ibv_alloc_pd_1_1' => 'ibv_alloc_pd@@IBVERBS_1.1', ++ '__ibv_attach_mcast_1_0' => 'ibv_attach_mcast@IBVERBS_1.0', ++ '__ibv_attach_mcast_1_1' => 'ibv_attach_mcast@@IBVERBS_1.1', ++ '__ibv_close_device_1_0' => 'ibv_close_device@IBVERBS_1.0', ++ '__ibv_close_device_1_1' => 'ibv_close_device@@IBVERBS_1.1', ++ '__ibv_create_ah_1_0' => 'ibv_create_ah@IBVERBS_1.0', ++ '__ibv_create_ah_1_1' => 'ibv_create_ah@@IBVERBS_1.1', ++ '__ibv_create_cq_1_0' => 'ibv_create_cq@IBVERBS_1.0', ++ '__ibv_create_cq_1_1' => 'ibv_create_cq@@IBVERBS_1.1', ++ '__ibv_create_qp_1_0' => 'ibv_create_qp@IBVERBS_1.0', ++ '__ibv_create_qp_1_1' => 'ibv_create_qp@@IBVERBS_1.1', ++ '__ibv_create_srq_1_0' => 'ibv_create_srq@IBVERBS_1.0', ++ '__ibv_create_srq_1_1' => 'ibv_create_srq@@IBVERBS_1.1', ++ '__ibv_dealloc_pd_1_0' => 'ibv_dealloc_pd@IBVERBS_1.0', ++ '__ibv_dealloc_pd_1_1' => 'ibv_dealloc_pd@@IBVERBS_1.1', ++ '__ibv_dereg_mr_1_0' => 'ibv_dereg_mr@IBVERBS_1.0', ++ '__ibv_dereg_mr_1_1' => 'ibv_dereg_mr@@IBVERBS_1.1', ++ '__ibv_destroy_ah_1_0' => 'ibv_destroy_ah@IBVERBS_1.0', ++ '__ibv_destroy_ah_1_1' => 'ibv_destroy_ah@@IBVERBS_1.1', ++ '__ibv_destroy_cq_1_0' => 'ibv_destroy_cq@IBVERBS_1.0', ++ '__ibv_destroy_cq_1_1' => 'ibv_destroy_cq@@IBVERBS_1.1', ++ '__ibv_destroy_qp_1_0' => 'ibv_destroy_qp@IBVERBS_1.0', ++ '__ibv_destroy_qp_1_1' => 'ibv_destroy_qp@@IBVERBS_1.1', ++ '__ibv_destroy_srq_1_0' => 'ibv_destroy_srq@IBVERBS_1.0', ++ '__ibv_destroy_srq_1_1' => 'ibv_destroy_srq@@IBVERBS_1.1', ++ '__ibv_detach_mcast_1_0' => 'ibv_detach_mcast@IBVERBS_1.0', ++ '__ibv_detach_mcast_1_1' => 'ibv_detach_mcast@@IBVERBS_1.1', ++ '__ibv_free_device_list_1_0' => 'ibv_free_device_list@IBVERBS_1.0', ++ '__ibv_free_device_list_1_1' => 'ibv_free_device_list@@IBVERBS_1.1', ++ '__ibv_get_async_event_1_0' => 'ibv_get_async_event@IBVERBS_1.0', ++ '__ibv_get_async_event_1_1' => 'ibv_get_async_event@@IBVERBS_1.1', ++ '__ibv_get_cq_event_1_0' => 'ibv_get_cq_event@IBVERBS_1.0', ++ '__ibv_get_cq_event_1_1' => 'ibv_get_cq_event@@IBVERBS_1.1', ++ '__ibv_get_device_guid_1_0' => 'ibv_get_device_guid@IBVERBS_1.0', ++ '__ibv_get_device_guid_1_1' => 'ibv_get_device_guid@@IBVERBS_1.1', ++ '__ibv_get_device_list_1_0' => 'ibv_get_device_list@IBVERBS_1.0', ++ '__ibv_get_device_list_1_1' => 'ibv_get_device_list@@IBVERBS_1.1', ++ '__ibv_get_device_name_1_0' => 'ibv_get_device_name@IBVERBS_1.0', ++ '__ibv_get_device_name_1_1' => 'ibv_get_device_name@@IBVERBS_1.1', ++ '__ibv_get_pkey_index_1_5' => 'ibv_get_pkey_index@@IBVERBS_1.5', ++ '__ibv_modify_qp_1_0' => 'ibv_modify_qp@IBVERBS_1.0', ++ '__ibv_modify_qp_1_1' => 'ibv_modify_qp@@IBVERBS_1.1', ++ '__ibv_modify_srq_1_0' => 'ibv_modify_srq@IBVERBS_1.0', ++ '__ibv_modify_srq_1_1' => 'ibv_modify_srq@@IBVERBS_1.1', ++ '__ibv_open_device_1_0' => 'ibv_open_device@IBVERBS_1.0', ++ '__ibv_open_device_1_1' => 'ibv_open_device@@IBVERBS_1.1', ++ '__ibv_query_device_1_0' => 'ibv_query_device@IBVERBS_1.0', ++ '__ibv_query_device_1_1' => 'ibv_query_device@@IBVERBS_1.1', ++ '__ibv_query_gid_1_0' => 'ibv_query_gid@IBVERBS_1.0', ++ '__ibv_query_gid_1_1' => 'ibv_query_gid@@IBVERBS_1.1', ++ '__ibv_query_pkey_1_0' => 'ibv_query_pkey@IBVERBS_1.0', ++ '__ibv_query_pkey_1_1' => 'ibv_query_pkey@@IBVERBS_1.1', ++ '__ibv_query_port_1_0' => 'ibv_query_port@IBVERBS_1.0', ++ '__ibv_query_port_1_1' => 'ibv_query_port@@IBVERBS_1.1', ++ '__ibv_query_qp_1_0' => 'ibv_query_qp@IBVERBS_1.0', ++ '__ibv_query_qp_1_1' => 'ibv_query_qp@@IBVERBS_1.1', ++ '__ibv_query_srq_1_0' => 'ibv_query_srq@IBVERBS_1.0', ++ '__ibv_query_srq_1_1' => 'ibv_query_srq@@IBVERBS_1.1', ++ '__ibv_reg_mr_1_0' => 'ibv_reg_mr@IBVERBS_1.0', ++ '__ibv_reg_mr_1_1' => 'ibv_reg_mr@@IBVERBS_1.1', ++ '__ibv_register_driver_1_1' => 'ibv_register_driver@IBVERBS_1.1', ++ '__ibv_rereg_mr_1_1' => 'ibv_rereg_mr@@IBVERBS_1.1', ++ '__ibv_resize_cq_1_0' => 'ibv_resize_cq@IBVERBS_1.0', ++ '__ibv_resize_cq_1_1' => 'ibv_resize_cq@@IBVERBS_1.1', ++ '__ioctl_final_num_attrs' => '__ioctl_final_num_attrs@@IBVERBS_PRIVATE_34', ++ '__verbs_log' => '__verbs_log@@IBVERBS_PRIVATE_34', ++ '_ibv_query_gid_ex' => '_ibv_query_gid_ex@@IBVERBS_1.11', ++ '_ibv_query_gid_table' => '_ibv_query_gid_table@@IBVERBS_1.11', ++ '_verbs_init_and_alloc_context' => '_verbs_init_and_alloc_context@@IBVERBS_PRIVATE_34', ++ 'execute_ioctl' => 'execute_ioctl@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_advise_mr' => 'ibv_cmd_advise_mr@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_alloc_dm' => 'ibv_cmd_alloc_dm@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_alloc_mw' => 'ibv_cmd_alloc_mw@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_alloc_pd' => 'ibv_cmd_alloc_pd@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_attach_mcast' => 'ibv_cmd_attach_mcast@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_close_xrcd' => 'ibv_cmd_close_xrcd@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_ah' => 'ibv_cmd_create_ah@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_counters' => 'ibv_cmd_create_counters@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_cq' => 'ibv_cmd_create_cq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_cq_ex' => 'ibv_cmd_create_cq_ex@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_flow' => 'ibv_cmd_create_flow@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_flow_action_esp' => 'ibv_cmd_create_flow_action_esp@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_qp' => 'ibv_cmd_create_qp@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_qp_ex' => 'ibv_cmd_create_qp_ex@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_qp_ex2' => 'ibv_cmd_create_qp_ex2@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_rwq_ind_table' => 'ibv_cmd_create_rwq_ind_table@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_srq' => 'ibv_cmd_create_srq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_srq_ex' => 'ibv_cmd_create_srq_ex@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_create_wq' => 'ibv_cmd_create_wq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_dealloc_mw' => 'ibv_cmd_dealloc_mw@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_dealloc_pd' => 'ibv_cmd_dealloc_pd@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_dereg_mr' => 'ibv_cmd_dereg_mr@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_ah' => 'ibv_cmd_destroy_ah@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_counters' => 'ibv_cmd_destroy_counters@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_cq' => 'ibv_cmd_destroy_cq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_flow' => 'ibv_cmd_destroy_flow@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_flow_action' => 'ibv_cmd_destroy_flow_action@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_qp' => 'ibv_cmd_destroy_qp@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_rwq_ind_table' => 'ibv_cmd_destroy_rwq_ind_table@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_srq' => 'ibv_cmd_destroy_srq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_destroy_wq' => 'ibv_cmd_destroy_wq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_detach_mcast' => 'ibv_cmd_detach_mcast@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_free_dm' => 'ibv_cmd_free_dm@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_get_context' => 'ibv_cmd_get_context@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_modify_cq' => 'ibv_cmd_modify_cq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_modify_flow_action_esp' => 'ibv_cmd_modify_flow_action_esp@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_modify_qp' => 'ibv_cmd_modify_qp@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_modify_qp_ex' => 'ibv_cmd_modify_qp_ex@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_modify_srq' => 'ibv_cmd_modify_srq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_modify_wq' => 'ibv_cmd_modify_wq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_open_qp' => 'ibv_cmd_open_qp@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_open_xrcd' => 'ibv_cmd_open_xrcd@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_poll_cq' => 'ibv_cmd_poll_cq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_post_recv' => 'ibv_cmd_post_recv@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_post_send' => 'ibv_cmd_post_send@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_post_srq_recv' => 'ibv_cmd_post_srq_recv@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_query_context' => 'ibv_cmd_query_context@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_query_device_any' => 'ibv_cmd_query_device_any@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_query_mr' => 'ibv_cmd_query_mr@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_query_port' => 'ibv_cmd_query_port@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_query_qp' => 'ibv_cmd_query_qp@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_query_srq' => 'ibv_cmd_query_srq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_read_counters' => 'ibv_cmd_read_counters@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_reg_dm_mr' => 'ibv_cmd_reg_dm_mr@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_reg_dmabuf_mr' => 'ibv_cmd_reg_dmabuf_mr@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_reg_mr' => 'ibv_cmd_reg_mr@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_req_notify_cq' => 'ibv_cmd_req_notify_cq@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_rereg_mr' => 'ibv_cmd_rereg_mr@@IBVERBS_PRIVATE_34', ++ 'ibv_cmd_resize_cq' => 'ibv_cmd_resize_cq@@IBVERBS_PRIVATE_34', ++ 'ibv_copy_ah_attr_from_kern' => 'ibv_copy_ah_attr_from_kern@@IBVERBS_1.1', ++ 'ibv_copy_path_rec_from_kern' => 'ibv_copy_path_rec_from_kern@@IBVERBS_1.0', ++ 'ibv_copy_path_rec_to_kern' => 'ibv_copy_path_rec_to_kern@@IBVERBS_1.0', ++ 'ibv_copy_qp_attr_from_kern' => 'ibv_copy_qp_attr_from_kern@@IBVERBS_1.0', ++ 'ibv_create_ah_from_wc' => 'ibv_create_ah_from_wc@@IBVERBS_1.1', ++ 'ibv_create_comp_channel' => 'ibv_create_comp_channel@@IBVERBS_1.0', ++ 'ibv_destroy_comp_channel' => 'ibv_destroy_comp_channel@@IBVERBS_1.0', ++ 'ibv_dofork_range' => 'ibv_dofork_range@@IBVERBS_1.1', ++ 'ibv_dontfork_range' => 'ibv_dontfork_range@@IBVERBS_1.1', ++ 'ibv_event_type_str' => 'ibv_event_type_str@@IBVERBS_1.1', ++ 'ibv_fork_init' => 'ibv_fork_init@@IBVERBS_1.1', ++ 'ibv_get_device_index' => 'ibv_get_device_index@@IBVERBS_1.9', ++ 'ibv_get_sysfs_path' => 'ibv_get_sysfs_path@@IBVERBS_1.0', ++ 'ibv_import_device' => 'ibv_import_device@@IBVERBS_1.10', ++ 'ibv_import_dm' => 'ibv_import_dm@@IBVERBS_1.13', ++ 'ibv_import_mr' => 'ibv_import_mr@@IBVERBS_1.10', ++ 'ibv_import_pd' => 'ibv_import_pd@@IBVERBS_1.10', ++ 'ibv_init_ah_from_wc' => 'ibv_init_ah_from_wc@@IBVERBS_1.1', ++ 'ibv_is_fork_initialized' => 'ibv_is_fork_initialized@@IBVERBS_1.13', ++ 'ibv_node_type_str' => 'ibv_node_type_str@@IBVERBS_1.1', ++ 'ibv_port_state_str' => 'ibv_port_state_str@@IBVERBS_1.1', ++ 'ibv_qp_to_qp_ex' => 'ibv_qp_to_qp_ex@@IBVERBS_1.6', ++ 'ibv_query_ece' => 'ibv_query_ece@@IBVERBS_1.10', ++ 'ibv_query_gid_type' => 'ibv_query_gid_type@@IBVERBS_PRIVATE_34', ++ 'ibv_query_qp_data_in_order' => 'ibv_query_qp_data_in_order@@IBVERBS_1.14', ++ 'ibv_rate_to_mbps' => 'ibv_rate_to_mbps@@IBVERBS_1.1', ++ 'ibv_rate_to_mult' => 'ibv_rate_to_mult@@IBVERBS_1.0', ++ 'ibv_read_ibdev_sysfs_file' => 'ibv_read_ibdev_sysfs_file@@IBVERBS_PRIVATE_34', ++ 'ibv_read_sysfs_file' => 'ibv_read_sysfs_file@@IBVERBS_1.0', ++ 'ibv_reg_dmabuf_mr' => 'ibv_reg_dmabuf_mr@@IBVERBS_1.12', ++ 'ibv_reg_mr_iova' => 'ibv_reg_mr_iova@@IBVERBS_1.7', ++ 'ibv_reg_mr_iova2' => 'ibv_reg_mr_iova2@@IBVERBS_1.8', ++ 'ibv_resolve_eth_l2_from_gid' => 'ibv_resolve_eth_l2_from_gid@@IBVERBS_1.1', ++ 'ibv_set_ece' => 'ibv_set_ece@@IBVERBS_1.10', ++ 'ibv_unimport_dm' => 'ibv_unimport_dm@@IBVERBS_1.13', ++ 'ibv_unimport_mr' => 'ibv_unimport_mr@@IBVERBS_1.10', ++ 'ibv_unimport_pd' => 'ibv_unimport_pd@@IBVERBS_1.10', ++ 'ibv_wc_status_str' => 'ibv_wc_status_str@@IBVERBS_1.1', ++ 'mbps_to_ibv_rate' => 'mbps_to_ibv_rate@@IBVERBS_1.1', ++ 'mult_to_ibv_rate' => 'mult_to_ibv_rate@@IBVERBS_1.0', ++ 'verbs_allow_disassociate_destroy' => 'verbs_allow_disassociate_destroy@@IBVERBS_PRIVATE_34', ++ 'verbs_init_cq' => 'verbs_init_cq@@IBVERBS_PRIVATE_34', ++ 'verbs_open_device' => 'verbs_open_device@@IBVERBS_PRIVATE_34', ++ 'verbs_register_driver_34' => 'verbs_register_driver_34@@IBVERBS_PRIVATE_34', ++ 'verbs_set_ops' => 'verbs_set_ops@@IBVERBS_PRIVATE_34', ++ 'verbs_uninit_context' => 'verbs_uninit_context@@IBVERBS_PRIVATE_34' ++ }, ++ 'Symbols' => { ++ 'libibverbs.so.1.14.41.0' => { ++ '__ioctl_final_num_attrs@@IBVERBS_PRIVATE_34' => 1, ++ '__verbs_log@@IBVERBS_PRIVATE_34' => 1, ++ '_ibv_query_gid_ex@@IBVERBS_1.11' => 1, ++ '_ibv_query_gid_table@@IBVERBS_1.11' => 1, ++ '_verbs_init_and_alloc_context@@IBVERBS_PRIVATE_34' => 1, ++ 'execute_ioctl@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_ack_async_event@@IBVERBS_1.1' => 1, ++ 'ibv_ack_async_event@IBVERBS_1.0' => 1, ++ 'ibv_ack_cq_events@@IBVERBS_1.1' => 1, ++ 'ibv_ack_cq_events@IBVERBS_1.0' => 1, ++ 'ibv_alloc_pd@@IBVERBS_1.1' => 1, ++ 'ibv_alloc_pd@IBVERBS_1.0' => 1, ++ 'ibv_attach_mcast@@IBVERBS_1.1' => 1, ++ 'ibv_attach_mcast@IBVERBS_1.0' => 1, ++ 'ibv_close_device@@IBVERBS_1.1' => 1, ++ 'ibv_close_device@IBVERBS_1.0' => 1, ++ 'ibv_cmd_advise_mr@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_alloc_dm@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_alloc_mw@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_alloc_pd@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_attach_mcast@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_close_xrcd@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_ah@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_counters@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_cq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_cq_ex@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_flow@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_flow_action_esp@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_qp@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_qp_ex2@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_qp_ex@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_rwq_ind_table@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_srq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_srq_ex@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_create_wq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_dealloc_mw@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_dealloc_pd@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_dereg_mr@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_ah@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_counters@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_cq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_flow@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_flow_action@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_qp@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_rwq_ind_table@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_srq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_destroy_wq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_detach_mcast@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_free_dm@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_get_context@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_modify_cq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_modify_flow_action_esp@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_modify_qp@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_modify_qp_ex@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_modify_srq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_modify_wq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_open_qp@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_open_xrcd@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_poll_cq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_post_recv@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_post_send@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_post_srq_recv@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_query_context@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_query_device_any@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_query_mr@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_query_port@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_query_qp@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_query_srq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_read_counters@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_reg_dm_mr@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_reg_dmabuf_mr@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_reg_mr@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_req_notify_cq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_rereg_mr@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_cmd_resize_cq@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_copy_ah_attr_from_kern@@IBVERBS_1.1' => 1, ++ 'ibv_copy_path_rec_from_kern@@IBVERBS_1.0' => 1, ++ 'ibv_copy_path_rec_to_kern@@IBVERBS_1.0' => 1, ++ 'ibv_copy_qp_attr_from_kern@@IBVERBS_1.0' => 1, ++ 'ibv_create_ah@@IBVERBS_1.1' => 1, ++ 'ibv_create_ah@IBVERBS_1.0' => 1, ++ 'ibv_create_ah_from_wc@@IBVERBS_1.1' => 1, ++ 'ibv_create_comp_channel@@IBVERBS_1.0' => 1, ++ 'ibv_create_cq@@IBVERBS_1.1' => 1, ++ 'ibv_create_cq@IBVERBS_1.0' => 1, ++ 'ibv_create_qp@@IBVERBS_1.1' => 1, ++ 'ibv_create_qp@IBVERBS_1.0' => 1, ++ 'ibv_create_srq@@IBVERBS_1.1' => 1, ++ 'ibv_create_srq@IBVERBS_1.0' => 1, ++ 'ibv_dealloc_pd@@IBVERBS_1.1' => 1, ++ 'ibv_dealloc_pd@IBVERBS_1.0' => 1, ++ 'ibv_dereg_mr@@IBVERBS_1.1' => 1, ++ 'ibv_dereg_mr@IBVERBS_1.0' => 1, ++ 'ibv_destroy_ah@@IBVERBS_1.1' => 1, ++ 'ibv_destroy_ah@IBVERBS_1.0' => 1, ++ 'ibv_destroy_comp_channel@@IBVERBS_1.0' => 1, ++ 'ibv_destroy_cq@@IBVERBS_1.1' => 1, ++ 'ibv_destroy_cq@IBVERBS_1.0' => 1, ++ 'ibv_destroy_qp@@IBVERBS_1.1' => 1, ++ 'ibv_destroy_qp@IBVERBS_1.0' => 1, ++ 'ibv_destroy_srq@@IBVERBS_1.1' => 1, ++ 'ibv_destroy_srq@IBVERBS_1.0' => 1, ++ 'ibv_detach_mcast@@IBVERBS_1.1' => 1, ++ 'ibv_detach_mcast@IBVERBS_1.0' => 1, ++ 'ibv_dofork_range@@IBVERBS_1.1' => 1, ++ 'ibv_dontfork_range@@IBVERBS_1.1' => 1, ++ 'ibv_event_type_str@@IBVERBS_1.1' => 1, ++ 'ibv_fork_init@@IBVERBS_1.1' => 1, ++ 'ibv_free_device_list@@IBVERBS_1.1' => 1, ++ 'ibv_free_device_list@IBVERBS_1.0' => 1, ++ 'ibv_get_async_event@@IBVERBS_1.1' => 1, ++ 'ibv_get_async_event@IBVERBS_1.0' => 1, ++ 'ibv_get_cq_event@@IBVERBS_1.1' => 1, ++ 'ibv_get_cq_event@IBVERBS_1.0' => 1, ++ 'ibv_get_device_guid@@IBVERBS_1.1' => 1, ++ 'ibv_get_device_guid@IBVERBS_1.0' => 1, ++ 'ibv_get_device_index@@IBVERBS_1.9' => 1, ++ 'ibv_get_device_list@@IBVERBS_1.1' => 1, ++ 'ibv_get_device_list@IBVERBS_1.0' => 1, ++ 'ibv_get_device_name@@IBVERBS_1.1' => 1, ++ 'ibv_get_device_name@IBVERBS_1.0' => 1, ++ 'ibv_get_pkey_index@@IBVERBS_1.5' => 1, ++ 'ibv_get_sysfs_path@@IBVERBS_1.0' => 1, ++ 'ibv_import_device@@IBVERBS_1.10' => 1, ++ 'ibv_import_dm@@IBVERBS_1.13' => 1, ++ 'ibv_import_mr@@IBVERBS_1.10' => 1, ++ 'ibv_import_pd@@IBVERBS_1.10' => 1, ++ 'ibv_init_ah_from_wc@@IBVERBS_1.1' => 1, ++ 'ibv_is_fork_initialized@@IBVERBS_1.13' => 1, ++ 'ibv_modify_qp@@IBVERBS_1.1' => 1, ++ 'ibv_modify_qp@IBVERBS_1.0' => 1, ++ 'ibv_modify_srq@@IBVERBS_1.1' => 1, ++ 'ibv_modify_srq@IBVERBS_1.0' => 1, ++ 'ibv_node_type_str@@IBVERBS_1.1' => 1, ++ 'ibv_open_device@@IBVERBS_1.1' => 1, ++ 'ibv_open_device@IBVERBS_1.0' => 1, ++ 'ibv_port_state_str@@IBVERBS_1.1' => 1, ++ 'ibv_qp_to_qp_ex@@IBVERBS_1.6' => 1, ++ 'ibv_query_device@@IBVERBS_1.1' => 1, ++ 'ibv_query_device@IBVERBS_1.0' => 1, ++ 'ibv_query_ece@@IBVERBS_1.10' => 1, ++ 'ibv_query_gid@@IBVERBS_1.1' => 1, ++ 'ibv_query_gid@IBVERBS_1.0' => 1, ++ 'ibv_query_gid_type@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_query_pkey@@IBVERBS_1.1' => 1, ++ 'ibv_query_pkey@IBVERBS_1.0' => 1, ++ 'ibv_query_port@@IBVERBS_1.1' => 1, ++ 'ibv_query_port@IBVERBS_1.0' => 1, ++ 'ibv_query_qp@@IBVERBS_1.1' => 1, ++ 'ibv_query_qp@IBVERBS_1.0' => 1, ++ 'ibv_query_qp_data_in_order@@IBVERBS_1.14' => 1, ++ 'ibv_query_srq@@IBVERBS_1.1' => 1, ++ 'ibv_query_srq@IBVERBS_1.0' => 1, ++ 'ibv_rate_to_mbps@@IBVERBS_1.1' => 1, ++ 'ibv_rate_to_mult@@IBVERBS_1.0' => 1, ++ 'ibv_read_ibdev_sysfs_file@@IBVERBS_PRIVATE_34' => 1, ++ 'ibv_read_sysfs_file@@IBVERBS_1.0' => 1, ++ 'ibv_reg_dmabuf_mr@@IBVERBS_1.12' => 1, ++ 'ibv_reg_mr@@IBVERBS_1.1' => 1, ++ 'ibv_reg_mr@IBVERBS_1.0' => 1, ++ 'ibv_reg_mr_iova2@@IBVERBS_1.8' => 1, ++ 'ibv_reg_mr_iova@@IBVERBS_1.7' => 1, ++ 'ibv_register_driver@IBVERBS_1.1' => 1, ++ 'ibv_rereg_mr@@IBVERBS_1.1' => 1, ++ 'ibv_resize_cq@@IBVERBS_1.1' => 1, ++ 'ibv_resize_cq@IBVERBS_1.0' => 1, ++ 'ibv_resolve_eth_l2_from_gid@@IBVERBS_1.1' => 1, ++ 'ibv_set_ece@@IBVERBS_1.10' => 1, ++ 'ibv_unimport_dm@@IBVERBS_1.13' => 1, ++ 'ibv_unimport_mr@@IBVERBS_1.10' => 1, ++ 'ibv_unimport_pd@@IBVERBS_1.10' => 1, ++ 'ibv_wc_status_str@@IBVERBS_1.1' => 1, ++ 'mbps_to_ibv_rate@@IBVERBS_1.1' => 1, ++ 'mult_to_ibv_rate@@IBVERBS_1.0' => 1, ++ 'verbs_allow_disassociate_destroy@@IBVERBS_PRIVATE_34' => -1, ++ 'verbs_init_cq@@IBVERBS_PRIVATE_34' => 1, ++ 'verbs_open_device@@IBVERBS_PRIVATE_34' => 1, ++ 'verbs_register_driver_34@@IBVERBS_PRIVATE_34' => 1, ++ 'verbs_set_ops@@IBVERBS_PRIVATE_34' => 1, ++ 'verbs_uninit_context@@IBVERBS_PRIVATE_34' => 1 ++ } ++ }, ++ 'Target' => 'unix', ++ 'TypeInfo' => { ++ '-1' => { ++ 'Name' => '...', ++ 'Type' => 'Intrinsic' ++ }, ++ '1' => { ++ 'Name' => 'void', ++ 'Type' => 'Intrinsic' ++ }, ++ '1004' => { ++ 'BaseType' => '64', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__u32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '101039' => { ++ 'BaseType' => '92651', ++ 'Name' => 'enum ibv_gid_type_sysfs*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '101173' => { ++ 'BaseType' => '9296', ++ 'Name' => 'union ibv_gid*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1016' => { ++ 'BaseType' => '474', ++ 'Header' => undef, ++ 'Line' => '31', ++ 'Name' => '__u64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '10173' => { ++ 'BaseType' => '186', ++ 'Name' => 'char[64]', ++ 'Size' => '64', ++ 'Type' => 'Array' ++ }, ++ '10189' => { ++ 'Header' => undef, ++ 'Line' => '364', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MTU_256', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'IBV_MTU_512', ++ 'value' => '2' ++ }, ++ '2' => { ++ 'name' => 'IBV_MTU_1024', ++ 'value' => '3' ++ }, ++ '3' => { ++ 'name' => 'IBV_MTU_2048', ++ 'value' => '4' ++ }, ++ '4' => { ++ 'name' => 'IBV_MTU_4096', ++ 'value' => '5' ++ } ++ }, ++ 'Name' => 'enum ibv_mtu', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '10239' => { ++ 'Header' => undef, ++ 'Line' => '1458', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'offset' => '8', ++ 'type' => '15787' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'cqe', ++ 'offset' => '28', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '822' ++ }, ++ '6' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '896' ++ }, ++ '7' => { ++ 'name' => 'comp_events_completed', ++ 'offset' => '120', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'async_events_completed', ++ 'offset' => '124', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_cq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '1028' => { ++ 'BaseType' => '992', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => '__be16', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '103456' => { ++ 'BaseType' => '92090', ++ 'Name' => 'struct ibv_get_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '103462' => { ++ 'BaseType' => '78418', ++ 'Name' => 'struct ib_uverbs_get_context_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10380' => { ++ 'BaseType' => '10239', ++ 'Name' => 'struct ibv_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10386' => { ++ 'Header' => undef, ++ 'Line' => '1252', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'qp_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '10' => { ++ 'name' => 'mutex', ++ 'offset' => '64', ++ 'type' => '822' ++ }, ++ '11' => { ++ 'name' => 'cond', ++ 'offset' => '104', ++ 'type' => '896' ++ }, ++ '12' => { ++ 'name' => 'events_completed', ++ 'offset' => '152', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '12044' ++ }, ++ '3' => { ++ 'name' => 'send_cq', ++ 'offset' => '24', ++ 'type' => '10380' ++ }, ++ '4' => { ++ 'name' => 'recv_cq', ++ 'offset' => '32', ++ 'type' => '10380' ++ }, ++ '5' => { ++ 'name' => 'srq', ++ 'offset' => '40', ++ 'type' => '10700' ++ }, ++ '6' => { ++ 'name' => 'handle', ++ 'offset' => '48', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'qp_num', ++ 'offset' => '52', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'state', ++ 'offset' => '56', ++ 'type' => '13414' ++ }, ++ '9' => { ++ 'name' => 'qp_type', ++ 'offset' => '60', ++ 'type' => '12835' ++ } ++ }, ++ 'Name' => 'struct ibv_qp', ++ 'Size' => '160', ++ 'Type' => 'Struct' ++ }, ++ '1040' => { ++ 'BaseType' => '1004', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__be32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '1052' => { ++ 'BaseType' => '1016', ++ 'Header' => undef, ++ 'Line' => '29', ++ 'Name' => '__be64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '105302' => { ++ 'BaseType' => '92421', ++ 'Name' => 'struct ibv_query_port*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10582' => { ++ 'BaseType' => '10386', ++ 'Name' => 'struct ibv_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10588' => { ++ 'Header' => undef, ++ 'Line' => '1212', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'srq_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '12044' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '822' ++ }, ++ '5' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '896' ++ }, ++ '6' => { ++ 'name' => 'events_completed', ++ 'offset' => '120', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_srq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '10700' => { ++ 'BaseType' => '10588', ++ 'Name' => 'struct ibv_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10706' => { ++ 'Header' => undef, ++ 'Line' => '1234', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'wq_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '10' => { ++ 'name' => 'cond', ++ 'offset' => '96', ++ 'type' => '896' ++ }, ++ '11' => { ++ 'name' => 'events_completed', ++ 'offset' => '144', ++ 'type' => '944' ++ }, ++ '12' => { ++ 'name' => 'comp_mask', ++ 'offset' => '148', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '12044' ++ }, ++ '3' => { ++ 'name' => 'cq', ++ 'offset' => '24', ++ 'type' => '10380' ++ }, ++ '4' => { ++ 'name' => 'wq_num', ++ 'offset' => '32', ++ 'type' => '944' ++ }, ++ '5' => { ++ 'name' => 'handle', ++ 'offset' => '36', ++ 'type' => '944' ++ }, ++ '6' => { ++ 'name' => 'state', ++ 'offset' => '40', ++ 'type' => '12502' ++ }, ++ '7' => { ++ 'name' => 'wq_type', ++ 'offset' => '44', ++ 'type' => '12426' ++ }, ++ '8' => { ++ 'name' => 'post_recv', ++ 'offset' => '48', ++ 'type' => '14919' ++ }, ++ '9' => { ++ 'name' => 'mutex', ++ 'offset' => '56', ++ 'type' => '822' ++ } ++ }, ++ 'Name' => 'struct ibv_wq', ++ 'Size' => '152', ++ 'Type' => 'Struct' ++ }, ++ '107760' => { ++ 'BaseType' => '54940', ++ 'Name' => 'struct ibv_alloc_dm_attr const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '10901' => { ++ 'BaseType' => '10706', ++ 'Name' => 'struct ibv_wq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10907' => { ++ 'Header' => undef, ++ 'Line' => '483', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SUCCESS', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_LOC_LEN_ERR', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_REM_ACCESS_ERR', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_REM_OP_ERR', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_RETRY_EXC_ERR', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_RNR_RETRY_EXC_ERR', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_LOC_RDD_VIOL_ERR', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_REM_INV_RD_REQ_ERR', ++ 'value' => '15' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_REM_ABORT_ERR', ++ 'value' => '16' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_INV_EECN_ERR', ++ 'value' => '17' ++ }, ++ '18' => { ++ 'name' => 'IBV_WC_INV_EEC_STATE_ERR', ++ 'value' => '18' ++ }, ++ '19' => { ++ 'name' => 'IBV_WC_FATAL_ERR', ++ 'value' => '19' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_LOC_QP_OP_ERR', ++ 'value' => '2' ++ }, ++ '20' => { ++ 'name' => 'IBV_WC_RESP_TIMEOUT_ERR', ++ 'value' => '20' ++ }, ++ '21' => { ++ 'name' => 'IBV_WC_GENERAL_ERR', ++ 'value' => '21' ++ }, ++ '22' => { ++ 'name' => 'IBV_WC_TM_ERR', ++ 'value' => '22' ++ }, ++ '23' => { ++ 'name' => 'IBV_WC_TM_RNDV_INCOMPLETE', ++ 'value' => '23' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_LOC_EEC_OP_ERR', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_LOC_PROT_ERR', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_WR_FLUSH_ERR', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_MW_BIND_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_BAD_RESP_ERR', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_LOC_ACCESS_ERR', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_REM_INV_REQ_ERR', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_status', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '11071' => { ++ 'Header' => undef, ++ 'Line' => '511', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SEND', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_RDMA_WRITE', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_TM_ADD', ++ 'value' => '130' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_TM_DEL', ++ 'value' => '131' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_TM_SYNC', ++ 'value' => '132' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_TM_RECV', ++ 'value' => '133' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_TM_NO_TAG', ++ 'value' => '134' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_DRIVER1', ++ 'value' => '135' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_DRIVER2', ++ 'value' => '136' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_DRIVER3', ++ 'value' => '137' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_RDMA_READ', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_COMP_SWAP', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_FETCH_ADD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_BIND_MW', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_LOCAL_INV', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_TSO', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_RECV', ++ 'value' => '128' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_RECV_RDMA_WITH_IMM', ++ 'value' => '129' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '112504' => { ++ 'Header' => undef, ++ 'Line' => '187', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dm', ++ 'offset' => '0', ++ 'type' => '54993' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '32', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct verbs_dm', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '11339' => { ++ 'Header' => undef, ++ 'Line' => '594', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '1040' ++ }, ++ '1' => { ++ 'name' => 'invalidated_rkey', ++ 'offset' => '0', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '11376' => { ++ 'Header' => undef, ++ 'Line' => '585', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'status', ++ 'offset' => '8', ++ 'type' => '10907' ++ }, ++ '10' => { ++ 'name' => 'slid', ++ 'offset' => '42', ++ 'type' => '932' ++ }, ++ '11' => { ++ 'name' => 'sl', ++ 'offset' => '44', ++ 'type' => '920' ++ }, ++ '12' => { ++ 'name' => 'dlid_path_bits', ++ 'offset' => '45', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'opcode', ++ 'offset' => '12', ++ 'type' => '11071' ++ }, ++ '3' => { ++ 'name' => 'vendor_err', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'byte_len', ++ 'offset' => '20', ++ 'type' => '944' ++ }, ++ '5' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '11339' ++ }, ++ '6' => { ++ 'name' => 'qp_num', ++ 'offset' => '28', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'src_qp', ++ 'offset' => '32', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'wc_flags', ++ 'offset' => '36', ++ 'type' => '64' ++ }, ++ '9' => { ++ 'name' => 'pkey_index', ++ 'offset' => '40', ++ 'type' => '932' ++ } ++ }, ++ 'Name' => 'struct ibv_wc', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '114981' => { ++ 'BaseType' => '112504', ++ 'Name' => 'struct verbs_dm*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11641' => { ++ 'Header' => undef, ++ 'Line' => '619', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mr', ++ 'offset' => '0', ++ 'type' => '11828' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'offset' => '8', ++ 'type' => '956' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'offset' => '16', ++ 'type' => '956' ++ }, ++ '3' => { ++ 'name' => 'mw_access_flags', ++ 'offset' => '24', ++ 'type' => '64' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind_info', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '116456' => { ++ 'BaseType' => '107760', ++ 'Name' => 'struct ibv_alloc_dm_attr const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11711' => { ++ 'BaseType' => '11641', ++ 'Name' => 'struct ibv_mw_bind_info const', ++ 'Size' => '32', ++ 'Type' => 'Const' ++ }, ++ '11716' => { ++ 'Header' => undef, ++ 'Line' => '662', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '12044' ++ }, ++ '2' => { ++ 'name' => 'addr', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'length', ++ 'offset' => '24', ++ 'type' => '52' ++ }, ++ '4' => { ++ 'name' => 'handle', ++ 'offset' => '32', ++ 'type' => '944' ++ }, ++ '5' => { ++ 'name' => 'lkey', ++ 'offset' => '36', ++ 'type' => '944' ++ }, ++ '6' => { ++ 'name' => 'rkey', ++ 'offset' => '40', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_mr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '118' => { ++ 'BaseType' => '85', ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Name' => '__uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '11828' => { ++ 'BaseType' => '11716', ++ 'Name' => 'struct ibv_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11834' => { ++ 'Header' => undef, ++ 'Line' => '626', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_pd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '11915' => { ++ 'Header' => undef, ++ 'Line' => '645', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '4', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'oflags', ++ 'offset' => '8', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_xrcd_init_attr', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '11971' => { ++ 'Header' => undef, ++ 'Line' => '651', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ } ++ }, ++ 'Name' => 'struct ibv_xrcd', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '12044' => { ++ 'BaseType' => '11834', ++ 'Name' => 'struct ibv_pd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12050' => { ++ 'Header' => undef, ++ 'Line' => '672', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MW_TYPE_1', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'IBV_MW_TYPE_2', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_mw_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '12082' => { ++ 'Header' => undef, ++ 'Line' => '677', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '12044' ++ }, ++ '2' => { ++ 'name' => 'rkey', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '20', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'type', ++ 'offset' => '24', ++ 'type' => '12050' ++ } ++ }, ++ 'Name' => 'struct ibv_mw', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '12166' => { ++ 'Header' => undef, ++ 'Line' => '685', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dgid', ++ 'offset' => '0', ++ 'type' => '9296' ++ }, ++ '1' => { ++ 'name' => 'flow_label', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'sgid_index', ++ 'offset' => '20', ++ 'type' => '920' ++ }, ++ '3' => { ++ 'name' => 'hop_limit', ++ 'offset' => '21', ++ 'type' => '920' ++ }, ++ '4' => { ++ 'name' => 'traffic_class', ++ 'offset' => '22', ++ 'type' => '920' ++ } ++ }, ++ 'Name' => 'struct ibv_global_route', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '12251' => { ++ 'Header' => undef, ++ 'Line' => '756', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'grh', ++ 'offset' => '0', ++ 'type' => '12166' ++ }, ++ '1' => { ++ 'name' => 'dlid', ++ 'offset' => '24', ++ 'type' => '932' ++ }, ++ '2' => { ++ 'name' => 'sl', ++ 'offset' => '26', ++ 'type' => '920' ++ }, ++ '3' => { ++ 'name' => 'src_path_bits', ++ 'offset' => '27', ++ 'type' => '920' ++ }, ++ '4' => { ++ 'name' => 'static_rate', ++ 'offset' => '28', ++ 'type' => '920' ++ }, ++ '5' => { ++ 'name' => 'is_global', ++ 'offset' => '29', ++ 'type' => '920' ++ }, ++ '6' => { ++ 'name' => 'port_num', ++ 'offset' => '30', ++ 'type' => '920' ++ } ++ }, ++ 'Name' => 'struct ibv_ah_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '12363' => { ++ 'Header' => undef, ++ 'Line' => '771', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_wr', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'max_sge', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'srq_limit', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_srq_attr', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '12420' => { ++ 'BaseType' => '11971', ++ 'Name' => 'struct ibv_xrcd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12426' => { ++ 'Header' => undef, ++ 'Line' => '814', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WQT_RQ', ++ 'value' => '0' ++ } ++ }, ++ 'Name' => 'enum ibv_wq_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '12502' => { ++ 'Header' => undef, ++ 'Line' => '842', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WQS_RESET', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WQS_RDY', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_WQS_ERR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WQS_UNKNOWN', ++ 'value' => '3' ++ } ++ }, ++ 'Name' => 'enum ibv_wq_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '12590' => { ++ 'Header' => undef, ++ 'Line' => '856', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'attr_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'wq_state', ++ 'offset' => '4', ++ 'type' => '12502' ++ }, ++ '2' => { ++ 'name' => 'curr_wq_state', ++ 'offset' => '8', ++ 'type' => '12502' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'offset' => '12', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'flags_mask', ++ 'offset' => '16', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_wq_attr', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '12675' => { ++ 'Header' => undef, ++ 'Line' => '874', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'ind_tbl_handle', ++ 'offset' => '8', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'ind_tbl_num', ++ 'offset' => '12', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_rwq_ind_table', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '12772' => { ++ 'Header' => undef, ++ 'Line' => '888', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'log_ind_tbl_size', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'ind_tbl', ++ 'offset' => '8', ++ 'type' => '12829' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_rwq_ind_table_init_attr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '12829' => { ++ 'BaseType' => '10901', ++ 'Name' => 'struct ibv_wq**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12835' => { ++ 'Header' => undef, ++ 'Line' => '895', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPT_RC', ++ 'value' => '2' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPT_UC', ++ 'value' => '3' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPT_UD', ++ 'value' => '4' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPT_RAW_PACKET', ++ 'value' => '8' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPT_XRC_SEND', ++ 'value' => '9' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPT_XRC_RECV', ++ 'value' => '10' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPT_DRIVER', ++ 'value' => '255' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '12897' => { ++ 'Header' => undef, ++ 'Line' => '905', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '12', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '16', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_cap', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '12982' => { ++ 'Header' => undef, ++ 'Line' => '913', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '10380' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '10380' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '10700' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '12897' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '12835' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '130' => { ++ 'Name' => 'int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '13095' => { ++ 'BaseType' => '12675', ++ 'Name' => 'struct ibv_rwq_ind_table*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '13151' => { ++ 'Header' => undef, ++ 'Line' => '993', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'qp_num', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'xrcd', ++ 'offset' => '8', ++ 'type' => '12420' ++ }, ++ '3' => { ++ 'name' => 'qp_context', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'qp_type', ++ 'offset' => '24', ++ 'type' => '12835' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_open_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '13414' => { ++ 'Header' => undef, ++ 'Line' => '1033', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPS_RESET', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPS_INIT', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPS_RTR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPS_RTS', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPS_SQD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPS_SQE', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPS_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_QPS_UNKNOWN', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '13482' => { ++ 'Header' => undef, ++ 'Line' => '1044', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MIG_MIGRATED', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_MIG_REARM', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_MIG_ARMED', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_mig_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '13520' => { ++ 'Header' => undef, ++ 'Line' => '1050', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_state', ++ 'offset' => '0', ++ 'type' => '13414' ++ }, ++ '1' => { ++ 'name' => 'cur_qp_state', ++ 'offset' => '4', ++ 'type' => '13414' ++ }, ++ '10' => { ++ 'name' => 'ah_attr', ++ 'offset' => '56', ++ 'type' => '12251' ++ }, ++ '11' => { ++ 'name' => 'alt_ah_attr', ++ 'offset' => '88', ++ 'type' => '12251' ++ }, ++ '12' => { ++ 'name' => 'pkey_index', ++ 'offset' => '120', ++ 'type' => '932' ++ }, ++ '13' => { ++ 'name' => 'alt_pkey_index', ++ 'offset' => '122', ++ 'type' => '932' ++ }, ++ '14' => { ++ 'name' => 'en_sqd_async_notify', ++ 'offset' => '124', ++ 'type' => '920' ++ }, ++ '15' => { ++ 'name' => 'sq_draining', ++ 'offset' => '125', ++ 'type' => '920' ++ }, ++ '16' => { ++ 'name' => 'max_rd_atomic', ++ 'offset' => '126', ++ 'type' => '920' ++ }, ++ '17' => { ++ 'name' => 'max_dest_rd_atomic', ++ 'offset' => '127', ++ 'type' => '920' ++ }, ++ '18' => { ++ 'name' => 'min_rnr_timer', ++ 'offset' => '128', ++ 'type' => '920' ++ }, ++ '19' => { ++ 'name' => 'port_num', ++ 'offset' => '129', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'path_mtu', ++ 'offset' => '8', ++ 'type' => '10189' ++ }, ++ '20' => { ++ 'name' => 'timeout', ++ 'offset' => '130', ++ 'type' => '920' ++ }, ++ '21' => { ++ 'name' => 'retry_cnt', ++ 'offset' => '131', ++ 'type' => '920' ++ }, ++ '22' => { ++ 'name' => 'rnr_retry', ++ 'offset' => '132', ++ 'type' => '920' ++ }, ++ '23' => { ++ 'name' => 'alt_port_num', ++ 'offset' => '133', ++ 'type' => '920' ++ }, ++ '24' => { ++ 'name' => 'alt_timeout', ++ 'offset' => '134', ++ 'type' => '920' ++ }, ++ '25' => { ++ 'name' => 'rate_limit', ++ 'offset' => '136', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'path_mig_state', ++ 'offset' => '12', ++ 'type' => '13482' ++ }, ++ '4' => { ++ 'name' => 'qkey', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '5' => { ++ 'name' => 'rq_psn', ++ 'offset' => '20', ++ 'type' => '944' ++ }, ++ '6' => { ++ 'name' => 'sq_psn', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'dest_qp_num', ++ 'offset' => '28', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'qp_access_flags', ++ 'offset' => '32', ++ 'type' => '64' ++ }, ++ '9' => { ++ 'name' => 'cap', ++ 'offset' => '36', ++ 'type' => '12897' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_attr', ++ 'Size' => '144', ++ 'Type' => 'Struct' ++ }, ++ '137' => { ++ 'BaseType' => '64', ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Name' => '__uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '13899' => { ++ 'Header' => undef, ++ 'Line' => '1086', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WR_RDMA_WRITE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WR_RDMA_WRITE_WITH_IMM', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WR_TSO', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WR_DRIVER1', ++ 'value' => '11' ++ }, ++ '2' => { ++ 'name' => 'IBV_WR_SEND', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WR_SEND_WITH_IMM', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WR_RDMA_READ', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WR_ATOMIC_CMP_AND_SWP', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WR_ATOMIC_FETCH_AND_ADD', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WR_LOCAL_INV', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WR_BIND_MW', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WR_SEND_WITH_INV', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wr_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '13991' => { ++ 'Header' => undef, ++ 'Line' => '1109', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '52' ++ } ++ }, ++ 'Name' => 'struct ibv_data_buf', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '14034' => { ++ 'BaseType' => '13991', ++ 'Name' => 'struct ibv_data_buf const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '14039' => { ++ 'Header' => undef, ++ 'Line' => '1114', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'lkey', ++ 'offset' => '12', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_sge', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '14096' => { ++ 'BaseType' => '14039', ++ 'Name' => 'struct ibv_sge const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '14101' => { ++ 'Header' => undef, ++ 'Line' => '1130', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '1040' ++ }, ++ '1' => { ++ 'name' => 'invalidate_rkey', ++ 'offset' => '0', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '14138' => { ++ 'Header' => undef, ++ 'Line' => '1135', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '14177' => { ++ 'Header' => undef, ++ 'Line' => '1139', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'compare_add', ++ 'offset' => '8', ++ 'type' => '956' ++ }, ++ '2' => { ++ 'name' => 'swap', ++ 'offset' => '16', ++ 'type' => '956' ++ }, ++ '3' => { ++ 'name' => 'rkey', ++ 'offset' => '24', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '1423' => { ++ 'Header' => undef, ++ 'Line' => '146', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'command', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'in_words', ++ 'offset' => '4', ++ 'type' => '992' ++ }, ++ '2' => { ++ 'name' => 'out_words', ++ 'offset' => '6', ++ 'type' => '992' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_cmd_hdr', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '14244' => { ++ 'Header' => undef, ++ 'Line' => '1145', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ah', ++ 'offset' => '0', ++ 'type' => '14352' ++ }, ++ '1' => { ++ 'name' => 'remote_qpn', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'remote_qkey', ++ 'offset' => '12', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '14296' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '12044' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_ah', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '14352' => { ++ 'BaseType' => '14296', ++ 'Name' => 'struct ibv_ah*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14358' => { ++ 'Header' => undef, ++ 'Line' => '1134', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rdma', ++ 'offset' => '0', ++ 'type' => '14138' ++ }, ++ '1' => { ++ 'name' => 'atomic', ++ 'offset' => '0', ++ 'type' => '14177' ++ }, ++ '2' => { ++ 'name' => 'ud', ++ 'offset' => '0', ++ 'type' => '14244' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '14407' => { ++ 'Header' => undef, ++ 'Line' => '1152', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_srqn', ++ 'offset' => '0', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '14432' => { ++ 'Header' => undef, ++ 'Line' => '1151', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'xrc', ++ 'offset' => '0', ++ 'type' => '14407' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '14456' => { ++ 'Header' => undef, ++ 'Line' => '1157', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mw', ++ 'offset' => '0', ++ 'type' => '14508' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '11641' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '14508' => { ++ 'BaseType' => '12082', ++ 'Name' => 'struct ibv_mw*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14514' => { ++ 'Header' => undef, ++ 'Line' => '1162', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'hdr_sz', ++ 'offset' => '8', ++ 'type' => '932' ++ }, ++ '2' => { ++ 'name' => 'mss', ++ 'offset' => '10', ++ 'type' => '932' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '14567' => { ++ 'Header' => undef, ++ 'Line' => '1156', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'bind_mw', ++ 'offset' => '0', ++ 'type' => '14456' ++ }, ++ '1' => { ++ 'name' => 'tso', ++ 'offset' => '0', ++ 'type' => '14514' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '14604' => { ++ 'Header' => undef, ++ 'Line' => '1120', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '14742' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '14748' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'opcode', ++ 'offset' => '28', ++ 'type' => '13899' ++ }, ++ '5' => { ++ 'name' => 'send_flags', ++ 'offset' => '32', ++ 'type' => '64' ++ }, ++ '6' => { ++ 'name' => 'unnamed0', ++ 'offset' => '36', ++ 'type' => '14101' ++ }, ++ '7' => { ++ 'name' => 'wr', ++ 'offset' => '40', ++ 'type' => '14358' ++ }, ++ '8' => { ++ 'name' => 'qp_type', ++ 'offset' => '72', ++ 'type' => '14432' ++ }, ++ '9' => { ++ 'name' => 'unnamed1', ++ 'offset' => '80', ++ 'type' => '14567' ++ } ++ }, ++ 'Name' => 'struct ibv_send_wr', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '14742' => { ++ 'BaseType' => '14604', ++ 'Name' => 'struct ibv_send_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14748' => { ++ 'BaseType' => '14039', ++ 'Name' => 'struct ibv_sge*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14754' => { ++ 'Header' => undef, ++ 'Line' => '1170', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '14825' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '14748' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_recv_wr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '1476' => { ++ 'Header' => undef, ++ 'Line' => '152', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'provider_in_words', ++ 'offset' => '8', ++ 'type' => '992' ++ }, ++ '2' => { ++ 'name' => 'provider_out_words', ++ 'offset' => '10', ++ 'type' => '992' ++ }, ++ '3' => { ++ 'name' => 'cmd_hdr_reserved', ++ 'offset' => '12', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_cmd_hdr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '14825' => { ++ 'BaseType' => '14754', ++ 'Name' => 'struct ibv_recv_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14831' => { ++ 'Header' => undef, ++ 'Line' => '1206', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'send_flags', ++ 'offset' => '8', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '11641' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '149' => { ++ 'Name' => 'long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '14913' => { ++ 'BaseType' => '14825', ++ 'Name' => 'struct ibv_recv_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14919' => { ++ 'Name' => 'int(*)(struct ibv_wq*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10901' ++ }, ++ '1' => { ++ 'type' => '14825' ++ }, ++ '2' => { ++ 'type' => '14913' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '14925' => { ++ 'Header' => undef, ++ 'Line' => '1269', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_base', ++ 'offset' => '0', ++ 'type' => '10386' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '160', ++ 'type' => '956' ++ }, ++ '10' => { ++ 'name' => 'wr_rdma_write_imm', ++ 'offset' => '232', ++ 'type' => '15476' ++ }, ++ '11' => { ++ 'name' => 'wr_send', ++ 'offset' => '240', ++ 'type' => '15493' ++ }, ++ '12' => { ++ 'name' => 'wr_send_imm', ++ 'offset' => '248', ++ 'type' => '15515' ++ }, ++ '13' => { ++ 'name' => 'wr_send_inv', ++ 'offset' => '256', ++ 'type' => '15417' ++ }, ++ '14' => { ++ 'name' => 'wr_send_tso', ++ 'offset' => '264', ++ 'type' => '15547' ++ }, ++ '15' => { ++ 'name' => 'wr_set_ud_addr', ++ 'offset' => '272', ++ 'type' => '15579' ++ }, ++ '16' => { ++ 'name' => 'wr_set_xrc_srqn', ++ 'offset' => '280', ++ 'type' => '15417' ++ }, ++ '17' => { ++ 'name' => 'wr_set_inline_data', ++ 'offset' => '288', ++ 'type' => '15606' ++ }, ++ '18' => { ++ 'name' => 'wr_set_inline_data_list', ++ 'offset' => '296', ++ 'type' => '15639' ++ }, ++ '19' => { ++ 'name' => 'wr_set_sge', ++ 'offset' => '304', ++ 'type' => '15671' ++ }, ++ '2' => { ++ 'name' => 'wr_id', ++ 'offset' => '168', ++ 'type' => '956' ++ }, ++ '20' => { ++ 'name' => 'wr_set_sge_list', ++ 'offset' => '312', ++ 'type' => '15704' ++ }, ++ '21' => { ++ 'name' => 'wr_start', ++ 'offset' => '320', ++ 'type' => '15493' ++ }, ++ '22' => { ++ 'name' => 'wr_complete', ++ 'offset' => '328', ++ 'type' => '15725' ++ }, ++ '23' => { ++ 'name' => 'wr_abort', ++ 'offset' => '336', ++ 'type' => '15493' ++ }, ++ '3' => { ++ 'name' => 'wr_flags', ++ 'offset' => '176', ++ 'type' => '64' ++ }, ++ '4' => { ++ 'name' => 'wr_atomic_cmp_swp', ++ 'offset' => '184', ++ 'type' => '15325' ++ }, ++ '5' => { ++ 'name' => 'wr_atomic_fetch_add', ++ 'offset' => '192', ++ 'type' => '15357' ++ }, ++ '6' => { ++ 'name' => 'wr_bind_mw', ++ 'offset' => '200', ++ 'type' => '15395' ++ }, ++ '7' => { ++ 'name' => 'wr_local_inv', ++ 'offset' => '208', ++ 'type' => '15417' ++ }, ++ '8' => { ++ 'name' => 'wr_rdma_read', ++ 'offset' => '216', ++ 'type' => '15444' ++ }, ++ '9' => { ++ 'name' => 'wr_rdma_write', ++ 'offset' => '224', ++ 'type' => '15444' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_ex', ++ 'Size' => '344', ++ 'Type' => 'Struct' ++ }, ++ '15319' => { ++ 'BaseType' => '14925', ++ 'Name' => 'struct ibv_qp_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '15325' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t, uint64_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '944' ++ }, ++ '2' => { ++ 'type' => '956' ++ }, ++ '3' => { ++ 'type' => '956' ++ }, ++ '4' => { ++ 'type' => '956' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15357' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '944' ++ }, ++ '2' => { ++ 'type' => '956' ++ }, ++ '3' => { ++ 'type' => '956' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15389' => { ++ 'BaseType' => '11711', ++ 'Name' => 'struct ibv_mw_bind_info const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '15395' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, struct ibv_mw*, uint32_t, struct ibv_mw_bind_info const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '14508' ++ }, ++ '2' => { ++ 'type' => '944' ++ }, ++ '3' => { ++ 'type' => '15389' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '153972' => { ++ 'BaseType' => '24456', ++ 'Name' => 'struct verbs_flow_action*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '15417' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '1544' => { ++ 'BaseType' => '980', ++ 'Name' => '__u8[7]', ++ 'Size' => '7', ++ 'Type' => 'Array' ++ }, ++ '15444' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '944' ++ }, ++ '2' => { ++ 'type' => '956' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15476' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t, __be32)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '944' ++ }, ++ '2' => { ++ 'type' => '956' ++ }, ++ '3' => { ++ 'type' => '1040' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15493' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15515' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, __be32)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '1040' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15547' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, void*, uint16_t, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '71' ++ }, ++ '2' => { ++ 'type' => '932' ++ }, ++ '3' => { ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15579' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, struct ibv_ah*, uint32_t, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '14352' ++ }, ++ '2' => { ++ 'type' => '944' ++ }, ++ '3' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '156' => { ++ 'BaseType' => '45', ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Name' => '__uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1560' => { ++ 'Header' => undef, ++ 'Line' => '309', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_alloc_pd', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '15606' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, void*, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '71' ++ }, ++ '2' => { ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15633' => { ++ 'BaseType' => '14034', ++ 'Name' => 'struct ibv_data_buf const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '15639' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, size_t, struct ibv_data_buf const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '52' ++ }, ++ '2' => { ++ 'type' => '15633' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15671' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '944' ++ }, ++ '2' => { ++ 'type' => '956' ++ }, ++ '3' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15698' => { ++ 'BaseType' => '14096', ++ 'Name' => 'struct ibv_sge const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '15704' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, size_t, struct ibv_sge const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ }, ++ '1' => { ++ 'type' => '52' ++ }, ++ '2' => { ++ 'type' => '15698' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15725' => { ++ 'Name' => 'int(*)(struct ibv_qp_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '15319' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '15731' => { ++ 'Header' => undef, ++ 'Line' => '1452', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '8', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'refcnt', ++ 'offset' => '12', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_comp_channel', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '157339' => { ++ 'BaseType' => '71', ++ 'Name' => 'void**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '15787' => { ++ 'BaseType' => '15731', ++ 'Name' => 'struct ibv_comp_channel*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '15825' => { ++ 'Header' => undef, ++ 'Line' => '1527', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cq_count', ++ 'offset' => '0', ++ 'type' => '932' ++ }, ++ '1' => { ++ 'name' => 'cq_period', ++ 'offset' => '2', ++ 'type' => '932' ++ } ++ }, ++ 'Name' => 'struct ibv_moderate_cq', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '15868' => { ++ 'Header' => undef, ++ 'Line' => '1532', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'attr_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'moderate', ++ 'offset' => '4', ++ 'type' => '15825' ++ } ++ }, ++ 'Name' => 'struct ibv_modify_cq_attr', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '15911' => { ++ 'Header' => undef, ++ 'Line' => '1657', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_FLOW_ATTR_NORMAL', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_FLOW_ATTR_ALL_DEFAULT', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_FLOW_ATTR_MC_DEFAULT', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_FLOW_ATTR_SNIFFER', ++ 'value' => '3' ++ } ++ }, ++ 'Name' => 'enum ibv_flow_attr_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '1606' => { ++ 'BaseType' => '1016', ++ 'Name' => '__u64[]', ++ 'Size' => '8', ++ 'Type' => 'Array' ++ }, ++ '1622' => { ++ 'Header' => undef, ++ 'Line' => '314', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'pd_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'driver_data', ++ 'offset' => '4', ++ 'type' => '1665' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_alloc_pd_resp', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '1665' => { ++ 'BaseType' => '1004', ++ 'Name' => '__u32[]', ++ 'Size' => '8', ++ 'Type' => 'Array' ++ }, ++ '168' => { ++ 'BaseType' => '149', ++ 'Header' => undef, ++ 'Line' => '193', ++ 'Name' => '__ssize_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1681' => { ++ 'Header' => undef, ++ 'Line' => '323', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'oflags', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_open_xrcd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '17395' => { ++ 'Header' => undef, ++ 'Line' => '1889', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ } ++ }, ++ 'Name' => 'struct ibv_flow_action', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '17492' => { ++ 'Header' => undef, ++ 'Line' => '2054', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ } ++ }, ++ 'Name' => 'struct ibv_counters', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '17521' => { ++ 'BaseType' => '17492', ++ 'Name' => 'struct ibv_counters*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1770' => { ++ 'Header' => undef, ++ 'Line' => '330', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'xrcd_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'driver_data', ++ 'offset' => '4', ++ 'type' => '1665' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_open_xrcd_resp', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '17780' => { ++ 'Header' => undef, ++ 'Line' => '1869', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'type', ++ 'offset' => '4', ++ 'type' => '15911' ++ }, ++ '2' => { ++ 'name' => 'size', ++ 'offset' => '8', ++ 'type' => '932' ++ }, ++ '3' => { ++ 'name' => 'priority', ++ 'offset' => '10', ++ 'type' => '932' ++ }, ++ '4' => { ++ 'name' => 'num_of_specs', ++ 'offset' => '12', ++ 'type' => '920' ++ }, ++ '5' => { ++ 'name' => 'port', ++ 'offset' => '13', ++ 'type' => '920' ++ }, ++ '6' => { ++ 'name' => 'flags', ++ 'offset' => '16', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_flow_attr', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '17893' => { ++ 'Header' => undef, ++ 'Line' => '1883', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'context', ++ 'offset' => '8', ++ 'type' => '9633' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_flow', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '17950' => { ++ 'Header' => undef, ++ 'Line' => '1918', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_dummy1', ++ 'offset' => '0', ++ 'type' => '18134' ++ }, ++ '1' => { ++ 'name' => '_dummy2', ++ 'offset' => '8', ++ 'type' => '18151' ++ } ++ }, ++ 'Name' => 'struct _ibv_device_ops', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '180' => { ++ 'BaseType' => '186', ++ 'Name' => 'char*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18013' => { ++ 'BaseType' => '18019', ++ 'Name' => 'struct ibv_device*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18019' => { ++ 'Header' => undef, ++ 'Line' => '1928', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_ops', ++ 'offset' => '0', ++ 'type' => '17950' ++ }, ++ '1' => { ++ 'name' => 'node_type', ++ 'offset' => '16', ++ 'type' => '9355' ++ }, ++ '2' => { ++ 'name' => 'transport_type', ++ 'offset' => '20', ++ 'type' => '9422' ++ }, ++ '3' => { ++ 'name' => 'name', ++ 'offset' => '24', ++ 'type' => '10173' ++ }, ++ '4' => { ++ 'name' => 'dev_name', ++ 'offset' => '88', ++ 'type' => '10173' ++ }, ++ '5' => { ++ 'name' => 'dev_path', ++ 'offset' => '152', ++ 'type' => '18186' ++ }, ++ '6' => { ++ 'name' => 'ibdev_path', ++ 'offset' => '408', ++ 'type' => '18186' ++ } ++ }, ++ 'Name' => 'struct ibv_device', ++ 'Size' => '664', ++ 'Type' => 'Struct' ++ }, ++ '18134' => { ++ 'Name' => 'struct ibv_context*(*)(struct ibv_device*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '18013' ++ }, ++ '1' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '9633', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18151' => { ++ 'Name' => 'void(*)(struct ibv_context*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18186' => { ++ 'BaseType' => '186', ++ 'Name' => 'char[256]', ++ 'Size' => '256', ++ 'Type' => 'Array' ++ }, ++ '18202' => { ++ 'Header' => undef, ++ 'Line' => '1943', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_compat_query_device', ++ 'offset' => '0', ++ 'type' => '18692' ++ }, ++ '1' => { ++ 'name' => '_compat_query_port', ++ 'offset' => '8', ++ 'type' => '18734' ++ }, ++ '10' => { ++ 'name' => '_compat_create_cq', ++ 'offset' => '80', ++ 'type' => '18745' ++ }, ++ '11' => { ++ 'name' => 'poll_cq', ++ 'offset' => '88', ++ 'type' => '18866' ++ }, ++ '12' => { ++ 'name' => 'req_notify_cq', ++ 'offset' => '96', ++ 'type' => '18892' ++ }, ++ '13' => { ++ 'name' => '_compat_cq_event', ++ 'offset' => '104', ++ 'type' => '18745' ++ }, ++ '14' => { ++ 'name' => '_compat_resize_cq', ++ 'offset' => '112', ++ 'type' => '18745' ++ }, ++ '15' => { ++ 'name' => '_compat_destroy_cq', ++ 'offset' => '120', ++ 'type' => '18745' ++ }, ++ '16' => { ++ 'name' => '_compat_create_srq', ++ 'offset' => '128', ++ 'type' => '18745' ++ }, ++ '17' => { ++ 'name' => '_compat_modify_srq', ++ 'offset' => '136', ++ 'type' => '18745' ++ }, ++ '18' => { ++ 'name' => '_compat_query_srq', ++ 'offset' => '144', ++ 'type' => '18745' ++ }, ++ '19' => { ++ 'name' => '_compat_destroy_srq', ++ 'offset' => '152', ++ 'type' => '18745' ++ }, ++ '2' => { ++ 'name' => '_compat_alloc_pd', ++ 'offset' => '16', ++ 'type' => '18745' ++ }, ++ '20' => { ++ 'name' => 'post_srq_recv', ++ 'offset' => '160', ++ 'type' => '18923' ++ }, ++ '21' => { ++ 'name' => '_compat_create_qp', ++ 'offset' => '168', ++ 'type' => '18745' ++ }, ++ '22' => { ++ 'name' => '_compat_query_qp', ++ 'offset' => '176', ++ 'type' => '18745' ++ }, ++ '23' => { ++ 'name' => '_compat_modify_qp', ++ 'offset' => '184', ++ 'type' => '18745' ++ }, ++ '24' => { ++ 'name' => '_compat_destroy_qp', ++ 'offset' => '192', ++ 'type' => '18745' ++ }, ++ '25' => { ++ 'name' => 'post_send', ++ 'offset' => '200', ++ 'type' => '18960' ++ }, ++ '26' => { ++ 'name' => 'post_recv', ++ 'offset' => '208', ++ 'type' => '18991' ++ }, ++ '27' => { ++ 'name' => '_compat_create_ah', ++ 'offset' => '216', ++ 'type' => '18745' ++ }, ++ '28' => { ++ 'name' => '_compat_destroy_ah', ++ 'offset' => '224', ++ 'type' => '18745' ++ }, ++ '29' => { ++ 'name' => '_compat_attach_mcast', ++ 'offset' => '232', ++ 'type' => '18745' ++ }, ++ '3' => { ++ 'name' => '_compat_dealloc_pd', ++ 'offset' => '24', ++ 'type' => '18745' ++ }, ++ '30' => { ++ 'name' => '_compat_detach_mcast', ++ 'offset' => '240', ++ 'type' => '18745' ++ }, ++ '31' => { ++ 'name' => '_compat_async_event', ++ 'offset' => '248', ++ 'type' => '18745' ++ }, ++ '4' => { ++ 'name' => '_compat_reg_mr', ++ 'offset' => '32', ++ 'type' => '18745' ++ }, ++ '5' => { ++ 'name' => '_compat_rereg_mr', ++ 'offset' => '40', ++ 'type' => '18745' ++ }, ++ '6' => { ++ 'name' => '_compat_dereg_mr', ++ 'offset' => '48', ++ 'type' => '18745' ++ }, ++ '7' => { ++ 'name' => 'alloc_mw', ++ 'offset' => '56', ++ 'type' => '18771' ++ }, ++ '8' => { ++ 'name' => 'bind_mw', ++ 'offset' => '64', ++ 'type' => '18808' ++ }, ++ '9' => { ++ 'name' => 'dealloc_mw', ++ 'offset' => '72', ++ 'type' => '18829' ++ } ++ }, ++ 'Name' => 'struct ibv_context_ops', ++ 'Size' => '256', ++ 'Type' => 'Struct' ++ }, ++ '1829' => { ++ 'Header' => undef, ++ 'Line' => '339', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'start', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'offset' => '16', ++ 'type' => '1016' ++ }, ++ '3' => { ++ 'name' => 'hca_va', ++ 'offset' => '24', ++ 'type' => '1016' ++ }, ++ '4' => { ++ 'name' => 'pd_handle', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'access_flags', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'driver_data', ++ 'offset' => '40', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_reg_mr', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '186' => { ++ 'Name' => 'char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '18686' => { ++ 'BaseType' => '9639', ++ 'Name' => 'struct ibv_device_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18692' => { ++ 'Name' => 'int(*)(struct ibv_context*, struct ibv_device_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '18686' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18723' => { ++ 'BaseType' => '18729', ++ 'Name' => 'struct _compat_ibv_port_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18729' => { ++ 'Header' => undef, ++ 'Line' => '197', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'state', ++ 'offset' => '0', ++ 'type' => '56644' ++ }, ++ '1' => { ++ 'name' => 'max_mtu', ++ 'offset' => '4', ++ 'type' => '10189' ++ }, ++ '10' => { ++ 'name' => 'sm_lid', ++ 'offset' => '36', ++ 'type' => '932' ++ }, ++ '11' => { ++ 'name' => 'lmc', ++ 'offset' => '38', ++ 'type' => '920' ++ }, ++ '12' => { ++ 'name' => 'max_vl_num', ++ 'offset' => '39', ++ 'type' => '920' ++ }, ++ '13' => { ++ 'name' => 'sm_sl', ++ 'offset' => '40', ++ 'type' => '920' ++ }, ++ '14' => { ++ 'name' => 'subnet_timeout', ++ 'offset' => '41', ++ 'type' => '920' ++ }, ++ '15' => { ++ 'name' => 'init_type_reply', ++ 'offset' => '42', ++ 'type' => '920' ++ }, ++ '16' => { ++ 'name' => 'active_width', ++ 'offset' => '43', ++ 'type' => '920' ++ }, ++ '17' => { ++ 'name' => 'active_speed', ++ 'offset' => '44', ++ 'type' => '920' ++ }, ++ '18' => { ++ 'name' => 'phys_state', ++ 'offset' => '45', ++ 'type' => '920' ++ }, ++ '19' => { ++ 'name' => 'link_layer', ++ 'offset' => '46', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'active_mtu', ++ 'offset' => '8', ++ 'type' => '10189' ++ }, ++ '20' => { ++ 'name' => 'flags', ++ 'offset' => '47', ++ 'type' => '920' ++ }, ++ '3' => { ++ 'name' => 'gid_tbl_len', ++ 'offset' => '12', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'port_cap_flags', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '5' => { ++ 'name' => 'max_msg_sz', ++ 'offset' => '20', ++ 'type' => '944' ++ }, ++ '6' => { ++ 'name' => 'bad_pkey_cntr', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'qkey_viol_cntr', ++ 'offset' => '28', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'pkey_tbl_len', ++ 'offset' => '32', ++ 'type' => '932' ++ }, ++ '9' => { ++ 'name' => 'lid', ++ 'offset' => '34', ++ 'type' => '932' ++ } ++ }, ++ 'Name' => 'struct _compat_ibv_port_attr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '18734' => { ++ 'Name' => 'int(*)(struct ibv_context*, uint8_t, struct _compat_ibv_port_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '920' ++ }, ++ '2' => { ++ 'type' => '18723' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18745' => { ++ 'Name' => 'void*(*)()', ++ 'Return' => '71', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18771' => { ++ 'Name' => 'struct ibv_mw*(*)(struct ibv_pd*, enum ibv_mw_type)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '12050' ++ } ++ }, ++ 'Return' => '14508', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18802' => { ++ 'BaseType' => '14831', ++ 'Name' => 'struct ibv_mw_bind*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18808' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_mw*, struct ibv_mw_bind*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '14508' ++ }, ++ '2' => { ++ 'type' => '18802' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18829' => { ++ 'Name' => 'int(*)(struct ibv_mw*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '14508' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18860' => { ++ 'BaseType' => '11376', ++ 'Name' => 'struct ibv_wc*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18866' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int, struct ibv_wc*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'type' => '130' ++ }, ++ '2' => { ++ 'type' => '18860' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18892' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18923' => { ++ 'Name' => 'int(*)(struct ibv_srq*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'type' => '14825' ++ }, ++ '2' => { ++ 'type' => '14913' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18954' => { ++ 'BaseType' => '14742', ++ 'Name' => 'struct ibv_send_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18960' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_send_wr*, struct ibv_send_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '14742' ++ }, ++ '2' => { ++ 'type' => '18954' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18991' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '14825' ++ }, ++ '2' => { ++ 'type' => '14913' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18997' => { ++ 'BaseType' => '17893', ++ 'Name' => 'struct ibv_flow*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19003' => { ++ 'BaseType' => '15868', ++ 'Name' => 'struct ibv_modify_cq_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19009' => { ++ 'BaseType' => '12772', ++ 'Name' => 'struct ibv_rwq_ind_table_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19015' => { ++ 'BaseType' => '12590', ++ 'Name' => 'struct ibv_wq_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19021' => { ++ 'BaseType' => '17780', ++ 'Name' => 'struct ibv_flow_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19027' => { ++ 'BaseType' => '13151', ++ 'Name' => 'struct ibv_qp_open_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19033' => { ++ 'BaseType' => '11915', ++ 'Name' => 'struct ibv_xrcd_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19039' => { ++ 'Name' => '_Bool', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '19046' => { ++ 'Header' => undef, ++ 'Line' => '51', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'ex_hdr', ++ 'offset' => '8', ++ 'type' => '1476' ++ } ++ }, ++ 'Name' => 'struct ex_hdr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '19088' => { ++ 'Header' => undef, ++ 'Line' => '175', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'pd_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'mw_type', ++ 'offset' => '12', ++ 'type' => '980' ++ }, ++ '3' => { ++ 'name' => 'reserved', ++ 'offset' => '13', ++ 'type' => '2377' ++ }, ++ '4' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '19182' => { ++ 'Header' => undef, ++ 'Line' => '175', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '19088' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '2289' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '19212' => { ++ 'Header' => undef, ++ 'Line' => '175', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '19182' ++ } ++ }, ++ 'Name' => 'struct ibv_alloc_mw', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '19273' => { ++ 'Header' => undef, ++ 'Line' => '176', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '19328' => { ++ 'Header' => undef, ++ 'Line' => '176', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '19273' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '1560' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '19358' => { ++ 'Header' => undef, ++ 'Line' => '176', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '19328' ++ } ++ }, ++ 'Name' => 'struct ibv_alloc_pd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '1964' => { ++ 'Header' => undef, ++ 'Line' => '349', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mr_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'lkey', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '12', ++ 'type' => '1665' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_reg_mr_resp', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '19958' => { ++ 'Header' => undef, ++ 'Line' => '194', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dest', ++ 'offset' => '0', ++ 'type' => '3660' ++ }, ++ '1' => { ++ 'name' => 'alt_dest', ++ 'offset' => '32', ++ 'type' => '3660' ++ }, ++ '10' => { ++ 'name' => 'alt_pkey_index', ++ 'offset' => '94', ++ 'type' => '992' ++ }, ++ '11' => { ++ 'name' => 'qp_state', ++ 'offset' => '96', ++ 'type' => '980' ++ }, ++ '12' => { ++ 'name' => 'cur_qp_state', ++ 'offset' => '97', ++ 'type' => '980' ++ }, ++ '13' => { ++ 'name' => 'path_mtu', ++ 'offset' => '98', ++ 'type' => '980' ++ }, ++ '14' => { ++ 'name' => 'path_mig_state', ++ 'offset' => '99', ++ 'type' => '980' ++ }, ++ '15' => { ++ 'name' => 'en_sqd_async_notify', ++ 'offset' => '100', ++ 'type' => '980' ++ }, ++ '16' => { ++ 'name' => 'max_rd_atomic', ++ 'offset' => '101', ++ 'type' => '980' ++ }, ++ '17' => { ++ 'name' => 'max_dest_rd_atomic', ++ 'offset' => '102', ++ 'type' => '980' ++ }, ++ '18' => { ++ 'name' => 'min_rnr_timer', ++ 'offset' => '103', ++ 'type' => '980' ++ }, ++ '19' => { ++ 'name' => 'port_num', ++ 'offset' => '104', ++ 'type' => '980' ++ }, ++ '2' => { ++ 'name' => 'qp_handle', ++ 'offset' => '64', ++ 'type' => '1004' ++ }, ++ '20' => { ++ 'name' => 'timeout', ++ 'offset' => '105', ++ 'type' => '980' ++ }, ++ '21' => { ++ 'name' => 'retry_cnt', ++ 'offset' => '106', ++ 'type' => '980' ++ }, ++ '22' => { ++ 'name' => 'rnr_retry', ++ 'offset' => '107', ++ 'type' => '980' ++ }, ++ '23' => { ++ 'name' => 'alt_port_num', ++ 'offset' => '108', ++ 'type' => '980' ++ }, ++ '24' => { ++ 'name' => 'alt_timeout', ++ 'offset' => '109', ++ 'type' => '980' ++ }, ++ '25' => { ++ 'name' => 'reserved', ++ 'offset' => '110', ++ 'type' => '4794' ++ }, ++ '26' => { ++ 'name' => 'driver_data', ++ 'offset' => '112', ++ 'type' => '1606' ++ }, ++ '3' => { ++ 'name' => 'attr_mask', ++ 'offset' => '68', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'qkey', ++ 'offset' => '72', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'rq_psn', ++ 'offset' => '76', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'sq_psn', ++ 'offset' => '80', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'dest_qp_num', ++ 'offset' => '84', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'qp_access_flags', ++ 'offset' => '88', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'pkey_index', ++ 'offset' => '92', ++ 'type' => '992' ++ } ++ }, ++ 'Size' => '112', ++ 'Type' => 'Struct' ++ }, ++ '20337' => { ++ 'Header' => undef, ++ 'Line' => '194', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '19958' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '4399' ++ } ++ }, ++ 'Size' => '112', ++ 'Type' => 'Union' ++ }, ++ '20367' => { ++ 'Header' => undef, ++ 'Line' => '194', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '20337' ++ } ++ }, ++ 'Name' => 'struct ibv_modify_qp', ++ 'Size' => '120', ++ 'Type' => 'Struct' ++ }, ++ '20415' => { ++ 'Header' => undef, ++ 'Line' => '195', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'srq_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'attr_mask', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'max_wr', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'srq_limit', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20508' => { ++ 'Header' => undef, ++ 'Line' => '195', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '20415' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '8639' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '2051' => { ++ 'Header' => undef, ++ 'Line' => '356', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'mr_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'start', ++ 'offset' => '16', ++ 'type' => '1016' ++ }, ++ '4' => { ++ 'name' => 'length', ++ 'offset' => '24', ++ 'type' => '1016' ++ }, ++ '5' => { ++ 'name' => 'hca_va', ++ 'offset' => '32', ++ 'type' => '1016' ++ }, ++ '6' => { ++ 'name' => 'pd_handle', ++ 'offset' => '40', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'access_flags', ++ 'offset' => '44', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'driver_data', ++ 'offset' => '48', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_rereg_mr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '205254' => { ++ 'Header' => undef, ++ 'Line' => '572', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '10' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '48', ++ 'type' => '1004' ++ }, ++ '11' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '52', ++ 'type' => '980' ++ }, ++ '12' => { ++ 'name' => 'qp_type', ++ 'offset' => '53', ++ 'type' => '980' ++ }, ++ '13' => { ++ 'name' => 'is_srq', ++ 'offset' => '54', ++ 'type' => '980' ++ }, ++ '14' => { ++ 'name' => 'reserved', ++ 'offset' => '55', ++ 'type' => '980' ++ }, ++ '15' => { ++ 'name' => 'driver_data', ++ 'offset' => '56', ++ 'type' => '1606' ++ }, ++ '2' => { ++ 'name' => 'pd_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'send_cq_handle', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'recv_cq_handle', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'srq_handle', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '40', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '44', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_create_qp', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '20538' => { ++ 'Header' => undef, ++ 'Line' => '195', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '20508' ++ } ++ }, ++ 'Name' => 'struct ibv_modify_srq', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '205539' => { ++ 'Header' => undef, ++ 'Line' => '599', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'user_handle', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'pd_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '10' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '44', ++ 'type' => '980' ++ }, ++ '11' => { ++ 'name' => 'qp_type', ++ 'offset' => '45', ++ 'type' => '980' ++ }, ++ '12' => { ++ 'name' => 'is_srq', ++ 'offset' => '46', ++ 'type' => '980' ++ }, ++ '13' => { ++ 'name' => 'reserved', ++ 'offset' => '47', ++ 'type' => '980' ++ }, ++ '14' => { ++ 'name' => 'comp_mask', ++ 'offset' => '48', ++ 'type' => '1004' ++ }, ++ '15' => { ++ 'name' => 'create_flags', ++ 'offset' => '52', ++ 'type' => '1004' ++ }, ++ '16' => { ++ 'name' => 'rwq_ind_tbl_handle', ++ 'offset' => '56', ++ 'type' => '1004' ++ }, ++ '17' => { ++ 'name' => 'source_qpn', ++ 'offset' => '60', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'send_cq_handle', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'recv_cq_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'srq_handle', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '40', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_create_qp', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '20586' => { ++ 'Header' => undef, ++ 'Line' => '196', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '2' => { ++ 'name' => 'pd_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'qpn', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'qp_type', ++ 'offset' => '24', ++ 'type' => '980' ++ }, ++ '5' => { ++ 'name' => 'reserved', ++ 'offset' => '25', ++ 'type' => '1544' ++ }, ++ '6' => { ++ 'name' => 'driver_data', ++ 'offset' => '32', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '205965' => { ++ 'Header' => undef, ++ 'Line' => '643', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'base', ++ 'offset' => '0', ++ 'type' => '3503' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'response_length', ++ 'offset' => '36', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_create_qp_resp', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '20707' => { ++ 'Header' => undef, ++ 'Line' => '196', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '20586' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '3370' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '20737' => { ++ 'Header' => undef, ++ 'Line' => '196', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '20707' ++ } ++ }, ++ 'Name' => 'struct ibv_open_qp', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '20797' => { ++ 'Header' => undef, ++ 'Line' => '197', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'oflags', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20877' => { ++ 'Header' => undef, ++ 'Line' => '197', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '20797' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '1681' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '209' => { ++ 'BaseType' => '168', ++ 'Header' => undef, ++ 'Line' => '77', ++ 'Name' => 'ssize_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '20907' => { ++ 'Header' => undef, ++ 'Line' => '197', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '20877' ++ } ++ }, ++ 'Name' => 'struct ibv_open_xrcd', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '21702' => { ++ 'Header' => undef, ++ 'Line' => '204', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'qp_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '21783' => { ++ 'Header' => undef, ++ 'Line' => '204', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '21702' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '3842' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '21813' => { ++ 'Header' => undef, ++ 'Line' => '204', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '21783' ++ } ++ }, ++ 'Name' => 'struct ibv_query_qp', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '21874' => { ++ 'Header' => undef, ++ 'Line' => '205', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'srq_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '21955' => { ++ 'Header' => undef, ++ 'Line' => '205', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '21874' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '8742' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '21985' => { ++ 'Header' => undef, ++ 'Line' => '205', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '21955' ++ } ++ }, ++ 'Name' => 'struct ibv_query_srq', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '220026' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '10' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '48', ++ 'type' => '1004' ++ }, ++ '11' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '52', ++ 'type' => '980' ++ }, ++ '12' => { ++ 'name' => 'qp_type', ++ 'offset' => '53', ++ 'type' => '980' ++ }, ++ '13' => { ++ 'name' => 'is_srq', ++ 'offset' => '54', ++ 'type' => '980' ++ }, ++ '14' => { ++ 'name' => 'reserved', ++ 'offset' => '55', ++ 'type' => '980' ++ }, ++ '15' => { ++ 'name' => 'driver_data', ++ 'offset' => '56', ++ 'type' => '1606' ++ }, ++ '2' => { ++ 'name' => 'pd_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'send_cq_handle', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'recv_cq_handle', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'srq_handle', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '40', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '44', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '220264' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '220026' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '205254' ++ } ++ }, ++ 'Size' => '56', ++ 'Type' => 'Union' ++ }, ++ '220294' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '220264' ++ } ++ }, ++ 'Name' => 'struct ibv_create_qp', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '22045' => { ++ 'Header' => undef, ++ 'Line' => '206', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'start', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'offset' => '16', ++ 'type' => '1016' ++ }, ++ '3' => { ++ 'name' => 'hca_va', ++ 'offset' => '24', ++ 'type' => '1016' ++ }, ++ '4' => { ++ 'name' => 'pd_handle', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'access_flags', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'driver_data', ++ 'offset' => '40', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '220508' => { ++ 'Header' => undef, ++ 'Line' => '213', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'user_handle', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'pd_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '10' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '44', ++ 'type' => '980' ++ }, ++ '11' => { ++ 'name' => 'qp_type', ++ 'offset' => '45', ++ 'type' => '980' ++ }, ++ '12' => { ++ 'name' => 'is_srq', ++ 'offset' => '46', ++ 'type' => '980' ++ }, ++ '13' => { ++ 'name' => 'reserved', ++ 'offset' => '47', ++ 'type' => '980' ++ }, ++ '14' => { ++ 'name' => 'comp_mask', ++ 'offset' => '48', ++ 'type' => '1004' ++ }, ++ '15' => { ++ 'name' => 'create_flags', ++ 'offset' => '52', ++ 'type' => '1004' ++ }, ++ '16' => { ++ 'name' => 'rwq_ind_tbl_handle', ++ 'offset' => '56', ++ 'type' => '1004' ++ }, ++ '17' => { ++ 'name' => 'source_qpn', ++ 'offset' => '60', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'send_cq_handle', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'recv_cq_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'srq_handle', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '40', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '220754' => { ++ 'Header' => undef, ++ 'Line' => '213', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '220508' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '205539' ++ } ++ }, ++ 'Size' => '64', ++ 'Type' => 'Union' ++ }, ++ '220784' => { ++ 'Header' => undef, ++ 'Line' => '213', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '19046' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '220754' ++ } ++ }, ++ 'Name' => 'struct ibv_create_qp_ex', ++ 'Size' => '88', ++ 'Type' => 'Struct' ++ }, ++ '221' => { ++ 'Name' => 'long long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '2214' => { ++ 'Header' => undef, ++ 'Line' => '368', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'lkey', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_rereg_mr_resp', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '22168' => { ++ 'Header' => undef, ++ 'Line' => '206', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '22045' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '1829' ++ } ++ }, ++ 'Size' => '40', ++ 'Type' => 'Union' ++ }, ++ '22198' => { ++ 'Header' => undef, ++ 'Line' => '206', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '22168' ++ } ++ }, ++ 'Name' => 'struct ibv_reg_mr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '22366' => { ++ 'Header' => undef, ++ 'Line' => '208', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'mr_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'start', ++ 'offset' => '16', ++ 'type' => '1016' ++ }, ++ '4' => { ++ 'name' => 'length', ++ 'offset' => '24', ++ 'type' => '1016' ++ }, ++ '5' => { ++ 'name' => 'hca_va', ++ 'offset' => '32', ++ 'type' => '1016' ++ }, ++ '6' => { ++ 'name' => 'pd_handle', ++ 'offset' => '40', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'access_flags', ++ 'offset' => '44', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'driver_data', ++ 'offset' => '48', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '22515' => { ++ 'Header' => undef, ++ 'Line' => '208', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '22366' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '2051' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '22545' => { ++ 'Header' => undef, ++ 'Line' => '208', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '22515' ++ } ++ }, ++ 'Name' => 'struct ibv_rereg_mr', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '22606' => { ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'cq_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'cqe', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '226371' => { ++ 'BaseType' => '220784', ++ 'Name' => 'struct ibv_create_qp_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '226377' => { ++ 'BaseType' => '205965', ++ 'Name' => 'struct ib_uverbs_ex_create_qp_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '22687' => { ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '22606' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '2484' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '226918' => { ++ 'BaseType' => '220294', ++ 'Name' => 'struct ibv_create_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '22717' => { ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '22687' ++ } ++ }, ++ 'Name' => 'struct ibv_resize_cq', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '2289' => { ++ 'Header' => undef, ++ 'Line' => '378', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'pd_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'mw_type', ++ 'offset' => '12', ++ 'type' => '980' ++ }, ++ '3' => { ++ 'name' => 'reserved', ++ 'offset' => '13', ++ 'type' => '2377' ++ }, ++ '4' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_alloc_mw', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '23072' => { ++ 'Header' => undef, ++ 'Line' => '219', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cq_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'attr_mask', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'offset' => '8', ++ 'type' => '9146' ++ }, ++ '3' => { ++ 'name' => 'reserved', ++ 'offset' => '12', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '23134' => { ++ 'Header' => undef, ++ 'Line' => '219', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '23072' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '9189' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '23161' => { ++ 'Header' => undef, ++ 'Line' => '219', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '19046' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '23134' ++ } ++ }, ++ 'Name' => 'struct ibv_modify_cq', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '23209' => { ++ 'Header' => undef, ++ 'Line' => '220', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'base', ++ 'offset' => '0', ++ 'type' => '4399' ++ }, ++ '1' => { ++ 'name' => 'rate_limit', ++ 'offset' => '112', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '116', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '120', ++ 'Type' => 'Struct' ++ }, ++ '23260' => { ++ 'Header' => undef, ++ 'Line' => '220', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '23209' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '4826' ++ } ++ }, ++ 'Size' => '120', ++ 'Type' => 'Union' ++ }, ++ '23290' => { ++ 'Header' => undef, ++ 'Line' => '220', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '19046' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '23260' ++ } ++ }, ++ 'Name' => 'struct ibv_modify_qp_ex', ++ 'Size' => '144', ++ 'Type' => 'Struct' ++ }, ++ '23351' => { ++ 'Header' => undef, ++ 'Line' => '221', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'attr_mask', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'wq_handle', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'wq_state', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'curr_wq_state', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'flags', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'flags_mask', ++ 'offset' => '20', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '23439' => { ++ 'Header' => undef, ++ 'Line' => '221', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '23351' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '8903' ++ } ++ }, ++ 'Size' => '24', ++ 'Type' => 'Union' ++ }, ++ '23466' => { ++ 'Header' => undef, ++ 'Line' => '221', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '19046' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '23439' ++ } ++ }, ++ 'Name' => 'struct ibv_modify_wq', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '2377' => { ++ 'BaseType' => '980', ++ 'Name' => '__u8[3]', ++ 'Size' => '3', ++ 'Type' => 'Array' ++ }, ++ '2409' => { ++ 'Header' => undef, ++ 'Line' => '386', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mw_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_alloc_mw_resp', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '24156' => { ++ 'Header' => undef, ++ 'Line' => '111', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'xrcd', ++ 'offset' => '0', ++ 'type' => '11971' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '12', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct verbs_xrcd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '24209' => { ++ 'BaseType' => '24156', ++ 'Name' => 'struct verbs_xrcd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '24246' => { ++ 'Header' => undef, ++ 'Line' => '141', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MR_TYPE_MR', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_MR_TYPE_NULL_MR', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_MR_TYPE_IMPORTED_MR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_MR_TYPE_DMABUF_MR', ++ 'value' => '3' ++ } ++ }, ++ 'Name' => 'enum ibv_mr_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '242624' => { ++ 'Header' => undef, ++ 'Line' => '1157', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '2' => { ++ 'name' => 'pd_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'max_wr', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'max_sge', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'srq_limit', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'driver_data', ++ 'offset' => '32', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_create_srq', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '242757' => { ++ 'Header' => undef, ++ 'Line' => '1167', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '10' => { ++ 'name' => 'driver_data', ++ 'offset' => '48', ++ 'type' => '1606' ++ }, ++ '2' => { ++ 'name' => 'srq_type', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'pd_handle', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'max_wr', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'max_sge', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'srq_limit', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'max_num_tags', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'xrcd_handle', ++ 'offset' => '40', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'cq_handle', ++ 'offset' => '44', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_create_xsrq', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '24289' => { ++ 'Header' => undef, ++ 'Line' => '148', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ibv_mr', ++ 'offset' => '0', ++ 'type' => '11716' ++ }, ++ '1' => { ++ 'name' => 'mr_type', ++ 'offset' => '48', ++ 'type' => '24246' ++ }, ++ '2' => { ++ 'name' => 'access', ++ 'offset' => '52', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct verbs_mr', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '242946' => { ++ 'Header' => undef, ++ 'Line' => '1181', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'srq_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'max_wr', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'max_sge', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'srqn', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1665' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_create_srq_resp', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '24342' => { ++ 'Header' => undef, ++ 'Line' => '160', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp', ++ 'offset' => '0', ++ 'type' => '10386' ++ }, ++ '1' => { ++ 'name' => 'qp_ex', ++ 'offset' => '0', ++ 'type' => '14925' ++ } ++ }, ++ 'Size' => '344', ++ 'Type' => 'Union' ++ }, ++ '24376' => { ++ 'Header' => undef, ++ 'Line' => '159', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '24342' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '344', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'xrcd', ++ 'offset' => '352', ++ 'type' => '24209' ++ } ++ }, ++ 'Name' => 'struct verbs_qp', ++ 'Size' => '360', ++ 'Type' => 'Struct' ++ }, ++ '24425' => { ++ 'Header' => undef, ++ 'Line' => '176', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_FLOW_ACTION_UNSPECIFIED', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_FLOW_ACTION_ESP', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum ibv_flow_action_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '24456' => { ++ 'Header' => undef, ++ 'Line' => '181', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'action', ++ 'offset' => '0', ++ 'type' => '17395' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'type', ++ 'offset' => '12', ++ 'type' => '24425' ++ } ++ }, ++ 'Name' => 'struct verbs_flow_action', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '24514' => { ++ 'Name' => 'atomic_int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '24521' => { ++ 'Header' => undef, ++ 'Line' => '299', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'counters', ++ 'offset' => '0', ++ 'type' => '17492' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct verbs_counters', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '24569' => { ++ 'BaseType' => '9334', ++ 'Name' => 'union ibv_gid const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '24575' => { ++ 'BaseType' => '12251', ++ 'Name' => 'struct ibv_ah_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '24581' => { ++ 'BaseType' => '12982', ++ 'Name' => 'struct ibv_qp_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '24587' => { ++ 'BaseType' => '24289', ++ 'Name' => 'struct verbs_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '24593' => { ++ 'BaseType' => '13520', ++ 'Name' => 'struct ibv_qp_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '24599' => { ++ 'BaseType' => '12363', ++ 'Name' => 'struct ibv_srq_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2484' => { ++ 'Header' => undef, ++ 'Line' => '441', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'cq_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'cqe', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_resize_cq', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '24942' => { ++ 'BaseType' => '130', ++ 'Name' => 'int*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '25175' => { ++ 'BaseType' => '23161', ++ 'Name' => 'struct ibv_modify_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '25593' => { ++ 'BaseType' => '9075', ++ 'Name' => 'struct ib_uverbs_ex_create_rwq_ind_table_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '256032' => { ++ 'Header' => undef, ++ 'Line' => '183', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '2' => { ++ 'name' => 'pd_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'max_wr', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'max_sge', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'srq_limit', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'driver_data', ++ 'offset' => '32', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '256153' => { ++ 'Header' => undef, ++ 'Line' => '183', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '256032' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '242624' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '256183' => { ++ 'Header' => undef, ++ 'Line' => '183', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '256153' ++ } ++ }, ++ 'Name' => 'struct ibv_create_srq', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '256256' => { ++ 'Header' => undef, ++ 'Line' => '184', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '10' => { ++ 'name' => 'driver_data', ++ 'offset' => '48', ++ 'type' => '1606' ++ }, ++ '2' => { ++ 'name' => 'srq_type', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'pd_handle', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'max_wr', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'max_sge', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'srq_limit', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'max_num_tags', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'xrcd_handle', ++ 'offset' => '40', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'cq_handle', ++ 'offset' => '44', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '256429' => { ++ 'Header' => undef, ++ 'Line' => '184', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '256256' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '242757' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '256459' => { ++ 'Header' => undef, ++ 'Line' => '184', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '256429' ++ } ++ }, ++ 'Name' => 'struct ibv_create_xsrq', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '257016' => { ++ 'Header' => undef, ++ 'Line' => '117', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'srq', ++ 'offset' => '0', ++ 'type' => '10588' ++ }, ++ '1' => { ++ 'name' => 'srq_type', ++ 'offset' => '128', ++ 'type' => '59353' ++ }, ++ '2' => { ++ 'name' => 'xrcd', ++ 'offset' => '136', ++ 'type' => '24209' ++ }, ++ '3' => { ++ 'name' => 'cq', ++ 'offset' => '144', ++ 'type' => '10380' ++ }, ++ '4' => { ++ 'name' => 'srq_num', ++ 'offset' => '152', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct verbs_srq', ++ 'Size' => '160', ++ 'Type' => 'Struct' ++ }, ++ '2574' => { ++ 'Header' => undef, ++ 'Line' => '448', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cqe', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'reserved', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_resize_cq_resp', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '25850' => { ++ 'BaseType' => '23466', ++ 'Name' => 'struct ibv_modify_wq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '261265' => { ++ 'BaseType' => '257016', ++ 'Name' => 'struct verbs_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '261271' => { ++ 'BaseType' => '256459', ++ 'Name' => 'struct ibv_create_xsrq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '261277' => { ++ 'BaseType' => '242946', ++ 'Name' => 'struct ib_uverbs_create_srq_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '261829' => { ++ 'BaseType' => '256183', ++ 'Name' => 'struct ibv_create_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '268835' => { ++ 'Header' => undef, ++ 'Line' => '1221', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'wq_type', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '3' => { ++ 'name' => 'pd_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'cq_handle', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'max_wr', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'max_sge', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'create_flags', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'reserved', ++ 'offset' => '36', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_create_wq', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '268978' => { ++ 'Header' => undef, ++ 'Line' => '1233', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'response_length', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'wq_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'max_wr', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'max_sge', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'wqn', ++ 'offset' => '20', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_create_wq_resp', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '282156' => { ++ 'Header' => undef, ++ 'Line' => '215', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'wq_type', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '3' => { ++ 'name' => 'pd_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'cq_handle', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'max_wr', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'max_sge', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'create_flags', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'reserved', ++ 'offset' => '36', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '282285' => { ++ 'Header' => undef, ++ 'Line' => '215', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '282156' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '268835' ++ } ++ }, ++ 'Size' => '40', ++ 'Type' => 'Union' ++ }, ++ '282315' => { ++ 'Header' => undef, ++ 'Line' => '215', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '19046' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '282285' ++ } ++ }, ++ 'Name' => 'struct ibv_create_wq', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '28802' => { ++ 'BaseType' => '5945', ++ 'Name' => 'struct ib_uverbs_create_ah_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '289570' => { ++ 'BaseType' => '282315', ++ 'Name' => 'struct ibv_create_wq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '289576' => { ++ 'BaseType' => '268978', ++ 'Name' => 'struct ib_uverbs_ex_create_wq_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30534' => { ++ 'BaseType' => '23290', ++ 'Name' => 'struct ibv_modify_qp_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30540' => { ++ 'BaseType' => '4885', ++ 'Name' => 'struct ib_uverbs_ex_modify_qp_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30767' => { ++ 'BaseType' => '20367', ++ 'Name' => 'struct ibv_modify_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3087' => { ++ 'Header' => undef, ++ 'Line' => '514', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dgid', ++ 'offset' => '0', ++ 'type' => '3186' ++ }, ++ '1' => { ++ 'name' => 'flow_label', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'sgid_index', ++ 'offset' => '20', ++ 'type' => '980' ++ }, ++ '3' => { ++ 'name' => 'hop_limit', ++ 'offset' => '21', ++ 'type' => '980' ++ }, ++ '4' => { ++ 'name' => 'traffic_class', ++ 'offset' => '22', ++ 'type' => '980' ++ }, ++ '5' => { ++ 'name' => 'reserved', ++ 'offset' => '23', ++ 'type' => '980' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_global_route', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '31281' => { ++ 'BaseType' => '21813', ++ 'Name' => 'struct ibv_query_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '313901' => { ++ 'Header' => undef, ++ 'Line' => '44', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'real_pd', ++ 'offset' => '16', ++ 'type' => '12044' ++ } ++ }, ++ 'Name' => 'struct ibv_pd_1_0', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '313954' => { ++ 'Header' => undef, ++ 'Line' => '218', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'device', ++ 'offset' => '0', ++ 'type' => '315859' ++ }, ++ '1' => { ++ 'name' => 'ops', ++ 'offset' => '8', ++ 'type' => '315232' ++ }, ++ '2' => { ++ 'name' => 'cmd_fd', ++ 'offset' => '224', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'async_fd', ++ 'offset' => '228', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'num_comp_vectors', ++ 'offset' => '232', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'real_context', ++ 'offset' => '240', ++ 'type' => '9633' ++ } ++ }, ++ 'Name' => 'struct ibv_context_1_0', ++ 'Size' => '248', ++ 'Type' => 'Struct' ++ }, ++ '314046' => { ++ 'BaseType' => '313954', ++ 'Name' => 'struct ibv_context_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314052' => { ++ 'Header' => undef, ++ 'Line' => '51', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '314143' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'lkey', ++ 'offset' => '20', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'rkey', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '5' => { ++ 'name' => 'real_mr', ++ 'offset' => '32', ++ 'type' => '11828' ++ } ++ }, ++ 'Name' => 'struct ibv_mr_1_0', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '314143' => { ++ 'BaseType' => '313901', ++ 'Name' => 'struct ibv_pd_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314149' => { ++ 'Header' => undef, ++ 'Line' => '61', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'srq_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '314143' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '298855' ++ }, ++ '5' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '298929' ++ }, ++ '6' => { ++ 'name' => 'events_completed', ++ 'offset' => '120', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'real_srq', ++ 'offset' => '128', ++ 'type' => '10700' ++ } ++ }, ++ 'Name' => 'struct ibv_srq_1_0', ++ 'Size' => '136', ++ 'Type' => 'Struct' ++ }, ++ '314266' => { ++ 'Header' => undef, ++ 'Line' => '74', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '314502' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '314502' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '314508' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '12897' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '12835' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr_1_0', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '314371' => { ++ 'Header' => undef, ++ 'Line' => '137', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'cq_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'cqe', ++ 'offset' => '20', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'mutex', ++ 'offset' => '24', ++ 'type' => '298855' ++ }, ++ '5' => { ++ 'name' => 'cond', ++ 'offset' => '64', ++ 'type' => '298929' ++ }, ++ '6' => { ++ 'name' => 'comp_events_completed', ++ 'offset' => '112', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'async_events_completed', ++ 'offset' => '116', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'real_cq', ++ 'offset' => '120', ++ 'type' => '10380' ++ } ++ }, ++ 'Name' => 'struct ibv_cq_1_0', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '314502' => { ++ 'BaseType' => '314371', ++ 'Name' => 'struct ibv_cq_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314508' => { ++ 'BaseType' => '314149', ++ 'Name' => 'struct ibv_srq_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314514' => { ++ 'Header' => undef, ++ 'Line' => '93', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '314550' => { ++ 'Header' => undef, ++ 'Line' => '97', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'compare_add', ++ 'offset' => '8', ++ 'type' => '956' ++ }, ++ '2' => { ++ 'name' => 'swap', ++ 'offset' => '16', ++ 'type' => '956' ++ }, ++ '3' => { ++ 'name' => 'rkey', ++ 'offset' => '24', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '314612' => { ++ 'Header' => undef, ++ 'Line' => '103', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ah', ++ 'offset' => '0', ++ 'type' => '314725' ++ }, ++ '1' => { ++ 'name' => 'remote_qpn', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'remote_qkey', ++ 'offset' => '12', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '314660' => { ++ 'Header' => undef, ++ 'Line' => '151', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '314143' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'real_ah', ++ 'offset' => '24', ++ 'type' => '14352' ++ } ++ }, ++ 'Name' => 'struct ibv_ah_1_0', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '314725' => { ++ 'BaseType' => '314660', ++ 'Name' => 'struct ibv_ah_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314731' => { ++ 'Header' => undef, ++ 'Line' => '92', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rdma', ++ 'offset' => '0', ++ 'type' => '314514' ++ }, ++ '1' => { ++ 'name' => 'atomic', ++ 'offset' => '0', ++ 'type' => '314550' ++ }, ++ '2' => { ++ 'name' => 'ud', ++ 'offset' => '0', ++ 'type' => '314612' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '314776' => { ++ 'Header' => undef, ++ 'Line' => '84', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next', ++ 'offset' => '0', ++ 'type' => '314893' ++ }, ++ '1' => { ++ 'name' => 'wr_id', ++ 'offset' => '8', ++ 'type' => '956' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '14748' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'opcode', ++ 'offset' => '28', ++ 'type' => '13899' ++ }, ++ '5' => { ++ 'name' => 'send_flags', ++ 'offset' => '32', ++ 'type' => '130' ++ }, ++ '6' => { ++ 'name' => 'imm_data', ++ 'offset' => '36', ++ 'type' => '1040' ++ }, ++ '7' => { ++ 'name' => 'wr', ++ 'offset' => '40', ++ 'type' => '314731' ++ } ++ }, ++ 'Name' => 'struct ibv_send_wr_1_0', ++ 'Size' => '72', ++ 'Type' => 'Struct' ++ }, ++ '314893' => { ++ 'BaseType' => '314776', ++ 'Name' => 'struct ibv_send_wr_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314899' => { ++ 'Header' => undef, ++ 'Line' => '111', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next', ++ 'offset' => '0', ++ 'type' => '314965' ++ }, ++ '1' => { ++ 'name' => 'wr_id', ++ 'offset' => '8', ++ 'type' => '956' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '14748' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_recv_wr_1_0', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '314965' => { ++ 'BaseType' => '314899', ++ 'Name' => 'struct ibv_recv_wr_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314971' => { ++ 'Header' => undef, ++ 'Line' => '118', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '314046' ++ }, ++ '1' => { ++ 'name' => 'qp_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '10' => { ++ 'name' => 'mutex', ++ 'offset' => '64', ++ 'type' => '298855' ++ }, ++ '11' => { ++ 'name' => 'cond', ++ 'offset' => '104', ++ 'type' => '298929' ++ }, ++ '12' => { ++ 'name' => 'events_completed', ++ 'offset' => '152', ++ 'type' => '944' ++ }, ++ '13' => { ++ 'name' => 'real_qp', ++ 'offset' => '160', ++ 'type' => '10582' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '314143' ++ }, ++ '3' => { ++ 'name' => 'send_cq', ++ 'offset' => '24', ++ 'type' => '314502' ++ }, ++ '4' => { ++ 'name' => 'recv_cq', ++ 'offset' => '32', ++ 'type' => '314502' ++ }, ++ '5' => { ++ 'name' => 'srq', ++ 'offset' => '40', ++ 'type' => '314508' ++ }, ++ '6' => { ++ 'name' => 'handle', ++ 'offset' => '48', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'qp_num', ++ 'offset' => '52', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'state', ++ 'offset' => '56', ++ 'type' => '13414' ++ }, ++ '9' => { ++ 'name' => 'qp_type', ++ 'offset' => '60', ++ 'type' => '12835' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_1_0', ++ 'Size' => '168', ++ 'Type' => 'Struct' ++ }, ++ '315166' => { ++ 'Header' => undef, ++ 'Line' => '159', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'obsolete_sysfs_dev', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'obsolete_sysfs_ibdev', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'real_device', ++ 'offset' => '16', ++ 'type' => '18013' ++ }, ++ '3' => { ++ 'name' => '_ops', ++ 'offset' => '24', ++ 'type' => '17950' ++ } ++ }, ++ 'Name' => 'struct ibv_device_1_0', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '315232' => { ++ 'Header' => undef, ++ 'Line' => '166', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'query_device', ++ 'offset' => '0', ++ 'type' => '18692' ++ }, ++ '1' => { ++ 'name' => 'query_port', ++ 'offset' => '8', ++ 'type' => '69884' ++ }, ++ '10' => { ++ 'name' => 'resize_cq', ++ 'offset' => '80', ++ 'type' => '18892' ++ }, ++ '11' => { ++ 'name' => 'destroy_cq', ++ 'offset' => '88', ++ 'type' => '69627' ++ }, ++ '12' => { ++ 'name' => 'create_srq', ++ 'offset' => '96', ++ 'type' => '69537' ++ }, ++ '13' => { ++ 'name' => 'modify_srq', ++ 'offset' => '104', ++ 'type' => '69821' ++ }, ++ '14' => { ++ 'name' => 'query_srq', ++ 'offset' => '112', ++ 'type' => '69977' ++ }, ++ '15' => { ++ 'name' => 'destroy_srq', ++ 'offset' => '120', ++ 'type' => '69669' ++ }, ++ '16' => { ++ 'name' => 'post_srq_recv', ++ 'offset' => '128', ++ 'type' => '315742' ++ }, ++ '17' => { ++ 'name' => 'create_qp', ++ 'offset' => '136', ++ 'type' => '69505' ++ }, ++ '18' => { ++ 'name' => 'query_qp', ++ 'offset' => '144', ++ 'type' => '69920' ++ }, ++ '19' => { ++ 'name' => 'modify_qp', ++ 'offset' => '152', ++ 'type' => '69784' ++ }, ++ '2' => { ++ 'name' => 'alloc_pd', ++ 'offset' => '16', ++ 'type' => '69323' ++ }, ++ '20' => { ++ 'name' => 'destroy_qp', ++ 'offset' => '160', ++ 'type' => '69648' ++ }, ++ '21' => { ++ 'name' => 'post_send', ++ 'offset' => '168', ++ 'type' => '315785' ++ }, ++ '22' => { ++ 'name' => 'post_recv', ++ 'offset' => '176', ++ 'type' => '315816' ++ }, ++ '23' => { ++ 'name' => 'create_ah', ++ 'offset' => '184', ++ 'type' => '69437' ++ }, ++ '24' => { ++ 'name' => 'destroy_ah', ++ 'offset' => '192', ++ 'type' => '69606' ++ }, ++ '25' => { ++ 'name' => 'attach_mcast', ++ 'offset' => '200', ++ 'type' => '315853' ++ }, ++ '26' => { ++ 'name' => 'detach_mcast', ++ 'offset' => '208', ++ 'type' => '315853' ++ }, ++ '3' => { ++ 'name' => 'dealloc_pd', ++ 'offset' => '24', ++ 'type' => '69558' ++ }, ++ '4' => { ++ 'name' => 'reg_mr', ++ 'offset' => '32', ++ 'type' => '315627' ++ }, ++ '5' => { ++ 'name' => 'dereg_mr', ++ 'offset' => '40', ++ 'type' => '315648' ++ }, ++ '6' => { ++ 'name' => 'create_cq', ++ 'offset' => '48', ++ 'type' => '69473' ++ }, ++ '7' => { ++ 'name' => 'poll_cq', ++ 'offset' => '56', ++ 'type' => '315679' ++ }, ++ '8' => { ++ 'name' => 'req_notify_cq', ++ 'offset' => '64', ++ 'type' => '315705' ++ }, ++ '9' => { ++ 'name' => 'cq_event', ++ 'offset' => '72', ++ 'type' => '69405' ++ } ++ }, ++ 'Name' => 'struct ibv_context_ops_1_0', ++ 'Size' => '216', ++ 'Type' => 'Struct' ++ }, ++ '315627' => { ++ 'Name' => 'struct ibv_mr*(*)(struct ibv_pd*, void*, size_t, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '71' ++ }, ++ '2' => { ++ 'type' => '52' ++ }, ++ '3' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '11828', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '315648' => { ++ 'Name' => 'int(*)(struct ibv_mr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '11828' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '315679' => { ++ 'Name' => 'int(*)(struct ibv_cq_1_0*, int, struct ibv_wc*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '314502' ++ }, ++ '1' => { ++ 'type' => '130' ++ }, ++ '2' => { ++ 'type' => '18860' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '315705' => { ++ 'Name' => 'int(*)(struct ibv_cq_1_0*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '314502' ++ }, ++ '1' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '315736' => { ++ 'BaseType' => '314965', ++ 'Name' => 'struct ibv_recv_wr_1_0**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315742' => { ++ 'Name' => 'int(*)(struct ibv_srq_1_0*, struct ibv_recv_wr_1_0*, struct ibv_recv_wr_1_0**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '314508' ++ }, ++ '1' => { ++ 'type' => '314965' ++ }, ++ '2' => { ++ 'type' => '315736' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '315773' => { ++ 'BaseType' => '314971', ++ 'Name' => 'struct ibv_qp_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315779' => { ++ 'BaseType' => '314893', ++ 'Name' => 'struct ibv_send_wr_1_0**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315785' => { ++ 'Name' => 'int(*)(struct ibv_qp_1_0*, struct ibv_send_wr_1_0*, struct ibv_send_wr_1_0**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '315773' ++ }, ++ '1' => { ++ 'type' => '314893' ++ }, ++ '2' => { ++ 'type' => '315779' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '315816' => { ++ 'Name' => 'int(*)(struct ibv_qp_1_0*, struct ibv_recv_wr_1_0*, struct ibv_recv_wr_1_0**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '315773' ++ }, ++ '1' => { ++ 'type' => '314965' ++ }, ++ '2' => { ++ 'type' => '315736' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '315853' => { ++ 'Name' => 'int(*)(struct ibv_qp*, union ibv_gid*, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '101173' ++ }, ++ '2' => { ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '315859' => { ++ 'BaseType' => '315166', ++ 'Name' => 'struct ibv_device_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315865' => { ++ 'BaseType' => '315877', ++ 'Header' => undef, ++ 'Line' => '228', ++ 'Name' => 'ibv_driver_init_func_1_1', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '315877' => { ++ 'Name' => 'struct ibv_device*(*)(char const*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '76632' ++ }, ++ '1' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '18013', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316311' => { ++ 'BaseType' => '10380', ++ 'Name' => 'struct ibv_cq**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '316605' => { ++ 'BaseType' => '1028', ++ 'Name' => '__be16*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '31688' => { ++ 'BaseType' => '24376', ++ 'Name' => 'struct verbs_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '316891' => { ++ 'BaseType' => '18013', ++ 'Name' => 'struct ibv_device**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '31694' => { ++ 'BaseType' => '20737', ++ 'Name' => 'struct ibv_open_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '31700' => { ++ 'BaseType' => '3503', ++ 'Name' => 'struct ib_uverbs_create_qp_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '318029' => { ++ 'BaseType' => '314266', ++ 'Name' => 'struct ibv_qp_init_attr_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3186' => { ++ 'BaseType' => '980', ++ 'Name' => '__u8[16]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '319057' => { ++ 'BaseType' => '314502', ++ 'Name' => 'struct ibv_cq_1_0**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '319642' => { ++ 'BaseType' => '314052', ++ 'Name' => 'struct ibv_mr_1_0*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '31966' => { ++ 'BaseType' => '21985', ++ 'Name' => 'struct ibv_query_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3202' => { ++ 'Header' => undef, ++ 'Line' => '523', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'grh', ++ 'offset' => '0', ++ 'type' => '3087' ++ }, ++ '1' => { ++ 'name' => 'dlid', ++ 'offset' => '24', ++ 'type' => '992' ++ }, ++ '2' => { ++ 'name' => 'sl', ++ 'offset' => '26', ++ 'type' => '980' ++ }, ++ '3' => { ++ 'name' => 'src_path_bits', ++ 'offset' => '27', ++ 'type' => '980' ++ }, ++ '4' => { ++ 'name' => 'static_rate', ++ 'offset' => '28', ++ 'type' => '980' ++ }, ++ '5' => { ++ 'name' => 'is_global', ++ 'offset' => '29', ++ 'type' => '980' ++ }, ++ '6' => { ++ 'name' => 'port_num', ++ 'offset' => '30', ++ 'type' => '980' ++ }, ++ '7' => { ++ 'name' => 'reserved', ++ 'offset' => '31', ++ 'type' => '980' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ah_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '32182' => { ++ 'BaseType' => '20538', ++ 'Name' => 'struct ibv_modify_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '322803' => { ++ 'BaseType' => '315859', ++ 'Name' => 'struct ibv_device_1_0**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '32795' => { ++ 'BaseType' => '22717', ++ 'Name' => 'struct ibv_resize_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '32801' => { ++ 'BaseType' => '2574', ++ 'Name' => 'struct ib_uverbs_resize_cq_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3328' => { ++ 'BaseType' => '980', ++ 'Name' => '__u8[5]', ++ 'Size' => '5', ++ 'Type' => 'Array' ++ }, ++ '33672' => { ++ 'BaseType' => '19212', ++ 'Name' => 'struct ibv_alloc_mw*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '33678' => { ++ 'BaseType' => '2409', ++ 'Name' => 'struct ib_uverbs_alloc_mw_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3370' => { ++ 'Header' => undef, ++ 'Line' => '620', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '2' => { ++ 'name' => 'pd_handle', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'qpn', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'qp_type', ++ 'offset' => '24', ++ 'type' => '980' ++ }, ++ '5' => { ++ 'name' => 'reserved', ++ 'offset' => '25', ++ 'type' => '1544' ++ }, ++ '6' => { ++ 'name' => 'driver_data', ++ 'offset' => '32', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_open_qp', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '34030' => { ++ 'BaseType' => '22545', ++ 'Name' => 'struct ibv_rereg_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34036' => { ++ 'BaseType' => '2214', ++ 'Name' => 'struct ib_uverbs_rereg_mr_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '341396' => { ++ 'BaseType' => '68184', ++ 'Name' => 'struct verbs_context_ops const', ++ 'Size' => '608', ++ 'Type' => 'Const' ++ }, ++ '342795' => { ++ 'BaseType' => '341396', ++ 'Name' => 'struct verbs_context_ops const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34390' => { ++ 'BaseType' => '22198', ++ 'Name' => 'struct ibv_reg_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34396' => { ++ 'BaseType' => '1964', ++ 'Name' => 'struct ib_uverbs_reg_mr_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34711' => { ++ 'BaseType' => '20907', ++ 'Name' => 'struct ibv_open_xrcd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34717' => { ++ 'BaseType' => '1770', ++ 'Name' => 'struct ib_uverbs_open_xrcd_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34999' => { ++ 'BaseType' => '19358', ++ 'Name' => 'struct ibv_alloc_pd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '35005' => { ++ 'BaseType' => '1622', ++ 'Name' => 'struct ib_uverbs_alloc_pd_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3503' => { ++ 'Header' => undef, ++ 'Line' => '631', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'qpn', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'reserved', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'driver_data', ++ 'offset' => '32', ++ 'type' => '1665' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_create_qp_resp', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '36004' => { ++ 'BaseType' => '221', ++ 'Header' => undef, ++ 'Line' => '30', ++ 'Name' => '__s64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '36093' => { ++ 'Header' => undef, ++ 'Line' => '59', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'elem_id', ++ 'offset' => '0', ++ 'type' => '980' ++ }, ++ '1' => { ++ 'name' => 'reserved', ++ 'offset' => '1', ++ 'type' => '980' ++ } ++ }, ++ 'Size' => '2', ++ 'Type' => 'Struct' ++ }, ++ '36129' => { ++ 'Header' => undef, ++ 'Line' => '58', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'enum_data', ++ 'offset' => '0', ++ 'type' => '36093' ++ }, ++ '1' => { ++ 'name' => 'reserved', ++ 'offset' => '0', ++ 'type' => '992' ++ } ++ }, ++ 'Size' => '2', ++ 'Type' => 'Union' ++ }, ++ '36163' => { ++ 'Header' => undef, ++ 'Line' => '65', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'data', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'data_s64', ++ 'offset' => '0', ++ 'type' => '36004' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '36199' => { ++ 'Header' => undef, ++ 'Line' => '54', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'attr_id', ++ 'offset' => '0', ++ 'type' => '992' ++ }, ++ '1' => { ++ 'name' => 'len', ++ 'offset' => '2', ++ 'type' => '992' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '4', ++ 'type' => '992' ++ }, ++ '3' => { ++ 'name' => 'attr_data', ++ 'offset' => '6', ++ 'type' => '36129' ++ }, ++ '4' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '36163' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '36273' => { ++ 'Header' => undef, ++ 'Line' => '76', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'length', ++ 'offset' => '0', ++ 'type' => '992' ++ }, ++ '1' => { ++ 'name' => 'object_id', ++ 'offset' => '2', ++ 'type' => '992' ++ }, ++ '2' => { ++ 'name' => 'method_id', ++ 'offset' => '4', ++ 'type' => '992' ++ }, ++ '3' => { ++ 'name' => 'num_attrs', ++ 'offset' => '6', ++ 'type' => '992' ++ }, ++ '4' => { ++ 'name' => 'reserved1', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '5' => { ++ 'name' => 'driver_id', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'reserved2', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'attrs', ++ 'offset' => '24', ++ 'type' => '36394' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ioctl_hdr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '36394' => { ++ 'BaseType' => '36199', ++ 'Name' => 'struct ib_uverbs_attr[]', ++ 'Size' => '8', ++ 'Type' => 'Array' ++ }, ++ '3660' => { ++ 'Header' => undef, ++ 'Line' => '653', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dgid', ++ 'offset' => '0', ++ 'type' => '3186' ++ }, ++ '1' => { ++ 'name' => 'flow_label', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '10' => { ++ 'name' => 'is_global', ++ 'offset' => '30', ++ 'type' => '980' ++ }, ++ '11' => { ++ 'name' => 'port_num', ++ 'offset' => '31', ++ 'type' => '980' ++ }, ++ '2' => { ++ 'name' => 'dlid', ++ 'offset' => '20', ++ 'type' => '992' ++ }, ++ '3' => { ++ 'name' => 'reserved', ++ 'offset' => '22', ++ 'type' => '992' ++ }, ++ '4' => { ++ 'name' => 'sgid_index', ++ 'offset' => '24', ++ 'type' => '980' ++ }, ++ '5' => { ++ 'name' => 'hop_limit', ++ 'offset' => '25', ++ 'type' => '980' ++ }, ++ '6' => { ++ 'name' => 'traffic_class', ++ 'offset' => '26', ++ 'type' => '980' ++ }, ++ '7' => { ++ 'name' => 'sl', ++ 'offset' => '27', ++ 'type' => '980' ++ }, ++ '8' => { ++ 'name' => 'src_path_bits', ++ 'offset' => '28', ++ 'type' => '980' ++ }, ++ '9' => { ++ 'name' => 'static_rate', ++ 'offset' => '29', ++ 'type' => '980' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_qp_dest', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '3842' => { ++ 'Header' => undef, ++ 'Line' => '668', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'qp_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'attr_mask', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_query_qp', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '414114' => { ++ 'Header' => undef, ++ 'Line' => '534', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_attr_mask', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'qp_state', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '10' => { ++ 'name' => 'ah_attr', ++ 'offset' => '40', ++ 'type' => '3202' ++ }, ++ '11' => { ++ 'name' => 'alt_ah_attr', ++ 'offset' => '72', ++ 'type' => '3202' ++ }, ++ '12' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '104', ++ 'type' => '1004' ++ }, ++ '13' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '108', ++ 'type' => '1004' ++ }, ++ '14' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '112', ++ 'type' => '1004' ++ }, ++ '15' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '116', ++ 'type' => '1004' ++ }, ++ '16' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '120', ++ 'type' => '1004' ++ }, ++ '17' => { ++ 'name' => 'pkey_index', ++ 'offset' => '124', ++ 'type' => '992' ++ }, ++ '18' => { ++ 'name' => 'alt_pkey_index', ++ 'offset' => '126', ++ 'type' => '992' ++ }, ++ '19' => { ++ 'name' => 'en_sqd_async_notify', ++ 'offset' => '128', ++ 'type' => '980' ++ }, ++ '2' => { ++ 'name' => 'cur_qp_state', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '20' => { ++ 'name' => 'sq_draining', ++ 'offset' => '129', ++ 'type' => '980' ++ }, ++ '21' => { ++ 'name' => 'max_rd_atomic', ++ 'offset' => '130', ++ 'type' => '980' ++ }, ++ '22' => { ++ 'name' => 'max_dest_rd_atomic', ++ 'offset' => '131', ++ 'type' => '980' ++ }, ++ '23' => { ++ 'name' => 'min_rnr_timer', ++ 'offset' => '132', ++ 'type' => '980' ++ }, ++ '24' => { ++ 'name' => 'port_num', ++ 'offset' => '133', ++ 'type' => '980' ++ }, ++ '25' => { ++ 'name' => 'timeout', ++ 'offset' => '134', ++ 'type' => '980' ++ }, ++ '26' => { ++ 'name' => 'retry_cnt', ++ 'offset' => '135', ++ 'type' => '980' ++ }, ++ '27' => { ++ 'name' => 'rnr_retry', ++ 'offset' => '136', ++ 'type' => '980' ++ }, ++ '28' => { ++ 'name' => 'alt_port_num', ++ 'offset' => '137', ++ 'type' => '980' ++ }, ++ '29' => { ++ 'name' => 'alt_timeout', ++ 'offset' => '138', ++ 'type' => '980' ++ }, ++ '3' => { ++ 'name' => 'path_mtu', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '30' => { ++ 'name' => 'reserved', ++ 'offset' => '139', ++ 'type' => '3328' ++ }, ++ '4' => { ++ 'name' => 'path_mig_state', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'qkey', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'rq_psn', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'sq_psn', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'dest_qp_num', ++ 'offset' => '32', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'qp_access_flags', ++ 'offset' => '36', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_qp_attr', ++ 'Size' => '144', ++ 'Type' => 'Struct' ++ }, ++ '415498' => { ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dgid', ++ 'offset' => '0', ++ 'type' => '9296' ++ }, ++ '1' => { ++ 'name' => 'sgid', ++ 'offset' => '16', ++ 'type' => '9296' ++ }, ++ '10' => { ++ 'name' => 'pkey', ++ 'offset' => '54', ++ 'type' => '1028' ++ }, ++ '11' => { ++ 'name' => 'sl', ++ 'offset' => '56', ++ 'type' => '920' ++ }, ++ '12' => { ++ 'name' => 'mtu_selector', ++ 'offset' => '57', ++ 'type' => '920' ++ }, ++ '13' => { ++ 'name' => 'mtu', ++ 'offset' => '58', ++ 'type' => '920' ++ }, ++ '14' => { ++ 'name' => 'rate_selector', ++ 'offset' => '59', ++ 'type' => '920' ++ }, ++ '15' => { ++ 'name' => 'rate', ++ 'offset' => '60', ++ 'type' => '920' ++ }, ++ '16' => { ++ 'name' => 'packet_life_time_selector', ++ 'offset' => '61', ++ 'type' => '920' ++ }, ++ '17' => { ++ 'name' => 'packet_life_time', ++ 'offset' => '62', ++ 'type' => '920' ++ }, ++ '18' => { ++ 'name' => 'preference', ++ 'offset' => '63', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'dlid', ++ 'offset' => '32', ++ 'type' => '1028' ++ }, ++ '3' => { ++ 'name' => 'slid', ++ 'offset' => '34', ++ 'type' => '1028' ++ }, ++ '4' => { ++ 'name' => 'raw_traffic', ++ 'offset' => '36', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'flow_label', ++ 'offset' => '40', ++ 'type' => '1040' ++ }, ++ '6' => { ++ 'name' => 'hop_limit', ++ 'offset' => '44', ++ 'type' => '920' ++ }, ++ '7' => { ++ 'name' => 'traffic_class', ++ 'offset' => '45', ++ 'type' => '920' ++ }, ++ '8' => { ++ 'name' => 'reversible', ++ 'offset' => '48', ++ 'type' => '130' ++ }, ++ '9' => { ++ 'name' => 'numb_path', ++ 'offset' => '52', ++ 'type' => '920' ++ } ++ }, ++ 'Name' => 'struct ibv_sa_path_rec', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '415758' => { ++ 'Header' => undef, ++ 'Line' => '55', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dgid', ++ 'offset' => '0', ++ 'type' => '3186' ++ }, ++ '1' => { ++ 'name' => 'sgid', ++ 'offset' => '16', ++ 'type' => '3186' ++ }, ++ '10' => { ++ 'name' => 'traffic_class', ++ 'offset' => '55', ++ 'type' => '980' ++ }, ++ '11' => { ++ 'name' => 'numb_path', ++ 'offset' => '56', ++ 'type' => '980' ++ }, ++ '12' => { ++ 'name' => 'sl', ++ 'offset' => '57', ++ 'type' => '980' ++ }, ++ '13' => { ++ 'name' => 'mtu_selector', ++ 'offset' => '58', ++ 'type' => '980' ++ }, ++ '14' => { ++ 'name' => 'rate_selector', ++ 'offset' => '59', ++ 'type' => '980' ++ }, ++ '15' => { ++ 'name' => 'rate', ++ 'offset' => '60', ++ 'type' => '980' ++ }, ++ '16' => { ++ 'name' => 'packet_life_time_selector', ++ 'offset' => '61', ++ 'type' => '980' ++ }, ++ '17' => { ++ 'name' => 'packet_life_time', ++ 'offset' => '62', ++ 'type' => '980' ++ }, ++ '18' => { ++ 'name' => 'preference', ++ 'offset' => '63', ++ 'type' => '980' ++ }, ++ '2' => { ++ 'name' => 'dlid', ++ 'offset' => '32', ++ 'type' => '1028' ++ }, ++ '3' => { ++ 'name' => 'slid', ++ 'offset' => '34', ++ 'type' => '1028' ++ }, ++ '4' => { ++ 'name' => 'raw_traffic', ++ 'offset' => '36', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'flow_label', ++ 'offset' => '40', ++ 'type' => '1040' ++ }, ++ '6' => { ++ 'name' => 'reversible', ++ 'offset' => '44', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'mtu', ++ 'offset' => '48', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'pkey', ++ 'offset' => '52', ++ 'type' => '1028' ++ }, ++ '9' => { ++ 'name' => 'hop_limit', ++ 'offset' => '54', ++ 'type' => '980' ++ } ++ }, ++ 'Name' => 'struct ib_user_path_rec', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '416227' => { ++ 'BaseType' => '415758', ++ 'Name' => 'struct ib_user_path_rec*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '416233' => { ++ 'BaseType' => '415498', ++ 'Name' => 'struct ibv_sa_path_rec*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '416583' => { ++ 'BaseType' => '414114', ++ 'Name' => 'struct ib_uverbs_qp_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '41671' => { ++ 'Header' => undef, ++ 'Line' => '85', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next', ++ 'offset' => '0', ++ 'type' => '41839' ++ }, ++ '1' => { ++ 'name' => 'next_attr', ++ 'offset' => '8', ++ 'type' => '41845' ++ }, ++ '10' => { ++ 'name' => 'hdr', ++ 'offset' => '32', ++ 'type' => '36273' ++ }, ++ '2' => { ++ 'name' => 'last_attr', ++ 'offset' => '16', ++ 'type' => '41845' ++ }, ++ '3' => { ++ 'name' => 'uhw_in_idx', ++ 'offset' => '24', ++ 'type' => '920' ++ }, ++ '4' => { ++ 'name' => 'uhw_out_idx', ++ 'offset' => '25', ++ 'type' => '920' ++ }, ++ '5' => { ++ 'name' => 'uhw_in_headroom_dwords', ++ 'offset' => '26', ++ 'type' => '920' ++ }, ++ '6' => { ++ 'name' => 'uhw_out_headroom_dwords', ++ 'offset' => '27', ++ 'type' => '920' ++ }, ++ '7' => { ++ 'bitfield' => '1', ++ 'name' => 'buffer_error', ++ 'offset' => '28', ++ 'type' => '920' ++ }, ++ '8' => { ++ 'bitfield' => '1', ++ 'name' => 'fallback_require_ex', ++ 'offset' => '28', ++ 'type' => '920' ++ }, ++ '9' => { ++ 'bitfield' => '1', ++ 'name' => 'fallback_ioctl_only', ++ 'offset' => '28', ++ 'type' => '920' ++ } ++ }, ++ 'Name' => 'struct ibv_command_buffer', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '416727' => { ++ 'BaseType' => '3202', ++ 'Name' => 'struct ib_uverbs_ah_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '41839' => { ++ 'BaseType' => '41671', ++ 'Name' => 'struct ibv_command_buffer*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '41845' => { ++ 'BaseType' => '36199', ++ 'Name' => 'struct ib_uverbs_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '419513' => { ++ 'Header' => undef, ++ 'Line' => '142', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_FORK_DISABLED', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_FORK_ENABLED', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_FORK_UNNEEDED', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_fork_status', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '4399' => { ++ 'Header' => undef, ++ 'Line' => '709', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dest', ++ 'offset' => '0', ++ 'type' => '3660' ++ }, ++ '1' => { ++ 'name' => 'alt_dest', ++ 'offset' => '32', ++ 'type' => '3660' ++ }, ++ '10' => { ++ 'name' => 'alt_pkey_index', ++ 'offset' => '94', ++ 'type' => '992' ++ }, ++ '11' => { ++ 'name' => 'qp_state', ++ 'offset' => '96', ++ 'type' => '980' ++ }, ++ '12' => { ++ 'name' => 'cur_qp_state', ++ 'offset' => '97', ++ 'type' => '980' ++ }, ++ '13' => { ++ 'name' => 'path_mtu', ++ 'offset' => '98', ++ 'type' => '980' ++ }, ++ '14' => { ++ 'name' => 'path_mig_state', ++ 'offset' => '99', ++ 'type' => '980' ++ }, ++ '15' => { ++ 'name' => 'en_sqd_async_notify', ++ 'offset' => '100', ++ 'type' => '980' ++ }, ++ '16' => { ++ 'name' => 'max_rd_atomic', ++ 'offset' => '101', ++ 'type' => '980' ++ }, ++ '17' => { ++ 'name' => 'max_dest_rd_atomic', ++ 'offset' => '102', ++ 'type' => '980' ++ }, ++ '18' => { ++ 'name' => 'min_rnr_timer', ++ 'offset' => '103', ++ 'type' => '980' ++ }, ++ '19' => { ++ 'name' => 'port_num', ++ 'offset' => '104', ++ 'type' => '980' ++ }, ++ '2' => { ++ 'name' => 'qp_handle', ++ 'offset' => '64', ++ 'type' => '1004' ++ }, ++ '20' => { ++ 'name' => 'timeout', ++ 'offset' => '105', ++ 'type' => '980' ++ }, ++ '21' => { ++ 'name' => 'retry_cnt', ++ 'offset' => '106', ++ 'type' => '980' ++ }, ++ '22' => { ++ 'name' => 'rnr_retry', ++ 'offset' => '107', ++ 'type' => '980' ++ }, ++ '23' => { ++ 'name' => 'alt_port_num', ++ 'offset' => '108', ++ 'type' => '980' ++ }, ++ '24' => { ++ 'name' => 'alt_timeout', ++ 'offset' => '109', ++ 'type' => '980' ++ }, ++ '25' => { ++ 'name' => 'reserved', ++ 'offset' => '110', ++ 'type' => '4794' ++ }, ++ '26' => { ++ 'name' => 'driver_data', ++ 'offset' => '112', ++ 'type' => '1606' ++ }, ++ '3' => { ++ 'name' => 'attr_mask', ++ 'offset' => '68', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'qkey', ++ 'offset' => '72', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'rq_psn', ++ 'offset' => '76', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'sq_psn', ++ 'offset' => '80', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'dest_qp_num', ++ 'offset' => '84', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'qp_access_flags', ++ 'offset' => '88', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'pkey_index', ++ 'offset' => '92', ++ 'type' => '992' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_modify_qp', ++ 'Size' => '112', ++ 'Type' => 'Struct' ++ }, ++ '45' => { ++ 'Name' => 'unsigned long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '452765' => { ++ 'Header' => undef, ++ 'Line' => '693', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'version_tclass_flow', ++ 'offset' => '0', ++ 'type' => '1040' ++ }, ++ '1' => { ++ 'name' => 'paylen', ++ 'offset' => '4', ++ 'type' => '1028' ++ }, ++ '2' => { ++ 'name' => 'next_hdr', ++ 'offset' => '6', ++ 'type' => '920' ++ }, ++ '3' => { ++ 'name' => 'hop_limit', ++ 'offset' => '7', ++ 'type' => '920' ++ }, ++ '4' => { ++ 'name' => 'sgid', ++ 'offset' => '8', ++ 'type' => '9296' ++ }, ++ '5' => { ++ 'name' => 'dgid', ++ 'offset' => '24', ++ 'type' => '9296' ++ } ++ }, ++ 'Name' => 'struct ibv_grh', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '452864' => { ++ 'Header' => undef, ++ 'Line' => '702', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_RATE_MAX', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_RATE_2_5_GBPS', ++ 'value' => '2' ++ }, ++ '10' => { ++ 'name' => 'IBV_RATE_14_GBPS', ++ 'value' => '11' ++ }, ++ '11' => { ++ 'name' => 'IBV_RATE_56_GBPS', ++ 'value' => '12' ++ }, ++ '12' => { ++ 'name' => 'IBV_RATE_112_GBPS', ++ 'value' => '13' ++ }, ++ '13' => { ++ 'name' => 'IBV_RATE_168_GBPS', ++ 'value' => '14' ++ }, ++ '14' => { ++ 'name' => 'IBV_RATE_25_GBPS', ++ 'value' => '15' ++ }, ++ '15' => { ++ 'name' => 'IBV_RATE_100_GBPS', ++ 'value' => '16' ++ }, ++ '16' => { ++ 'name' => 'IBV_RATE_200_GBPS', ++ 'value' => '17' ++ }, ++ '17' => { ++ 'name' => 'IBV_RATE_300_GBPS', ++ 'value' => '18' ++ }, ++ '18' => { ++ 'name' => 'IBV_RATE_28_GBPS', ++ 'value' => '19' ++ }, ++ '19' => { ++ 'name' => 'IBV_RATE_50_GBPS', ++ 'value' => '20' ++ }, ++ '2' => { ++ 'name' => 'IBV_RATE_5_GBPS', ++ 'value' => '5' ++ }, ++ '20' => { ++ 'name' => 'IBV_RATE_400_GBPS', ++ 'value' => '21' ++ }, ++ '21' => { ++ 'name' => 'IBV_RATE_600_GBPS', ++ 'value' => '22' ++ }, ++ '22' => { ++ 'name' => 'IBV_RATE_800_GBPS', ++ 'value' => '23' ++ }, ++ '23' => { ++ 'name' => 'IBV_RATE_1200_GBPS', ++ 'value' => '24' ++ }, ++ '3' => { ++ 'name' => 'IBV_RATE_10_GBPS', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_RATE_20_GBPS', ++ 'value' => '6' ++ }, ++ '5' => { ++ 'name' => 'IBV_RATE_30_GBPS', ++ 'value' => '4' ++ }, ++ '6' => { ++ 'name' => 'IBV_RATE_40_GBPS', ++ 'value' => '7' ++ }, ++ '7' => { ++ 'name' => 'IBV_RATE_60_GBPS', ++ 'value' => '8' ++ }, ++ '8' => { ++ 'name' => 'IBV_RATE_80_GBPS', ++ 'value' => '9' ++ }, ++ '9' => { ++ 'name' => 'IBV_RATE_120_GBPS', ++ 'value' => '10' ++ } ++ }, ++ 'Name' => 'enum ibv_rate', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '468450' => { ++ 'BaseType' => '932', ++ 'Name' => 'uint16_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '469456' => { ++ 'BaseType' => '452765', ++ 'Name' => 'struct ibv_grh*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '474' => { ++ 'Name' => 'unsigned long long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '4794' => { ++ 'BaseType' => '980', ++ 'Name' => '__u8[2]', ++ 'Size' => '2', ++ 'Type' => 'Array' ++ }, ++ '4826' => { ++ 'Header' => undef, ++ 'Line' => '739', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'base', ++ 'offset' => '0', ++ 'type' => '4399' ++ }, ++ '1' => { ++ 'name' => 'rate_limit', ++ 'offset' => '112', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '116', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_modify_qp', ++ 'Size' => '120', ++ 'Type' => 'Struct' ++ }, ++ '48701' => { ++ 'Header' => undef, ++ 'Line' => '2050', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_counters_init_attr', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '48730' => { ++ 'BaseType' => '956', ++ 'Name' => 'uint64_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '48736' => { ++ 'BaseType' => '48701', ++ 'Name' => 'struct ibv_counters_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '4885' => { ++ 'Header' => undef, ++ 'Line' => '745', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'response_length', ++ 'offset' => '4', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_modify_qp_resp', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '50290' => { ++ 'BaseType' => '24521', ++ 'Name' => 'struct verbs_counters*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '52' => { ++ 'BaseType' => '45', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => 'size_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '52207' => { ++ 'BaseType' => '149', ++ 'Header' => undef, ++ 'Line' => '160', ++ 'Name' => '__time_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '52226' => { ++ 'BaseType' => '149', ++ 'Header' => undef, ++ 'Line' => '196', ++ 'Name' => '__syscall_slong_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '52329' => { ++ 'BaseType' => '130', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => '__s32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '52772' => { ++ 'Header' => undef, ++ 'Line' => '10', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'tv_sec', ++ 'offset' => '0', ++ 'type' => '52207' ++ }, ++ '1' => { ++ 'name' => 'tv_nsec', ++ 'offset' => '8', ++ 'type' => '52226' ++ } ++ }, ++ 'Name' => 'struct timespec', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '53863' => { ++ 'Header' => undef, ++ 'Line' => '404', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '2' => { ++ 'name' => 'cqe', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'comp_vector', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'comp_channel', ++ 'offset' => '24', ++ 'type' => '52329' ++ }, ++ '5' => { ++ 'name' => 'reserved', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'driver_data', ++ 'offset' => '32', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_create_cq', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '54028' => { ++ 'Header' => undef, ++ 'Line' => '419', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'user_handle', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'comp_vector', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'comp_channel', ++ 'offset' => '16', ++ 'type' => '52329' ++ }, ++ '4' => { ++ 'name' => 'comp_mask', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'flags', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'reserved', ++ 'offset' => '28', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_create_cq', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '54143' => { ++ 'Header' => undef, ++ 'Line' => '429', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cq_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_create_cq_resp', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '54218' => { ++ 'Header' => undef, ++ 'Line' => '435', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'base', ++ 'offset' => '0', ++ 'type' => '54143' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'response_length', ++ 'offset' => '12', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_create_cq_resp', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '54379' => { ++ 'Header' => undef, ++ 'Line' => '144', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM', ++ 'value' => '0' ++ } ++ }, ++ 'Name' => 'enum ib_uverbs_flow_action_esp_keymat', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '54404' => { ++ 'Header' => undef, ++ 'Line' => '163', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum ib_uverbs_flow_action_esp_replay', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '54435' => { ++ 'Header' => undef, ++ 'Line' => '189', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'val_ptr', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'val_ptr_data_u64', ++ 'offset' => '0', ++ 'type' => '1016' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '54471' => { ++ 'Header' => undef, ++ 'Line' => '190', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next_ptr', ++ 'offset' => '0', ++ 'type' => '54562' ++ }, ++ '1' => { ++ 'name' => 'next_ptr_data_u64', ++ 'offset' => '0', ++ 'type' => '1016' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '54507' => { ++ 'Header' => undef, ++ 'Line' => '185', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '54435' ++ }, ++ '1' => { ++ 'name' => 'unnamed1', ++ 'offset' => '8', ++ 'type' => '54471' ++ }, ++ '2' => { ++ 'name' => 'len', ++ 'offset' => '16', ++ 'type' => '992' ++ }, ++ '3' => { ++ 'name' => 'type', ++ 'offset' => '18', ++ 'type' => '992' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_flow_action_esp_encap', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '54562' => { ++ 'BaseType' => '54507', ++ 'Name' => 'struct ib_uverbs_flow_action_esp_encap*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '54568' => { ++ 'Header' => undef, ++ 'Line' => '195', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'spi', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'seq', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'tfc_pad', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'hard_limit_pkts', ++ 'offset' => '16', ++ 'type' => '1016' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_flow_action_esp', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '54649' => { ++ 'Header' => undef, ++ 'Line' => '208', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ib_uverbs_advise_mr_advice', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '54940' => { ++ 'Header' => undef, ++ 'Line' => '161', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'length', ++ 'offset' => '0', ++ 'type' => '52' ++ }, ++ '1' => { ++ 'name' => 'log_align_req', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '12', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_alloc_dm_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '54993' => { ++ 'Header' => undef, ++ 'Line' => '171', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'memcpy_to_dm', ++ 'offset' => '8', ++ 'type' => '55245' ++ }, ++ '2' => { ++ 'name' => 'memcpy_from_dm', ++ 'offset' => '16', ++ 'type' => '55281' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'handle', ++ 'offset' => '28', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_dm', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '55227' => { ++ 'BaseType' => '54993', ++ 'Name' => 'struct ibv_dm*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '55245' => { ++ 'Name' => 'int(*)(struct ibv_dm*, uint64_t, void const*, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '55227' ++ }, ++ '1' => { ++ 'type' => '956' ++ }, ++ '2' => { ++ 'type' => '908' ++ }, ++ '3' => { ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '55281' => { ++ 'Name' => 'int(*)(void*, struct ibv_dm*, uint64_t, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '71' ++ }, ++ '1' => { ++ 'type' => '55227' ++ }, ++ '2' => { ++ 'type' => '956' ++ }, ++ '3' => { ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '55837' => { ++ 'Header' => undef, ++ 'Line' => '227', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_query_device_ex_input', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '55864' => { ++ 'BaseType' => '55837', ++ 'Name' => 'struct ibv_query_device_ex_input const', ++ 'Size' => '4', ++ 'Type' => 'Const' ++ }, ++ '55869' => { ++ 'Header' => undef, ++ 'Line' => '242', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rc_odp_caps', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'uc_odp_caps', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'ud_odp_caps', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '55918' => { ++ 'Header' => undef, ++ 'Line' => '240', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'general_caps', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'per_transport_caps', ++ 'offset' => '8', ++ 'type' => '55869' ++ } ++ }, ++ 'Name' => 'struct ibv_odp_caps', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '55958' => { ++ 'Header' => undef, ++ 'Line' => '254', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_tso', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '4', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_tso_caps', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '55999' => { ++ 'Header' => undef, ++ 'Line' => '285', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'max_rwq_indirection_tables', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'max_rwq_indirection_table_size', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'rx_hash_fields_mask', ++ 'offset' => '16', ++ 'type' => '956' ++ }, ++ '4' => { ++ 'name' => 'rx_hash_function', ++ 'offset' => '24', ++ 'type' => '920' ++ } ++ }, ++ 'Name' => 'struct ibv_rss_caps', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '56084' => { ++ 'Header' => undef, ++ 'Line' => '293', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_rate_limit_min', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'qp_rate_limit_max', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_packet_pacing_caps', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '56141' => { ++ 'Header' => undef, ++ 'Line' => '310', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_rndv_hdr_size', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'max_num_tags', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'max_ops', ++ 'offset' => '12', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'max_sge', ++ 'offset' => '16', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_tm_caps', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '56226' => { ++ 'Header' => undef, ++ 'Line' => '323', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_cq_count', ++ 'offset' => '0', ++ 'type' => '932' ++ }, ++ '1' => { ++ 'name' => 'max_cq_period', ++ 'offset' => '2', ++ 'type' => '932' ++ } ++ }, ++ 'Name' => 'struct ibv_cq_moderation_caps', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '56269' => { ++ 'Header' => undef, ++ 'Line' => '338', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fetch_add', ++ 'offset' => '0', ++ 'type' => '932' ++ }, ++ '1' => { ++ 'name' => 'swap', ++ 'offset' => '2', ++ 'type' => '932' ++ }, ++ '2' => { ++ 'name' => 'compare_swap', ++ 'offset' => '4', ++ 'type' => '932' ++ } ++ }, ++ 'Name' => 'struct ibv_pci_atomic_caps', ++ 'Size' => '6', ++ 'Type' => 'Struct' ++ }, ++ '56326' => { ++ 'Header' => undef, ++ 'Line' => '344', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'orig_attr', ++ 'offset' => '0', ++ 'type' => '9639' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '232', ++ 'type' => '944' ++ }, ++ '10' => { ++ 'name' => 'raw_packet_caps', ++ 'offset' => '344', ++ 'type' => '944' ++ }, ++ '11' => { ++ 'name' => 'tm_caps', ++ 'offset' => '348', ++ 'type' => '56141' ++ }, ++ '12' => { ++ 'name' => 'cq_mod_caps', ++ 'offset' => '368', ++ 'type' => '56226' ++ }, ++ '13' => { ++ 'name' => 'max_dm_size', ++ 'offset' => '376', ++ 'type' => '956' ++ }, ++ '14' => { ++ 'name' => 'pci_atomic_caps', ++ 'offset' => '384', ++ 'type' => '56269' ++ }, ++ '15' => { ++ 'name' => 'xrc_odp_caps', ++ 'offset' => '392', ++ 'type' => '944' ++ }, ++ '16' => { ++ 'name' => 'phys_port_cnt_ex', ++ 'offset' => '396', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'odp_caps', ++ 'offset' => '240', ++ 'type' => '55918' ++ }, ++ '3' => { ++ 'name' => 'completion_timestamp_mask', ++ 'offset' => '264', ++ 'type' => '956' ++ }, ++ '4' => { ++ 'name' => 'hca_core_clock', ++ 'offset' => '272', ++ 'type' => '956' ++ }, ++ '5' => { ++ 'name' => 'device_cap_flags_ex', ++ 'offset' => '280', ++ 'type' => '956' ++ }, ++ '6' => { ++ 'name' => 'tso_caps', ++ 'offset' => '288', ++ 'type' => '55958' ++ }, ++ '7' => { ++ 'name' => 'rss_caps', ++ 'offset' => '296', ++ 'type' => '55999' ++ }, ++ '8' => { ++ 'name' => 'max_wq_type_rq', ++ 'offset' => '328', ++ 'type' => '944' ++ }, ++ '9' => { ++ 'name' => 'packet_pacing_caps', ++ 'offset' => '332', ++ 'type' => '56084' ++ } ++ }, ++ 'Name' => 'struct ibv_device_attr_ex', ++ 'Size' => '400', ++ 'Type' => 'Struct' ++ }, ++ '56644' => { ++ 'Header' => undef, ++ 'Line' => '372', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_PORT_NOP', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_PORT_DOWN', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_PORT_INIT', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_PORT_ARMED', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_PORT_ACTIVE', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_PORT_ACTIVE_DEFER', ++ 'value' => '5' ++ } ++ }, ++ 'Name' => 'enum ibv_port_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '56700' => { ++ 'Header' => undef, ++ 'Line' => '424', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'state', ++ 'offset' => '0', ++ 'type' => '56644' ++ }, ++ '1' => { ++ 'name' => 'max_mtu', ++ 'offset' => '4', ++ 'type' => '10189' ++ }, ++ '10' => { ++ 'name' => 'sm_lid', ++ 'offset' => '36', ++ 'type' => '932' ++ }, ++ '11' => { ++ 'name' => 'lmc', ++ 'offset' => '38', ++ 'type' => '920' ++ }, ++ '12' => { ++ 'name' => 'max_vl_num', ++ 'offset' => '39', ++ 'type' => '920' ++ }, ++ '13' => { ++ 'name' => 'sm_sl', ++ 'offset' => '40', ++ 'type' => '920' ++ }, ++ '14' => { ++ 'name' => 'subnet_timeout', ++ 'offset' => '41', ++ 'type' => '920' ++ }, ++ '15' => { ++ 'name' => 'init_type_reply', ++ 'offset' => '42', ++ 'type' => '920' ++ }, ++ '16' => { ++ 'name' => 'active_width', ++ 'offset' => '43', ++ 'type' => '920' ++ }, ++ '17' => { ++ 'name' => 'active_speed', ++ 'offset' => '44', ++ 'type' => '920' ++ }, ++ '18' => { ++ 'name' => 'phys_state', ++ 'offset' => '45', ++ 'type' => '920' ++ }, ++ '19' => { ++ 'name' => 'link_layer', ++ 'offset' => '46', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'active_mtu', ++ 'offset' => '8', ++ 'type' => '10189' ++ }, ++ '20' => { ++ 'name' => 'flags', ++ 'offset' => '47', ++ 'type' => '920' ++ }, ++ '21' => { ++ 'name' => 'port_cap_flags2', ++ 'offset' => '48', ++ 'type' => '932' ++ }, ++ '3' => { ++ 'name' => 'gid_tbl_len', ++ 'offset' => '12', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'port_cap_flags', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '5' => { ++ 'name' => 'max_msg_sz', ++ 'offset' => '20', ++ 'type' => '944' ++ }, ++ '6' => { ++ 'name' => 'bad_pkey_cntr', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'qkey_viol_cntr', ++ 'offset' => '28', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'pkey_tbl_len', ++ 'offset' => '32', ++ 'type' => '932' ++ }, ++ '9' => { ++ 'name' => 'lid', ++ 'offset' => '34', ++ 'type' => '932' ++ } ++ }, ++ 'Name' => 'struct ibv_port_attr', ++ 'Size' => '52', ++ 'Type' => 'Struct' ++ }, ++ '57023' => { ++ 'Header' => undef, ++ 'Line' => '449', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_EVENT_CQ_ERR', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_EVENT_QP_FATAL', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_EVENT_PORT_ERR', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_EVENT_LID_CHANGE', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'IBV_EVENT_PKEY_CHANGE', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'IBV_EVENT_SM_CHANGE', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'IBV_EVENT_SRQ_ERR', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'IBV_EVENT_SRQ_LIMIT_REACHED', ++ 'value' => '15' ++ }, ++ '16' => { ++ 'name' => 'IBV_EVENT_QP_LAST_WQE_REACHED', ++ 'value' => '16' ++ }, ++ '17' => { ++ 'name' => 'IBV_EVENT_CLIENT_REREGISTER', ++ 'value' => '17' ++ }, ++ '18' => { ++ 'name' => 'IBV_EVENT_GID_CHANGE', ++ 'value' => '18' ++ }, ++ '19' => { ++ 'name' => 'IBV_EVENT_WQ_FATAL', ++ 'value' => '19' ++ }, ++ '2' => { ++ 'name' => 'IBV_EVENT_QP_REQ_ERR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_EVENT_QP_ACCESS_ERR', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_EVENT_COMM_EST', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_EVENT_SQ_DRAINED', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_EVENT_PATH_MIG', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_EVENT_PATH_MIG_ERR', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_EVENT_DEVICE_FATAL', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_EVENT_PORT_ACTIVE', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_event_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '57163' => { ++ 'Header' => undef, ++ 'Line' => '473', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cq', ++ 'offset' => '0', ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'name' => 'qp', ++ 'offset' => '0', ++ 'type' => '10582' ++ }, ++ '2' => { ++ 'name' => 'srq', ++ 'offset' => '0', ++ 'type' => '10700' ++ }, ++ '3' => { ++ 'name' => 'wq', ++ 'offset' => '0', ++ 'type' => '10901' ++ }, ++ '4' => { ++ 'name' => 'port_num', ++ 'offset' => '0', ++ 'type' => '130' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '57904' => { ++ 'Header' => undef, ++ 'Line' => '472', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'element', ++ 'offset' => '0', ++ 'type' => '57163' ++ }, ++ '1' => { ++ 'name' => 'event_type', ++ 'offset' => '8', ++ 'type' => '57023' ++ } ++ }, ++ 'Name' => 'struct ibv_async_event', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '58791' => { ++ 'Header' => undef, ++ 'Line' => '631', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_td_init_attr', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '58820' => { ++ 'Header' => undef, ++ 'Line' => '635', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ } ++ }, ++ 'Name' => 'struct ibv_td', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '59310' => { ++ 'Header' => undef, ++ 'Line' => '777', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'srq_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'offset' => '8', ++ 'type' => '12363' ++ } ++ }, ++ 'Name' => 'struct ibv_srq_init_attr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '59353' => { ++ 'Header' => undef, ++ 'Line' => '782', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_SRQT_BASIC', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_SRQT_XRC', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_SRQT_TM', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_srq_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '59391' => { ++ 'Header' => undef, ++ 'Line' => '797', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_num_tags', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'max_ops', ++ 'offset' => '4', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_tm_cap', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '59434' => { ++ 'Header' => undef, ++ 'Line' => '802', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'srq_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'offset' => '8', ++ 'type' => '12363' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '20', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'srq_type', ++ 'offset' => '24', ++ 'type' => '59353' ++ }, ++ '4' => { ++ 'name' => 'pd', ++ 'offset' => '32', ++ 'type' => '12044' ++ }, ++ '5' => { ++ 'name' => 'xrcd', ++ 'offset' => '40', ++ 'type' => '12420' ++ }, ++ '6' => { ++ 'name' => 'cq', ++ 'offset' => '48', ++ 'type' => '10380' ++ }, ++ '7' => { ++ 'name' => 'tm_cap', ++ 'offset' => '56', ++ 'type' => '59391' ++ } ++ }, ++ 'Name' => 'struct ibv_srq_init_attr_ex', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '5945' => { ++ 'Header' => undef, ++ 'Line' => '875', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ah_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'driver_data', ++ 'offset' => '4', ++ 'type' => '1665' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_create_ah_resp', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '59591' => { ++ 'Header' => undef, ++ 'Line' => '831', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wq_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'wq_type', ++ 'offset' => '8', ++ 'type' => '12426' ++ }, ++ '2' => { ++ 'name' => 'max_wr', ++ 'offset' => '12', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'max_sge', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'pd', ++ 'offset' => '24', ++ 'type' => '12044' ++ }, ++ '5' => { ++ 'name' => 'cq', ++ 'offset' => '32', ++ 'type' => '10380' ++ }, ++ '6' => { ++ 'name' => 'comp_mask', ++ 'offset' => '40', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'create_flags', ++ 'offset' => '44', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_wq_init_attr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '60239' => { ++ 'Header' => undef, ++ 'Line' => '955', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rx_hash_function', ++ 'offset' => '0', ++ 'type' => '920' ++ }, ++ '1' => { ++ 'name' => 'rx_hash_key_len', ++ 'offset' => '1', ++ 'type' => '920' ++ }, ++ '2' => { ++ 'name' => 'rx_hash_key', ++ 'offset' => '8', ++ 'type' => '60310' ++ }, ++ '3' => { ++ 'name' => 'rx_hash_fields_mask', ++ 'offset' => '16', ++ 'type' => '956' ++ } ++ }, ++ 'Name' => 'struct ibv_rx_hash_conf', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '60310' => { ++ 'BaseType' => '920', ++ 'Name' => 'uint8_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '60316' => { ++ 'Header' => undef, ++ 'Line' => '964', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '10380' ++ }, ++ '10' => { ++ 'name' => 'create_flags', ++ 'offset' => '80', ++ 'type' => '944' ++ }, ++ '11' => { ++ 'name' => 'max_tso_header', ++ 'offset' => '84', ++ 'type' => '932' ++ }, ++ '12' => { ++ 'name' => 'rwq_ind_tbl', ++ 'offset' => '88', ++ 'type' => '13095' ++ }, ++ '13' => { ++ 'name' => 'rx_hash_conf', ++ 'offset' => '96', ++ 'type' => '60239' ++ }, ++ '14' => { ++ 'name' => 'source_qpn', ++ 'offset' => '120', ++ 'type' => '944' ++ }, ++ '15' => { ++ 'name' => 'send_ops_flags', ++ 'offset' => '128', ++ 'type' => '956' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '10380' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '10700' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '12897' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '12835' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '130' ++ }, ++ '7' => { ++ 'name' => 'comp_mask', ++ 'offset' => '60', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'pd', ++ 'offset' => '64', ++ 'type' => '12044' ++ }, ++ '9' => { ++ 'name' => 'xrcd', ++ 'offset' => '72', ++ 'type' => '12420' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr_ex', ++ 'Size' => '136', ++ 'Type' => 'Struct' ++ }, ++ '61130' => { ++ 'Header' => undef, ++ 'Line' => '1079', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rate_limit', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'max_burst_sz', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'typical_pkt_sz', ++ 'offset' => '8', ++ 'type' => '932' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '12', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_rate_limit_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '62080' => { ++ 'Header' => undef, ++ 'Line' => '1177', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WR_TAG_ADD', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WR_TAG_DEL', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_WR_TAG_SYNC', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_ops_wr_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '62118' => { ++ 'Header' => undef, ++ 'Line' => '1196', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'recv_wr_id', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'sg_list', ++ 'offset' => '8', ++ 'type' => '14748' ++ }, ++ '2' => { ++ 'name' => 'num_sge', ++ 'offset' => '16', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'tag', ++ 'offset' => '24', ++ 'type' => '956' ++ }, ++ '4' => { ++ 'name' => 'mask', ++ 'offset' => '32', ++ 'type' => '956' ++ } ++ }, ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '62199' => { ++ 'Header' => undef, ++ 'Line' => '1193', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unexpected_cnt', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'add', ++ 'offset' => '8', ++ 'type' => '62118' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '62252' => { ++ 'Header' => undef, ++ 'Line' => '1188', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '62336' ++ }, ++ '2' => { ++ 'name' => 'opcode', ++ 'offset' => '16', ++ 'type' => '62080' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'offset' => '20', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'tm', ++ 'offset' => '24', ++ 'type' => '62199' ++ } ++ }, ++ 'Name' => 'struct ibv_ops_wr', ++ 'Size' => '72', ++ 'Type' => 'Struct' ++ }, ++ '62336' => { ++ 'BaseType' => '62252', ++ 'Name' => 'struct ibv_ops_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '62436' => { ++ 'Header' => undef, ++ 'Line' => '1437', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'vendor_id', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'options', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_ece', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '62555' => { ++ 'Header' => undef, ++ 'Line' => '1471', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_poll_cq_attr', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '62584' => { ++ 'Header' => undef, ++ 'Line' => '1475', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'tag', ++ 'offset' => '0', ++ 'type' => '956' ++ }, ++ '1' => { ++ 'name' => 'priv', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_wc_tm_info', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '62627' => { ++ 'Header' => undef, ++ 'Line' => '1480', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'offset' => '8', ++ 'type' => '15787' ++ }, ++ '10' => { ++ 'name' => 'status', ++ 'offset' => '132', ++ 'type' => '10907' ++ }, ++ '11' => { ++ 'name' => 'wr_id', ++ 'offset' => '136', ++ 'type' => '956' ++ }, ++ '12' => { ++ 'name' => 'start_poll', ++ 'offset' => '144', ++ 'type' => '63099' ++ }, ++ '13' => { ++ 'name' => 'next_poll', ++ 'offset' => '152', ++ 'type' => '63120' ++ }, ++ '14' => { ++ 'name' => 'end_poll', ++ 'offset' => '160', ++ 'type' => '63137' ++ }, ++ '15' => { ++ 'name' => 'read_opcode', ++ 'offset' => '168', ++ 'type' => '63158' ++ }, ++ '16' => { ++ 'name' => 'read_vendor_err', ++ 'offset' => '176', ++ 'type' => '63179' ++ }, ++ '17' => { ++ 'name' => 'read_byte_len', ++ 'offset' => '184', ++ 'type' => '63179' ++ }, ++ '18' => { ++ 'name' => 'read_imm_data', ++ 'offset' => '192', ++ 'type' => '63200' ++ }, ++ '19' => { ++ 'name' => 'read_qp_num', ++ 'offset' => '200', ++ 'type' => '63179' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '20' => { ++ 'name' => 'read_src_qp', ++ 'offset' => '208', ++ 'type' => '63179' ++ }, ++ '21' => { ++ 'name' => 'read_wc_flags', ++ 'offset' => '216', ++ 'type' => '63221' ++ }, ++ '22' => { ++ 'name' => 'read_slid', ++ 'offset' => '224', ++ 'type' => '63179' ++ }, ++ '23' => { ++ 'name' => 'read_sl', ++ 'offset' => '232', ++ 'type' => '63242' ++ }, ++ '24' => { ++ 'name' => 'read_dlid_path_bits', ++ 'offset' => '240', ++ 'type' => '63242' ++ }, ++ '25' => { ++ 'name' => 'read_completion_ts', ++ 'offset' => '248', ++ 'type' => '63263' ++ }, ++ '26' => { ++ 'name' => 'read_cvlan', ++ 'offset' => '256', ++ 'type' => '63284' ++ }, ++ '27' => { ++ 'name' => 'read_flow_tag', ++ 'offset' => '264', ++ 'type' => '63179' ++ }, ++ '28' => { ++ 'name' => 'read_tm_info', ++ 'offset' => '272', ++ 'type' => '63312' ++ }, ++ '29' => { ++ 'name' => 'read_completion_wallclock_ns', ++ 'offset' => '280', ++ 'type' => '63263' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'cqe', ++ 'offset' => '28', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '53297' ++ }, ++ '6' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '53371' ++ }, ++ '7' => { ++ 'name' => 'comp_events_completed', ++ 'offset' => '120', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'async_events_completed', ++ 'offset' => '124', ++ 'type' => '944' ++ }, ++ '9' => { ++ 'name' => 'comp_mask', ++ 'offset' => '128', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_cq_ex', ++ 'Size' => '288', ++ 'Type' => 'Struct' ++ }, ++ '63087' => { ++ 'BaseType' => '62627', ++ 'Name' => 'struct ibv_cq_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '63093' => { ++ 'BaseType' => '62555', ++ 'Name' => 'struct ibv_poll_cq_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '63099' => { ++ 'Name' => 'int(*)(struct ibv_cq_ex*, struct ibv_poll_cq_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ }, ++ '1' => { ++ 'type' => '63093' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63120' => { ++ 'Name' => 'int(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63137' => { ++ 'Name' => 'void(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63158' => { ++ 'Name' => 'enum ibv_wc_opcode(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '11071', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63179' => { ++ 'Name' => 'uint32_t(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '944', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63200' => { ++ 'Name' => '__be32(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '1040', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63221' => { ++ 'Name' => 'unsigned int(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63242' => { ++ 'Name' => 'uint8_t(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '920', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63263' => { ++ 'Name' => 'uint64_t(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '956', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63284' => { ++ 'Name' => 'uint16_t(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ } ++ }, ++ 'Return' => '932', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63306' => { ++ 'BaseType' => '62584', ++ 'Name' => 'struct ibv_wc_tm_info*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '63312' => { ++ 'Name' => 'void(*)(struct ibv_cq_ex*, struct ibv_wc_tm_info*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '63087' ++ }, ++ '1' => { ++ 'type' => '63306' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '63682' => { ++ 'Header' => undef, ++ 'Line' => '1897', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'esp_attr', ++ 'offset' => '0', ++ 'type' => '63837' ++ }, ++ '1' => { ++ 'name' => 'keymat_proto', ++ 'offset' => '8', ++ 'type' => '54379' ++ }, ++ '2' => { ++ 'name' => 'keymat_len', ++ 'offset' => '12', ++ 'type' => '932' ++ }, ++ '3' => { ++ 'name' => 'keymat_ptr', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'replay_proto', ++ 'offset' => '24', ++ 'type' => '54404' ++ }, ++ '5' => { ++ 'name' => 'replay_len', ++ 'offset' => '28', ++ 'type' => '932' ++ }, ++ '6' => { ++ 'name' => 'replay_ptr', ++ 'offset' => '32', ++ 'type' => '71' ++ }, ++ '7' => { ++ 'name' => 'esp_encap', ++ 'offset' => '40', ++ 'type' => '54562' ++ }, ++ '8' => { ++ 'name' => 'comp_mask', ++ 'offset' => '48', ++ 'type' => '944' ++ }, ++ '9' => { ++ 'name' => 'esn', ++ 'offset' => '52', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_flow_action_esp_attr', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '63837' => { ++ 'BaseType' => '54568', ++ 'Name' => 'struct ib_uverbs_flow_action_esp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '64' => { ++ 'Name' => 'unsigned int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '64925' => { ++ 'Header' => undef, ++ 'Line' => '2006', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cqe', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'cq_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'channel', ++ 'offset' => '16', ++ 'type' => '15787' ++ }, ++ '3' => { ++ 'name' => 'comp_vector', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'wc_flags', ++ 'offset' => '32', ++ 'type' => '956' ++ }, ++ '5' => { ++ 'name' => 'comp_mask', ++ 'offset' => '40', ++ 'type' => '944' ++ }, ++ '6' => { ++ 'name' => 'flags', ++ 'offset' => '44', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'parent_domain', ++ 'offset' => '48', ++ 'type' => '12044' ++ } ++ }, ++ 'Name' => 'struct ibv_cq_init_attr_ex', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '65052' => { ++ 'BaseType' => '64925', ++ 'Name' => 'struct ibv_cq_init_attr_ex const', ++ 'Size' => '56', ++ 'Type' => 'Const' ++ }, ++ '65057' => { ++ 'Header' => undef, ++ 'Line' => '2039', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'pd', ++ 'offset' => '0', ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'name' => 'td', ++ 'offset' => '8', ++ 'type' => '65154' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'alloc', ++ 'offset' => '24', ++ 'type' => '65195' ++ }, ++ '4' => { ++ 'name' => 'free', ++ 'offset' => '32', ++ 'type' => '65227' ++ }, ++ '5' => { ++ 'name' => 'pd_context', ++ 'offset' => '40', ++ 'type' => '71' ++ } ++ }, ++ 'Name' => 'struct ibv_parent_domain_init_attr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '65154' => { ++ 'BaseType' => '58820', ++ 'Name' => 'struct ibv_td*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '65195' => { ++ 'Name' => 'void*(*)(struct ibv_pd*, void*, size_t, size_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '71' ++ }, ++ '2' => { ++ 'type' => '52' ++ }, ++ '3' => { ++ 'type' => '52' ++ }, ++ '4' => { ++ 'type' => '956' ++ } ++ }, ++ 'Return' => '71', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '65227' => { ++ 'Name' => 'void(*)(struct ibv_pd*, void*, void*, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '71' ++ }, ++ '2' => { ++ 'type' => '71' ++ }, ++ '3' => { ++ 'type' => '956' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '65262' => { ++ 'Header' => undef, ++ 'Line' => '2058', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_COUNTER_PACKETS', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_COUNTER_BYTES', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum ibv_counter_description', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '65294' => { ++ 'Header' => undef, ++ 'Line' => '2063', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'counter_desc', ++ 'offset' => '0', ++ 'type' => '65262' ++ }, ++ '1' => { ++ 'name' => 'index', ++ 'offset' => '4', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_counter_attach_attr', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '65351' => { ++ 'Header' => undef, ++ 'Line' => '2078', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '944' ++ }, ++ '1' => { ++ 'name' => 'raw_clock', ++ 'offset' => '8', ++ 'type' => '52772' ++ } ++ }, ++ 'Name' => 'struct ibv_values_ex', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '65394' => { ++ 'Header' => undef, ++ 'Line' => '2083', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'query_port', ++ 'offset' => '0', ++ 'type' => '66028' ++ }, ++ '1' => { ++ 'name' => 'advise_mr', ++ 'offset' => '8', ++ 'type' => '66069' ++ }, ++ '10' => { ++ 'name' => 'modify_flow_action_esp', ++ 'offset' => '80', ++ 'type' => '66360' ++ }, ++ '11' => { ++ 'name' => 'destroy_flow_action', ++ 'offset' => '88', ++ 'type' => '66381' ++ }, ++ '12' => { ++ 'name' => 'create_flow_action_esp', ++ 'offset' => '96', ++ 'type' => '66407' ++ }, ++ '13' => { ++ 'name' => 'modify_qp_rate_limit', ++ 'offset' => '104', ++ 'type' => '66439' ++ }, ++ '14' => { ++ 'name' => 'alloc_parent_domain', ++ 'offset' => '112', ++ 'type' => '66471' ++ }, ++ '15' => { ++ 'name' => 'dealloc_td', ++ 'offset' => '120', ++ 'type' => '66492' ++ }, ++ '16' => { ++ 'name' => 'alloc_td', ++ 'offset' => '128', ++ 'type' => '66524' ++ }, ++ '17' => { ++ 'name' => 'modify_cq', ++ 'offset' => '136', ++ 'type' => '66556' ++ }, ++ '18' => { ++ 'name' => 'post_srq_ops', ++ 'offset' => '144', ++ 'type' => '66593' ++ }, ++ '19' => { ++ 'name' => 'destroy_rwq_ind_table', ++ 'offset' => '152', ++ 'type' => '66614' ++ }, ++ '2' => { ++ 'name' => 'alloc_null_mr', ++ 'offset' => '16', ++ 'type' => '66090' ++ }, ++ '20' => { ++ 'name' => 'create_rwq_ind_table', ++ 'offset' => '160', ++ 'type' => '66646' ++ }, ++ '21' => { ++ 'name' => 'destroy_wq', ++ 'offset' => '168', ++ 'type' => '66667' ++ }, ++ '22' => { ++ 'name' => 'modify_wq', ++ 'offset' => '176', ++ 'type' => '66699' ++ }, ++ '23' => { ++ 'name' => 'create_wq', ++ 'offset' => '184', ++ 'type' => '66731' ++ }, ++ '24' => { ++ 'name' => 'query_rt_values', ++ 'offset' => '192', ++ 'type' => '66763' ++ }, ++ '25' => { ++ 'name' => 'create_cq_ex', ++ 'offset' => '200', ++ 'type' => '66795' ++ }, ++ '26' => { ++ 'name' => 'priv', ++ 'offset' => '208', ++ 'type' => '66882' ++ }, ++ '27' => { ++ 'name' => 'query_device_ex', ++ 'offset' => '216', ++ 'type' => '66930' ++ }, ++ '28' => { ++ 'name' => 'ibv_destroy_flow', ++ 'offset' => '224', ++ 'type' => '66951' ++ }, ++ '29' => { ++ 'name' => 'ABI_placeholder2', ++ 'offset' => '232', ++ 'type' => '66958' ++ }, ++ '3' => { ++ 'name' => 'read_counters', ++ 'offset' => '24', ++ 'type' => '66132' ++ }, ++ '30' => { ++ 'name' => 'ibv_create_flow', ++ 'offset' => '240', ++ 'type' => '66990' ++ }, ++ '31' => { ++ 'name' => 'ABI_placeholder1', ++ 'offset' => '248', ++ 'type' => '66958' ++ }, ++ '32' => { ++ 'name' => 'open_qp', ++ 'offset' => '256', ++ 'type' => '67022' ++ }, ++ '33' => { ++ 'name' => 'create_qp_ex', ++ 'offset' => '264', ++ 'type' => '67054' ++ }, ++ '34' => { ++ 'name' => 'get_srq_num', ++ 'offset' => '272', ++ 'type' => '67086' ++ }, ++ '35' => { ++ 'name' => 'create_srq_ex', ++ 'offset' => '280', ++ 'type' => '67118' ++ }, ++ '36' => { ++ 'name' => 'open_xrcd', ++ 'offset' => '288', ++ 'type' => '67150' ++ }, ++ '37' => { ++ 'name' => 'close_xrcd', ++ 'offset' => '296', ++ 'type' => '67171' ++ }, ++ '38' => { ++ 'name' => '_ABI_placeholder3', ++ 'offset' => '304', ++ 'type' => '956' ++ }, ++ '39' => { ++ 'name' => 'sz', ++ 'offset' => '312', ++ 'type' => '52' ++ }, ++ '4' => { ++ 'name' => 'attach_counters_point_flow', ++ 'offset' => '32', ++ 'type' => '66175' ++ }, ++ '40' => { ++ 'name' => 'context', ++ 'offset' => '320', ++ 'type' => '9514' ++ }, ++ '5' => { ++ 'name' => 'create_counters', ++ 'offset' => '40', ++ 'type' => '66207' ++ }, ++ '6' => { ++ 'name' => 'destroy_counters', ++ 'offset' => '48', ++ 'type' => '66228' ++ }, ++ '7' => { ++ 'name' => 'reg_dm_mr', ++ 'offset' => '56', ++ 'type' => '66269' ++ }, ++ '8' => { ++ 'name' => 'alloc_dm', ++ 'offset' => '64', ++ 'type' => '66301' ++ }, ++ '9' => { ++ 'name' => 'free_dm', ++ 'offset' => '72', ++ 'type' => '66322' ++ } ++ }, ++ 'Name' => 'struct verbs_context', ++ 'Size' => '648', ++ 'Type' => 'Struct' ++ }, ++ '66022' => { ++ 'BaseType' => '56700', ++ 'Name' => 'struct ibv_port_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66028' => { ++ 'Name' => 'int(*)(struct ibv_context*, uint8_t, struct ibv_port_attr*, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '920' ++ }, ++ '2' => { ++ 'type' => '66022' ++ }, ++ '3' => { ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66069' => { ++ 'Name' => 'int(*)(struct ibv_pd*, enum ib_uverbs_advise_mr_advice, uint32_t, struct ibv_sge*, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '54649' ++ }, ++ '2' => { ++ 'type' => '944' ++ }, ++ '3' => { ++ 'type' => '14748' ++ }, ++ '4' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66090' => { ++ 'Name' => 'struct ibv_mr*(*)(struct ibv_pd*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ } ++ }, ++ 'Return' => '11828', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66132' => { ++ 'Name' => 'int(*)(struct ibv_counters*, uint64_t*, uint32_t, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17521' ++ }, ++ '1' => { ++ 'type' => '48730' ++ }, ++ '2' => { ++ 'type' => '944' ++ }, ++ '3' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66163' => { ++ 'BaseType' => '65294', ++ 'Name' => 'struct ibv_counter_attach_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66175' => { ++ 'Name' => 'int(*)(struct ibv_counters*, struct ibv_counter_attach_attr*, struct ibv_flow*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17521' ++ }, ++ '1' => { ++ 'type' => '66163' ++ }, ++ '2' => { ++ 'type' => '18997' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66207' => { ++ 'Name' => 'struct ibv_counters*(*)(struct ibv_context*, struct ibv_counters_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '48736' ++ } ++ }, ++ 'Return' => '17521', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66228' => { ++ 'Name' => 'int(*)(struct ibv_counters*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17521' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66269' => { ++ 'Name' => 'struct ibv_mr*(*)(struct ibv_pd*, struct ibv_dm*, uint64_t, size_t, unsigned int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '55227' ++ }, ++ '2' => { ++ 'type' => '956' ++ }, ++ '3' => { ++ 'type' => '52' ++ }, ++ '4' => { ++ 'type' => '64' ++ } ++ }, ++ 'Return' => '11828', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66295' => { ++ 'BaseType' => '54940', ++ 'Name' => 'struct ibv_alloc_dm_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66301' => { ++ 'Name' => 'struct ibv_dm*(*)(struct ibv_context*, struct ibv_alloc_dm_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '66295' ++ } ++ }, ++ 'Return' => '55227', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66322' => { ++ 'Name' => 'int(*)(struct ibv_dm*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '55227' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66348' => { ++ 'BaseType' => '17395', ++ 'Name' => 'struct ibv_flow_action*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66354' => { ++ 'BaseType' => '63682', ++ 'Name' => 'struct ibv_flow_action_esp_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66360' => { ++ 'Name' => 'int(*)(struct ibv_flow_action*, struct ibv_flow_action_esp_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '66348' ++ }, ++ '1' => { ++ 'type' => '66354' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66381' => { ++ 'Name' => 'int(*)(struct ibv_flow_action*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '66348' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66407' => { ++ 'Name' => 'struct ibv_flow_action*(*)(struct ibv_context*, struct ibv_flow_action_esp_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '66354' ++ } ++ }, ++ 'Return' => '66348', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66433' => { ++ 'BaseType' => '61130', ++ 'Name' => 'struct ibv_qp_rate_limit_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66439' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_qp_rate_limit_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '66433' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66465' => { ++ 'BaseType' => '65057', ++ 'Name' => 'struct ibv_parent_domain_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66471' => { ++ 'Name' => 'struct ibv_pd*(*)(struct ibv_context*, struct ibv_parent_domain_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '66465' ++ } ++ }, ++ 'Return' => '12044', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66492' => { ++ 'Name' => 'int(*)(struct ibv_td*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '65154' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66518' => { ++ 'BaseType' => '58791', ++ 'Name' => 'struct ibv_td_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66524' => { ++ 'Name' => 'struct ibv_td*(*)(struct ibv_context*, struct ibv_td_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '66518' ++ } ++ }, ++ 'Return' => '65154', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66556' => { ++ 'Name' => 'int(*)(struct ibv_cq*, struct ibv_modify_cq_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10380' ++ }, ++ '1' => { ++ 'type' => '19003' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66587' => { ++ 'BaseType' => '62336', ++ 'Name' => 'struct ibv_ops_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66593' => { ++ 'Name' => 'int(*)(struct ibv_srq*, struct ibv_ops_wr*, struct ibv_ops_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'type' => '62336' ++ }, ++ '2' => { ++ 'type' => '66587' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66614' => { ++ 'Name' => 'int(*)(struct ibv_rwq_ind_table*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '13095' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66646' => { ++ 'Name' => 'struct ibv_rwq_ind_table*(*)(struct ibv_context*, struct ibv_rwq_ind_table_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '19009' ++ } ++ }, ++ 'Return' => '13095', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66667' => { ++ 'Name' => 'int(*)(struct ibv_wq*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10901' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66699' => { ++ 'Name' => 'int(*)(struct ibv_wq*, struct ibv_wq_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10901' ++ }, ++ '1' => { ++ 'type' => '19015' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66725' => { ++ 'BaseType' => '59591', ++ 'Name' => 'struct ibv_wq_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66731' => { ++ 'Name' => 'struct ibv_wq*(*)(struct ibv_context*, struct ibv_wq_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '66725' ++ } ++ }, ++ 'Return' => '10901', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66757' => { ++ 'BaseType' => '65351', ++ 'Name' => 'struct ibv_values_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66763' => { ++ 'Name' => 'int(*)(struct ibv_context*, struct ibv_values_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '66757' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66789' => { ++ 'BaseType' => '64925', ++ 'Name' => 'struct ibv_cq_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66795' => { ++ 'Name' => 'struct ibv_cq_ex*(*)(struct ibv_context*, struct ibv_cq_init_attr_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '66789' ++ } ++ }, ++ 'Return' => '63087', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66801' => { ++ 'Header' => undef, ++ 'Line' => '72', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unsupported_ioctls', ++ 'offset' => '0', ++ 'type' => '70473' ++ }, ++ '1' => { ++ 'name' => 'driver_id', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'use_ioctl_write', ++ 'offset' => '20', ++ 'type' => '19039' ++ }, ++ '3' => { ++ 'name' => 'ops', ++ 'offset' => '24', ++ 'type' => '68184' ++ }, ++ '4' => { ++ 'name' => 'imported', ++ 'offset' => '632', ++ 'type' => '19039' ++ } ++ }, ++ 'Name' => 'struct verbs_ex_private', ++ 'Size' => '640', ++ 'Type' => 'Struct' ++ }, ++ '66882' => { ++ 'BaseType' => '66801', ++ 'Name' => 'struct verbs_ex_private*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66918' => { ++ 'BaseType' => '55864', ++ 'Name' => 'struct ibv_query_device_ex_input const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66924' => { ++ 'BaseType' => '56326', ++ 'Name' => 'struct ibv_device_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '66930' => { ++ 'Name' => 'int(*)(struct ibv_context*, struct ibv_query_device_ex_input const*, struct ibv_device_attr_ex*, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '66918' ++ }, ++ '2' => { ++ 'type' => '66924' ++ }, ++ '3' => { ++ 'type' => '52' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66951' => { ++ 'Name' => 'int(*)(struct ibv_flow*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '18997' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66958' => { ++ 'Name' => 'void(*)()', ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '66990' => { ++ 'Name' => 'struct ibv_flow*(*)(struct ibv_qp*, struct ibv_flow_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '19021' ++ } ++ }, ++ 'Return' => '18997', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '67022' => { ++ 'Name' => 'struct ibv_qp*(*)(struct ibv_context*, struct ibv_qp_open_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '19027' ++ } ++ }, ++ 'Return' => '10582', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '67048' => { ++ 'BaseType' => '60316', ++ 'Name' => 'struct ibv_qp_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '67054' => { ++ 'Name' => 'struct ibv_qp*(*)(struct ibv_context*, struct ibv_qp_init_attr_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '67048' ++ } ++ }, ++ 'Return' => '10582', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '67080' => { ++ 'BaseType' => '944', ++ 'Name' => 'uint32_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '67086' => { ++ 'Name' => 'int(*)(struct ibv_srq*, uint32_t*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'type' => '67080' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '67112' => { ++ 'BaseType' => '59434', ++ 'Name' => 'struct ibv_srq_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '67118' => { ++ 'Name' => 'struct ibv_srq*(*)(struct ibv_context*, struct ibv_srq_init_attr_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '67112' ++ } ++ }, ++ 'Return' => '10700', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '67150' => { ++ 'Name' => 'struct ibv_xrcd*(*)(struct ibv_context*, struct ibv_xrcd_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '19033' ++ } ++ }, ++ 'Return' => '12420', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '67171' => { ++ 'Name' => 'int(*)(struct ibv_xrcd*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12420' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '67427' => { ++ 'Header' => undef, ++ 'Line' => '181', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'user_handle', ++ 'offset' => '8', ++ 'type' => '1016' ++ }, ++ '2' => { ++ 'name' => 'cqe', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'comp_vector', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'comp_channel', ++ 'offset' => '24', ++ 'type' => '52329' ++ }, ++ '5' => { ++ 'name' => 'reserved', ++ 'offset' => '28', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'driver_data', ++ 'offset' => '32', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '67548' => { ++ 'Header' => undef, ++ 'Line' => '181', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '67427' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '53863' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '67578' => { ++ 'Header' => undef, ++ 'Line' => '181', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '67548' ++ } ++ }, ++ 'Name' => 'struct ibv_create_cq', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '67793' => { ++ 'Header' => undef, ++ 'Line' => '211', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'user_handle', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'cqe', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'comp_vector', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'comp_channel', ++ 'offset' => '16', ++ 'type' => '52329' ++ }, ++ '4' => { ++ 'name' => 'comp_mask', ++ 'offset' => '20', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'flags', ++ 'offset' => '24', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'reserved', ++ 'offset' => '28', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '67896' => { ++ 'Header' => undef, ++ 'Line' => '211', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '67793' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '54028' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '67926' => { ++ 'Header' => undef, ++ 'Line' => '211', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '19046' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '67896' ++ } ++ }, ++ 'Name' => 'struct ibv_create_cq_ex', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '68122' => { ++ 'Header' => undef, ++ 'Line' => '170', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cq', ++ 'offset' => '0', ++ 'type' => '10239' ++ }, ++ '1' => { ++ 'name' => 'cq_ex', ++ 'offset' => '0', ++ 'type' => '62627' ++ } ++ }, ++ 'Size' => '288', ++ 'Type' => 'Union' ++ }, ++ '68156' => { ++ 'Header' => undef, ++ 'Line' => '169', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '68122' ++ } ++ }, ++ 'Name' => 'struct verbs_cq', ++ 'Size' => '288', ++ 'Type' => 'Struct' ++ }, ++ '68184' => { ++ 'Header' => undef, ++ 'Line' => '311', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'advise_mr', ++ 'offset' => '0', ++ 'type' => '66069' ++ }, ++ '1' => { ++ 'name' => 'alloc_dm', ++ 'offset' => '8', ++ 'type' => '66301' ++ }, ++ '10' => { ++ 'name' => 'bind_mw', ++ 'offset' => '80', ++ 'type' => '18808' ++ }, ++ '11' => { ++ 'name' => 'close_xrcd', ++ 'offset' => '88', ++ 'type' => '67171' ++ }, ++ '12' => { ++ 'name' => 'cq_event', ++ 'offset' => '96', ++ 'type' => '69405' ++ }, ++ '13' => { ++ 'name' => 'create_ah', ++ 'offset' => '104', ++ 'type' => '69437' ++ }, ++ '14' => { ++ 'name' => 'create_counters', ++ 'offset' => '112', ++ 'type' => '66207' ++ }, ++ '15' => { ++ 'name' => 'create_cq', ++ 'offset' => '120', ++ 'type' => '69473' ++ }, ++ '16' => { ++ 'name' => 'create_cq_ex', ++ 'offset' => '128', ++ 'type' => '66795' ++ }, ++ '17' => { ++ 'name' => 'create_flow', ++ 'offset' => '136', ++ 'type' => '66990' ++ }, ++ '18' => { ++ 'name' => 'create_flow_action_esp', ++ 'offset' => '144', ++ 'type' => '66407' ++ }, ++ '19' => { ++ 'name' => 'create_qp', ++ 'offset' => '152', ++ 'type' => '69505' ++ }, ++ '2' => { ++ 'name' => 'alloc_mw', ++ 'offset' => '16', ++ 'type' => '18771' ++ }, ++ '20' => { ++ 'name' => 'create_qp_ex', ++ 'offset' => '160', ++ 'type' => '67054' ++ }, ++ '21' => { ++ 'name' => 'create_rwq_ind_table', ++ 'offset' => '168', ++ 'type' => '66646' ++ }, ++ '22' => { ++ 'name' => 'create_srq', ++ 'offset' => '176', ++ 'type' => '69537' ++ }, ++ '23' => { ++ 'name' => 'create_srq_ex', ++ 'offset' => '184', ++ 'type' => '67118' ++ }, ++ '24' => { ++ 'name' => 'create_wq', ++ 'offset' => '192', ++ 'type' => '66731' ++ }, ++ '25' => { ++ 'name' => 'dealloc_mw', ++ 'offset' => '200', ++ 'type' => '18829' ++ }, ++ '26' => { ++ 'name' => 'dealloc_pd', ++ 'offset' => '208', ++ 'type' => '69558' ++ }, ++ '27' => { ++ 'name' => 'dealloc_td', ++ 'offset' => '216', ++ 'type' => '66492' ++ }, ++ '28' => { ++ 'name' => 'dereg_mr', ++ 'offset' => '224', ++ 'type' => '69585' ++ }, ++ '29' => { ++ 'name' => 'destroy_ah', ++ 'offset' => '232', ++ 'type' => '69606' ++ }, ++ '3' => { ++ 'name' => 'alloc_null_mr', ++ 'offset' => '24', ++ 'type' => '66090' ++ }, ++ '30' => { ++ 'name' => 'destroy_counters', ++ 'offset' => '240', ++ 'type' => '66228' ++ }, ++ '31' => { ++ 'name' => 'destroy_cq', ++ 'offset' => '248', ++ 'type' => '69627' ++ }, ++ '32' => { ++ 'name' => 'destroy_flow', ++ 'offset' => '256', ++ 'type' => '66951' ++ }, ++ '33' => { ++ 'name' => 'destroy_flow_action', ++ 'offset' => '264', ++ 'type' => '66381' ++ }, ++ '34' => { ++ 'name' => 'destroy_qp', ++ 'offset' => '272', ++ 'type' => '69648' ++ }, ++ '35' => { ++ 'name' => 'destroy_rwq_ind_table', ++ 'offset' => '280', ++ 'type' => '66614' ++ }, ++ '36' => { ++ 'name' => 'destroy_srq', ++ 'offset' => '288', ++ 'type' => '69669' ++ }, ++ '37' => { ++ 'name' => 'destroy_wq', ++ 'offset' => '296', ++ 'type' => '66667' ++ }, ++ '38' => { ++ 'name' => 'detach_mcast', ++ 'offset' => '304', ++ 'type' => '69388' ++ }, ++ '39' => { ++ 'name' => 'free_context', ++ 'offset' => '312', ++ 'type' => '18151' ++ }, ++ '4' => { ++ 'name' => 'alloc_parent_domain', ++ 'offset' => '32', ++ 'type' => '66471' ++ }, ++ '40' => { ++ 'name' => 'free_dm', ++ 'offset' => '320', ++ 'type' => '66322' ++ }, ++ '41' => { ++ 'name' => 'get_srq_num', ++ 'offset' => '328', ++ 'type' => '67086' ++ }, ++ '42' => { ++ 'name' => 'import_dm', ++ 'offset' => '336', ++ 'type' => '69695' ++ }, ++ '43' => { ++ 'name' => 'import_mr', ++ 'offset' => '344', ++ 'type' => '69721' ++ }, ++ '44' => { ++ 'name' => 'import_pd', ++ 'offset' => '352', ++ 'type' => '69747' ++ }, ++ '45' => { ++ 'name' => 'modify_cq', ++ 'offset' => '360', ++ 'type' => '66556' ++ }, ++ '46' => { ++ 'name' => 'modify_flow_action_esp', ++ 'offset' => '368', ++ 'type' => '66360' ++ }, ++ '47' => { ++ 'name' => 'modify_qp', ++ 'offset' => '376', ++ 'type' => '69784' ++ }, ++ '48' => { ++ 'name' => 'modify_qp_rate_limit', ++ 'offset' => '384', ++ 'type' => '66439' ++ }, ++ '49' => { ++ 'name' => 'modify_srq', ++ 'offset' => '392', ++ 'type' => '69821' ++ }, ++ '5' => { ++ 'name' => 'alloc_pd', ++ 'offset' => '40', ++ 'type' => '69323' ++ }, ++ '50' => { ++ 'name' => 'modify_wq', ++ 'offset' => '400', ++ 'type' => '66699' ++ }, ++ '51' => { ++ 'name' => 'open_qp', ++ 'offset' => '408', ++ 'type' => '67022' ++ }, ++ '52' => { ++ 'name' => 'open_xrcd', ++ 'offset' => '416', ++ 'type' => '67150' ++ }, ++ '53' => { ++ 'name' => 'poll_cq', ++ 'offset' => '424', ++ 'type' => '18866' ++ }, ++ '54' => { ++ 'name' => 'post_recv', ++ 'offset' => '432', ++ 'type' => '18991' ++ }, ++ '55' => { ++ 'name' => 'post_send', ++ 'offset' => '440', ++ 'type' => '18960' ++ }, ++ '56' => { ++ 'name' => 'post_srq_ops', ++ 'offset' => '448', ++ 'type' => '66593' ++ }, ++ '57' => { ++ 'name' => 'post_srq_recv', ++ 'offset' => '456', ++ 'type' => '18923' ++ }, ++ '58' => { ++ 'name' => 'query_device_ex', ++ 'offset' => '464', ++ 'type' => '66930' ++ }, ++ '59' => { ++ 'name' => 'query_ece', ++ 'offset' => '472', ++ 'type' => '69853' ++ }, ++ '6' => { ++ 'name' => 'alloc_td', ++ 'offset' => '48', ++ 'type' => '66524' ++ }, ++ '60' => { ++ 'name' => 'query_port', ++ 'offset' => '480', ++ 'type' => '69884' ++ }, ++ '61' => { ++ 'name' => 'query_qp', ++ 'offset' => '488', ++ 'type' => '69920' ++ }, ++ '62' => { ++ 'name' => 'query_qp_data_in_order', ++ 'offset' => '496', ++ 'type' => '69951' ++ }, ++ '63' => { ++ 'name' => 'query_rt_values', ++ 'offset' => '504', ++ 'type' => '66763' ++ }, ++ '64' => { ++ 'name' => 'query_srq', ++ 'offset' => '512', ++ 'type' => '69977' ++ }, ++ '65' => { ++ 'name' => 'read_counters', ++ 'offset' => '520', ++ 'type' => '66132' ++ }, ++ '66' => { ++ 'name' => 'reg_dm_mr', ++ 'offset' => '528', ++ 'type' => '66269' ++ }, ++ '67' => { ++ 'name' => 'reg_dmabuf_mr', ++ 'offset' => '536', ++ 'type' => '70023' ++ }, ++ '68' => { ++ 'name' => 'reg_mr', ++ 'offset' => '544', ++ 'type' => '70064' ++ }, ++ '69' => { ++ 'name' => 'req_notify_cq', ++ 'offset' => '552', ++ 'type' => '18892' ++ }, ++ '7' => { ++ 'name' => 'async_event', ++ 'offset' => '56', ++ 'type' => '69351' ++ }, ++ '70' => { ++ 'name' => 'rereg_mr', ++ 'offset' => '560', ++ 'type' => '70110' ++ }, ++ '71' => { ++ 'name' => 'resize_cq', ++ 'offset' => '568', ++ 'type' => '18892' ++ }, ++ '72' => { ++ 'name' => 'set_ece', ++ 'offset' => '576', ++ 'type' => '69853' ++ }, ++ '73' => { ++ 'name' => 'unimport_dm', ++ 'offset' => '584', ++ 'type' => '70127' ++ }, ++ '74' => { ++ 'name' => 'unimport_mr', ++ 'offset' => '592', ++ 'type' => '70144' ++ }, ++ '75' => { ++ 'name' => 'unimport_pd', ++ 'offset' => '600', ++ 'type' => '70161' ++ }, ++ '8' => { ++ 'name' => 'attach_counters_point_flow', ++ 'offset' => '64', ++ 'type' => '66175' ++ }, ++ '9' => { ++ 'name' => 'attach_mcast', ++ 'offset' => '72', ++ 'type' => '69388' ++ } ++ }, ++ 'Name' => 'struct verbs_context_ops', ++ 'Size' => '608', ++ 'Type' => 'Struct' ++ }, ++ '69323' => { ++ 'Name' => 'struct ibv_pd*(*)(struct ibv_context*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ } ++ }, ++ 'Return' => '12044', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69345' => { ++ 'BaseType' => '57904', ++ 'Name' => 'struct ibv_async_event*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '69351' => { ++ 'Name' => 'void(*)(struct ibv_context*, struct ibv_async_event*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '69345' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69388' => { ++ 'Name' => 'int(*)(struct ibv_qp*, union ibv_gid const*, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '24569' ++ }, ++ '2' => { ++ 'type' => '932' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69405' => { ++ 'Name' => 'void(*)(struct ibv_cq*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10380' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69437' => { ++ 'Name' => 'struct ibv_ah*(*)(struct ibv_pd*, struct ibv_ah_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '24575' ++ } ++ }, ++ 'Return' => '14352', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69473' => { ++ 'Name' => 'struct ibv_cq*(*)(struct ibv_context*, int, struct ibv_comp_channel*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '130' ++ }, ++ '2' => { ++ 'type' => '15787' ++ }, ++ '3' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '10380', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69505' => { ++ 'Name' => 'struct ibv_qp*(*)(struct ibv_pd*, struct ibv_qp_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '24581' ++ } ++ }, ++ 'Return' => '10582', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69531' => { ++ 'BaseType' => '59310', ++ 'Name' => 'struct ibv_srq_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '69537' => { ++ 'Name' => 'struct ibv_srq*(*)(struct ibv_pd*, struct ibv_srq_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '69531' ++ } ++ }, ++ 'Return' => '10700', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69558' => { ++ 'Name' => 'int(*)(struct ibv_pd*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69585' => { ++ 'Name' => 'int(*)(struct verbs_mr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '24587' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69606' => { ++ 'Name' => 'int(*)(struct ibv_ah*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '14352' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69627' => { ++ 'Name' => 'int(*)(struct ibv_cq*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10380' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69648' => { ++ 'Name' => 'int(*)(struct ibv_qp*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69669' => { ++ 'Name' => 'int(*)(struct ibv_srq*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10700' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69695' => { ++ 'Name' => 'struct ibv_dm*(*)(struct ibv_context*, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '55227', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69721' => { ++ 'Name' => 'struct ibv_mr*(*)(struct ibv_pd*, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '11828', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69747' => { ++ 'Name' => 'struct ibv_pd*(*)(struct ibv_context*, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '12044', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69784' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_qp_attr*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69821' => { ++ 'Name' => 'int(*)(struct ibv_srq*, struct ibv_srq_attr*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'type' => '24599' ++ }, ++ '2' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69847' => { ++ 'BaseType' => '62436', ++ 'Name' => 'struct ibv_ece*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '69853' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_ece*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '69847' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69884' => { ++ 'Name' => 'int(*)(struct ibv_context*, uint8_t, struct ibv_port_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9633' ++ }, ++ '1' => { ++ 'type' => '920' ++ }, ++ '2' => { ++ 'type' => '66022' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69920' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_qp_attr*, int, struct ibv_qp_init_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '24593' ++ }, ++ '2' => { ++ 'type' => '130' ++ }, ++ '3' => { ++ 'type' => '24581' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69951' => { ++ 'Name' => 'int(*)(struct ibv_qp*, enum ibv_wr_opcode, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10582' ++ }, ++ '1' => { ++ 'type' => '13899' ++ }, ++ '2' => { ++ 'type' => '944' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '69977' => { ++ 'Name' => 'int(*)(struct ibv_srq*, struct ibv_srq_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10700' ++ }, ++ '1' => { ++ 'type' => '24599' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '70023' => { ++ 'Name' => 'struct ibv_mr*(*)(struct ibv_pd*, uint64_t, size_t, uint64_t, int, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '956' ++ }, ++ '2' => { ++ 'type' => '52' ++ }, ++ '3' => { ++ 'type' => '956' ++ }, ++ '4' => { ++ 'type' => '130' ++ }, ++ '5' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '11828', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '70064' => { ++ 'Name' => 'struct ibv_mr*(*)(struct ibv_pd*, void*, size_t, uint64_t, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ }, ++ '1' => { ++ 'type' => '71' ++ }, ++ '2' => { ++ 'type' => '52' ++ }, ++ '3' => { ++ 'type' => '956' ++ }, ++ '4' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '11828', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '70110' => { ++ 'Name' => 'int(*)(struct verbs_mr*, int, struct ibv_pd*, void*, size_t, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '24587' ++ }, ++ '1' => { ++ 'type' => '130' ++ }, ++ '2' => { ++ 'type' => '12044' ++ }, ++ '3' => { ++ 'type' => '71' ++ }, ++ '4' => { ++ 'type' => '52' ++ }, ++ '5' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '70127' => { ++ 'Name' => 'void(*)(struct ibv_dm*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '55227' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '70144' => { ++ 'Name' => 'void(*)(struct ibv_mr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '11828' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '70161' => { ++ 'Name' => 'void(*)(struct ibv_pd*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '12044' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '70473' => { ++ 'BaseType' => '45', ++ 'Name' => 'unsigned long[2]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '71' => { ++ 'BaseType' => '1', ++ 'Name' => 'void*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '72088' => { ++ 'BaseType' => '65052', ++ 'Name' => 'struct ibv_cq_init_attr_ex const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '72094' => { ++ 'BaseType' => '68156', ++ 'Name' => 'struct verbs_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '72100' => { ++ 'BaseType' => '67926', ++ 'Name' => 'struct ibv_create_cq_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '72106' => { ++ 'BaseType' => '54218', ++ 'Name' => 'struct ib_uverbs_ex_create_cq_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '72588' => { ++ 'BaseType' => '67578', ++ 'Name' => 'struct ibv_create_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '72594' => { ++ 'BaseType' => '54143', ++ 'Name' => 'struct ib_uverbs_create_cq_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '76566' => { ++ 'BaseType' => '45', ++ 'Header' => undef, ++ 'Line' => '145', ++ 'Name' => '__dev_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '76627' => { ++ 'BaseType' => '186', ++ 'Name' => 'char const', ++ 'Size' => '1', ++ 'Type' => 'Const' ++ }, ++ '76632' => { ++ 'BaseType' => '76627', ++ 'Name' => 'char const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '76662' => { ++ 'BaseType' => '76566', ++ 'Header' => undef, ++ 'Line' => '59', ++ 'Name' => 'dev_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '78' => { ++ 'Name' => 'unsigned char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '78185' => { ++ 'Header' => undef, ++ 'Line' => '129', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_cq_moderation_count', ++ 'offset' => '0', ++ 'type' => '992' ++ }, ++ '1' => { ++ 'name' => 'max_cq_moderation_period', ++ 'offset' => '2', ++ 'type' => '992' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '4', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_cq_moderation_caps', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '78359' => { ++ 'Header' => undef, ++ 'Line' => '159', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_get_context', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '78418' => { ++ 'Header' => undef, ++ 'Line' => '164', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'async_fd', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'num_comp_vectors', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_get_context_resp', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '78548' => { ++ 'Header' => undef, ++ 'Line' => '175', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fw_ver', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'node_guid', ++ 'offset' => '8', ++ 'type' => '1052' ++ }, ++ '10' => { ++ 'name' => 'device_cap_flags', ++ 'offset' => '60', ++ 'type' => '1004' ++ }, ++ '11' => { ++ 'name' => 'max_sge', ++ 'offset' => '64', ++ 'type' => '1004' ++ }, ++ '12' => { ++ 'name' => 'max_sge_rd', ++ 'offset' => '68', ++ 'type' => '1004' ++ }, ++ '13' => { ++ 'name' => 'max_cq', ++ 'offset' => '72', ++ 'type' => '1004' ++ }, ++ '14' => { ++ 'name' => 'max_cqe', ++ 'offset' => '76', ++ 'type' => '1004' ++ }, ++ '15' => { ++ 'name' => 'max_mr', ++ 'offset' => '80', ++ 'type' => '1004' ++ }, ++ '16' => { ++ 'name' => 'max_pd', ++ 'offset' => '84', ++ 'type' => '1004' ++ }, ++ '17' => { ++ 'name' => 'max_qp_rd_atom', ++ 'offset' => '88', ++ 'type' => '1004' ++ }, ++ '18' => { ++ 'name' => 'max_ee_rd_atom', ++ 'offset' => '92', ++ 'type' => '1004' ++ }, ++ '19' => { ++ 'name' => 'max_res_rd_atom', ++ 'offset' => '96', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'sys_image_guid', ++ 'offset' => '16', ++ 'type' => '1052' ++ }, ++ '20' => { ++ 'name' => 'max_qp_init_rd_atom', ++ 'offset' => '100', ++ 'type' => '1004' ++ }, ++ '21' => { ++ 'name' => 'max_ee_init_rd_atom', ++ 'offset' => '104', ++ 'type' => '1004' ++ }, ++ '22' => { ++ 'name' => 'atomic_cap', ++ 'offset' => '108', ++ 'type' => '1004' ++ }, ++ '23' => { ++ 'name' => 'max_ee', ++ 'offset' => '112', ++ 'type' => '1004' ++ }, ++ '24' => { ++ 'name' => 'max_rdd', ++ 'offset' => '116', ++ 'type' => '1004' ++ }, ++ '25' => { ++ 'name' => 'max_mw', ++ 'offset' => '120', ++ 'type' => '1004' ++ }, ++ '26' => { ++ 'name' => 'max_raw_ipv6_qp', ++ 'offset' => '124', ++ 'type' => '1004' ++ }, ++ '27' => { ++ 'name' => 'max_raw_ethy_qp', ++ 'offset' => '128', ++ 'type' => '1004' ++ }, ++ '28' => { ++ 'name' => 'max_mcast_grp', ++ 'offset' => '132', ++ 'type' => '1004' ++ }, ++ '29' => { ++ 'name' => 'max_mcast_qp_attach', ++ 'offset' => '136', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'max_mr_size', ++ 'offset' => '24', ++ 'type' => '1016' ++ }, ++ '30' => { ++ 'name' => 'max_total_mcast_qp_attach', ++ 'offset' => '140', ++ 'type' => '1004' ++ }, ++ '31' => { ++ 'name' => 'max_ah', ++ 'offset' => '144', ++ 'type' => '1004' ++ }, ++ '32' => { ++ 'name' => 'max_fmr', ++ 'offset' => '148', ++ 'type' => '1004' ++ }, ++ '33' => { ++ 'name' => 'max_map_per_fmr', ++ 'offset' => '152', ++ 'type' => '1004' ++ }, ++ '34' => { ++ 'name' => 'max_srq', ++ 'offset' => '156', ++ 'type' => '1004' ++ }, ++ '35' => { ++ 'name' => 'max_srq_wr', ++ 'offset' => '160', ++ 'type' => '1004' ++ }, ++ '36' => { ++ 'name' => 'max_srq_sge', ++ 'offset' => '164', ++ 'type' => '1004' ++ }, ++ '37' => { ++ 'name' => 'max_pkeys', ++ 'offset' => '168', ++ 'type' => '992' ++ }, ++ '38' => { ++ 'name' => 'local_ca_ack_delay', ++ 'offset' => '170', ++ 'type' => '980' ++ }, ++ '39' => { ++ 'name' => 'phys_port_cnt', ++ 'offset' => '171', ++ 'type' => '980' ++ }, ++ '4' => { ++ 'name' => 'page_size_cap', ++ 'offset' => '32', ++ 'type' => '1016' ++ }, ++ '40' => { ++ 'name' => 'reserved', ++ 'offset' => '172', ++ 'type' => '79099' ++ }, ++ '5' => { ++ 'name' => 'vendor_id', ++ 'offset' => '40', ++ 'type' => '1004' ++ }, ++ '6' => { ++ 'name' => 'vendor_part_id', ++ 'offset' => '44', ++ 'type' => '1004' ++ }, ++ '7' => { ++ 'name' => 'hw_ver', ++ 'offset' => '48', ++ 'type' => '1004' ++ }, ++ '8' => { ++ 'name' => 'max_qp', ++ 'offset' => '52', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'max_qp_wr', ++ 'offset' => '56', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_query_device_resp', ++ 'Size' => '176', ++ 'Type' => 'Struct' ++ }, ++ '79099' => { ++ 'BaseType' => '980', ++ 'Name' => '__u8[4]', ++ 'Size' => '4', ++ 'Type' => 'Array' ++ }, ++ '79155' => { ++ 'Header' => undef, ++ 'Line' => '226', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rc_odp_caps', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'uc_odp_caps', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'ud_odp_caps', ++ 'offset' => '8', ++ 'type' => '1004' ++ } ++ }, ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '79204' => { ++ 'Header' => undef, ++ 'Line' => '224', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'general_caps', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'per_transport_caps', ++ 'offset' => '8', ++ 'type' => '79155' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '20', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_odp_caps', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '79259' => { ++ 'Header' => undef, ++ 'Line' => '234', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'max_rwq_indirection_tables', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'max_rwq_indirection_table_size', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'reserved', ++ 'offset' => '12', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_rss_caps', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '79325' => { ++ 'Header' => undef, ++ 'Line' => '245', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_rndv_hdr_size', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'max_num_tags', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'max_ops', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'max_sge', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'reserved', ++ 'offset' => '20', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_tm_caps', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '79418' => { ++ 'Header' => undef, ++ 'Line' => '259', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'base', ++ 'offset' => '0', ++ 'type' => '78548' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '176', ++ 'type' => '1004' ++ }, ++ '10' => { ++ 'name' => 'tm_caps', ++ 'offset' => '256', ++ 'type' => '79325' ++ }, ++ '11' => { ++ 'name' => 'cq_moderation_caps', ++ 'offset' => '280', ++ 'type' => '78185' ++ }, ++ '12' => { ++ 'name' => 'max_dm_size', ++ 'offset' => '288', ++ 'type' => '1016' ++ }, ++ '13' => { ++ 'name' => 'xrc_odp_caps', ++ 'offset' => '296', ++ 'type' => '1004' ++ }, ++ '14' => { ++ 'name' => 'reserved', ++ 'offset' => '300', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'response_length', ++ 'offset' => '180', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'odp_caps', ++ 'offset' => '184', ++ 'type' => '79204' ++ }, ++ '4' => { ++ 'name' => 'timestamp_mask', ++ 'offset' => '208', ++ 'type' => '1016' ++ }, ++ '5' => { ++ 'name' => 'hca_core_clock', ++ 'offset' => '216', ++ 'type' => '1016' ++ }, ++ '6' => { ++ 'name' => 'device_cap_flags_ex', ++ 'offset' => '224', ++ 'type' => '1016' ++ }, ++ '7' => { ++ 'name' => 'rss_caps', ++ 'offset' => '232', ++ 'type' => '79259' ++ }, ++ '8' => { ++ 'name' => 'max_wq_type_rq', ++ 'offset' => '248', ++ 'type' => '1004' ++ }, ++ '9' => { ++ 'name' => 'raw_packet_caps', ++ 'offset' => '252', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_query_device_resp', ++ 'Size' => '304', ++ 'Type' => 'Struct' ++ }, ++ '79656' => { ++ 'Header' => undef, ++ 'Line' => '277', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'offset' => '8', ++ 'type' => '980' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '9', ++ 'type' => '1544' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_query_port', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '80593' => { ++ 'Header' => undef, ++ 'Line' => '79', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'gid', ++ 'offset' => '0', ++ 'type' => '9296' ++ }, ++ '1' => { ++ 'name' => 'gid_index', ++ 'offset' => '16', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'port_num', ++ 'offset' => '20', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'gid_type', ++ 'offset' => '24', ++ 'type' => '944' ++ }, ++ '4' => { ++ 'name' => 'ndev_ifindex', ++ 'offset' => '28', ++ 'type' => '944' ++ } ++ }, ++ 'Name' => 'struct ibv_gid_entry', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '85' => { ++ 'Name' => 'unsigned short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ }, ++ '8639' => { ++ 'Header' => undef, ++ 'Line' => '1189', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'srq_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'attr_mask', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'max_wr', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'srq_limit', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_modify_srq', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '8742' => { ++ 'Header' => undef, ++ 'Line' => '1197', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'srq_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_query_srq', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '8903' => { ++ 'Header' => undef, ++ 'Line' => '1254', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'attr_mask', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'wq_handle', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'wq_state', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'curr_wq_state', ++ 'offset' => '12', ++ 'type' => '1004' ++ }, ++ '4' => { ++ 'name' => 'flags', ++ 'offset' => '16', ++ 'type' => '1004' ++ }, ++ '5' => { ++ 'name' => 'flags_mask', ++ 'offset' => '20', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_modify_wq', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '9075' => { ++ 'Header' => undef, ++ 'Line' => '1275', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'response_length', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'ind_tbl_handle', ++ 'offset' => '8', ++ 'type' => '1004' ++ }, ++ '3' => { ++ 'name' => 'ind_tbl_num', ++ 'offset' => '12', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_create_rwq_ind_table_resp', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '908' => { ++ 'BaseType' => '919', ++ 'Name' => 'void const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9146' => { ++ 'Header' => undef, ++ 'Line' => '1287', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cq_count', ++ 'offset' => '0', ++ 'type' => '992' ++ }, ++ '1' => { ++ 'name' => 'cq_period', ++ 'offset' => '2', ++ 'type' => '992' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_cq_moderation', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '9189' => { ++ 'Header' => undef, ++ 'Line' => '1292', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cq_handle', ++ 'offset' => '0', ++ 'type' => '1004' ++ }, ++ '1' => { ++ 'name' => 'attr_mask', ++ 'offset' => '4', ++ 'type' => '1004' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'offset' => '8', ++ 'type' => '9146' ++ }, ++ '3' => { ++ 'name' => 'reserved', ++ 'offset' => '12', ++ 'type' => '1004' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_ex_modify_cq', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '919' => { ++ 'BaseType' => '1', ++ 'Name' => 'void const', ++ 'Type' => 'Const' ++ }, ++ '920' => { ++ 'BaseType' => '99', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => 'uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '92005' => { ++ 'Header' => undef, ++ 'Line' => '193', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'driver_data', ++ 'offset' => '8', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '92060' => { ++ 'Header' => undef, ++ 'Line' => '193', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '92005' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '78359' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '92090' => { ++ 'Header' => undef, ++ 'Line' => '193', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '92060' ++ } ++ }, ++ 'Name' => 'struct ibv_get_context', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '92310' => { ++ 'Header' => undef, ++ 'Line' => '203', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'response', ++ 'offset' => '0', ++ 'type' => '1016' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'offset' => '8', ++ 'type' => '980' ++ }, ++ '2' => { ++ 'name' => 'reserved', ++ 'offset' => '9', ++ 'type' => '1544' ++ }, ++ '3' => { ++ 'name' => 'driver_data', ++ 'offset' => '16', ++ 'type' => '1606' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '92391' => { ++ 'Header' => undef, ++ 'Line' => '203', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '92310' ++ }, ++ '1' => { ++ 'name' => 'core_payload', ++ 'offset' => '0', ++ 'type' => '79656' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '92421' => { ++ 'Header' => undef, ++ 'Line' => '203', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '1423' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '92391' ++ } ++ }, ++ 'Name' => 'struct ibv_query_port', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '9260' => { ++ 'Header' => undef, ++ 'Line' => '67', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'subnet_prefix', ++ 'offset' => '0', ++ 'type' => '1052' ++ }, ++ '1' => { ++ 'name' => 'interface_id', ++ 'offset' => '8', ++ 'type' => '1052' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '92605' => { ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next', ++ 'offset' => '0', ++ 'type' => '92645' ++ }, ++ '1' => { ++ 'name' => 'prev', ++ 'offset' => '8', ++ 'type' => '92645' ++ } ++ }, ++ 'Name' => 'struct list_node', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '92645' => { ++ 'BaseType' => '92605', ++ 'Name' => 'struct list_node*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '92651' => { ++ 'Header' => undef, ++ 'Line' => '130', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_GID_TYPE_SYSFS_IB_ROCE_V1', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_GID_TYPE_SYSFS_ROCE_V2', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum ibv_gid_type_sysfs', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '92719' => { ++ 'Header' => undef, ++ 'Line' => '201', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'modalias', ++ 'offset' => '0', ++ 'type' => '76632' ++ }, ++ '1' => { ++ 'name' => 'driver_id', ++ 'offset' => '0', ++ 'type' => '956' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '92753' => { ++ 'Header' => undef, ++ 'Line' => '199', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'driver_data', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'u', ++ 'offset' => '8', ++ 'type' => '92719' ++ }, ++ '2' => { ++ 'name' => 'vendor', ++ 'offset' => '16', ++ 'type' => '932' ++ }, ++ '3' => { ++ 'name' => 'device', ++ 'offset' => '18', ++ 'type' => '932' ++ }, ++ '4' => { ++ 'name' => 'kind', ++ 'offset' => '20', ++ 'type' => '920' ++ } ++ }, ++ 'Name' => 'struct verbs_match_ent', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '92830' => { ++ 'BaseType' => '92753', ++ 'Name' => 'struct verbs_match_ent const', ++ 'Size' => '24', ++ 'Type' => 'Const' ++ }, ++ '92835' => { ++ 'Header' => undef, ++ 'Line' => '249', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'entry', ++ 'offset' => '0', ++ 'type' => '92605' ++ }, ++ '1' => { ++ 'name' => 'provider_data', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '10' => { ++ 'name' => 'driver_id', ++ 'offset' => '952', ++ 'type' => '944' ++ }, ++ '11' => { ++ 'name' => 'node_type', ++ 'offset' => '956', ++ 'type' => '9355' ++ }, ++ '12' => { ++ 'name' => 'ibdev_idx', ++ 'offset' => '960', ++ 'type' => '130' ++ }, ++ '13' => { ++ 'name' => 'num_ports', ++ 'offset' => '964', ++ 'type' => '944' ++ }, ++ '14' => { ++ 'name' => 'abi_ver', ++ 'offset' => '968', ++ 'type' => '944' ++ }, ++ '15' => { ++ 'name' => 'time_created', ++ 'offset' => '976', ++ 'type' => '52772' ++ }, ++ '2' => { ++ 'name' => 'match', ++ 'offset' => '24', ++ 'type' => '93076' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'offset' => '32', ++ 'type' => '64' ++ }, ++ '4' => { ++ 'name' => 'sysfs_name', ++ 'offset' => '36', ++ 'type' => '10173' ++ }, ++ '5' => { ++ 'name' => 'sysfs_cdev', ++ 'offset' => '104', ++ 'type' => '76662' ++ }, ++ '6' => { ++ 'name' => 'ibdev_name', ++ 'offset' => '112', ++ 'type' => '10173' ++ }, ++ '7' => { ++ 'name' => 'ibdev_path', ++ 'offset' => '176', ++ 'type' => '18186' ++ }, ++ '8' => { ++ 'name' => 'modalias', ++ 'offset' => '432', ++ 'type' => '93082' ++ }, ++ '9' => { ++ 'name' => 'node_guid', ++ 'offset' => '944', ++ 'type' => '956' ++ } ++ }, ++ 'Name' => 'struct verbs_sysfs_dev', ++ 'Size' => '992', ++ 'Type' => 'Struct' ++ }, ++ '9296' => { ++ 'Header' => undef, ++ 'Line' => '65', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'raw', ++ 'offset' => '0', ++ 'type' => '9339' ++ }, ++ '1' => { ++ 'name' => 'global', ++ 'offset' => '0', ++ 'type' => '9260' ++ } ++ }, ++ 'Name' => 'union ibv_gid', ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '93076' => { ++ 'BaseType' => '92830', ++ 'Name' => 'struct verbs_match_ent const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '93082' => { ++ 'BaseType' => '186', ++ 'Name' => 'char[512]', ++ 'Size' => '512', ++ 'Type' => 'Array' ++ }, ++ '93099' => { ++ 'Header' => undef, ++ 'Line' => '269', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'name', ++ 'offset' => '0', ++ 'type' => '76632' ++ }, ++ '1' => { ++ 'name' => 'match_min_abi_version', ++ 'offset' => '8', ++ 'type' => '944' ++ }, ++ '2' => { ++ 'name' => 'match_max_abi_version', ++ 'offset' => '12', ++ 'type' => '944' ++ }, ++ '3' => { ++ 'name' => 'match_table', ++ 'offset' => '16', ++ 'type' => '93076' ++ }, ++ '4' => { ++ 'name' => 'static_providers', ++ 'offset' => '24', ++ 'type' => '93259' ++ }, ++ '5' => { ++ 'name' => 'match_device', ++ 'offset' => '32', ++ 'type' => '93292' ++ }, ++ '6' => { ++ 'name' => 'alloc_context', ++ 'offset' => '40', ++ 'type' => '93329' ++ }, ++ '7' => { ++ 'name' => 'import_context', ++ 'offset' => '48', ++ 'type' => '93355' ++ }, ++ '8' => { ++ 'name' => 'alloc_device', ++ 'offset' => '56', ++ 'type' => '93487' ++ }, ++ '9' => { ++ 'name' => 'uninit_device', ++ 'offset' => '64', ++ 'type' => '93504' ++ } ++ }, ++ 'Name' => 'struct verbs_device_ops', ++ 'Size' => '72', ++ 'Type' => 'Struct' ++ }, ++ '932' => { ++ 'BaseType' => '118', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => 'uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '93254' => { ++ 'BaseType' => '93099', ++ 'Name' => 'struct verbs_device_ops const', ++ 'Size' => '72', ++ 'Type' => 'Const' ++ }, ++ '93259' => { ++ 'BaseType' => '93265', ++ 'Name' => 'struct verbs_device_ops const**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '93265' => { ++ 'BaseType' => '93254', ++ 'Name' => 'struct verbs_device_ops const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '93286' => { ++ 'BaseType' => '92835', ++ 'Name' => 'struct verbs_sysfs_dev*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '93292' => { ++ 'Name' => '_Bool(*)(struct verbs_sysfs_dev*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '93286' ++ } ++ }, ++ 'Return' => '19039', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '93323' => { ++ 'BaseType' => '65394', ++ 'Name' => 'struct verbs_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '93329' => { ++ 'Name' => 'struct verbs_context*(*)(struct ibv_device*, int, void*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '18013' ++ }, ++ '1' => { ++ 'type' => '130' ++ }, ++ '2' => { ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '93323', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9334' => { ++ 'BaseType' => '9296', ++ 'Name' => 'union ibv_gid const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '93355' => { ++ 'Name' => 'struct verbs_context*(*)(struct ibv_device*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '18013' ++ }, ++ '1' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '93323', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '93361' => { ++ 'Header' => undef, ++ 'Line' => '290', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'device', ++ 'offset' => '0', ++ 'type' => '18019' ++ }, ++ '1' => { ++ 'name' => 'ops', ++ 'offset' => '664', ++ 'type' => '93265' ++ }, ++ '2' => { ++ 'name' => 'refcount', ++ 'offset' => '672', ++ 'type' => '24514' ++ }, ++ '3' => { ++ 'name' => 'entry', ++ 'offset' => '680', ++ 'type' => '92605' ++ }, ++ '4' => { ++ 'name' => 'sysfs', ++ 'offset' => '696', ++ 'type' => '93286' ++ }, ++ '5' => { ++ 'name' => 'core_support', ++ 'offset' => '704', ++ 'type' => '956' ++ } ++ }, ++ 'Name' => 'struct verbs_device', ++ 'Size' => '712', ++ 'Type' => 'Struct' ++ }, ++ '9339' => { ++ 'BaseType' => '920', ++ 'Name' => 'uint8_t[16]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '93481' => { ++ 'BaseType' => '93361', ++ 'Name' => 'struct verbs_device*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '93487' => { ++ 'Name' => 'struct verbs_device*(*)(struct verbs_sysfs_dev*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '93286' ++ } ++ }, ++ 'Return' => '93481', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '93504' => { ++ 'Name' => 'void(*)(struct verbs_device*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '93481' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9355' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_NODE_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_NODE_CA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_NODE_SWITCH', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_NODE_ROUTER', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_NODE_RNIC', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_NODE_USNIC', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_NODE_USNIC_UDP', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_NODE_UNSPECIFIED', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_node_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '9422' => { ++ 'Header' => undef, ++ 'Line' => '106', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_TRANSPORT_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_TRANSPORT_IB', ++ 'value' => '0' ++ }, ++ '2' => { ++ 'name' => 'IBV_TRANSPORT_IWARP', ++ 'value' => '1' ++ }, ++ '3' => { ++ 'name' => 'IBV_TRANSPORT_USNIC', ++ 'value' => '2' ++ }, ++ '4' => { ++ 'name' => 'IBV_TRANSPORT_USNIC_UDP', ++ 'value' => '3' ++ }, ++ '5' => { ++ 'name' => 'IBV_TRANSPORT_UNSPECIFIED', ++ 'value' => '4' ++ } ++ }, ++ 'Name' => 'enum ibv_transport_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '944' => { ++ 'BaseType' => '137', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => 'uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '9477' => { ++ 'Header' => undef, ++ 'Line' => '155', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_ATOMIC_NONE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_ATOMIC_HCA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_ATOMIC_GLOB', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_atomic_cap', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '9514' => { ++ 'Header' => undef, ++ 'Line' => '1986', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'device', ++ 'offset' => '0', ++ 'type' => '18013' ++ }, ++ '1' => { ++ 'name' => 'ops', ++ 'offset' => '8', ++ 'type' => '18202' ++ }, ++ '2' => { ++ 'name' => 'cmd_fd', ++ 'offset' => '264', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'async_fd', ++ 'offset' => '268', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'num_comp_vectors', ++ 'offset' => '272', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '280', ++ 'type' => '822' ++ }, ++ '6' => { ++ 'name' => 'abi_compat', ++ 'offset' => '320', ++ 'type' => '71' ++ } ++ }, ++ 'Name' => 'struct ibv_context', ++ 'Size' => '328', ++ 'Type' => 'Struct' ++ }, ++ '956' => { ++ 'BaseType' => '156', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => 'uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '95747' => { ++ 'BaseType' => '79418', ++ 'Name' => 'struct ib_uverbs_ex_query_device_resp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '95753' => { ++ 'BaseType' => '52', ++ 'Name' => 'size_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9633' => { ++ 'BaseType' => '9514', ++ 'Name' => 'struct ibv_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9639' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fw_ver', ++ 'offset' => '0', ++ 'type' => '10173' ++ }, ++ '1' => { ++ 'name' => 'node_guid', ++ 'offset' => '64', ++ 'type' => '1052' ++ }, ++ '10' => { ++ 'name' => 'device_cap_flags', ++ 'offset' => '116', ++ 'type' => '64' ++ }, ++ '11' => { ++ 'name' => 'max_sge', ++ 'offset' => '120', ++ 'type' => '130' ++ }, ++ '12' => { ++ 'name' => 'max_sge_rd', ++ 'offset' => '124', ++ 'type' => '130' ++ }, ++ '13' => { ++ 'name' => 'max_cq', ++ 'offset' => '128', ++ 'type' => '130' ++ }, ++ '14' => { ++ 'name' => 'max_cqe', ++ 'offset' => '132', ++ 'type' => '130' ++ }, ++ '15' => { ++ 'name' => 'max_mr', ++ 'offset' => '136', ++ 'type' => '130' ++ }, ++ '16' => { ++ 'name' => 'max_pd', ++ 'offset' => '140', ++ 'type' => '130' ++ }, ++ '17' => { ++ 'name' => 'max_qp_rd_atom', ++ 'offset' => '144', ++ 'type' => '130' ++ }, ++ '18' => { ++ 'name' => 'max_ee_rd_atom', ++ 'offset' => '148', ++ 'type' => '130' ++ }, ++ '19' => { ++ 'name' => 'max_res_rd_atom', ++ 'offset' => '152', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'sys_image_guid', ++ 'offset' => '72', ++ 'type' => '1052' ++ }, ++ '20' => { ++ 'name' => 'max_qp_init_rd_atom', ++ 'offset' => '156', ++ 'type' => '130' ++ }, ++ '21' => { ++ 'name' => 'max_ee_init_rd_atom', ++ 'offset' => '160', ++ 'type' => '130' ++ }, ++ '22' => { ++ 'name' => 'atomic_cap', ++ 'offset' => '164', ++ 'type' => '9477' ++ }, ++ '23' => { ++ 'name' => 'max_ee', ++ 'offset' => '168', ++ 'type' => '130' ++ }, ++ '24' => { ++ 'name' => 'max_rdd', ++ 'offset' => '172', ++ 'type' => '130' ++ }, ++ '25' => { ++ 'name' => 'max_mw', ++ 'offset' => '176', ++ 'type' => '130' ++ }, ++ '26' => { ++ 'name' => 'max_raw_ipv6_qp', ++ 'offset' => '180', ++ 'type' => '130' ++ }, ++ '27' => { ++ 'name' => 'max_raw_ethy_qp', ++ 'offset' => '184', ++ 'type' => '130' ++ }, ++ '28' => { ++ 'name' => 'max_mcast_grp', ++ 'offset' => '188', ++ 'type' => '130' ++ }, ++ '29' => { ++ 'name' => 'max_mcast_qp_attach', ++ 'offset' => '192', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'max_mr_size', ++ 'offset' => '80', ++ 'type' => '956' ++ }, ++ '30' => { ++ 'name' => 'max_total_mcast_qp_attach', ++ 'offset' => '196', ++ 'type' => '130' ++ }, ++ '31' => { ++ 'name' => 'max_ah', ++ 'offset' => '200', ++ 'type' => '130' ++ }, ++ '32' => { ++ 'name' => 'max_fmr', ++ 'offset' => '204', ++ 'type' => '130' ++ }, ++ '33' => { ++ 'name' => 'max_map_per_fmr', ++ 'offset' => '208', ++ 'type' => '130' ++ }, ++ '34' => { ++ 'name' => 'max_srq', ++ 'offset' => '212', ++ 'type' => '130' ++ }, ++ '35' => { ++ 'name' => 'max_srq_wr', ++ 'offset' => '216', ++ 'type' => '130' ++ }, ++ '36' => { ++ 'name' => 'max_srq_sge', ++ 'offset' => '220', ++ 'type' => '130' ++ }, ++ '37' => { ++ 'name' => 'max_pkeys', ++ 'offset' => '224', ++ 'type' => '932' ++ }, ++ '38' => { ++ 'name' => 'local_ca_ack_delay', ++ 'offset' => '226', ++ 'type' => '920' ++ }, ++ '39' => { ++ 'name' => 'phys_port_cnt', ++ 'offset' => '227', ++ 'type' => '920' ++ }, ++ '4' => { ++ 'name' => 'page_size_cap', ++ 'offset' => '88', ++ 'type' => '956' ++ }, ++ '5' => { ++ 'name' => 'vendor_id', ++ 'offset' => '96', ++ 'type' => '944' ++ }, ++ '6' => { ++ 'name' => 'vendor_part_id', ++ 'offset' => '100', ++ 'type' => '944' ++ }, ++ '7' => { ++ 'name' => 'hw_ver', ++ 'offset' => '104', ++ 'type' => '944' ++ }, ++ '8' => { ++ 'name' => 'max_qp', ++ 'offset' => '108', ++ 'type' => '130' ++ }, ++ '9' => { ++ 'name' => 'max_qp_wr', ++ 'offset' => '112', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_device_attr', ++ 'Size' => '232', ++ 'Type' => 'Struct' ++ }, ++ '97012' => { ++ 'BaseType' => '80593', ++ 'Name' => 'struct ibv_gid_entry*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '980' => { ++ 'BaseType' => '78', ++ 'Header' => undef, ++ 'Line' => '21', ++ 'Name' => '__u8', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '99' => { ++ 'BaseType' => '78', ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Name' => '__uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '992' => { ++ 'BaseType' => '85', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => '__u16', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ } ++ }, ++ 'UndefinedSymbols' => { ++ 'libibverbs.so.1.14.41.0' => { ++ '_ITM_deregisterTMCloneTable' => 0, ++ '_ITM_registerTMCloneTable' => 0, ++ '__asprintf_chk@GLIBC_2.8' => 0, ++ '__cxa_finalize@GLIBC_2.2.5' => 0, ++ '__errno_location@GLIBC_2.2.5' => 0, ++ '__fdelt_chk@GLIBC_2.15' => 0, ++ '__fprintf_chk@GLIBC_2.3.4' => 0, ++ '__fxstat@GLIBC_2.2.5' => 0, ++ '__getdelim@GLIBC_2.2.5' => 0, ++ '__gmon_start__' => 0, ++ '__isoc99_sscanf@GLIBC_2.7' => 0, ++ '__snprintf_chk@GLIBC_2.3.4' => 0, ++ '__stack_chk_fail@GLIBC_2.4' => 0, ++ '__strcpy_chk@GLIBC_2.3.4' => 0, ++ '__vasprintf_chk@GLIBC_2.8' => 0, ++ '__vfprintf_chk@GLIBC_2.3.4' => 0, ++ '__xstat@GLIBC_2.2.5' => 0, ++ 'bind@GLIBC_2.2.5' => 0, ++ 'calloc@GLIBC_2.2.5' => 0, ++ 'close@GLIBC_2.2.5' => 0, ++ 'closedir@GLIBC_2.2.5' => 0, ++ 'dirfd@GLIBC_2.2.5' => 0, ++ 'dlerror@GLIBC_2.2.5' => 0, ++ 'dlopen@GLIBC_2.2.5' => 0, ++ 'fclose@GLIBC_2.2.5' => 0, ++ 'fcntl@GLIBC_2.2.5' => 0, ++ 'fgets@GLIBC_2.2.5' => 0, ++ 'fnmatch@GLIBC_2.2.5' => 0, ++ 'fopen@GLIBC_2.2.5' => 0, ++ 'free@GLIBC_2.2.5' => 0, ++ 'freeaddrinfo@GLIBC_2.2.5' => 0, ++ 'freeifaddrs@GLIBC_2.3' => 0, ++ 'fwrite@GLIBC_2.2.5' => 0, ++ 'getenv@GLIBC_2.2.5' => 0, ++ 'geteuid@GLIBC_2.2.5' => 0, ++ 'getifaddrs@GLIBC_2.3' => 0, ++ 'getpid@GLIBC_2.2.5' => 0, ++ 'getrandom@GLIBC_2.25' => 0, ++ 'getrlimit@GLIBC_2.2.5' => 0, ++ 'getuid@GLIBC_2.2.5' => 0, ++ 'if_nametoindex@GLIBC_2.2.5' => 0, ++ 'inotify_add_watch@GLIBC_2.4' => 0, ++ 'inotify_init1@GLIBC_2.9' => 0, ++ 'ioctl@GLIBC_2.2.5' => 0, ++ 'madvise@GLIBC_2.2.5' => 0, ++ 'malloc@GLIBC_2.2.5' => 0, ++ 'memcmp@GLIBC_2.2.5' => 0, ++ 'memcpy@GLIBC_2.14' => 0, ++ 'memset@GLIBC_2.2.5' => 0, ++ 'nl_addr_build' => 0, ++ 'nl_addr_clone' => 0, ++ 'nl_addr_fill_sockaddr' => 0, ++ 'nl_addr_get_binary_addr' => 0, ++ 'nl_addr_get_family' => 0, ++ 'nl_addr_get_len' => 0, ++ 'nl_addr_get_prefixlen' => 0, ++ 'nl_addr_info' => 0, ++ 'nl_addr_put' => 0, ++ 'nl_addr_set_prefixlen' => 0, ++ 'nl_cache_free' => 0, ++ 'nl_cache_mngt_provide' => 0, ++ 'nl_cache_mngt_unprovide' => 0, ++ 'nl_cache_refill' => 0, ++ 'nl_connect' => 0, ++ 'nl_msg_parse' => 0, ++ 'nl_object_match_filter' => 0, ++ 'nl_recvmsgs_default' => 0, ++ 'nl_send_auto' => 0, ++ 'nl_send_simple' => 0, ++ 'nl_socket_add_membership' => 0, ++ 'nl_socket_alloc' => 0, ++ 'nl_socket_disable_auto_ack' => 0, ++ 'nl_socket_disable_msg_peek' => 0, ++ 'nl_socket_disable_seq_check' => 0, ++ 'nl_socket_free' => 0, ++ 'nl_socket_get_fd' => 0, ++ 'nl_socket_modify_cb' => 0, ++ 'nl_socket_modify_err_cb' => 0, ++ 'nla_get_string' => 0, ++ 'nla_get_u32' => 0, ++ 'nla_get_u64' => 0, ++ 'nla_get_u8' => 0, ++ 'nla_put' => 0, ++ 'nlmsg_alloc_simple' => 0, ++ 'nlmsg_append' => 0, ++ 'nlmsg_free' => 0, ++ 'nlmsg_hdr' => 0, ++ 'nlmsg_parse' => 0, ++ 'open@GLIBC_2.2.5' => 0, ++ 'openat@GLIBC_2.4' => 0, ++ 'opendir@GLIBC_2.2.5' => 0, ++ 'poll@GLIBC_2.2.5' => 0, ++ 'posix_memalign@GLIBC_2.2.5' => 0, ++ 'pthread_cond_init@GLIBC_2.3.2' => 0, ++ 'pthread_cond_signal@GLIBC_2.3.2' => 0, ++ 'pthread_cond_wait@GLIBC_2.3.2' => 0, ++ 'pthread_mutex_init@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_lock@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_unlock@GLIBC_2.2.5' => 0, ++ 'rand_r@GLIBC_2.2.5' => 0, ++ 'read@GLIBC_2.2.5' => 0, ++ 'readdir@GLIBC_2.2.5' => 0, ++ 'rtnl_link_alloc_cache' => 0, ++ 'rtnl_link_get' => 0, ++ 'rtnl_link_get_addr' => 0, ++ 'rtnl_link_is_vlan' => 0, ++ 'rtnl_link_put' => 0, ++ 'rtnl_link_vlan_get_id' => 0, ++ 'rtnl_neigh_alloc' => 0, ++ 'rtnl_neigh_alloc_cache' => 0, ++ 'rtnl_neigh_get' => 0, ++ 'rtnl_neigh_get_lladdr' => 0, ++ 'rtnl_neigh_put' => 0, ++ 'rtnl_neigh_set_dst' => 0, ++ 'rtnl_neigh_set_ifindex' => 0, ++ 'rtnl_route_alloc_cache' => 0, ++ 'rtnl_route_get_pref_src' => 0, ++ 'rtnl_route_get_type' => 0, ++ 'rtnl_route_nexthop_n' => 0, ++ 'rtnl_route_nh_get_gateway' => 0, ++ 'rtnl_route_nh_get_ifindex' => 0, ++ 'select@GLIBC_2.2.5' => 0, ++ 'sendto@GLIBC_2.2.5' => 0, ++ 'snprintf@GLIBC_2.2.5' => 0, ++ 'socket@GLIBC_2.2.5' => 0, ++ 'stderr@GLIBC_2.2.5' => 0, ++ 'strcmp@GLIBC_2.2.5' => 0, ++ 'strcpy@GLIBC_2.2.5' => 0, ++ 'strdup@GLIBC_2.2.5' => 0, ++ 'strlen@GLIBC_2.2.5' => 0, ++ 'strndup@GLIBC_2.2.5' => 0, ++ 'strsep@GLIBC_2.2.5' => 0, ++ 'strspn@GLIBC_2.2.5' => 0, ++ 'strstr@GLIBC_2.2.5' => 0, ++ 'strtol@GLIBC_2.2.5' => 0, ++ 'strtoul@GLIBC_2.2.5' => 0, ++ 'sysconf@GLIBC_2.2.5' => 0, ++ 'time@GLIBC_2.2.5' => 0, ++ 'timerfd_create@GLIBC_2.8' => 0, ++ 'timerfd_settime@GLIBC_2.8' => 0, ++ 'write@GLIBC_2.2.5' => 0 ++ } ++ }, ++ 'WordSize' => '8' ++ }; +diff --git a/ABI/mlx4.dump b/ABI/mlx4.dump +new file mode 100644 +index 0000000..1b37a99 +--- /dev/null ++++ b/ABI/mlx4.dump +@@ -0,0 +1,3245 @@ ++$VAR1 = { ++ 'ABI_DUMPER_VERSION' => '1.1', ++ 'ABI_DUMP_VERSION' => '3.5', ++ 'Arch' => 'x86_64', ++ 'GccVersion' => '11.1.0', ++ 'Headers' => {}, ++ 'Language' => 'C', ++ 'LibraryName' => 'libmlx4.so.1.0.41.0', ++ 'LibraryVersion' => 'mlx4', ++ 'MissedOffsets' => '1', ++ 'MissedRegs' => '1', ++ 'NameSpaces' => {}, ++ 'Needed' => { ++ 'libc.so.6' => 1, ++ 'libibverbs.so.1' => 1, ++ 'libpthread.so.0' => 1 ++ }, ++ 'Sources' => {}, ++ 'SymbolInfo' => { ++ '182050' => { ++ 'Header' => undef, ++ 'Line' => '1051', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '13294' ++ }, ++ '2' => { ++ 'name' => 'mlx4_qp_attr', ++ 'type' => '111768' ++ } ++ }, ++ 'Return' => '4072', ++ 'ShortName' => 'mlx4dv_create_qp' ++ }, ++ '89173' => { ++ 'Header' => undef, ++ 'Line' => '401', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'attr_type', ++ 'type' => '84975' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'type' => '197' ++ } ++ }, ++ 'Return' => '64', ++ 'ShortName' => 'mlx4dv_set_context_attr' ++ }, ++ '89275' => { ++ 'Header' => undef, ++ 'Line' => '388', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx_in', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'attrs_out', ++ 'type' => '89362' ++ } ++ }, ++ 'Return' => '64', ++ 'ShortName' => 'mlx4dv_query_device' ++ }, ++ '89368' => { ++ 'Header' => undef, ++ 'Line' => '372', ++ 'Param' => { ++ '0' => { ++ 'name' => 'obj', ++ 'type' => '89821' ++ }, ++ '1' => { ++ 'name' => 'obj_type', ++ 'type' => '917' ++ } ++ }, ++ 'Return' => '64', ++ 'ShortName' => 'mlx4dv_init_obj' ++ } ++ }, ++ 'SymbolVersion' => { ++ 'mlx4dv_create_qp' => 'mlx4dv_create_qp@@MLX4_1.0', ++ 'mlx4dv_init_obj' => 'mlx4dv_init_obj@@MLX4_1.0', ++ 'mlx4dv_query_device' => 'mlx4dv_query_device@@MLX4_1.0', ++ 'mlx4dv_set_context_attr' => 'mlx4dv_set_context_attr@@MLX4_1.0' ++ }, ++ 'Symbols' => { ++ 'libmlx4.so.1.0.41.0' => { ++ 'mlx4dv_create_qp@@MLX4_1.0' => 1, ++ 'mlx4dv_init_obj@@MLX4_1.0' => 1, ++ 'mlx4dv_query_device@@MLX4_1.0' => 1, ++ 'mlx4dv_set_context_attr@@MLX4_1.0' => 1 ++ } ++ }, ++ 'Target' => 'unix', ++ 'TypeInfo' => { ++ '1' => { ++ 'Name' => 'void', ++ 'Type' => 'Intrinsic' ++ }, ++ '10234' => { ++ 'Header' => undef, ++ 'Line' => '1918', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_dummy1', ++ 'offset' => '0', ++ 'type' => '10418' ++ }, ++ '1' => { ++ 'name' => '_dummy2', ++ 'offset' => '8', ++ 'type' => '10435' ++ } ++ }, ++ 'Name' => 'struct _ibv_device_ops', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '10297' => { ++ 'BaseType' => '10303', ++ 'Name' => 'struct ibv_device*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10303' => { ++ 'Header' => undef, ++ 'Line' => '1928', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_ops', ++ 'offset' => '0', ++ 'type' => '10234' ++ }, ++ '1' => { ++ 'name' => 'node_type', ++ 'offset' => '16', ++ 'type' => '1296' ++ }, ++ '2' => { ++ 'name' => 'transport_type', ++ 'offset' => '20', ++ 'type' => '1363' ++ }, ++ '3' => { ++ 'name' => 'name', ++ 'offset' => '24', ++ 'type' => '2324' ++ }, ++ '4' => { ++ 'name' => 'dev_name', ++ 'offset' => '88', ++ 'type' => '2324' ++ }, ++ '5' => { ++ 'name' => 'dev_path', ++ 'offset' => '152', ++ 'type' => '10441' ++ }, ++ '6' => { ++ 'name' => 'ibdev_path', ++ 'offset' => '408', ++ 'type' => '10441' ++ } ++ }, ++ 'Name' => 'struct ibv_device', ++ 'Size' => '664', ++ 'Type' => 'Struct' ++ }, ++ '104' => { ++ 'Name' => 'unsigned short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ }, ++ '10418' => { ++ 'Name' => 'struct ibv_context*(*)(struct ibv_device*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10297' ++ }, ++ '1' => { ++ 'type' => '64' ++ } ++ }, ++ 'Return' => '1706', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10435' => { ++ 'Name' => 'void(*)(struct ibv_context*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '1706' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10441' => { ++ 'BaseType' => '211', ++ 'Name' => 'char[256]', ++ 'Size' => '256', ++ 'Type' => 'Array' ++ }, ++ '10457' => { ++ 'Header' => undef, ++ 'Line' => '1943', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_compat_query_device', ++ 'offset' => '0', ++ 'type' => '10947' ++ }, ++ '1' => { ++ 'name' => '_compat_query_port', ++ 'offset' => '8', ++ 'type' => '10989' ++ }, ++ '10' => { ++ 'name' => '_compat_create_cq', ++ 'offset' => '80', ++ 'type' => '11000' ++ }, ++ '11' => { ++ 'name' => 'poll_cq', ++ 'offset' => '88', ++ 'type' => '11121' ++ }, ++ '12' => { ++ 'name' => 'req_notify_cq', ++ 'offset' => '96', ++ 'type' => '11147' ++ }, ++ '13' => { ++ 'name' => '_compat_cq_event', ++ 'offset' => '104', ++ 'type' => '11000' ++ }, ++ '14' => { ++ 'name' => '_compat_resize_cq', ++ 'offset' => '112', ++ 'type' => '11000' ++ }, ++ '15' => { ++ 'name' => '_compat_destroy_cq', ++ 'offset' => '120', ++ 'type' => '11000' ++ }, ++ '16' => { ++ 'name' => '_compat_create_srq', ++ 'offset' => '128', ++ 'type' => '11000' ++ }, ++ '17' => { ++ 'name' => '_compat_modify_srq', ++ 'offset' => '136', ++ 'type' => '11000' ++ }, ++ '18' => { ++ 'name' => '_compat_query_srq', ++ 'offset' => '144', ++ 'type' => '11000' ++ }, ++ '19' => { ++ 'name' => '_compat_destroy_srq', ++ 'offset' => '152', ++ 'type' => '11000' ++ }, ++ '2' => { ++ 'name' => '_compat_alloc_pd', ++ 'offset' => '16', ++ 'type' => '11000' ++ }, ++ '20' => { ++ 'name' => 'post_srq_recv', ++ 'offset' => '160', ++ 'type' => '11178' ++ }, ++ '21' => { ++ 'name' => '_compat_create_qp', ++ 'offset' => '168', ++ 'type' => '11000' ++ }, ++ '22' => { ++ 'name' => '_compat_query_qp', ++ 'offset' => '176', ++ 'type' => '11000' ++ }, ++ '23' => { ++ 'name' => '_compat_modify_qp', ++ 'offset' => '184', ++ 'type' => '11000' ++ }, ++ '24' => { ++ 'name' => '_compat_destroy_qp', ++ 'offset' => '192', ++ 'type' => '11000' ++ }, ++ '25' => { ++ 'name' => 'post_send', ++ 'offset' => '200', ++ 'type' => '11215' ++ }, ++ '26' => { ++ 'name' => 'post_recv', ++ 'offset' => '208', ++ 'type' => '11246' ++ }, ++ '27' => { ++ 'name' => '_compat_create_ah', ++ 'offset' => '216', ++ 'type' => '11000' ++ }, ++ '28' => { ++ 'name' => '_compat_destroy_ah', ++ 'offset' => '224', ++ 'type' => '11000' ++ }, ++ '29' => { ++ 'name' => '_compat_attach_mcast', ++ 'offset' => '232', ++ 'type' => '11000' ++ }, ++ '3' => { ++ 'name' => '_compat_dealloc_pd', ++ 'offset' => '24', ++ 'type' => '11000' ++ }, ++ '30' => { ++ 'name' => '_compat_detach_mcast', ++ 'offset' => '240', ++ 'type' => '11000' ++ }, ++ '31' => { ++ 'name' => '_compat_async_event', ++ 'offset' => '248', ++ 'type' => '11000' ++ }, ++ '4' => { ++ 'name' => '_compat_reg_mr', ++ 'offset' => '32', ++ 'type' => '11000' ++ }, ++ '5' => { ++ 'name' => '_compat_rereg_mr', ++ 'offset' => '40', ++ 'type' => '11000' ++ }, ++ '6' => { ++ 'name' => '_compat_dereg_mr', ++ 'offset' => '48', ++ 'type' => '11000' ++ }, ++ '7' => { ++ 'name' => 'alloc_mw', ++ 'offset' => '56', ++ 'type' => '11026' ++ }, ++ '8' => { ++ 'name' => 'bind_mw', ++ 'offset' => '64', ++ 'type' => '11063' ++ }, ++ '9' => { ++ 'name' => 'dealloc_mw', ++ 'offset' => '72', ++ 'type' => '11084' ++ } ++ }, ++ 'Name' => 'struct ibv_context_ops', ++ 'Size' => '256', ++ 'Type' => 'Struct' ++ }, ++ '108674' => { ++ 'Header' => undef, ++ 'Line' => '425', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '917' ++ }, ++ '1' => { ++ 'name' => 'inl_recv_sz', ++ 'offset' => '8', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct mlx4dv_qp_init_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '10941' => { ++ 'BaseType' => '1790', ++ 'Name' => 'struct ibv_device_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10947' => { ++ 'Name' => 'int(*)(struct ibv_context*, struct ibv_device_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'type' => '10941' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10978' => { ++ 'BaseType' => '10984', ++ 'Name' => 'struct _compat_ibv_port_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10984' => { ++ 'Name' => 'struct _compat_ibv_port_attr', ++ 'Type' => 'Struct' ++ }, ++ '10989' => { ++ 'Name' => 'int(*)(struct ibv_context*, uint8_t, struct _compat_ibv_port_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'type' => '881' ++ }, ++ '2' => { ++ 'type' => '10978' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11000' => { ++ 'Name' => 'void*(*)()', ++ 'Return' => '197', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11026' => { ++ 'Name' => 'struct ibv_mw*(*)(struct ibv_pd*, enum ibv_mw_type)', ++ 'Param' => { ++ '0' => { ++ 'type' => '5293' ++ }, ++ '1' => { ++ 'type' => '5299' ++ } ++ }, ++ 'Return' => '7399', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11057' => { ++ 'BaseType' => '7984', ++ 'Name' => 'struct ibv_mw_bind*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11063' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_mw*, struct ibv_mw_bind*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '4072' ++ }, ++ '1' => { ++ 'type' => '7399' ++ }, ++ '2' => { ++ 'type' => '11057' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11084' => { ++ 'Name' => 'int(*)(struct ibv_mw*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7399' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11115' => { ++ 'BaseType' => '4726', ++ 'Name' => 'struct ibv_wc*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11121' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int, struct ibv_wc*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '3870' ++ }, ++ '1' => { ++ 'type' => '64' ++ }, ++ '2' => { ++ 'type' => '11115' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11147' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '3870' ++ }, ++ '1' => { ++ 'type' => '64' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '111768' => { ++ 'BaseType' => '108674', ++ 'Name' => 'struct mlx4dv_qp_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11178' => { ++ 'Name' => 'int(*)(struct ibv_srq*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '4190' ++ }, ++ '1' => { ++ 'type' => '7716' ++ }, ++ '2' => { ++ 'type' => '8066' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11209' => { ++ 'BaseType' => '7633', ++ 'Name' => 'struct ibv_send_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11215' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_send_wr*, struct ibv_send_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '4072' ++ }, ++ '1' => { ++ 'type' => '7633' ++ }, ++ '2' => { ++ 'type' => '11209' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11246' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '4072' ++ }, ++ '1' => { ++ 'type' => '7716' ++ }, ++ '2' => { ++ 'type' => '8066' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '118' => { ++ 'BaseType' => '97', ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Name' => '__uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '1296' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_NODE_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_NODE_CA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_NODE_SWITCH', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_NODE_ROUTER', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_NODE_RNIC', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_NODE_USNIC', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_NODE_USNIC_UDP', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_NODE_UNSPECIFIED', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_node_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '13294' => { ++ 'BaseType' => '6322', ++ 'Name' => 'struct ibv_qp_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '13326' => { ++ 'BaseType' => '905', ++ 'Name' => 'uint32_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1363' => { ++ 'Header' => undef, ++ 'Line' => '106', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_TRANSPORT_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_TRANSPORT_IB', ++ 'value' => '0' ++ }, ++ '2' => { ++ 'name' => 'IBV_TRANSPORT_IWARP', ++ 'value' => '1' ++ }, ++ '3' => { ++ 'name' => 'IBV_TRANSPORT_USNIC', ++ 'value' => '2' ++ }, ++ '4' => { ++ 'name' => 'IBV_TRANSPORT_USNIC_UDP', ++ 'value' => '3' ++ }, ++ '5' => { ++ 'name' => 'IBV_TRANSPORT_UNSPECIFIED', ++ 'value' => '4' ++ } ++ }, ++ 'Name' => 'enum ibv_transport_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '13650' => { ++ 'BaseType' => '965', ++ 'Name' => '__be32*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '137' => { ++ 'BaseType' => '104', ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Name' => '__uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '1418' => { ++ 'Header' => undef, ++ 'Line' => '155', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_ATOMIC_NONE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_ATOMIC_HCA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_ATOMIC_GLOB', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_atomic_cap', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '149' => { ++ 'BaseType' => '76', ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Name' => '__uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '1587' => { ++ 'Header' => undef, ++ 'Line' => '1986', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'device', ++ 'offset' => '0', ++ 'type' => '10297' ++ }, ++ '1' => { ++ 'name' => 'ops', ++ 'offset' => '8', ++ 'type' => '10457' ++ }, ++ '2' => { ++ 'name' => 'cmd_fd', ++ 'offset' => '264', ++ 'type' => '64' ++ }, ++ '3' => { ++ 'name' => 'async_fd', ++ 'offset' => '268', ++ 'type' => '64' ++ }, ++ '4' => { ++ 'name' => 'num_comp_vectors', ++ 'offset' => '272', ++ 'type' => '64' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '280', ++ 'type' => '762' ++ }, ++ '6' => { ++ 'name' => 'abi_compat', ++ 'offset' => '320', ++ 'type' => '197' ++ } ++ }, ++ 'Name' => 'struct ibv_context', ++ 'Size' => '328', ++ 'Type' => 'Struct' ++ }, ++ '161' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Name' => '__uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1706' => { ++ 'BaseType' => '1587', ++ 'Name' => 'struct ibv_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '173' => { ++ 'BaseType' => '83', ++ 'Header' => undef, ++ 'Line' => '152', ++ 'Name' => '__off_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1790' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fw_ver', ++ 'offset' => '0', ++ 'type' => '2324' ++ }, ++ '1' => { ++ 'name' => 'node_guid', ++ 'offset' => '64', ++ 'type' => '977' ++ }, ++ '10' => { ++ 'name' => 'device_cap_flags', ++ 'offset' => '116', ++ 'type' => '76' ++ }, ++ '11' => { ++ 'name' => 'max_sge', ++ 'offset' => '120', ++ 'type' => '64' ++ }, ++ '12' => { ++ 'name' => 'max_sge_rd', ++ 'offset' => '124', ++ 'type' => '64' ++ }, ++ '13' => { ++ 'name' => 'max_cq', ++ 'offset' => '128', ++ 'type' => '64' ++ }, ++ '14' => { ++ 'name' => 'max_cqe', ++ 'offset' => '132', ++ 'type' => '64' ++ }, ++ '15' => { ++ 'name' => 'max_mr', ++ 'offset' => '136', ++ 'type' => '64' ++ }, ++ '16' => { ++ 'name' => 'max_pd', ++ 'offset' => '140', ++ 'type' => '64' ++ }, ++ '17' => { ++ 'name' => 'max_qp_rd_atom', ++ 'offset' => '144', ++ 'type' => '64' ++ }, ++ '18' => { ++ 'name' => 'max_ee_rd_atom', ++ 'offset' => '148', ++ 'type' => '64' ++ }, ++ '19' => { ++ 'name' => 'max_res_rd_atom', ++ 'offset' => '152', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'sys_image_guid', ++ 'offset' => '72', ++ 'type' => '977' ++ }, ++ '20' => { ++ 'name' => 'max_qp_init_rd_atom', ++ 'offset' => '156', ++ 'type' => '64' ++ }, ++ '21' => { ++ 'name' => 'max_ee_init_rd_atom', ++ 'offset' => '160', ++ 'type' => '64' ++ }, ++ '22' => { ++ 'name' => 'atomic_cap', ++ 'offset' => '164', ++ 'type' => '1418' ++ }, ++ '23' => { ++ 'name' => 'max_ee', ++ 'offset' => '168', ++ 'type' => '64' ++ }, ++ '24' => { ++ 'name' => 'max_rdd', ++ 'offset' => '172', ++ 'type' => '64' ++ }, ++ '25' => { ++ 'name' => 'max_mw', ++ 'offset' => '176', ++ 'type' => '64' ++ }, ++ '26' => { ++ 'name' => 'max_raw_ipv6_qp', ++ 'offset' => '180', ++ 'type' => '64' ++ }, ++ '27' => { ++ 'name' => 'max_raw_ethy_qp', ++ 'offset' => '184', ++ 'type' => '64' ++ }, ++ '28' => { ++ 'name' => 'max_mcast_grp', ++ 'offset' => '188', ++ 'type' => '64' ++ }, ++ '29' => { ++ 'name' => 'max_mcast_qp_attach', ++ 'offset' => '192', ++ 'type' => '64' ++ }, ++ '3' => { ++ 'name' => 'max_mr_size', ++ 'offset' => '80', ++ 'type' => '917' ++ }, ++ '30' => { ++ 'name' => 'max_total_mcast_qp_attach', ++ 'offset' => '196', ++ 'type' => '64' ++ }, ++ '31' => { ++ 'name' => 'max_ah', ++ 'offset' => '200', ++ 'type' => '64' ++ }, ++ '32' => { ++ 'name' => 'max_fmr', ++ 'offset' => '204', ++ 'type' => '64' ++ }, ++ '33' => { ++ 'name' => 'max_map_per_fmr', ++ 'offset' => '208', ++ 'type' => '64' ++ }, ++ '34' => { ++ 'name' => 'max_srq', ++ 'offset' => '212', ++ 'type' => '64' ++ }, ++ '35' => { ++ 'name' => 'max_srq_wr', ++ 'offset' => '216', ++ 'type' => '64' ++ }, ++ '36' => { ++ 'name' => 'max_srq_sge', ++ 'offset' => '220', ++ 'type' => '64' ++ }, ++ '37' => { ++ 'name' => 'max_pkeys', ++ 'offset' => '224', ++ 'type' => '893' ++ }, ++ '38' => { ++ 'name' => 'local_ca_ack_delay', ++ 'offset' => '226', ++ 'type' => '881' ++ }, ++ '39' => { ++ 'name' => 'phys_port_cnt', ++ 'offset' => '227', ++ 'type' => '881' ++ }, ++ '4' => { ++ 'name' => 'page_size_cap', ++ 'offset' => '88', ++ 'type' => '917' ++ }, ++ '5' => { ++ 'name' => 'vendor_id', ++ 'offset' => '96', ++ 'type' => '905' ++ }, ++ '6' => { ++ 'name' => 'vendor_part_id', ++ 'offset' => '100', ++ 'type' => '905' ++ }, ++ '7' => { ++ 'name' => 'hw_ver', ++ 'offset' => '104', ++ 'type' => '905' ++ }, ++ '8' => { ++ 'name' => 'max_qp', ++ 'offset' => '108', ++ 'type' => '64' ++ }, ++ '9' => { ++ 'name' => 'max_qp_wr', ++ 'offset' => '112', ++ 'type' => '64' ++ } ++ }, ++ 'Name' => 'struct ibv_device_attr', ++ 'Size' => '232', ++ 'Type' => 'Struct' ++ }, ++ '197' => { ++ 'BaseType' => '1', ++ 'Name' => 'void*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '211' => { ++ 'Name' => 'char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '218' => { ++ 'BaseType' => '173', ++ 'Header' => undef, ++ 'Line' => '85', ++ 'Name' => 'off_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '2324' => { ++ 'BaseType' => '211', ++ 'Name' => 'char[64]', ++ 'Size' => '64', ++ 'Type' => 'Array' ++ }, ++ '3729' => { ++ 'Header' => undef, ++ 'Line' => '1458', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'offset' => '8', ++ 'type' => '8940' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'offset' => '16', ++ 'type' => '197' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '905' ++ }, ++ '4' => { ++ 'name' => 'cqe', ++ 'offset' => '28', ++ 'type' => '64' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '762' ++ }, ++ '6' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '836' ++ }, ++ '7' => { ++ 'name' => 'comp_events_completed', ++ 'offset' => '120', ++ 'type' => '905' ++ }, ++ '8' => { ++ 'name' => 'async_events_completed', ++ 'offset' => '124', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct ibv_cq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '3870' => { ++ 'BaseType' => '3729', ++ 'Name' => 'struct ibv_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3876' => { ++ 'Header' => undef, ++ 'Line' => '1252', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'qp_context', ++ 'offset' => '8', ++ 'type' => '197' ++ }, ++ '10' => { ++ 'name' => 'mutex', ++ 'offset' => '64', ++ 'type' => '762' ++ }, ++ '11' => { ++ 'name' => 'cond', ++ 'offset' => '104', ++ 'type' => '836' ++ }, ++ '12' => { ++ 'name' => 'events_completed', ++ 'offset' => '152', ++ 'type' => '905' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '5293' ++ }, ++ '3' => { ++ 'name' => 'send_cq', ++ 'offset' => '24', ++ 'type' => '3870' ++ }, ++ '4' => { ++ 'name' => 'recv_cq', ++ 'offset' => '32', ++ 'type' => '3870' ++ }, ++ '5' => { ++ 'name' => 'srq', ++ 'offset' => '40', ++ 'type' => '4190' ++ }, ++ '6' => { ++ 'name' => 'handle', ++ 'offset' => '48', ++ 'type' => '905' ++ }, ++ '7' => { ++ 'name' => 'qp_num', ++ 'offset' => '52', ++ 'type' => '905' ++ }, ++ '8' => { ++ 'name' => 'state', ++ 'offset' => '56', ++ 'type' => '6651' ++ }, ++ '9' => { ++ 'name' => 'qp_type', ++ 'offset' => '60', ++ 'type' => '6098' ++ } ++ }, ++ 'Name' => 'struct ibv_qp', ++ 'Size' => '160', ++ 'Type' => 'Struct' ++ }, ++ '4072' => { ++ 'BaseType' => '3876', ++ 'Name' => 'struct ibv_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '4078' => { ++ 'Header' => undef, ++ 'Line' => '1212', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'srq_context', ++ 'offset' => '8', ++ 'type' => '197' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '5293' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '905' ++ }, ++ '4' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '762' ++ }, ++ '5' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '836' ++ }, ++ '6' => { ++ 'name' => 'events_completed', ++ 'offset' => '120', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct ibv_srq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '4190' => { ++ 'BaseType' => '4078', ++ 'Name' => 'struct ibv_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '4196' => { ++ 'Header' => undef, ++ 'Line' => '1234', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'wq_context', ++ 'offset' => '8', ++ 'type' => '197' ++ }, ++ '10' => { ++ 'name' => 'cond', ++ 'offset' => '96', ++ 'type' => '836' ++ }, ++ '11' => { ++ 'name' => 'events_completed', ++ 'offset' => '144', ++ 'type' => '905' ++ }, ++ '12' => { ++ 'name' => 'comp_mask', ++ 'offset' => '148', ++ 'type' => '905' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '5293' ++ }, ++ '3' => { ++ 'name' => 'cq', ++ 'offset' => '24', ++ 'type' => '3870' ++ }, ++ '4' => { ++ 'name' => 'wq_num', ++ 'offset' => '32', ++ 'type' => '905' ++ }, ++ '5' => { ++ 'name' => 'handle', ++ 'offset' => '36', ++ 'type' => '905' ++ }, ++ '6' => { ++ 'name' => 'state', ++ 'offset' => '40', ++ 'type' => '5835' ++ }, ++ '7' => { ++ 'name' => 'wq_type', ++ 'offset' => '44', ++ 'type' => '5684' ++ }, ++ '8' => { ++ 'name' => 'post_recv', ++ 'offset' => '48', ++ 'type' => '8072' ++ }, ++ '9' => { ++ 'name' => 'mutex', ++ 'offset' => '56', ++ 'type' => '762' ++ } ++ }, ++ 'Name' => 'struct ibv_wq', ++ 'Size' => '152', ++ 'Type' => 'Struct' ++ }, ++ '4391' => { ++ 'BaseType' => '4196', ++ 'Name' => 'struct ibv_wq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '4397' => { ++ 'Header' => undef, ++ 'Line' => '483', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SUCCESS', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_LOC_LEN_ERR', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_REM_ACCESS_ERR', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_REM_OP_ERR', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_RETRY_EXC_ERR', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_RNR_RETRY_EXC_ERR', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_LOC_RDD_VIOL_ERR', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_REM_INV_RD_REQ_ERR', ++ 'value' => '15' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_REM_ABORT_ERR', ++ 'value' => '16' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_INV_EECN_ERR', ++ 'value' => '17' ++ }, ++ '18' => { ++ 'name' => 'IBV_WC_INV_EEC_STATE_ERR', ++ 'value' => '18' ++ }, ++ '19' => { ++ 'name' => 'IBV_WC_FATAL_ERR', ++ 'value' => '19' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_LOC_QP_OP_ERR', ++ 'value' => '2' ++ }, ++ '20' => { ++ 'name' => 'IBV_WC_RESP_TIMEOUT_ERR', ++ 'value' => '20' ++ }, ++ '21' => { ++ 'name' => 'IBV_WC_GENERAL_ERR', ++ 'value' => '21' ++ }, ++ '22' => { ++ 'name' => 'IBV_WC_TM_ERR', ++ 'value' => '22' ++ }, ++ '23' => { ++ 'name' => 'IBV_WC_TM_RNDV_INCOMPLETE', ++ 'value' => '23' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_LOC_EEC_OP_ERR', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_LOC_PROT_ERR', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_WR_FLUSH_ERR', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_MW_BIND_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_BAD_RESP_ERR', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_LOC_ACCESS_ERR', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_REM_INV_REQ_ERR', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_status', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '45' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => 'size_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '4561' => { ++ 'Header' => undef, ++ 'Line' => '511', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SEND', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_RDMA_WRITE', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_TM_ADD', ++ 'value' => '130' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_TM_DEL', ++ 'value' => '131' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_TM_SYNC', ++ 'value' => '132' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_TM_RECV', ++ 'value' => '133' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_TM_NO_TAG', ++ 'value' => '134' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_DRIVER1', ++ 'value' => '135' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_DRIVER2', ++ 'value' => '136' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_DRIVER3', ++ 'value' => '137' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_RDMA_READ', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_COMP_SWAP', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_FETCH_ADD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_BIND_MW', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_LOCAL_INV', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_TSO', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_RECV', ++ 'value' => '128' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_RECV_RDMA_WITH_IMM', ++ 'value' => '129' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '4689' => { ++ 'Header' => undef, ++ 'Line' => '594', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '965' ++ }, ++ '1' => { ++ 'name' => 'invalidated_rkey', ++ 'offset' => '0', ++ 'type' => '905' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '4726' => { ++ 'Header' => undef, ++ 'Line' => '585', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '917' ++ }, ++ '1' => { ++ 'name' => 'status', ++ 'offset' => '8', ++ 'type' => '4397' ++ }, ++ '10' => { ++ 'name' => 'slid', ++ 'offset' => '42', ++ 'type' => '893' ++ }, ++ '11' => { ++ 'name' => 'sl', ++ 'offset' => '44', ++ 'type' => '881' ++ }, ++ '12' => { ++ 'name' => 'dlid_path_bits', ++ 'offset' => '45', ++ 'type' => '881' ++ }, ++ '2' => { ++ 'name' => 'opcode', ++ 'offset' => '12', ++ 'type' => '4561' ++ }, ++ '3' => { ++ 'name' => 'vendor_err', ++ 'offset' => '16', ++ 'type' => '905' ++ }, ++ '4' => { ++ 'name' => 'byte_len', ++ 'offset' => '20', ++ 'type' => '905' ++ }, ++ '5' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '4689' ++ }, ++ '6' => { ++ 'name' => 'qp_num', ++ 'offset' => '28', ++ 'type' => '905' ++ }, ++ '7' => { ++ 'name' => 'src_qp', ++ 'offset' => '32', ++ 'type' => '905' ++ }, ++ '8' => { ++ 'name' => 'wc_flags', ++ 'offset' => '36', ++ 'type' => '76' ++ }, ++ '9' => { ++ 'name' => 'pkey_index', ++ 'offset' => '40', ++ 'type' => '893' ++ } ++ }, ++ 'Name' => 'struct ibv_wc', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '4914' => { ++ 'Header' => undef, ++ 'Line' => '619', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mr', ++ 'offset' => '0', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'offset' => '8', ++ 'type' => '917' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'offset' => '16', ++ 'type' => '917' ++ }, ++ '3' => { ++ 'name' => 'mw_access_flags', ++ 'offset' => '24', ++ 'type' => '76' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind_info', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '4989' => { ++ 'Header' => undef, ++ 'Line' => '662', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '5293' ++ }, ++ '2' => { ++ 'name' => 'addr', ++ 'offset' => '16', ++ 'type' => '197' ++ }, ++ '3' => { ++ 'name' => 'length', ++ 'offset' => '24', ++ 'type' => '45' ++ }, ++ '4' => { ++ 'name' => 'handle', ++ 'offset' => '32', ++ 'type' => '905' ++ }, ++ '5' => { ++ 'name' => 'lkey', ++ 'offset' => '36', ++ 'type' => '905' ++ }, ++ '6' => { ++ 'name' => 'rkey', ++ 'offset' => '40', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct ibv_mr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '5101' => { ++ 'BaseType' => '4989', ++ 'Name' => 'struct ibv_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5107' => { ++ 'Header' => undef, ++ 'Line' => '626', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct ibv_pd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '516' => { ++ 'Name' => 'unsigned long long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '5264' => { ++ 'Header' => undef, ++ 'Line' => '651', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ } ++ }, ++ 'Name' => 'struct ibv_xrcd', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '5293' => { ++ 'BaseType' => '5107', ++ 'Name' => 'struct ibv_pd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5299' => { ++ 'Header' => undef, ++ 'Line' => '672', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MW_TYPE_1', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'IBV_MW_TYPE_2', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_mw_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '5331' => { ++ 'Header' => undef, ++ 'Line' => '677', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '5293' ++ }, ++ '2' => { ++ 'name' => 'rkey', ++ 'offset' => '16', ++ 'type' => '905' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '20', ++ 'type' => '905' ++ }, ++ '4' => { ++ 'name' => 'type', ++ 'offset' => '24', ++ 'type' => '5299' ++ } ++ }, ++ 'Name' => 'struct ibv_mw', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '5678' => { ++ 'BaseType' => '5264', ++ 'Name' => 'struct ibv_xrcd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5684' => { ++ 'Header' => undef, ++ 'Line' => '814', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WQT_RQ', ++ 'value' => '0' ++ } ++ }, ++ 'Name' => 'enum ibv_wq_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '57' => { ++ 'Name' => 'unsigned long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '5835' => { ++ 'Header' => undef, ++ 'Line' => '842', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WQS_RESET', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WQS_RDY', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_WQS_ERR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WQS_UNKNOWN', ++ 'value' => '3' ++ } ++ }, ++ 'Name' => 'enum ibv_wq_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '5964' => { ++ 'Header' => undef, ++ 'Line' => '874', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'ind_tbl_handle', ++ 'offset' => '8', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'ind_tbl_num', ++ 'offset' => '12', ++ 'type' => '64' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct ibv_rwq_ind_table', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '6098' => { ++ 'Header' => undef, ++ 'Line' => '895', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPT_RC', ++ 'value' => '2' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPT_UC', ++ 'value' => '3' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPT_UD', ++ 'value' => '4' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPT_RAW_PACKET', ++ 'value' => '8' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPT_XRC_SEND', ++ 'value' => '9' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPT_XRC_RECV', ++ 'value' => '10' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPT_DRIVER', ++ 'value' => '255' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '6160' => { ++ 'Header' => undef, ++ 'Line' => '905', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '0', ++ 'type' => '905' ++ }, ++ '1' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '4', ++ 'type' => '905' ++ }, ++ '2' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '8', ++ 'type' => '905' ++ }, ++ '3' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '12', ++ 'type' => '905' ++ }, ++ '4' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '16', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_cap', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '6245' => { ++ 'Header' => undef, ++ 'Line' => '955', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rx_hash_function', ++ 'offset' => '0', ++ 'type' => '881' ++ }, ++ '1' => { ++ 'name' => 'rx_hash_key_len', ++ 'offset' => '1', ++ 'type' => '881' ++ }, ++ '2' => { ++ 'name' => 'rx_hash_key', ++ 'offset' => '8', ++ 'type' => '6316' ++ }, ++ '3' => { ++ 'name' => 'rx_hash_fields_mask', ++ 'offset' => '16', ++ 'type' => '917' ++ } ++ }, ++ 'Name' => 'struct ibv_rx_hash_conf', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '6316' => { ++ 'BaseType' => '881', ++ 'Name' => 'uint8_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6322' => { ++ 'Header' => undef, ++ 'Line' => '964', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '197' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '3870' ++ }, ++ '10' => { ++ 'name' => 'create_flags', ++ 'offset' => '80', ++ 'type' => '905' ++ }, ++ '11' => { ++ 'name' => 'max_tso_header', ++ 'offset' => '84', ++ 'type' => '893' ++ }, ++ '12' => { ++ 'name' => 'rwq_ind_tbl', ++ 'offset' => '88', ++ 'type' => '6560' ++ }, ++ '13' => { ++ 'name' => 'rx_hash_conf', ++ 'offset' => '96', ++ 'type' => '6245' ++ }, ++ '14' => { ++ 'name' => 'source_qpn', ++ 'offset' => '120', ++ 'type' => '905' ++ }, ++ '15' => { ++ 'name' => 'send_ops_flags', ++ 'offset' => '128', ++ 'type' => '917' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '3870' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '4190' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '6160' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '6098' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '64' ++ }, ++ '7' => { ++ 'name' => 'comp_mask', ++ 'offset' => '60', ++ 'type' => '905' ++ }, ++ '8' => { ++ 'name' => 'pd', ++ 'offset' => '64', ++ 'type' => '5293' ++ }, ++ '9' => { ++ 'name' => 'xrcd', ++ 'offset' => '72', ++ 'type' => '5678' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr_ex', ++ 'Size' => '136', ++ 'Type' => 'Struct' ++ }, ++ '64' => { ++ 'Name' => 'int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '6560' => { ++ 'BaseType' => '5964', ++ 'Name' => 'struct ibv_rwq_ind_table*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6651' => { ++ 'Header' => undef, ++ 'Line' => '1033', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPS_RESET', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPS_INIT', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPS_RTR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPS_RTS', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPS_SQD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPS_SQE', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPS_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_QPS_UNKNOWN', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '6790' => { ++ 'Header' => undef, ++ 'Line' => '1086', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WR_RDMA_WRITE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WR_RDMA_WRITE_WITH_IMM', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WR_TSO', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WR_DRIVER1', ++ 'value' => '11' ++ }, ++ '2' => { ++ 'name' => 'IBV_WR_SEND', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WR_SEND_WITH_IMM', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WR_RDMA_READ', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WR_ATOMIC_CMP_AND_SWP', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WR_ATOMIC_FETCH_AND_ADD', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WR_LOCAL_INV', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WR_BIND_MW', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WR_SEND_WITH_INV', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wr_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '6930' => { ++ 'Header' => undef, ++ 'Line' => '1114', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '917' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '905' ++ }, ++ '2' => { ++ 'name' => 'lkey', ++ 'offset' => '12', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct ibv_sge', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '6992' => { ++ 'Header' => undef, ++ 'Line' => '1130', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '965' ++ }, ++ '1' => { ++ 'name' => 'invalidate_rkey', ++ 'offset' => '0', ++ 'type' => '905' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '7029' => { ++ 'Header' => undef, ++ 'Line' => '1135', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '917' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '905' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '7068' => { ++ 'Header' => undef, ++ 'Line' => '1139', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '917' ++ }, ++ '1' => { ++ 'name' => 'compare_add', ++ 'offset' => '8', ++ 'type' => '917' ++ }, ++ '2' => { ++ 'name' => 'swap', ++ 'offset' => '16', ++ 'type' => '917' ++ }, ++ '3' => { ++ 'name' => 'rkey', ++ 'offset' => '24', ++ 'type' => '905' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '7135' => { ++ 'Header' => undef, ++ 'Line' => '1145', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ah', ++ 'offset' => '0', ++ 'type' => '7243' ++ }, ++ '1' => { ++ 'name' => 'remote_qpn', ++ 'offset' => '8', ++ 'type' => '905' ++ }, ++ '2' => { ++ 'name' => 'remote_qkey', ++ 'offset' => '12', ++ 'type' => '905' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '7187' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '5293' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '905' ++ } ++ }, ++ 'Name' => 'struct ibv_ah', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '7243' => { ++ 'BaseType' => '7187', ++ 'Name' => 'struct ibv_ah*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7249' => { ++ 'Header' => undef, ++ 'Line' => '1134', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rdma', ++ 'offset' => '0', ++ 'type' => '7029' ++ }, ++ '1' => { ++ 'name' => 'atomic', ++ 'offset' => '0', ++ 'type' => '7068' ++ }, ++ '2' => { ++ 'name' => 'ud', ++ 'offset' => '0', ++ 'type' => '7135' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '7298' => { ++ 'Header' => undef, ++ 'Line' => '1152', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_srqn', ++ 'offset' => '0', ++ 'type' => '905' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '7323' => { ++ 'Header' => undef, ++ 'Line' => '1151', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'xrc', ++ 'offset' => '0', ++ 'type' => '7298' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '7347' => { ++ 'Header' => undef, ++ 'Line' => '1157', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mw', ++ 'offset' => '0', ++ 'type' => '7399' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '905' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '4914' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '7399' => { ++ 'BaseType' => '5331', ++ 'Name' => 'struct ibv_mw*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7405' => { ++ 'Header' => undef, ++ 'Line' => '1162', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '197' ++ }, ++ '1' => { ++ 'name' => 'hdr_sz', ++ 'offset' => '8', ++ 'type' => '893' ++ }, ++ '2' => { ++ 'name' => 'mss', ++ 'offset' => '10', ++ 'type' => '893' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '7458' => { ++ 'Header' => undef, ++ 'Line' => '1156', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'bind_mw', ++ 'offset' => '0', ++ 'type' => '7347' ++ }, ++ '1' => { ++ 'name' => 'tso', ++ 'offset' => '0', ++ 'type' => '7405' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '7495' => { ++ 'Header' => undef, ++ 'Line' => '1120', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '917' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '7633' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '7639' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '64' ++ }, ++ '4' => { ++ 'name' => 'opcode', ++ 'offset' => '28', ++ 'type' => '6790' ++ }, ++ '5' => { ++ 'name' => 'send_flags', ++ 'offset' => '32', ++ 'type' => '76' ++ }, ++ '6' => { ++ 'name' => 'unnamed0', ++ 'offset' => '36', ++ 'type' => '6992' ++ }, ++ '7' => { ++ 'name' => 'wr', ++ 'offset' => '40', ++ 'type' => '7249' ++ }, ++ '8' => { ++ 'name' => 'qp_type', ++ 'offset' => '72', ++ 'type' => '7323' ++ }, ++ '9' => { ++ 'name' => 'unnamed1', ++ 'offset' => '80', ++ 'type' => '7458' ++ } ++ }, ++ 'Name' => 'struct ibv_send_wr', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '76' => { ++ 'Name' => 'unsigned int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '7633' => { ++ 'BaseType' => '7495', ++ 'Name' => 'struct ibv_send_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7639' => { ++ 'BaseType' => '6930', ++ 'Name' => 'struct ibv_sge*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7645' => { ++ 'Header' => undef, ++ 'Line' => '1170', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '917' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '7716' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '7639' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '64' ++ } ++ }, ++ 'Name' => 'struct ibv_recv_wr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '7716' => { ++ 'BaseType' => '7645', ++ 'Name' => 'struct ibv_recv_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7984' => { ++ 'Header' => undef, ++ 'Line' => '1206', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '917' ++ }, ++ '1' => { ++ 'name' => 'send_flags', ++ 'offset' => '8', ++ 'type' => '76' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '4914' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '8066' => { ++ 'BaseType' => '7716', ++ 'Name' => 'struct ibv_recv_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '8072' => { ++ 'Name' => 'int(*)(struct ibv_wq*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '4391' ++ }, ++ '1' => { ++ 'type' => '7716' ++ }, ++ '2' => { ++ 'type' => '8066' ++ } ++ }, ++ 'Return' => '64', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '83' => { ++ 'Name' => 'long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '83900' => { ++ 'Header' => undef, ++ 'Line' => '161', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wqe_cnt', ++ 'offset' => '0', ++ 'type' => '905' ++ }, ++ '1' => { ++ 'name' => 'wqe_shift', ++ 'offset' => '4', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'offset', ++ 'offset' => '8', ++ 'type' => '64' ++ } ++ }, ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '83949' => { ++ 'Header' => undef, ++ 'Line' => '166', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wqe_cnt', ++ 'offset' => '0', ++ 'type' => '905' ++ }, ++ '1' => { ++ 'name' => 'wqe_shift', ++ 'offset' => '4', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'offset', ++ 'offset' => '8', ++ 'type' => '64' ++ } ++ }, ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '83998' => { ++ 'Header' => undef, ++ 'Line' => '171', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '197' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '45' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84034' => { ++ 'Header' => undef, ++ 'Line' => '157', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rdb', ++ 'offset' => '0', ++ 'type' => '13650' ++ }, ++ '1' => { ++ 'name' => 'sdb', ++ 'offset' => '8', ++ 'type' => '13326' ++ }, ++ '2' => { ++ 'name' => 'doorbell_qpn', ++ 'offset' => '16', ++ 'type' => '965' ++ }, ++ '3' => { ++ 'name' => 'sq', ++ 'offset' => '20', ++ 'type' => '83900' ++ }, ++ '4' => { ++ 'name' => 'rq', ++ 'offset' => '32', ++ 'type' => '83949' ++ }, ++ '5' => { ++ 'name' => 'buf', ++ 'offset' => '48', ++ 'type' => '83998' ++ }, ++ '6' => { ++ 'name' => 'comp_mask', ++ 'offset' => '64', ++ 'type' => '917' ++ }, ++ '7' => { ++ 'name' => 'uar_mmap_offset', ++ 'offset' => '72', ++ 'type' => '218' ++ } ++ }, ++ 'Name' => 'struct mlx4dv_qp', ++ 'Size' => '80', ++ 'Type' => 'Struct' ++ }, ++ '84181' => { ++ 'Header' => undef, ++ 'Line' => '184', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '197' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '45' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84217' => { ++ 'Header' => undef, ++ 'Line' => '183', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '84181' ++ }, ++ '1' => { ++ 'name' => 'cqe_cnt', ++ 'offset' => '16', ++ 'type' => '905' ++ }, ++ '2' => { ++ 'name' => 'cqn', ++ 'offset' => '20', ++ 'type' => '905' ++ }, ++ '3' => { ++ 'name' => 'set_ci_db', ++ 'offset' => '24', ++ 'type' => '13650' ++ }, ++ '4' => { ++ 'name' => 'arm_db', ++ 'offset' => '32', ++ 'type' => '13650' ++ }, ++ '5' => { ++ 'name' => 'arm_sn', ++ 'offset' => '40', ++ 'type' => '64' ++ }, ++ '6' => { ++ 'name' => 'cqe_size', ++ 'offset' => '44', ++ 'type' => '64' ++ }, ++ '7' => { ++ 'name' => 'comp_mask', ++ 'offset' => '48', ++ 'type' => '917' ++ }, ++ '8' => { ++ 'name' => 'cq_uar', ++ 'offset' => '56', ++ 'type' => '197' ++ } ++ }, ++ 'Name' => 'struct mlx4dv_cq', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '84348' => { ++ 'Header' => undef, ++ 'Line' => '199', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '197' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '45' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84384' => { ++ 'Header' => undef, ++ 'Line' => '198', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '84348' ++ }, ++ '1' => { ++ 'name' => 'wqe_shift', ++ 'offset' => '16', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'head', ++ 'offset' => '20', ++ 'type' => '64' ++ }, ++ '3' => { ++ 'name' => 'tail', ++ 'offset' => '24', ++ 'type' => '64' ++ }, ++ '4' => { ++ 'name' => 'db', ++ 'offset' => '32', ++ 'type' => '13650' ++ }, ++ '5' => { ++ 'name' => 'comp_mask', ++ 'offset' => '40', ++ 'type' => '917' ++ } ++ }, ++ 'Name' => 'struct mlx4dv_srq', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '84475' => { ++ 'Header' => undef, ++ 'Line' => '212', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wqe_cnt', ++ 'offset' => '0', ++ 'type' => '905' ++ }, ++ '1' => { ++ 'name' => 'wqe_shift', ++ 'offset' => '4', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'offset', ++ 'offset' => '8', ++ 'type' => '64' ++ } ++ }, ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '84524' => { ++ 'Header' => undef, ++ 'Line' => '217', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '197' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '45' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84560' => { ++ 'Header' => undef, ++ 'Line' => '210', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rdb', ++ 'offset' => '0', ++ 'type' => '13650' ++ }, ++ '1' => { ++ 'name' => 'rq', ++ 'offset' => '8', ++ 'type' => '84475' ++ }, ++ '2' => { ++ 'name' => 'buf', ++ 'offset' => '24', ++ 'type' => '84524' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '40', ++ 'type' => '917' ++ } ++ }, ++ 'Name' => 'struct mlx4dv_rwq', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '84625' => { ++ 'Header' => undef, ++ 'Line' => '225', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '4072' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '84660' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84660' => { ++ 'BaseType' => '84034', ++ 'Name' => 'struct mlx4dv_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '84666' => { ++ 'Header' => undef, ++ 'Line' => '229', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '3870' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '84701' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84701' => { ++ 'BaseType' => '84217', ++ 'Name' => 'struct mlx4dv_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '84707' => { ++ 'Header' => undef, ++ 'Line' => '233', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '4190' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '84742' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84742' => { ++ 'BaseType' => '84384', ++ 'Name' => 'struct mlx4dv_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '84748' => { ++ 'Header' => undef, ++ 'Line' => '237', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '4391' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '84783' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84783' => { ++ 'BaseType' => '84560', ++ 'Name' => 'struct mlx4dv_rwq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '84789' => { ++ 'Header' => undef, ++ 'Line' => '224', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp', ++ 'offset' => '0', ++ 'type' => '84625' ++ }, ++ '1' => { ++ 'name' => 'cq', ++ 'offset' => '16', ++ 'type' => '84666' ++ }, ++ '2' => { ++ 'name' => 'srq', ++ 'offset' => '32', ++ 'type' => '84707' ++ }, ++ '3' => { ++ 'name' => 'rwq', ++ 'offset' => '48', ++ 'type' => '84748' ++ } ++ }, ++ 'Name' => 'struct mlx4dv_obj', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '84918' => { ++ 'Header' => undef, ++ 'Line' => '437', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'version', ++ 'offset' => '0', ++ 'type' => '881' ++ }, ++ '1' => { ++ 'name' => 'max_inl_recv_sz', ++ 'offset' => '4', ++ 'type' => '905' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '917' ++ } ++ }, ++ 'Name' => 'struct mlx4dv_context', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '84975' => { ++ 'Header' => undef, ++ 'Line' => '539', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX4DV_SET_CTX_ATTR_LOG_WQS_RANGE_SZ', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX4DV_SET_CTX_ATTR_BUF_ALLOCATORS', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx4dv_set_ctx_attr_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '881' => { ++ 'BaseType' => '118', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => 'uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '8884' => { ++ 'Header' => undef, ++ 'Line' => '1452', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '1706' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '8', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'refcnt', ++ 'offset' => '12', ++ 'type' => '64' ++ } ++ }, ++ 'Name' => 'struct ibv_comp_channel', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '893' => { ++ 'BaseType' => '137', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => 'uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '89362' => { ++ 'BaseType' => '84918', ++ 'Name' => 'struct mlx4dv_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '8940' => { ++ 'BaseType' => '8884', ++ 'Name' => 'struct ibv_comp_channel*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '89821' => { ++ 'BaseType' => '84789', ++ 'Name' => 'struct mlx4dv_obj*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '905' => { ++ 'BaseType' => '149', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => 'uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '917' => { ++ 'BaseType' => '161', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => 'uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '941' => { ++ 'BaseType' => '76', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__u32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '953' => { ++ 'BaseType' => '516', ++ 'Header' => undef, ++ 'Line' => '31', ++ 'Name' => '__u64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '965' => { ++ 'BaseType' => '941', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__be32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '97' => { ++ 'Name' => 'unsigned char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '977' => { ++ 'BaseType' => '953', ++ 'Header' => undef, ++ 'Line' => '29', ++ 'Name' => '__be64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ } ++ }, ++ 'UndefinedSymbols' => { ++ 'libmlx4.so.1.0.41.0' => { ++ '_ITM_deregisterTMCloneTable' => 0, ++ '_ITM_registerTMCloneTable' => 0, ++ '__cxa_finalize@GLIBC_2.2.5' => 0, ++ '__errno_location@GLIBC_2.2.5' => 0, ++ '__gmon_start__' => 0, ++ '__printf_chk@GLIBC_2.3.4' => 0, ++ '__snprintf_chk@GLIBC_2.3.4' => 0, ++ '__stack_chk_fail@GLIBC_2.4' => 0, ++ '_verbs_init_and_alloc_context@IBVERBS_PRIVATE_34' => 0, ++ 'calloc@GLIBC_2.2.5' => 0, ++ 'free@GLIBC_2.2.5' => 0, ++ 'fwrite@GLIBC_2.2.5' => 0, ++ 'ibv_cmd_alloc_mw@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_alloc_pd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_attach_mcast@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_close_xrcd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_cq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_cq_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_flow@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_qp_ex2@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_qp_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_rwq_ind_table@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_srq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_srq_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_wq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_dealloc_mw@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_dealloc_pd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_dereg_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_cq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_flow@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_rwq_ind_table@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_srq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_wq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_detach_mcast@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_get_context@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_cq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_srq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_wq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_open_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_open_xrcd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_device_any@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_port@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_srq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_reg_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_rereg_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_resize_cq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_dofork_range@IBVERBS_1.1' => 0, ++ 'ibv_dontfork_range@IBVERBS_1.1' => 0, ++ 'ibv_query_device@IBVERBS_1.1' => 0, ++ 'ibv_query_gid@IBVERBS_1.1' => 0, ++ 'ibv_query_port@IBVERBS_1.1' => 0, ++ 'ibv_resolve_eth_l2_from_gid@IBVERBS_1.1' => 0, ++ 'malloc@GLIBC_2.2.5' => 0, ++ 'memcpy@GLIBC_2.14' => 0, ++ 'memset@GLIBC_2.2.5' => 0, ++ 'mmap@GLIBC_2.2.5' => 0, ++ 'munmap@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_init@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_lock@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_unlock@GLIBC_2.2.5' => 0, ++ 'pthread_spin_init@GLIBC_2.2.5' => 0, ++ 'pthread_spin_lock@GLIBC_2.2.5' => 0, ++ 'pthread_spin_unlock@GLIBC_2.2.5' => 0, ++ 'stderr@GLIBC_2.2.5' => 0, ++ 'sysconf@GLIBC_2.2.5' => 0, ++ 'verbs_register_driver_34@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_set_ops@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_uninit_context@IBVERBS_PRIVATE_34' => 0 ++ } ++ }, ++ 'WordSize' => '8' ++ }; +diff --git a/ABI/mlx5.dump b/ABI/mlx5.dump +new file mode 100644 +index 0000000..180d00c +--- /dev/null ++++ b/ABI/mlx5.dump +@@ -0,0 +1,15572 @@ ++$VAR1 = { ++ 'ABI_DUMPER_VERSION' => '1.1', ++ 'ABI_DUMP_VERSION' => '3.5', ++ 'Arch' => 'x86_64', ++ 'GccVersion' => '11.1.0', ++ 'Headers' => {}, ++ 'Language' => 'C', ++ 'LibraryName' => 'libmlx5.so.1.23.41.0', ++ 'LibraryVersion' => 'mlx5', ++ 'MissedOffsets' => '1', ++ 'MissedRegs' => '1', ++ 'NameSpaces' => {}, ++ 'Needed' => { ++ 'libc.so.6' => 1, ++ 'libibverbs.so.1' => 1, ++ 'libpthread.so.0' => 1 ++ }, ++ 'Sources' => {}, ++ 'SymbolInfo' => { ++ '1162516' => { ++ 'Header' => undef, ++ 'Line' => '5526', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '267' ++ }, ++ '2' => { ++ 'name' => 'size', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'access', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '29560', ++ 'ShortName' => 'mlx5dv_devx_umem_reg' ++ }, ++ '1162721' => { ++ 'Header' => undef, ++ 'Line' => '5559', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_devx_umem', ++ 'type' => '29560' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_umem_dereg' ++ }, ++ '1184828' => { ++ 'Header' => undef, ++ 'Line' => '5804', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'info', ++ 'type' => '30859' ++ }, ++ '3' => { ++ 'name' => 'info_len', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => '_mlx5dv_query_port' ++ }, ++ '1253335' => { ++ 'Header' => undef, ++ 'Line' => '6014', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_qp_query' ++ }, ++ '1253463' => { ++ 'Header' => undef, ++ 'Line' => '6062', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_qp_modify' ++ }, ++ '1262050' => { ++ 'Header' => undef, ++ 'Line' => '2301', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '11342' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '1256719' ++ } ++ }, ++ 'Return' => '2938', ++ 'ShortName' => 'mlx5dv_open_device' ++ }, ++ '1262239' => { ++ 'Header' => undef, ++ 'Line' => '2295', ++ 'Param' => { ++ '0' => { ++ 'name' => 'device', ++ 'type' => '11342' ++ } ++ }, ++ 'Return' => '2098', ++ 'ShortName' => 'mlx5dv_is_supported' ++ }, ++ '1262738' => { ++ 'Header' => undef, ++ 'Line' => '2195', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibv_ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'type', ++ 'type' => '20910' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'type' => '267' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_set_context_attr' ++ }, ++ '1263705' => { ++ 'Header' => undef, ++ 'Line' => '2109', ++ 'Param' => { ++ '0' => { ++ 'name' => 'obj', ++ 'type' => '29971' ++ }, ++ '1' => { ++ 'name' => 'obj_type', ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => '__mlx5dv_init_obj_1_0' ++ }, ++ '1263764' => { ++ 'Alias' => '__mlx5dv_init_obj_1_2', ++ 'Header' => undef, ++ 'Line' => '2090', ++ 'Param' => { ++ '0' => { ++ 'name' => 'obj', ++ 'type' => '29971' ++ }, ++ '1' => { ++ 'name' => 'obj_type', ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_init_obj' ++ }, ++ '1264765' => { ++ 'Header' => undef, ++ 'Line' => '2037', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'qpn', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_reserved_qpn_dealloc' ++ }, ++ '1265771' => { ++ 'Header' => undef, ++ 'Line' => '1984', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'qpn', ++ 'type' => '14364' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_reserved_qpn_alloc' ++ }, ++ '1268088' => { ++ 'Header' => undef, ++ 'Line' => '1842', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'requestor', ++ 'type' => '30702' ++ }, ++ '2' => { ++ 'name' => 'responder', ++ 'type' => '30702' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_modify_qp_sched_elem' ++ }, ++ '1271341' => { ++ 'Header' => undef, ++ 'Line' => '1715', ++ 'Param' => { ++ '0' => { ++ 'name' => 'leaf', ++ 'type' => '30571' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_sched_leaf_destroy' ++ }, ++ '1271560' => { ++ 'Header' => undef, ++ 'Line' => '1693', ++ 'Param' => { ++ '0' => { ++ 'name' => 'node', ++ 'type' => '21628' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_sched_node_destroy' ++ }, ++ '1271779' => { ++ 'Header' => undef, ++ 'Line' => '1670', ++ 'Param' => { ++ '0' => { ++ 'name' => 'leaf', ++ 'type' => '30571' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '30539' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_sched_leaf_modify' ++ }, ++ '1271960' => { ++ 'Header' => undef, ++ 'Line' => '1642', ++ 'Param' => { ++ '0' => { ++ 'name' => 'node', ++ 'type' => '21628' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '30539' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_sched_node_modify' ++ }, ++ '1272141' => { ++ 'Header' => undef, ++ 'Line' => '1612', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '30539' ++ } ++ }, ++ 'Return' => '30571', ++ 'ShortName' => 'mlx5dv_sched_leaf_create' ++ }, ++ '1272386' => { ++ 'Header' => undef, ++ 'Line' => '1561', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '30539' ++ } ++ }, ++ 'Return' => '21628', ++ 'ShortName' => 'mlx5dv_sched_node_create' ++ }, ++ '1275854' => { ++ 'Header' => undef, ++ 'Line' => '1369', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'stream_id', ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dci_stream_id_reset' ++ }, ++ '1276845' => { ++ 'Header' => undef, ++ 'Line' => '1359', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'udp_sport', ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_modify_qp_udp_sport' ++ }, ++ '1277737' => { ++ 'Header' => undef, ++ 'Line' => '1320', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '1987' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_modify_qp_lag_port' ++ }, ++ '1278870' => { ++ 'Header' => undef, ++ 'Line' => '1242', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'port_num', ++ 'type' => '7345' ++ }, ++ '2' => { ++ 'name' => 'active_port_num', ++ 'type' => '7345' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_query_qp_lag_port' ++ }, ++ '1281928' => { ++ 'Header' => undef, ++ 'Line' => '973', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx_in', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'attrs_out', ++ 'type' => '30424' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_query_device' ++ }, ++ '1355191' => { ++ 'Header' => undef, ++ 'Line' => '3540', ++ 'Param' => { ++ '0' => { ++ 'name' => 'attr', ++ 'type' => '1355913' ++ } ++ }, ++ 'Return' => '1355907', ++ 'ShortName' => 'mlx5dv_get_vfio_device_list' ++ }, ++ '1355931' => { ++ 'Header' => undef, ++ 'Line' => '3520', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibctx', ++ 'type' => '2938' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_vfio_process_events' ++ }, ++ '1359784' => { ++ 'Header' => undef, ++ 'Line' => '3513', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibctx', ++ 'type' => '2938' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_vfio_get_events_fd' ++ }, ++ '1480084' => { ++ 'Header' => undef, ++ 'Line' => '4164', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_qp', ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'name' => 'wr_id', ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_qp_cancel_posted_send_wrs' ++ }, ++ '1665899' => { ++ 'Header' => undef, ++ 'Line' => '7441', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dveq', ++ 'type' => '30980' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_destroy_eq' ++ }, ++ '1666033' => { ++ 'Header' => undef, ++ 'Line' => '7428', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '30980', ++ 'ShortName' => 'mlx5dv_devx_create_eq' ++ }, ++ '1666280' => { ++ 'Header' => undef, ++ 'Line' => '7415', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dvmsi', ++ 'type' => '30912' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_free_msi_vector' ++ }, ++ '1666415' => { ++ 'Header' => undef, ++ 'Line' => '7403', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibctx', ++ 'type' => '2938' ++ } ++ }, ++ 'Return' => '30912', ++ 'ShortName' => 'mlx5dv_devx_alloc_msi_vector' ++ }, ++ '1666551' => { ++ 'Header' => undef, ++ 'Line' => '7391', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_pp', ++ 'type' => '29922' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mlx5dv_pp_free' ++ }, ++ '1667101' => { ++ 'Header' => undef, ++ 'Line' => '7358', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'pp_context_sz', ++ 'type' => '386' ++ }, ++ '2' => { ++ 'name' => 'pp_context', ++ 'type' => '1980' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '29922', ++ 'ShortName' => 'mlx5dv_pp_alloc' ++ }, ++ '1668793' => { ++ 'Header' => undef, ++ 'Line' => '7299', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_var', ++ 'type' => '29863' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mlx5dv_free_var' ++ }, ++ '1669343' => { ++ 'Header' => undef, ++ 'Line' => '7270', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '29863', ++ 'ShortName' => 'mlx5dv_alloc_var' ++ }, ++ '1670832' => { ++ 'Header' => undef, ++ 'Line' => '7213', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dek', ++ 'type' => '17626' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dek_destroy' ++ }, ++ '1671051' => { ++ 'Header' => undef, ++ 'Line' => '7189', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dek', ++ 'type' => '17626' ++ }, ++ '1' => { ++ 'name' => 'dek_attr', ++ 'type' => '29810' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dek_query' ++ }, ++ '1671970' => { ++ 'Header' => undef, ++ 'Line' => '7136', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'init_attr', ++ 'type' => '29778' ++ } ++ }, ++ 'Return' => '17626', ++ 'ShortName' => 'mlx5dv_dek_create' ++ }, ++ '1673345' => { ++ 'Header' => undef, ++ 'Line' => '7053', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_crypto_logout' ++ }, ++ '1673661' => { ++ 'Header' => undef, ++ 'Line' => '7020', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'state', ++ 'type' => '29725' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_crypto_login_query_state' ++ }, ++ '1674899' => { ++ 'Header' => undef, ++ 'Line' => '6957', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'login_attr', ++ 'type' => '29693' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_crypto_login' ++ }, ++ '1676286' => { ++ 'Header' => undef, ++ 'Line' => '6840', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_mkey', ++ 'type' => '17946' ++ }, ++ '1' => { ++ 'name' => 'err_info', ++ 'type' => '1676566' ++ }, ++ '2' => { ++ 'name' => 'err_info_size', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => '_mlx5dv_mkey_check' ++ }, ++ '1676656' => { ++ 'Header' => undef, ++ 'Line' => '6779', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_mkey', ++ 'type' => '17946' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_destroy_mkey' ++ }, ++ '1677121' => { ++ 'Header' => undef, ++ 'Line' => '6740', ++ 'Param' => { ++ '0' => { ++ 'name' => 'mkey_init_attr', ++ 'type' => '29640' ++ } ++ }, ++ 'Return' => '17946', ++ 'ShortName' => 'mlx5dv_create_mkey' ++ }, ++ '1680318' => { ++ 'Header' => undef, ++ 'Line' => '6624', ++ 'Param' => { ++ '0' => { ++ 'name' => 'event_channel', ++ 'type' => '29249' ++ }, ++ '1' => { ++ 'name' => 'event_data', ++ 'type' => '29469' ++ }, ++ '2' => { ++ 'name' => 'event_resp_len', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '1933', ++ 'ShortName' => 'mlx5dv_devx_get_event' ++ }, ++ '1680985' => { ++ 'Header' => undef, ++ 'Line' => '6510', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cmd_comp', ++ 'type' => '29200' ++ }, ++ '1' => { ++ 'name' => 'cmd_resp', ++ 'type' => '29432' ++ }, ++ '2' => { ++ 'name' => 'cmd_resp_len', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_get_async_cmd_comp' ++ }, ++ '1681345' => { ++ 'Header' => undef, ++ 'Line' => '6480', ++ 'Param' => { ++ '0' => { ++ 'name' => 'obj', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ }, ++ '4' => { ++ 'name' => 'wr_id', ++ 'type' => '2028' ++ }, ++ '5' => { ++ 'name' => 'cmd_comp', ++ 'type' => '29200' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_obj_query_async' ++ }, ++ '1682907' => { ++ 'Header' => undef, ++ 'Line' => '6444', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_event_channel', ++ 'type' => '29249' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'type' => '128' ++ }, ++ '2' => { ++ 'name' => 'obj', ++ 'type' => '19143' ++ }, ++ '3' => { ++ 'name' => 'event_num', ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_subscribe_devx_event_fd' ++ }, ++ '1684210' => { ++ 'Header' => undef, ++ 'Line' => '6402', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_event_channel', ++ 'type' => '29249' ++ }, ++ '1' => { ++ 'name' => 'obj', ++ 'type' => '19143' ++ }, ++ '2' => { ++ 'name' => 'events_sz', ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'name' => 'events_num', ++ 'type' => '29313' ++ }, ++ '4' => { ++ 'name' => 'cookie', ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_subscribe_devx_event' ++ }, ++ '1685586' => { ++ 'Header' => undef, ++ 'Line' => '6363', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_event_channel', ++ 'type' => '29249' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mlx5dv_devx_destroy_event_channel' ++ }, ++ '1685821' => { ++ 'Header' => undef, ++ 'Line' => '6339', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '15599' ++ } ++ }, ++ 'Return' => '29249', ++ 'ShortName' => 'mlx5dv_devx_create_event_channel' ++ }, ++ '1686800' => { ++ 'Header' => undef, ++ 'Line' => '6295', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cmd_comp', ++ 'type' => '29200' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mlx5dv_devx_destroy_cmd_comp' ++ }, ++ '1686952' => { ++ 'Header' => undef, ++ 'Line' => '6276', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ } ++ }, ++ 'Return' => '29200', ++ 'ShortName' => 'mlx5dv_devx_create_cmd_comp' ++ }, ++ '1687672' => { ++ 'Header' => undef, ++ 'Line' => '6230', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ind_tbl', ++ 'type' => '7589' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_ind_tbl_modify' ++ }, ++ '1688929' => { ++ 'Header' => undef, ++ 'Line' => '6203', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ind_tbl', ++ 'type' => '7589' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_ind_tbl_query' ++ }, ++ '1690186' => { ++ 'Header' => undef, ++ 'Line' => '6175', ++ 'Param' => { ++ '0' => { ++ 'name' => 'wq', ++ 'type' => '5420' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_wq_modify' ++ }, ++ '1691441' => { ++ 'Header' => undef, ++ 'Line' => '6149', ++ 'Param' => { ++ '0' => { ++ 'name' => 'wq', ++ 'type' => '5420' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_wq_query' ++ }, ++ '1692696' => { ++ 'Header' => undef, ++ 'Line' => '6123', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '5219' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_srq_modify' ++ }, ++ '1693953' => { ++ 'Header' => undef, ++ 'Line' => '6097', ++ 'Param' => { ++ '0' => { ++ 'name' => 'srq', ++ 'type' => '5219' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_srq_query' ++ }, ++ '1698172' => { ++ 'Header' => undef, ++ 'Line' => '5988', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '4899' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_cq_modify' ++ }, ++ '1699427' => { ++ 'Header' => undef, ++ 'Line' => '5962', ++ 'Param' => { ++ '0' => { ++ 'name' => 'cq', ++ 'type' => '4899' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_cq_query' ++ }, ++ '1700682' => { ++ 'Header' => undef, ++ 'Line' => '5936', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'vector', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'eqn', ++ 'type' => '14364' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_query_eqn' ++ }, ++ '1713573' => { ++ 'Header' => undef, ++ 'Line' => '5513', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'umem_in', ++ 'type' => '29592' ++ } ++ }, ++ 'Return' => '29560', ++ 'ShortName' => 'mlx5dv_devx_umem_reg_ex' ++ }, ++ '1715766' => { ++ 'Header' => undef, ++ 'Line' => '5415', ++ 'Param' => { ++ '0' => { ++ 'name' => 'flow_matcher', ++ 'type' => '30312' ++ }, ++ '1' => { ++ 'name' => 'match_value', ++ 'type' => '18881' ++ }, ++ '2' => { ++ 'name' => 'num_actions', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'actions_attr', ++ 'type' => '30386' ++ } ++ }, ++ 'Return' => '13536', ++ 'ShortName' => 'mlx5dv_create_flow' ++ }, ++ '1727774' => { ++ 'Header' => undef, ++ 'Line' => '4833', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dm', ++ 'type' => '2974' ++ }, ++ '1' => { ++ 'name' => 'op', ++ 'type' => '1987' ++ } ++ }, ++ 'Return' => '267', ++ 'ShortName' => 'mlx5dv_dm_map_op_addr' ++ }, ++ '1733579' => { ++ 'Header' => undef, ++ 'Line' => '4574', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'esp', ++ 'type' => '13721' ++ }, ++ '2' => { ++ 'name' => 'mlx5_attr', ++ 'type' => '30203' ++ } ++ }, ++ 'Return' => '13715', ++ 'ShortName' => 'mlx5dv_create_flow_action_esp' ++ }, ++ '1738360' => { ++ 'Header' => undef, ++ 'Line' => '4255', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '14092' ++ }, ++ '2' => { ++ 'name' => 'mlx5_wq_attr', ++ 'type' => '30103' ++ } ++ }, ++ 'Return' => '5420', ++ 'ShortName' => 'mlx5dv_create_wq' ++ }, ++ '1750041' => { ++ 'Header' => undef, ++ 'Line' => '3354', ++ 'Param' => { ++ '0' => { ++ 'name' => 'qp', ++ 'type' => '9501' ++ } ++ }, ++ 'Return' => '17898', ++ 'ShortName' => 'mlx5dv_qp_ex_from_ibv_qp_ex' ++ }, ++ '1750091' => { ++ 'Header' => undef, ++ 'Line' => '3340', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'qp_attr', ++ 'type' => '14332' ++ }, ++ '2' => { ++ 'name' => 'mlx5_qp_attr', ++ 'type' => '30045' ++ } ++ }, ++ 'Return' => '5101', ++ 'ShortName' => 'mlx5dv_create_qp' ++ }, ++ '1750802' => { ++ 'Header' => undef, ++ 'Line' => '3307', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ah', ++ 'type' => '8272' ++ }, ++ '1' => { ++ 'name' => 'qp_num', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_map_ah_to_qp' ++ }, ++ '1773365' => { ++ 'Header' => undef, ++ 'Line' => '1198', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'cq_attr', ++ 'type' => '14156' ++ }, ++ '2' => { ++ 'name' => 'mlx5_cq_attr', ++ 'type' => '30008' ++ } ++ }, ++ 'Return' => '10507', ++ 'ShortName' => 'mlx5dv_create_cq' ++ }, ++ '316753' => { ++ 'Header' => undef, ++ 'Line' => '1633', ++ 'Param' => { ++ '0' => { ++ 'name' => 'rule', ++ 'type' => '314191' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_rule_destroy' ++ }, ++ '316843' => { ++ 'Header' => undef, ++ 'Line' => '220', ++ 'Param' => { ++ '0' => { ++ 'name' => 'tbl', ++ 'type' => '293256' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_table_destroy' ++ }, ++ '316866' => { ++ 'Header' => undef, ++ 'Line' => '1567', ++ 'Param' => { ++ '0' => { ++ 'name' => 'matcher', ++ 'type' => '314108' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_matcher_destroy' ++ }, ++ '316889' => { ++ 'Header' => undef, ++ 'Line' => '1613', ++ 'Param' => { ++ '0' => { ++ 'name' => 'matcher', ++ 'type' => '314108' ++ }, ++ '1' => { ++ 'name' => 'value', ++ 'type' => '18881' ++ }, ++ '2' => { ++ 'name' => 'num_actions', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'actions', ++ 'type' => '293396' ++ } ++ }, ++ 'Return' => '314191', ++ 'ShortName' => 'mlx5dv_dr_rule_create' ++ }, ++ '316927' => { ++ 'Header' => undef, ++ 'Line' => '1454', ++ 'Param' => { ++ '0' => { ++ 'name' => 'tbl', ++ 'type' => '293256' ++ }, ++ '1' => { ++ 'name' => 'priority', ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'name' => 'match_criteria_enable', ++ 'type' => '1987' ++ }, ++ '3' => { ++ 'name' => 'mask', ++ 'type' => '18881' ++ } ++ }, ++ 'Return' => '314108', ++ 'ShortName' => 'mlx5dv_dr_matcher_create' ++ }, ++ '316965' => { ++ 'Header' => undef, ++ 'Line' => '166', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'level', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '293256', ++ 'ShortName' => 'mlx5dv_dr_table_create' ++ }, ++ '317105' => { ++ 'Header' => undef, ++ 'Line' => '5754', ++ 'Param' => { ++ '0' => { ++ 'name' => 'obj', ++ 'type' => '19143' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_obj_destroy' ++ }, ++ '317404' => { ++ 'Header' => undef, ++ 'Line' => '4640', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'actions_sz', ++ 'type' => '386' ++ }, ++ '2' => { ++ 'name' => 'actions', ++ 'type' => '13493' ++ }, ++ '3' => { ++ 'name' => 'ft_type', ++ 'type' => '15413' ++ } ++ }, ++ 'Return' => '13715', ++ 'ShortName' => 'mlx5dv_create_flow_action_modify_header' ++ }, ++ '317603' => { ++ 'Header' => undef, ++ 'Line' => '4708', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'data_sz', ++ 'type' => '386' ++ }, ++ '2' => { ++ 'name' => 'data', ++ 'type' => '267' ++ }, ++ '3' => { ++ 'name' => 'reformat_type', ++ 'type' => '15462' ++ }, ++ '4' => { ++ 'name' => 'ft_type', ++ 'type' => '15413' ++ } ++ }, ++ 'Return' => '13715', ++ 'ShortName' => 'mlx5dv_create_flow_action_packet_reformat' ++ }, ++ '317789' => { ++ 'Header' => undef, ++ 'Line' => '2810', ++ 'Param' => { ++ '0' => { ++ 'name' => 'action', ++ 'type' => '293402' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_action_destroy' ++ }, ++ '318253' => { ++ 'Header' => undef, ++ 'Line' => '2778', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'num_dest', ++ 'type' => '386' ++ }, ++ '2' => { ++ 'name' => 'dests', ++ 'type' => '319715' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_dest_array' ++ }, ++ '320385' => { ++ 'Header' => undef, ++ 'Line' => '2568', ++ 'Param' => { ++ '0' => { ++ 'name' => 'attr', ++ 'type' => '322458' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_flow_sampler' ++ }, ++ '323700' => { ++ 'Header' => undef, ++ 'Line' => '2183', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'ib_port', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_dest_ib_port' ++ }, ++ '324086' => { ++ 'Header' => undef, ++ 'Line' => '2147', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'vport', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_dest_vport' ++ }, ++ '324472' => { ++ 'Header' => undef, ++ 'Line' => '2100', ++ 'Param' => { ++ '0' => { ++ 'name' => 'attr', ++ 'type' => '317189' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_flow_meter' ++ }, ++ '325033' => { ++ 'Header' => undef, ++ 'Line' => '2083', ++ 'Param' => { ++ '0' => { ++ 'name' => 'action', ++ 'type' => '293402' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '317189' ++ }, ++ '2' => { ++ 'name' => 'modify_field_select', ++ 'type' => '2177' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_action_modify_flow_meter' ++ }, ++ '325171' => { ++ 'Header' => undef, ++ 'Line' => '2020', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'actions_sz', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'actions', ++ 'type' => '317277' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_modify_header' ++ }, ++ '330346' => { ++ 'Header' => undef, ++ 'Line' => '1500', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'vlan_hdr', ++ 'type' => '2165' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_push_vlan' ++ }, ++ '330749' => { ++ 'Header' => undef, ++ 'Line' => '1495', ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_pop_vlan' ++ }, ++ '330989' => { ++ 'Header' => undef, ++ 'Line' => '1430', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'reformat_type', ++ 'type' => '15462' ++ }, ++ '3' => { ++ 'name' => 'data_sz', ++ 'type' => '386' ++ }, ++ '4' => { ++ 'name' => 'data', ++ 'type' => '267' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_packet_reformat' ++ }, ++ '332463' => { ++ 'Header' => undef, ++ 'Line' => '1276', ++ 'Param' => { ++ '0' => { ++ 'name' => 'tag_value', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_tag' ++ }, ++ '332745' => { ++ 'Header' => undef, ++ 'Line' => '1257', ++ 'Param' => { ++ '0' => { ++ 'name' => 'action', ++ 'type' => '293402' ++ }, ++ '1' => { ++ 'name' => 'offset', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'return_reg_c', ++ 'type' => '1987' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_action_modify_aso' ++ }, ++ '333173' => { ++ 'Header' => undef, ++ 'Line' => '1166', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'devx_obj', ++ 'type' => '19143' ++ }, ++ '2' => { ++ 'name' => 'offset', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'return_reg_c', ++ 'type' => '1987' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_aso' ++ }, ++ '334357' => { ++ 'Header' => undef, ++ 'Line' => '1033', ++ 'Param' => { ++ '0' => { ++ 'name' => 'devx_obj', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'offset', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_flow_counter' ++ }, ++ '334677' => { ++ 'Header' => undef, ++ 'Line' => '1007', ++ 'Param' => { ++ '0' => { ++ 'name' => 'tbl', ++ 'type' => '293256' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_dest_table' ++ }, ++ '335046' => { ++ 'Header' => undef, ++ 'Line' => '989', ++ 'Param' => { ++ '0' => { ++ 'name' => 'devx_obj', ++ 'type' => '19143' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_dest_devx_tir' ++ }, ++ '335345' => { ++ 'Header' => undef, ++ 'Line' => '969', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ibqp', ++ 'type' => '5101' ++ } ++ }, ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_dest_ibv_qp' ++ }, ++ '335644' => { ++ 'Header' => undef, ++ 'Line' => '963', ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_default_miss' ++ }, ++ '335884' => { ++ 'Header' => undef, ++ 'Line' => '958', ++ 'Return' => '293402', ++ 'ShortName' => 'mlx5dv_dr_action_create_drop' ++ }, ++ '375206' => { ++ 'Header' => undef, ++ 'Line' => '840', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fout', ++ 'type' => '1945' ++ }, ++ '1' => { ++ 'name' => 'rule', ++ 'type' => '314191' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dump_dr_rule' ++ }, ++ '375852' => { ++ 'Header' => undef, ++ 'Line' => '815', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fout', ++ 'type' => '1945' ++ }, ++ '1' => { ++ 'name' => 'matcher', ++ 'type' => '314108' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dump_dr_matcher' ++ }, ++ '376474' => { ++ 'Header' => undef, ++ 'Line' => '794', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fout', ++ 'type' => '1945' ++ }, ++ '1' => { ++ 'name' => 'tbl', ++ 'type' => '293256' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dump_dr_table' ++ }, ++ '377072' => { ++ 'Header' => undef, ++ 'Line' => '776', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fout', ++ 'type' => '1945' ++ }, ++ '1' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dump_dr_domain' ++ }, ++ '446397' => { ++ 'Header' => undef, ++ 'Line' => '5726', ++ 'Param' => { ++ '0' => { ++ 'name' => 'obj', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_obj_modify' ++ }, ++ '446463' => { ++ 'Header' => undef, ++ 'Line' => '5700', ++ 'Param' => { ++ '0' => { ++ 'name' => 'obj', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_obj_query' ++ }, ++ '446506' => { ++ 'Header' => undef, ++ 'Line' => '5671', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '19143', ++ 'ShortName' => 'mlx5dv_devx_obj_create' ++ }, ++ '446642' => { ++ 'Header' => undef, ++ 'Line' => '5778', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'in', ++ 'type' => '1980' ++ }, ++ '2' => { ++ 'name' => 'inlen', ++ 'type' => '386' ++ }, ++ '3' => { ++ 'name' => 'out', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'outlen', ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_devx_general_cmd' ++ }, ++ '514440' => { ++ 'Header' => undef, ++ 'Line' => '5014', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'dm_attr', ++ 'type' => '13662' ++ }, ++ '2' => { ++ 'name' => 'mlx5_dm_attr', ++ 'type' => '30140' ++ } ++ }, ++ 'Return' => '2974', ++ 'ShortName' => 'mlx5dv_alloc_dm' ++ }, ++ '561080' => { ++ 'Header' => undef, ++ 'Line' => '5258', ++ 'Param' => { ++ '0' => { ++ 'name' => 'flow_matcher', ++ 'type' => '30312' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_destroy_flow_matcher' ++ }, ++ '563033' => { ++ 'Header' => undef, ++ 'Line' => '5227', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '30318' ++ } ++ }, ++ 'Return' => '30312', ++ 'ShortName' => 'mlx5dv_create_flow_matcher' ++ }, ++ '567450' => { ++ 'Header' => undef, ++ 'Line' => '1404', ++ 'Param' => { ++ '0' => { ++ 'name' => 'matcher', ++ 'type' => '314108' ++ }, ++ '1' => { ++ 'name' => 'matcher_layout', ++ 'type' => '567800' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_matcher_set_layout' ++ }, ++ '619095' => { ++ 'Header' => undef, ++ 'Line' => '5910', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dv_devx_uar', ++ 'type' => '29501' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mlx5dv_devx_free_uar' ++ }, ++ '619184' => { ++ 'Header' => undef, ++ 'Line' => '5887', ++ 'Param' => { ++ '0' => { ++ 'name' => 'context', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '29501', ++ 'ShortName' => 'mlx5dv_devx_alloc_uar' ++ }, ++ '619733' => { ++ 'Header' => undef, ++ 'Line' => '543', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_domain_destroy' ++ }, ++ '620343' => { ++ 'Header' => undef, ++ 'Line' => '532', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'allow', ++ 'type' => '2098' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mlx5dv_dr_domain_allow_duplicate_rules' ++ }, ++ '620765' => { ++ 'Header' => undef, ++ 'Line' => '521', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'enable', ++ 'type' => '2098' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'mlx5dv_dr_domain_set_reclaim_device_memory' ++ }, ++ '621187' => { ++ 'Header' => undef, ++ 'Line' => '1909', ++ 'Param' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_domain_sync' ++ }, ++ '621417' => { ++ 'Header' => undef, ++ 'Line' => '409', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'type', ++ 'type' => '292994' ++ } ++ }, ++ 'Return' => '308152', ++ 'ShortName' => 'mlx5dv_dr_domain_create' ++ }, ++ '734032' => { ++ 'Header' => undef, ++ 'Line' => '1638', ++ 'Param' => { ++ '0' => { ++ 'name' => 'devx_obj', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_aso_other_domain_unlink' ++ }, ++ '734165' => { ++ 'Header' => undef, ++ 'Line' => '1617', ++ 'Param' => { ++ '0' => { ++ 'name' => 'devx_obj', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'peer_dmn', ++ 'type' => '308152' ++ }, ++ '2' => { ++ 'name' => 'dmn', ++ 'type' => '308152' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'return_reg_c', ++ 'type' => '1987' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_dr_aso_other_domain_link' ++ }, ++ '76089' => { ++ 'Header' => undef, ++ 'Line' => '2245', ++ 'Param' => { ++ '0' => { ++ 'name' => 'ctx_in', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'clock_info', ++ 'type' => '30817' ++ } ++ }, ++ 'Return' => '128', ++ 'ShortName' => 'mlx5dv_get_clock_info' ++ } ++ }, ++ 'SymbolVersion' => { ++ '__mlx5dv_init_obj_1_0' => 'mlx5dv_init_obj@MLX5_1.0', ++ '__mlx5dv_init_obj_1_2' => 'mlx5dv_init_obj@@MLX5_1.2', ++ '_mlx5dv_mkey_check' => '_mlx5dv_mkey_check@@MLX5_1.20', ++ '_mlx5dv_query_port' => '_mlx5dv_query_port@@MLX5_1.19', ++ 'mlx5dv_alloc_dm' => 'mlx5dv_alloc_dm@@MLX5_1.10', ++ 'mlx5dv_alloc_var' => 'mlx5dv_alloc_var@@MLX5_1.12', ++ 'mlx5dv_create_cq' => 'mlx5dv_create_cq@@MLX5_1.1', ++ 'mlx5dv_create_flow' => 'mlx5dv_create_flow@@MLX5_1.6', ++ 'mlx5dv_create_flow_action_esp' => 'mlx5dv_create_flow_action_esp@@MLX5_1.5', ++ 'mlx5dv_create_flow_action_modify_header' => 'mlx5dv_create_flow_action_modify_header@@MLX5_1.7', ++ 'mlx5dv_create_flow_action_packet_reformat' => 'mlx5dv_create_flow_action_packet_reformat@@MLX5_1.7', ++ 'mlx5dv_create_flow_matcher' => 'mlx5dv_create_flow_matcher@@MLX5_1.6', ++ 'mlx5dv_create_mkey' => 'mlx5dv_create_mkey@@MLX5_1.10', ++ 'mlx5dv_create_qp' => 'mlx5dv_create_qp@@MLX5_1.3', ++ 'mlx5dv_create_wq' => 'mlx5dv_create_wq@@MLX5_1.3', ++ 'mlx5dv_crypto_login' => 'mlx5dv_crypto_login@@MLX5_1.21', ++ 'mlx5dv_crypto_login_query_state' => 'mlx5dv_crypto_login_query_state@@MLX5_1.21', ++ 'mlx5dv_crypto_logout' => 'mlx5dv_crypto_logout@@MLX5_1.21', ++ 'mlx5dv_dci_stream_id_reset' => 'mlx5dv_dci_stream_id_reset@@MLX5_1.21', ++ 'mlx5dv_dek_create' => 'mlx5dv_dek_create@@MLX5_1.21', ++ 'mlx5dv_dek_destroy' => 'mlx5dv_dek_destroy@@MLX5_1.21', ++ 'mlx5dv_dek_query' => 'mlx5dv_dek_query@@MLX5_1.21', ++ 'mlx5dv_destroy_flow_matcher' => 'mlx5dv_destroy_flow_matcher@@MLX5_1.6', ++ 'mlx5dv_destroy_mkey' => 'mlx5dv_destroy_mkey@@MLX5_1.10', ++ 'mlx5dv_devx_alloc_msi_vector' => 'mlx5dv_devx_alloc_msi_vector@@MLX5_1.23', ++ 'mlx5dv_devx_alloc_uar' => 'mlx5dv_devx_alloc_uar@@MLX5_1.7', ++ 'mlx5dv_devx_cq_modify' => 'mlx5dv_devx_cq_modify@@MLX5_1.8', ++ 'mlx5dv_devx_cq_query' => 'mlx5dv_devx_cq_query@@MLX5_1.8', ++ 'mlx5dv_devx_create_cmd_comp' => 'mlx5dv_devx_create_cmd_comp@@MLX5_1.9', ++ 'mlx5dv_devx_create_eq' => 'mlx5dv_devx_create_eq@@MLX5_1.23', ++ 'mlx5dv_devx_create_event_channel' => 'mlx5dv_devx_create_event_channel@@MLX5_1.11', ++ 'mlx5dv_devx_destroy_cmd_comp' => 'mlx5dv_devx_destroy_cmd_comp@@MLX5_1.9', ++ 'mlx5dv_devx_destroy_eq' => 'mlx5dv_devx_destroy_eq@@MLX5_1.23', ++ 'mlx5dv_devx_destroy_event_channel' => 'mlx5dv_devx_destroy_event_channel@@MLX5_1.11', ++ 'mlx5dv_devx_free_msi_vector' => 'mlx5dv_devx_free_msi_vector@@MLX5_1.23', ++ 'mlx5dv_devx_free_uar' => 'mlx5dv_devx_free_uar@@MLX5_1.7', ++ 'mlx5dv_devx_general_cmd' => 'mlx5dv_devx_general_cmd@@MLX5_1.7', ++ 'mlx5dv_devx_get_async_cmd_comp' => 'mlx5dv_devx_get_async_cmd_comp@@MLX5_1.9', ++ 'mlx5dv_devx_get_event' => 'mlx5dv_devx_get_event@@MLX5_1.11', ++ 'mlx5dv_devx_ind_tbl_modify' => 'mlx5dv_devx_ind_tbl_modify@@MLX5_1.8', ++ 'mlx5dv_devx_ind_tbl_query' => 'mlx5dv_devx_ind_tbl_query@@MLX5_1.8', ++ 'mlx5dv_devx_obj_create' => 'mlx5dv_devx_obj_create@@MLX5_1.7', ++ 'mlx5dv_devx_obj_destroy' => 'mlx5dv_devx_obj_destroy@@MLX5_1.7', ++ 'mlx5dv_devx_obj_modify' => 'mlx5dv_devx_obj_modify@@MLX5_1.7', ++ 'mlx5dv_devx_obj_query' => 'mlx5dv_devx_obj_query@@MLX5_1.7', ++ 'mlx5dv_devx_obj_query_async' => 'mlx5dv_devx_obj_query_async@@MLX5_1.9', ++ 'mlx5dv_devx_qp_modify' => 'mlx5dv_devx_qp_modify@@MLX5_1.8', ++ 'mlx5dv_devx_qp_query' => 'mlx5dv_devx_qp_query@@MLX5_1.8', ++ 'mlx5dv_devx_query_eqn' => 'mlx5dv_devx_query_eqn@@MLX5_1.7', ++ 'mlx5dv_devx_srq_modify' => 'mlx5dv_devx_srq_modify@@MLX5_1.8', ++ 'mlx5dv_devx_srq_query' => 'mlx5dv_devx_srq_query@@MLX5_1.8', ++ 'mlx5dv_devx_subscribe_devx_event' => 'mlx5dv_devx_subscribe_devx_event@@MLX5_1.11', ++ 'mlx5dv_devx_subscribe_devx_event_fd' => 'mlx5dv_devx_subscribe_devx_event_fd@@MLX5_1.11', ++ 'mlx5dv_devx_umem_dereg' => 'mlx5dv_devx_umem_dereg@@MLX5_1.7', ++ 'mlx5dv_devx_umem_reg' => 'mlx5dv_devx_umem_reg@@MLX5_1.7', ++ 'mlx5dv_devx_umem_reg_ex' => 'mlx5dv_devx_umem_reg_ex@@MLX5_1.19', ++ 'mlx5dv_devx_wq_modify' => 'mlx5dv_devx_wq_modify@@MLX5_1.8', ++ 'mlx5dv_devx_wq_query' => 'mlx5dv_devx_wq_query@@MLX5_1.8', ++ 'mlx5dv_dm_map_op_addr' => 'mlx5dv_dm_map_op_addr@@MLX5_1.19', ++ 'mlx5dv_dr_action_create_aso' => 'mlx5dv_dr_action_create_aso@@MLX5_1.17', ++ 'mlx5dv_dr_action_create_default_miss' => 'mlx5dv_dr_action_create_default_miss@@MLX5_1.14', ++ 'mlx5dv_dr_action_create_dest_array' => 'mlx5dv_dr_action_create_dest_array@@MLX5_1.16', ++ 'mlx5dv_dr_action_create_dest_devx_tir' => 'mlx5dv_dr_action_create_dest_devx_tir@@MLX5_1.15', ++ 'mlx5dv_dr_action_create_dest_ib_port' => 'mlx5dv_dr_action_create_dest_ib_port@@MLX5_1.21', ++ 'mlx5dv_dr_action_create_dest_ibv_qp' => 'mlx5dv_dr_action_create_dest_ibv_qp@@MLX5_1.10', ++ 'mlx5dv_dr_action_create_dest_table' => 'mlx5dv_dr_action_create_dest_table@@MLX5_1.10', ++ 'mlx5dv_dr_action_create_dest_vport' => 'mlx5dv_dr_action_create_dest_vport@@MLX5_1.10', ++ 'mlx5dv_dr_action_create_drop' => 'mlx5dv_dr_action_create_drop@@MLX5_1.10', ++ 'mlx5dv_dr_action_create_flow_counter' => 'mlx5dv_dr_action_create_flow_counter@@MLX5_1.10', ++ 'mlx5dv_dr_action_create_flow_meter' => 'mlx5dv_dr_action_create_flow_meter@@MLX5_1.12', ++ 'mlx5dv_dr_action_create_flow_sampler' => 'mlx5dv_dr_action_create_flow_sampler@@MLX5_1.16', ++ 'mlx5dv_dr_action_create_modify_header' => 'mlx5dv_dr_action_create_modify_header@@MLX5_1.10', ++ 'mlx5dv_dr_action_create_packet_reformat' => 'mlx5dv_dr_action_create_packet_reformat@@MLX5_1.10', ++ 'mlx5dv_dr_action_create_pop_vlan' => 'mlx5dv_dr_action_create_pop_vlan@@MLX5_1.17', ++ 'mlx5dv_dr_action_create_push_vlan' => 'mlx5dv_dr_action_create_push_vlan@@MLX5_1.17', ++ 'mlx5dv_dr_action_create_tag' => 'mlx5dv_dr_action_create_tag@@MLX5_1.10', ++ 'mlx5dv_dr_action_destroy' => 'mlx5dv_dr_action_destroy@@MLX5_1.10', ++ 'mlx5dv_dr_action_modify_aso' => 'mlx5dv_dr_action_modify_aso@@MLX5_1.17', ++ 'mlx5dv_dr_action_modify_flow_meter' => 'mlx5dv_dr_action_modify_flow_meter@@MLX5_1.12', ++ 'mlx5dv_dr_aso_other_domain_link' => 'mlx5dv_dr_aso_other_domain_link@@MLX5_1.22', ++ 'mlx5dv_dr_aso_other_domain_unlink' => 'mlx5dv_dr_aso_other_domain_unlink@@MLX5_1.22', ++ 'mlx5dv_dr_domain_allow_duplicate_rules' => 'mlx5dv_dr_domain_allow_duplicate_rules@@MLX5_1.20', ++ 'mlx5dv_dr_domain_create' => 'mlx5dv_dr_domain_create@@MLX5_1.10', ++ 'mlx5dv_dr_domain_destroy' => 'mlx5dv_dr_domain_destroy@@MLX5_1.10', ++ 'mlx5dv_dr_domain_set_reclaim_device_memory' => 'mlx5dv_dr_domain_set_reclaim_device_memory@@MLX5_1.14', ++ 'mlx5dv_dr_domain_sync' => 'mlx5dv_dr_domain_sync@@MLX5_1.10', ++ 'mlx5dv_dr_matcher_create' => 'mlx5dv_dr_matcher_create@@MLX5_1.10', ++ 'mlx5dv_dr_matcher_destroy' => 'mlx5dv_dr_matcher_destroy@@MLX5_1.10', ++ 'mlx5dv_dr_matcher_set_layout' => 'mlx5dv_dr_matcher_set_layout@@MLX5_1.21', ++ 'mlx5dv_dr_rule_create' => 'mlx5dv_dr_rule_create@@MLX5_1.10', ++ 'mlx5dv_dr_rule_destroy' => 'mlx5dv_dr_rule_destroy@@MLX5_1.10', ++ 'mlx5dv_dr_table_create' => 'mlx5dv_dr_table_create@@MLX5_1.10', ++ 'mlx5dv_dr_table_destroy' => 'mlx5dv_dr_table_destroy@@MLX5_1.10', ++ 'mlx5dv_dump_dr_domain' => 'mlx5dv_dump_dr_domain@@MLX5_1.12', ++ 'mlx5dv_dump_dr_matcher' => 'mlx5dv_dump_dr_matcher@@MLX5_1.12', ++ 'mlx5dv_dump_dr_rule' => 'mlx5dv_dump_dr_rule@@MLX5_1.12', ++ 'mlx5dv_dump_dr_table' => 'mlx5dv_dump_dr_table@@MLX5_1.12', ++ 'mlx5dv_free_var' => 'mlx5dv_free_var@@MLX5_1.12', ++ 'mlx5dv_get_clock_info' => 'mlx5dv_get_clock_info@@MLX5_1.4', ++ 'mlx5dv_get_vfio_device_list' => 'mlx5dv_get_vfio_device_list@@MLX5_1.21', ++ 'mlx5dv_is_supported' => 'mlx5dv_is_supported@@MLX5_1.8', ++ 'mlx5dv_map_ah_to_qp' => 'mlx5dv_map_ah_to_qp@@MLX5_1.20', ++ 'mlx5dv_modify_qp_lag_port' => 'mlx5dv_modify_qp_lag_port@@MLX5_1.14', ++ 'mlx5dv_modify_qp_sched_elem' => 'mlx5dv_modify_qp_sched_elem@@MLX5_1.17', ++ 'mlx5dv_modify_qp_udp_sport' => 'mlx5dv_modify_qp_udp_sport@@MLX5_1.17', ++ 'mlx5dv_open_device' => 'mlx5dv_open_device@@MLX5_1.7', ++ 'mlx5dv_pp_alloc' => 'mlx5dv_pp_alloc@@MLX5_1.13', ++ 'mlx5dv_pp_free' => 'mlx5dv_pp_free@@MLX5_1.13', ++ 'mlx5dv_qp_cancel_posted_send_wrs' => 'mlx5dv_qp_cancel_posted_send_wrs@@MLX5_1.20', ++ 'mlx5dv_qp_ex_from_ibv_qp_ex' => 'mlx5dv_qp_ex_from_ibv_qp_ex@@MLX5_1.10', ++ 'mlx5dv_query_device' => 'mlx5dv_query_device@@MLX5_1.0', ++ 'mlx5dv_query_qp_lag_port' => 'mlx5dv_query_qp_lag_port@@MLX5_1.14', ++ 'mlx5dv_reserved_qpn_alloc' => 'mlx5dv_reserved_qpn_alloc@@MLX5_1.18', ++ 'mlx5dv_reserved_qpn_dealloc' => 'mlx5dv_reserved_qpn_dealloc@@MLX5_1.18', ++ 'mlx5dv_sched_leaf_create' => 'mlx5dv_sched_leaf_create@@MLX5_1.17', ++ 'mlx5dv_sched_leaf_destroy' => 'mlx5dv_sched_leaf_destroy@@MLX5_1.17', ++ 'mlx5dv_sched_leaf_modify' => 'mlx5dv_sched_leaf_modify@@MLX5_1.17', ++ 'mlx5dv_sched_node_create' => 'mlx5dv_sched_node_create@@MLX5_1.17', ++ 'mlx5dv_sched_node_destroy' => 'mlx5dv_sched_node_destroy@@MLX5_1.17', ++ 'mlx5dv_sched_node_modify' => 'mlx5dv_sched_node_modify@@MLX5_1.17', ++ 'mlx5dv_set_context_attr' => 'mlx5dv_set_context_attr@@MLX5_1.2', ++ 'mlx5dv_vfio_get_events_fd' => 'mlx5dv_vfio_get_events_fd@@MLX5_1.21', ++ 'mlx5dv_vfio_process_events' => 'mlx5dv_vfio_process_events@@MLX5_1.21' ++ }, ++ 'Symbols' => { ++ 'libmlx5.so.1.23.41.0' => { ++ '_mlx5dv_mkey_check@@MLX5_1.20' => 1, ++ '_mlx5dv_query_port@@MLX5_1.19' => 1, ++ 'mlx5dv_alloc_dm@@MLX5_1.10' => 1, ++ 'mlx5dv_alloc_var@@MLX5_1.12' => 1, ++ 'mlx5dv_create_cq@@MLX5_1.1' => 1, ++ 'mlx5dv_create_flow@@MLX5_1.6' => 1, ++ 'mlx5dv_create_flow_action_esp@@MLX5_1.5' => 1, ++ 'mlx5dv_create_flow_action_modify_header@@MLX5_1.7' => 1, ++ 'mlx5dv_create_flow_action_packet_reformat@@MLX5_1.7' => 1, ++ 'mlx5dv_create_flow_matcher@@MLX5_1.6' => 1, ++ 'mlx5dv_create_mkey@@MLX5_1.10' => 1, ++ 'mlx5dv_create_qp@@MLX5_1.3' => 1, ++ 'mlx5dv_create_wq@@MLX5_1.3' => 1, ++ 'mlx5dv_crypto_login@@MLX5_1.21' => 1, ++ 'mlx5dv_crypto_login_query_state@@MLX5_1.21' => 1, ++ 'mlx5dv_crypto_logout@@MLX5_1.21' => 1, ++ 'mlx5dv_dci_stream_id_reset@@MLX5_1.21' => 1, ++ 'mlx5dv_dek_create@@MLX5_1.21' => 1, ++ 'mlx5dv_dek_destroy@@MLX5_1.21' => 1, ++ 'mlx5dv_dek_query@@MLX5_1.21' => 1, ++ 'mlx5dv_destroy_flow_matcher@@MLX5_1.6' => 1, ++ 'mlx5dv_destroy_mkey@@MLX5_1.10' => 1, ++ 'mlx5dv_devx_alloc_msi_vector@@MLX5_1.23' => 1, ++ 'mlx5dv_devx_alloc_uar@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_cq_modify@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_cq_query@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_create_cmd_comp@@MLX5_1.9' => 1, ++ 'mlx5dv_devx_create_eq@@MLX5_1.23' => 1, ++ 'mlx5dv_devx_create_event_channel@@MLX5_1.11' => 1, ++ 'mlx5dv_devx_destroy_cmd_comp@@MLX5_1.9' => 1, ++ 'mlx5dv_devx_destroy_eq@@MLX5_1.23' => 1, ++ 'mlx5dv_devx_destroy_event_channel@@MLX5_1.11' => 1, ++ 'mlx5dv_devx_free_msi_vector@@MLX5_1.23' => 1, ++ 'mlx5dv_devx_free_uar@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_general_cmd@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_get_async_cmd_comp@@MLX5_1.9' => 1, ++ 'mlx5dv_devx_get_event@@MLX5_1.11' => 1, ++ 'mlx5dv_devx_ind_tbl_modify@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_ind_tbl_query@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_obj_create@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_obj_destroy@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_obj_modify@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_obj_query@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_obj_query_async@@MLX5_1.9' => 1, ++ 'mlx5dv_devx_qp_modify@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_qp_query@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_query_eqn@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_srq_modify@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_srq_query@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_subscribe_devx_event@@MLX5_1.11' => 1, ++ 'mlx5dv_devx_subscribe_devx_event_fd@@MLX5_1.11' => 1, ++ 'mlx5dv_devx_umem_dereg@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_umem_reg@@MLX5_1.7' => 1, ++ 'mlx5dv_devx_umem_reg_ex@@MLX5_1.19' => 1, ++ 'mlx5dv_devx_wq_modify@@MLX5_1.8' => 1, ++ 'mlx5dv_devx_wq_query@@MLX5_1.8' => 1, ++ 'mlx5dv_dm_map_op_addr@@MLX5_1.19' => 1, ++ 'mlx5dv_dr_action_create_aso@@MLX5_1.17' => 1, ++ 'mlx5dv_dr_action_create_default_miss@@MLX5_1.14' => 1, ++ 'mlx5dv_dr_action_create_dest_array@@MLX5_1.16' => 1, ++ 'mlx5dv_dr_action_create_dest_devx_tir@@MLX5_1.15' => 1, ++ 'mlx5dv_dr_action_create_dest_ib_port@@MLX5_1.21' => 1, ++ 'mlx5dv_dr_action_create_dest_ibv_qp@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_create_dest_table@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_create_dest_vport@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_create_drop@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_create_flow_counter@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_create_flow_meter@@MLX5_1.12' => 1, ++ 'mlx5dv_dr_action_create_flow_sampler@@MLX5_1.16' => 1, ++ 'mlx5dv_dr_action_create_modify_header@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_create_packet_reformat@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_create_pop_vlan@@MLX5_1.17' => 1, ++ 'mlx5dv_dr_action_create_push_vlan@@MLX5_1.17' => 1, ++ 'mlx5dv_dr_action_create_tag@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_destroy@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_action_modify_aso@@MLX5_1.17' => 1, ++ 'mlx5dv_dr_action_modify_flow_meter@@MLX5_1.12' => 1, ++ 'mlx5dv_dr_aso_other_domain_link@@MLX5_1.22' => 1, ++ 'mlx5dv_dr_aso_other_domain_unlink@@MLX5_1.22' => 1, ++ 'mlx5dv_dr_domain_allow_duplicate_rules@@MLX5_1.20' => 1, ++ 'mlx5dv_dr_domain_create@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_domain_destroy@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_domain_set_reclaim_device_memory@@MLX5_1.14' => 1, ++ 'mlx5dv_dr_domain_sync@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_matcher_create@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_matcher_destroy@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_matcher_set_layout@@MLX5_1.21' => 1, ++ 'mlx5dv_dr_rule_create@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_rule_destroy@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_table_create@@MLX5_1.10' => 1, ++ 'mlx5dv_dr_table_destroy@@MLX5_1.10' => 1, ++ 'mlx5dv_dump_dr_domain@@MLX5_1.12' => 1, ++ 'mlx5dv_dump_dr_matcher@@MLX5_1.12' => 1, ++ 'mlx5dv_dump_dr_rule@@MLX5_1.12' => 1, ++ 'mlx5dv_dump_dr_table@@MLX5_1.12' => 1, ++ 'mlx5dv_free_var@@MLX5_1.12' => 1, ++ 'mlx5dv_get_clock_info@@MLX5_1.4' => 1, ++ 'mlx5dv_get_vfio_device_list@@MLX5_1.21' => 1, ++ 'mlx5dv_init_obj@@MLX5_1.2' => 1, ++ 'mlx5dv_init_obj@MLX5_1.0' => 1, ++ 'mlx5dv_is_supported@@MLX5_1.8' => 1, ++ 'mlx5dv_map_ah_to_qp@@MLX5_1.20' => 1, ++ 'mlx5dv_modify_qp_lag_port@@MLX5_1.14' => 1, ++ 'mlx5dv_modify_qp_sched_elem@@MLX5_1.17' => 1, ++ 'mlx5dv_modify_qp_udp_sport@@MLX5_1.17' => 1, ++ 'mlx5dv_open_device@@MLX5_1.7' => 1, ++ 'mlx5dv_pp_alloc@@MLX5_1.13' => 1, ++ 'mlx5dv_pp_free@@MLX5_1.13' => 1, ++ 'mlx5dv_qp_cancel_posted_send_wrs@@MLX5_1.20' => 1, ++ 'mlx5dv_qp_ex_from_ibv_qp_ex@@MLX5_1.10' => 1, ++ 'mlx5dv_query_device@@MLX5_1.0' => 1, ++ 'mlx5dv_query_qp_lag_port@@MLX5_1.14' => 1, ++ 'mlx5dv_reserved_qpn_alloc@@MLX5_1.18' => 1, ++ 'mlx5dv_reserved_qpn_dealloc@@MLX5_1.18' => 1, ++ 'mlx5dv_sched_leaf_create@@MLX5_1.17' => 1, ++ 'mlx5dv_sched_leaf_destroy@@MLX5_1.17' => 1, ++ 'mlx5dv_sched_leaf_modify@@MLX5_1.17' => 1, ++ 'mlx5dv_sched_node_create@@MLX5_1.17' => 1, ++ 'mlx5dv_sched_node_destroy@@MLX5_1.17' => 1, ++ 'mlx5dv_sched_node_modify@@MLX5_1.17' => 1, ++ 'mlx5dv_set_context_attr@@MLX5_1.2' => 1, ++ 'mlx5dv_vfio_get_events_fd@@MLX5_1.21' => 1, ++ 'mlx5dv_vfio_process_events@@MLX5_1.21' => 1 ++ } ++ }, ++ 'Target' => 'unix', ++ 'TypeInfo' => { ++ '1' => { ++ 'Name' => 'void', ++ 'Type' => 'Intrinsic' ++ }, ++ '10004' => { ++ 'Header' => undef, ++ 'Line' => '1475', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'tag', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'priv', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_wc_tm_info', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '10047' => { ++ 'Header' => undef, ++ 'Line' => '1480', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'offset' => '8', ++ 'type' => '9969' ++ }, ++ '10' => { ++ 'name' => 'status', ++ 'offset' => '132', ++ 'type' => '5426' ++ }, ++ '11' => { ++ 'name' => 'wr_id', ++ 'offset' => '136', ++ 'type' => '2028' ++ }, ++ '12' => { ++ 'name' => 'start_poll', ++ 'offset' => '144', ++ 'type' => '10519' ++ }, ++ '13' => { ++ 'name' => 'next_poll', ++ 'offset' => '152', ++ 'type' => '10540' ++ }, ++ '14' => { ++ 'name' => 'end_poll', ++ 'offset' => '160', ++ 'type' => '10557' ++ }, ++ '15' => { ++ 'name' => 'read_opcode', ++ 'offset' => '168', ++ 'type' => '10578' ++ }, ++ '16' => { ++ 'name' => 'read_vendor_err', ++ 'offset' => '176', ++ 'type' => '10599' ++ }, ++ '17' => { ++ 'name' => 'read_byte_len', ++ 'offset' => '184', ++ 'type' => '10599' ++ }, ++ '18' => { ++ 'name' => 'read_imm_data', ++ 'offset' => '192', ++ 'type' => '10620' ++ }, ++ '19' => { ++ 'name' => 'read_qp_num', ++ 'offset' => '200', ++ 'type' => '10599' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'offset' => '16', ++ 'type' => '267' ++ }, ++ '20' => { ++ 'name' => 'read_src_qp', ++ 'offset' => '208', ++ 'type' => '10599' ++ }, ++ '21' => { ++ 'name' => 'read_wc_flags', ++ 'offset' => '216', ++ 'type' => '10641' ++ }, ++ '22' => { ++ 'name' => 'read_slid', ++ 'offset' => '224', ++ 'type' => '10599' ++ }, ++ '23' => { ++ 'name' => 'read_sl', ++ 'offset' => '232', ++ 'type' => '10662' ++ }, ++ '24' => { ++ 'name' => 'read_dlid_path_bits', ++ 'offset' => '240', ++ 'type' => '10662' ++ }, ++ '25' => { ++ 'name' => 'read_completion_ts', ++ 'offset' => '248', ++ 'type' => '10683' ++ }, ++ '26' => { ++ 'name' => 'read_cvlan', ++ 'offset' => '256', ++ 'type' => '10704' ++ }, ++ '27' => { ++ 'name' => 'read_flow_tag', ++ 'offset' => '264', ++ 'type' => '10599' ++ }, ++ '28' => { ++ 'name' => 'read_tm_info', ++ 'offset' => '272', ++ 'type' => '10732' ++ }, ++ '29' => { ++ 'name' => 'read_completion_wallclock_ns', ++ 'offset' => '280', ++ 'type' => '10683' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'cqe', ++ 'offset' => '28', ++ 'type' => '128' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '897' ++ }, ++ '6' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '971' ++ }, ++ '7' => { ++ 'name' => 'comp_events_completed', ++ 'offset' => '120', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'async_events_completed', ++ 'offset' => '124', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'name' => 'comp_mask', ++ 'offset' => '128', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_cq_ex', ++ 'Size' => '288', ++ 'Type' => 'Struct' ++ }, ++ '10507' => { ++ 'BaseType' => '10047', ++ 'Name' => 'struct ibv_cq_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10513' => { ++ 'BaseType' => '9975', ++ 'Name' => 'struct ibv_poll_cq_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10519' => { ++ 'Name' => 'int(*)(struct ibv_cq_ex*, struct ibv_poll_cq_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ }, ++ '1' => { ++ 'type' => '10513' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10540' => { ++ 'Name' => 'int(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10557' => { ++ 'Name' => 'void(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10578' => { ++ 'Name' => 'enum ibv_wc_opcode(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '5590', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10599' => { ++ 'Name' => 'uint32_t(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '2011', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10620' => { ++ 'Name' => '__be32(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '2165', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10641' => { ++ 'Name' => 'unsigned int(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '59', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10662' => { ++ 'Name' => 'uint8_t(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '1987', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10683' => { ++ 'Name' => 'uint64_t(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '2028', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10704' => { ++ 'Name' => 'uint16_t(*)(struct ibv_cq_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ } ++ }, ++ 'Return' => '1999', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10726' => { ++ 'BaseType' => '10004', ++ 'Name' => 'struct ibv_wc_tm_info*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '10732' => { ++ 'Name' => 'void(*)(struct ibv_cq_ex*, struct ibv_wc_tm_info*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '10507' ++ }, ++ '1' => { ++ 'type' => '10726' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '10824' => { ++ 'Header' => undef, ++ 'Line' => '1657', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_FLOW_ATTR_NORMAL', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_FLOW_ATTR_ALL_DEFAULT', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_FLOW_ATTR_MC_DEFAULT', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_FLOW_ATTR_SNIFFER', ++ 'value' => '3' ++ } ++ }, ++ 'Name' => 'enum ibv_flow_attr_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '10868' => { ++ 'BaseType' => '1987', ++ 'Name' => 'uint8_t[6]', ++ 'Size' => '6', ++ 'Type' => 'Array' ++ }, ++ '10884' => { ++ 'Header' => undef, ++ 'Line' => '1889', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ } ++ }, ++ 'Name' => 'struct ibv_flow_action', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '10913' => { ++ 'Header' => undef, ++ 'Line' => '2054', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ } ++ }, ++ 'Name' => 'struct ibv_counters', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '10942' => { ++ 'BaseType' => '10913', ++ 'Name' => 'struct ibv_counters*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11061' => { ++ 'Header' => undef, ++ 'Line' => '1883', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'context', ++ 'offset' => '8', ++ 'type' => '2938' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_flow', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '11118' => { ++ 'Header' => undef, ++ 'Line' => '1897', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'esp_attr', ++ 'offset' => '0', ++ 'type' => '11273' ++ }, ++ '1' => { ++ 'name' => 'keymat_proto', ++ 'offset' => '8', ++ 'type' => '2205' ++ }, ++ '2' => { ++ 'name' => 'keymat_len', ++ 'offset' => '12', ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'name' => 'keymat_ptr', ++ 'offset' => '16', ++ 'type' => '267' ++ }, ++ '4' => { ++ 'name' => 'replay_proto', ++ 'offset' => '24', ++ 'type' => '2230' ++ }, ++ '5' => { ++ 'name' => 'replay_len', ++ 'offset' => '28', ++ 'type' => '1999' ++ }, ++ '6' => { ++ 'name' => 'replay_ptr', ++ 'offset' => '32', ++ 'type' => '267' ++ }, ++ '7' => { ++ 'name' => 'esp_encap', ++ 'offset' => '40', ++ 'type' => '2388' ++ }, ++ '8' => { ++ 'name' => 'comp_mask', ++ 'offset' => '48', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'name' => 'esn', ++ 'offset' => '52', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_flow_action_esp_attr', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '11273' => { ++ 'BaseType' => '2394', ++ 'Name' => 'struct ib_uverbs_flow_action_esp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11279' => { ++ 'Header' => undef, ++ 'Line' => '1918', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_dummy1', ++ 'offset' => '0', ++ 'type' => '11463' ++ }, ++ '1' => { ++ 'name' => '_dummy2', ++ 'offset' => '8', ++ 'type' => '11480' ++ } ++ }, ++ 'Name' => 'struct _ibv_device_ops', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '11342' => { ++ 'BaseType' => '11348', ++ 'Name' => 'struct ibv_device*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11348' => { ++ 'Header' => undef, ++ 'Line' => '1928', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_ops', ++ 'offset' => '0', ++ 'type' => '11279' ++ }, ++ '1' => { ++ 'name' => 'node_type', ++ 'offset' => '16', ++ 'type' => '2528' ++ }, ++ '2' => { ++ 'name' => 'transport_type', ++ 'offset' => '20', ++ 'type' => '2595' ++ }, ++ '3' => { ++ 'name' => 'name', ++ 'offset' => '24', ++ 'type' => '3556' ++ }, ++ '4' => { ++ 'name' => 'dev_name', ++ 'offset' => '88', ++ 'type' => '3556' ++ }, ++ '5' => { ++ 'name' => 'dev_path', ++ 'offset' => '152', ++ 'type' => '11486' ++ }, ++ '6' => { ++ 'name' => 'ibdev_path', ++ 'offset' => '408', ++ 'type' => '11486' ++ } ++ }, ++ 'Name' => 'struct ibv_device', ++ 'Size' => '664', ++ 'Type' => 'Struct' ++ }, ++ '11463' => { ++ 'Name' => 'struct ibv_context*(*)(struct ibv_device*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '11342' ++ }, ++ '1' => { ++ 'type' => '128' ++ } ++ }, ++ 'Return' => '2938', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11480' => { ++ 'Name' => 'void(*)(struct ibv_context*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '2938' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '11486' => { ++ 'BaseType' => '316', ++ 'Name' => 'char[256]', ++ 'Size' => '256', ++ 'Type' => 'Array' ++ }, ++ '11502' => { ++ 'Header' => undef, ++ 'Line' => '1943', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_compat_query_device', ++ 'offset' => '0', ++ 'type' => '11992' ++ }, ++ '1' => { ++ 'name' => '_compat_query_port', ++ 'offset' => '8', ++ 'type' => '12034' ++ }, ++ '10' => { ++ 'name' => '_compat_create_cq', ++ 'offset' => '80', ++ 'type' => '12045' ++ }, ++ '11' => { ++ 'name' => 'poll_cq', ++ 'offset' => '88', ++ 'type' => '12166' ++ }, ++ '12' => { ++ 'name' => 'req_notify_cq', ++ 'offset' => '96', ++ 'type' => '12192' ++ }, ++ '13' => { ++ 'name' => '_compat_cq_event', ++ 'offset' => '104', ++ 'type' => '12045' ++ }, ++ '14' => { ++ 'name' => '_compat_resize_cq', ++ 'offset' => '112', ++ 'type' => '12045' ++ }, ++ '15' => { ++ 'name' => '_compat_destroy_cq', ++ 'offset' => '120', ++ 'type' => '12045' ++ }, ++ '16' => { ++ 'name' => '_compat_create_srq', ++ 'offset' => '128', ++ 'type' => '12045' ++ }, ++ '17' => { ++ 'name' => '_compat_modify_srq', ++ 'offset' => '136', ++ 'type' => '12045' ++ }, ++ '18' => { ++ 'name' => '_compat_query_srq', ++ 'offset' => '144', ++ 'type' => '12045' ++ }, ++ '19' => { ++ 'name' => '_compat_destroy_srq', ++ 'offset' => '152', ++ 'type' => '12045' ++ }, ++ '2' => { ++ 'name' => '_compat_alloc_pd', ++ 'offset' => '16', ++ 'type' => '12045' ++ }, ++ '20' => { ++ 'name' => 'post_srq_recv', ++ 'offset' => '160', ++ 'type' => '12223' ++ }, ++ '21' => { ++ 'name' => '_compat_create_qp', ++ 'offset' => '168', ++ 'type' => '12045' ++ }, ++ '22' => { ++ 'name' => '_compat_query_qp', ++ 'offset' => '176', ++ 'type' => '12045' ++ }, ++ '23' => { ++ 'name' => '_compat_modify_qp', ++ 'offset' => '184', ++ 'type' => '12045' ++ }, ++ '24' => { ++ 'name' => '_compat_destroy_qp', ++ 'offset' => '192', ++ 'type' => '12045' ++ }, ++ '25' => { ++ 'name' => 'post_send', ++ 'offset' => '200', ++ 'type' => '12260' ++ }, ++ '26' => { ++ 'name' => 'post_recv', ++ 'offset' => '208', ++ 'type' => '12291' ++ }, ++ '27' => { ++ 'name' => '_compat_create_ah', ++ 'offset' => '216', ++ 'type' => '12045' ++ }, ++ '28' => { ++ 'name' => '_compat_destroy_ah', ++ 'offset' => '224', ++ 'type' => '12045' ++ }, ++ '29' => { ++ 'name' => '_compat_attach_mcast', ++ 'offset' => '232', ++ 'type' => '12045' ++ }, ++ '3' => { ++ 'name' => '_compat_dealloc_pd', ++ 'offset' => '24', ++ 'type' => '12045' ++ }, ++ '30' => { ++ 'name' => '_compat_detach_mcast', ++ 'offset' => '240', ++ 'type' => '12045' ++ }, ++ '31' => { ++ 'name' => '_compat_async_event', ++ 'offset' => '248', ++ 'type' => '12045' ++ }, ++ '4' => { ++ 'name' => '_compat_reg_mr', ++ 'offset' => '32', ++ 'type' => '12045' ++ }, ++ '5' => { ++ 'name' => '_compat_rereg_mr', ++ 'offset' => '40', ++ 'type' => '12045' ++ }, ++ '6' => { ++ 'name' => '_compat_dereg_mr', ++ 'offset' => '48', ++ 'type' => '12045' ++ }, ++ '7' => { ++ 'name' => 'alloc_mw', ++ 'offset' => '56', ++ 'type' => '12071' ++ }, ++ '8' => { ++ 'name' => 'bind_mw', ++ 'offset' => '64', ++ 'type' => '12108' ++ }, ++ '9' => { ++ 'name' => 'dealloc_mw', ++ 'offset' => '72', ++ 'type' => '12129' ++ } ++ }, ++ 'Name' => 'struct ibv_context_ops', ++ 'Size' => '256', ++ 'Type' => 'Struct' ++ }, ++ '116' => { ++ 'BaseType' => '52', ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Name' => '__uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '11986' => { ++ 'BaseType' => '3022', ++ 'Name' => 'struct ibv_device_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '11992' => { ++ 'Name' => 'int(*)(struct ibv_context*, struct ibv_device_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'type' => '11986' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12023' => { ++ 'BaseType' => '12029', ++ 'Name' => 'struct _compat_ibv_port_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12029' => { ++ 'Name' => 'struct _compat_ibv_port_attr', ++ 'Type' => 'Struct' ++ }, ++ '12034' => { ++ 'Name' => 'int(*)(struct ibv_context*, uint8_t, struct _compat_ibv_port_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'type' => '12023' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12045' => { ++ 'Name' => 'void*(*)()', ++ 'Return' => '267', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12071' => { ++ 'Name' => 'struct ibv_mw*(*)(struct ibv_pd*, enum ibv_mw_type)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6322' ++ }, ++ '1' => { ++ 'type' => '6328' ++ } ++ }, ++ 'Return' => '8428', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12102' => { ++ 'BaseType' => '9013', ++ 'Name' => 'struct ibv_mw_bind*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12108' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_mw*, struct ibv_mw_bind*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'type' => '8428' ++ }, ++ '2' => { ++ 'type' => '12102' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12129' => { ++ 'Name' => 'int(*)(struct ibv_mw*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '8428' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12160' => { ++ 'BaseType' => '5755', ++ 'Name' => 'struct ibv_wc*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12166' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int, struct ibv_wc*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '4899' ++ }, ++ '1' => { ++ 'type' => '128' ++ }, ++ '2' => { ++ 'type' => '12160' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '1218753' => { ++ 'Header' => undef, ++ 'Line' => '1637', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'flags', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_context_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '12192' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '4899' ++ }, ++ '1' => { ++ 'type' => '128' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12223' => { ++ 'Name' => 'int(*)(struct ibv_srq*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '5219' ++ }, ++ '1' => { ++ 'type' => '8745' ++ }, ++ '2' => { ++ 'type' => '9095' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12254' => { ++ 'BaseType' => '8662', ++ 'Name' => 'struct ibv_send_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12260' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_send_wr*, struct ibv_send_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'type' => '8662' ++ }, ++ '2' => { ++ 'type' => '12254' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12291' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'type' => '8745' ++ }, ++ '2' => { ++ 'type' => '9095' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '12297' => { ++ 'Header' => undef, ++ 'Line' => '2006', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cqe', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'cq_context', ++ 'offset' => '8', ++ 'type' => '267' ++ }, ++ '2' => { ++ 'name' => 'channel', ++ 'offset' => '16', ++ 'type' => '9969' ++ }, ++ '3' => { ++ 'name' => 'comp_vector', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'wc_flags', ++ 'offset' => '32', ++ 'type' => '2028' ++ }, ++ '5' => { ++ 'name' => 'comp_mask', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'flags', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'parent_domain', ++ 'offset' => '48', ++ 'type' => '6322' ++ } ++ }, ++ 'Name' => 'struct ibv_cq_init_attr_ex', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '12562' => { ++ 'Name' => 'void*(*)(struct ibv_pd*, void*, size_t, size_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6322' ++ }, ++ '1' => { ++ 'type' => '267' ++ }, ++ '2' => { ++ 'type' => '386' ++ }, ++ '3' => { ++ 'type' => '386' ++ }, ++ '4' => { ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '267', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '1256719' => { ++ 'BaseType' => '1218753', ++ 'Name' => 'struct mlx5dv_context_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '12594' => { ++ 'Name' => 'void(*)(struct ibv_pd*, void*, void*, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '6322' ++ }, ++ '1' => { ++ 'type' => '267' ++ }, ++ '2' => { ++ 'type' => '267' ++ }, ++ '3' => { ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '128' => { ++ 'Name' => 'int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '1317970' => { ++ 'Header' => undef, ++ 'Line' => '1648', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'pci_name', ++ 'offset' => '0', ++ 'type' => '375' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_vfio_context_attr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '13493' => { ++ 'BaseType' => '2028', ++ 'Name' => 'uint64_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '135' => { ++ 'BaseType' => '128', ++ 'Name' => 'int volatile', ++ 'Size' => '4', ++ 'Type' => 'Volatile' ++ }, ++ '13536' => { ++ 'BaseType' => '11061', ++ 'Name' => 'struct ibv_flow*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1355907' => { ++ 'BaseType' => '11342', ++ 'Name' => 'struct ibv_device**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1355913' => { ++ 'BaseType' => '1317970', ++ 'Name' => 'struct mlx5dv_vfio_context_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '13662' => { ++ 'BaseType' => '2687', ++ 'Name' => 'struct ibv_alloc_dm_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '13715' => { ++ 'BaseType' => '10884', ++ 'Name' => 'struct ibv_flow_action*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '13721' => { ++ 'BaseType' => '11118', ++ 'Name' => 'struct ibv_flow_action_esp_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '140' => { ++ 'BaseType' => '59', ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Name' => '__uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '14092' => { ++ 'BaseType' => '6739', ++ 'Name' => 'struct ibv_wq_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14156' => { ++ 'BaseType' => '12297', ++ 'Name' => 'struct ibv_cq_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1421' => { ++ 'Header' => undef, ++ 'Line' => '49', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_flags', ++ 'offset' => '0', ++ 'type' => '128' ++ }, ++ '1' => { ++ 'name' => '_IO_read_ptr', ++ 'offset' => '8', ++ 'type' => '305' ++ }, ++ '10' => { ++ 'name' => '_IO_backup_base', ++ 'offset' => '80', ++ 'type' => '305' ++ }, ++ '11' => { ++ 'name' => '_IO_save_end', ++ 'offset' => '88', ++ 'type' => '305' ++ }, ++ '12' => { ++ 'name' => '_markers', ++ 'offset' => '96', ++ 'type' => '1837' ++ }, ++ '13' => { ++ 'name' => '_chain', ++ 'offset' => '104', ++ 'type' => '1843' ++ }, ++ '14' => { ++ 'name' => '_fileno', ++ 'offset' => '112', ++ 'type' => '128' ++ }, ++ '15' => { ++ 'name' => '_flags2', ++ 'offset' => '116', ++ 'type' => '128' ++ }, ++ '16' => { ++ 'name' => '_old_offset', ++ 'offset' => '120', ++ 'type' => '207' ++ }, ++ '17' => { ++ 'name' => '_cur_column', ++ 'offset' => '128', ++ 'type' => '52' ++ }, ++ '18' => { ++ 'name' => '_vtable_offset', ++ 'offset' => '130', ++ 'type' => '90' ++ }, ++ '19' => { ++ 'name' => '_shortbuf', ++ 'offset' => '131', ++ 'type' => '1849' ++ }, ++ '2' => { ++ 'name' => '_IO_read_end', ++ 'offset' => '16', ++ 'type' => '305' ++ }, ++ '20' => { ++ 'name' => '_lock', ++ 'offset' => '136', ++ 'type' => '1865' ++ }, ++ '21' => { ++ 'name' => '_offset', ++ 'offset' => '144', ++ 'type' => '219' ++ }, ++ '22' => { ++ 'name' => '_codecvt', ++ 'offset' => '152', ++ 'type' => '1876' ++ }, ++ '23' => { ++ 'name' => '_wide_data', ++ 'offset' => '160', ++ 'type' => '1887' ++ }, ++ '24' => { ++ 'name' => '_freeres_list', ++ 'offset' => '168', ++ 'type' => '1843' ++ }, ++ '25' => { ++ 'name' => '_freeres_buf', ++ 'offset' => '176', ++ 'type' => '267' ++ }, ++ '26' => { ++ 'name' => '__pad5', ++ 'offset' => '184', ++ 'type' => '386' ++ }, ++ '27' => { ++ 'name' => '_mode', ++ 'offset' => '192', ++ 'type' => '128' ++ }, ++ '28' => { ++ 'name' => '_unused2', ++ 'offset' => '196', ++ 'type' => '1893' ++ }, ++ '3' => { ++ 'name' => '_IO_read_base', ++ 'offset' => '24', ++ 'type' => '305' ++ }, ++ '4' => { ++ 'name' => '_IO_write_base', ++ 'offset' => '32', ++ 'type' => '305' ++ }, ++ '5' => { ++ 'name' => '_IO_write_ptr', ++ 'offset' => '40', ++ 'type' => '305' ++ }, ++ '6' => { ++ 'name' => '_IO_write_end', ++ 'offset' => '48', ++ 'type' => '305' ++ }, ++ '7' => { ++ 'name' => '_IO_buf_base', ++ 'offset' => '56', ++ 'type' => '305' ++ }, ++ '8' => { ++ 'name' => '_IO_buf_end', ++ 'offset' => '64', ++ 'type' => '305' ++ }, ++ '9' => { ++ 'name' => '_IO_save_base', ++ 'offset' => '72', ++ 'type' => '305' ++ } ++ }, ++ 'Name' => 'struct _IO_FILE', ++ 'Size' => '216', ++ 'Type' => 'Struct' ++ }, ++ '14332' => { ++ 'BaseType' => '7351', ++ 'Name' => 'struct ibv_qp_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14364' => { ++ 'BaseType' => '2011', ++ 'Name' => 'uint32_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14461' => { ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next', ++ 'offset' => '0', ++ 'type' => '14501' ++ }, ++ '1' => { ++ 'name' => 'prev', ++ 'offset' => '8', ++ 'type' => '14501' ++ } ++ }, ++ 'Name' => 'struct list_node', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '14501' => { ++ 'BaseType' => '14461', ++ 'Name' => 'struct list_node*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '14507' => { ++ 'Header' => undef, ++ 'Line' => '41', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'n', ++ 'offset' => '0', ++ 'type' => '14461' ++ } ++ }, ++ 'Name' => 'struct list_head', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '14752' => { ++ 'Name' => 'atomic_int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '152' => { ++ 'Name' => 'long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '15413' => { ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_RX', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_TX', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_RX', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_TX', ++ 'value' => '4' ++ } ++ }, ++ 'Name' => 'enum mlx5_ib_uapi_flow_table_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '15462' => { ++ 'Header' => undef, ++ 'Line' => '50', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TUNNEL_TO_L2', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L2_TUNNEL', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L3_TUNNEL_TO_L2', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL', ++ 'value' => '3' ++ } ++ }, ++ 'Name' => 'enum mlx5_ib_uapi_flow_action_packet_reformat_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '15505' => { ++ 'Header' => undef, ++ 'Line' => '57', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2141' ++ }, ++ '1' => { ++ 'name' => 'out_data', ++ 'offset' => '8', ++ 'type' => '15547' ++ } ++ }, ++ 'Name' => 'struct mlx5_ib_uapi_devx_async_cmd_hdr', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '15547' => { ++ 'BaseType' => '2105', ++ 'Name' => '__u8[]', ++ 'Size' => '8', ++ 'Type' => 'Array' ++ }, ++ '15562' => { ++ 'Header' => undef, ++ 'Line' => '62', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5_IB_UAPI_DM_TYPE_MEMIC', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum mlx5_ib_uapi_dm_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '15599' => { ++ 'Header' => undef, ++ 'Line' => '68', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx5_ib_uapi_devx_create_event_channel_flags', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '15624' => { ++ 'Header' => undef, ++ 'Line' => '72', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cookie', ++ 'offset' => '0', ++ 'type' => '2141' ++ }, ++ '1' => { ++ 'name' => 'out_data', ++ 'offset' => '8', ++ 'type' => '15547' ++ } ++ }, ++ 'Name' => 'struct mlx5_ib_uapi_devx_async_event_hdr', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '15666' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'value', ++ 'offset' => '0', ++ 'type' => '2129' ++ }, ++ '1' => { ++ 'name' => 'mask', ++ 'offset' => '4', ++ 'type' => '2129' ++ } ++ }, ++ 'Name' => 'struct mlx5_ib_uapi_reg', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '15706' => { ++ 'Header' => undef, ++ 'Line' => '100', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'flags', ++ 'offset' => '0', ++ 'type' => '2141' ++ }, ++ '1' => { ++ 'name' => 'vport', ++ 'offset' => '8', ++ 'type' => '2117' ++ }, ++ '2' => { ++ 'name' => 'vport_vhca_id', ++ 'offset' => '10', ++ 'type' => '2117' ++ }, ++ '3' => { ++ 'name' => 'esw_owner_vhca_id', ++ 'offset' => '12', ++ 'type' => '2117' ++ }, ++ '4' => { ++ 'name' => 'rsvd0', ++ 'offset' => '14', ++ 'type' => '2117' ++ }, ++ '5' => { ++ 'name' => 'vport_steering_icm_rx', ++ 'offset' => '16', ++ 'type' => '2141' ++ }, ++ '6' => { ++ 'name' => 'vport_steering_icm_tx', ++ 'offset' => '24', ++ 'type' => '2141' ++ }, ++ '7' => { ++ 'name' => 'reg_c0', ++ 'offset' => '32', ++ 'type' => '15666' ++ } ++ }, ++ 'Name' => 'struct mlx5_ib_uapi_query_port', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '15828' => { ++ 'Header' => undef, ++ 'Line' => '91', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_num', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'supported_format', ++ 'offset' => '4', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_cqe_comp_caps', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '15868' => { ++ 'Header' => undef, ++ 'Line' => '96', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'sw_parsing_offloads', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '4', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sw_parsing_caps', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '159' => { ++ 'BaseType' => '66', ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Name' => '__uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '15908' => { ++ 'Header' => undef, ++ 'Line' => '101', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'min_single_stride_log_num_of_bytes', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'max_single_stride_log_num_of_bytes', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'min_single_wqe_log_num_of_strides', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'max_single_wqe_log_num_of_strides', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '16', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_striding_rq_caps', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '15987' => { ++ 'Header' => undef, ++ 'Line' => '109', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_log_num_concurent', ++ 'offset' => '0', ++ 'type' => '1987' ++ }, ++ '1' => { ++ 'name' => 'max_log_num_errored', ++ 'offset' => '1', ++ 'type' => '1987' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dci_streams_caps', ++ 'Size' => '2', ++ 'Type' => 'Struct' ++ }, ++ '16027' => { ++ 'Header' => undef, ++ 'Line' => '130', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_SIG_TYPE_T10DIF', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_SIG_TYPE_CRC', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_sig_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '16058' => { ++ 'Header' => undef, ++ 'Line' => '140', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_SIG_T10DIF_CRC', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_SIG_T10DIF_CSUM', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_sig_t10dif_bg_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '16089' => { ++ 'Header' => undef, ++ 'Line' => '150', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_SIG_CRC_TYPE_CRC32', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_SIG_CRC_TYPE_CRC32C', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5DV_SIG_CRC_TYPE_CRC64_XP10', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_sig_crc_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '16126' => { ++ 'Header' => undef, ++ 'Line' => '162', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_BLOCK_SIZE_512', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_BLOCK_SIZE_520', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5DV_BLOCK_SIZE_4048', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'MLX5DV_BLOCK_SIZE_4096', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'MLX5DV_BLOCK_SIZE_4160', ++ 'value' => '4' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_block_size', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '16175' => { ++ 'Header' => undef, ++ 'Line' => '178', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'block_size', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'block_prot', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 't10dif_bg', ++ 'offset' => '12', ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'name' => 'crc_type', ++ 'offset' => '14', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sig_caps', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '16241' => { ++ 'Header' => undef, ++ 'Line' => '199', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'failed_selftests', ++ 'offset' => '0', ++ 'type' => '1999' ++ }, ++ '1' => { ++ 'name' => 'crypto_engines', ++ 'offset' => '2', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'wrapped_import_method', ++ 'offset' => '3', ++ 'type' => '1987' ++ }, ++ '3' => { ++ 'name' => 'log_max_num_deks', ++ 'offset' => '4', ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'name' => 'flags', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_crypto_caps', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '1624226' => { ++ 'Header' => undef, ++ 'Line' => '578', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_MKEY_NO_ERR', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_MKEY_SIG_BLOCK_BAD_GUARD', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5DV_MKEY_SIG_BLOCK_BAD_REFTAG', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'MLX5DV_MKEY_SIG_BLOCK_BAD_APPTAG', ++ 'value' => '3' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_mkey_err_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '1624270' => { ++ 'Header' => undef, ++ 'Line' => '585', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'actual_value', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'expected_value', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'offset', ++ 'offset' => '16', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sig_err', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '1624327' => { ++ 'Header' => undef, ++ 'Line' => '593', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'sig', ++ 'offset' => '0', ++ 'type' => '1624270' ++ } ++ }, ++ 'Size' => '24', ++ 'Type' => 'Union' ++ }, ++ '1624351' => { ++ 'Header' => undef, ++ 'Line' => '591', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'err_type', ++ 'offset' => '0', ++ 'type' => '1624226' ++ }, ++ '1' => { ++ 'name' => 'err', ++ 'offset' => '8', ++ 'type' => '1624327' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_mkey_err', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '16320' => { ++ 'Header' => undef, ++ 'Line' => '215', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'version', ++ 'offset' => '0', ++ 'type' => '1987' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '10' => { ++ 'name' => 'dc_odp_caps', ++ 'offset' => '84', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'name' => 'hca_core_clock', ++ 'offset' => '88', ++ 'type' => '267' ++ }, ++ '12' => { ++ 'name' => 'num_lag_ports', ++ 'offset' => '96', ++ 'type' => '1987' ++ }, ++ '13' => { ++ 'name' => 'sig_caps', ++ 'offset' => '104', ++ 'type' => '16175' ++ }, ++ '14' => { ++ 'name' => 'dci_streams_caps', ++ 'offset' => '120', ++ 'type' => '15987' ++ }, ++ '15' => { ++ 'name' => 'max_wr_memcpy_length', ++ 'offset' => '128', ++ 'type' => '386' ++ }, ++ '16' => { ++ 'name' => 'crypto_caps', ++ 'offset' => '136', ++ 'type' => '16241' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'name' => 'cqe_comp_caps', ++ 'offset' => '24', ++ 'type' => '15828' ++ }, ++ '4' => { ++ 'name' => 'sw_parsing_caps', ++ 'offset' => '32', ++ 'type' => '15868' ++ }, ++ '5' => { ++ 'name' => 'striding_rq_caps', ++ 'offset' => '40', ++ 'type' => '15908' ++ }, ++ '6' => { ++ 'name' => 'tunnel_offloads_caps', ++ 'offset' => '60', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'max_dynamic_bfregs', ++ 'offset' => '64', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'max_clock_info_update_nsec', ++ 'offset' => '72', ++ 'type' => '2028' ++ }, ++ '9' => { ++ 'name' => 'flow_action_flags', ++ 'offset' => '80', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_context', ++ 'Size' => '152', ++ 'Type' => 'Struct' ++ }, ++ '16555' => { ++ 'Header' => undef, ++ 'Line' => '260', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'cqe_comp_res_format', ++ 'offset' => '8', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'cqe_size', ++ 'offset' => '16', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_cq_init_attr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '16626' => { ++ 'Header' => undef, ++ 'Line' => '287', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'pd', ++ 'offset' => '0', ++ 'type' => '6322' ++ }, ++ '1' => { ++ 'name' => 'create_flags', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'max_entries', ++ 'offset' => '12', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_mkey_init_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '16682' => { ++ 'Header' => undef, ++ 'Line' => '293', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'lkey', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '4', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_mkey', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '16725' => { ++ 'Header' => undef, ++ 'Line' => '308', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_DCTYPE_DCT', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_DCTYPE_DCI', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_dc_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '16757' => { ++ 'Header' => undef, ++ 'Line' => '313', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'log_num_concurent', ++ 'offset' => '0', ++ 'type' => '1987' ++ }, ++ '1' => { ++ 'name' => 'log_num_errored', ++ 'offset' => '1', ++ 'type' => '1987' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dci_streams', ++ 'Size' => '2', ++ 'Type' => 'Struct' ++ }, ++ '1676566' => { ++ 'BaseType' => '1624351', ++ 'Name' => 'struct mlx5dv_mkey_err*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '16800' => { ++ 'Header' => undef, ++ 'Line' => '320', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dct_access_key', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'dci_streams', ++ 'offset' => '0', ++ 'type' => '16757' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '16837' => { ++ 'Header' => undef, ++ 'Line' => '318', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dc_type', ++ 'offset' => '0', ++ 'type' => '16725' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '16800' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dc_init_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '16872' => { ++ 'Header' => undef, ++ 'Line' => '334', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'create_flags', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'dc_init_attr', ++ 'offset' => '16', ++ 'type' => '16837' ++ }, ++ '3' => { ++ 'name' => 'send_ops_flags', ++ 'offset' => '32', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_qp_init_attr', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '16943' => { ++ 'Header' => undef, ++ 'Line' => '345', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'bytes_count', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'bytes_skip', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'lkey', ++ 'offset' => '16', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_mr_interleaved', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '17014' => { ++ 'BaseType' => '16943', ++ 'Name' => 'struct mlx5dv_mr_interleaved const', ++ 'Size' => '24', ++ 'Type' => 'Const' ++ }, ++ '17019' => { ++ 'Header' => undef, ++ 'Line' => '358', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'bg_type', ++ 'offset' => '0', ++ 'type' => '16058' ++ }, ++ '1' => { ++ 'name' => 'bg', ++ 'offset' => '4', ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'name' => 'app_tag', ++ 'offset' => '6', ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'name' => 'ref_tag', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'flags', ++ 'offset' => '12', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sig_t10dif', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '17103' => { ++ 'BaseType' => '17019', ++ 'Name' => 'struct mlx5dv_sig_t10dif const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '17108' => { ++ 'Header' => undef, ++ 'Line' => '366', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'type', ++ 'offset' => '0', ++ 'type' => '16089' ++ }, ++ '1' => { ++ 'name' => 'seed', ++ 'offset' => '8', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sig_crc', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '17151' => { ++ 'BaseType' => '17108', ++ 'Name' => 'struct mlx5dv_sig_crc const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '17156' => { ++ 'Header' => undef, ++ 'Line' => '373', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dif', ++ 'offset' => '0', ++ 'type' => '17193' ++ }, ++ '1' => { ++ 'name' => 'crc', ++ 'offset' => '0', ++ 'type' => '17199' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '17193' => { ++ 'BaseType' => '17103', ++ 'Name' => 'struct mlx5dv_sig_t10dif const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '17199' => { ++ 'BaseType' => '17151', ++ 'Name' => 'struct mlx5dv_sig_crc const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '17205' => { ++ 'Header' => undef, ++ 'Line' => '371', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'sig_type', ++ 'offset' => '0', ++ 'type' => '16027' ++ }, ++ '1' => { ++ 'name' => 'sig', ++ 'offset' => '8', ++ 'type' => '17156' ++ }, ++ '2' => { ++ 'name' => 'block_size', ++ 'offset' => '16', ++ 'type' => '16126' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '24', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sig_block_domain', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '17276' => { ++ 'BaseType' => '17205', ++ 'Name' => 'struct mlx5dv_sig_block_domain const', ++ 'Size' => '32', ++ 'Type' => 'Const' ++ }, ++ '17281' => { ++ 'Header' => undef, ++ 'Line' => '394', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mem', ++ 'offset' => '0', ++ 'type' => '17385' ++ }, ++ '1' => { ++ 'name' => 'wire', ++ 'offset' => '8', ++ 'type' => '17385' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'check_mask', ++ 'offset' => '20', ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'name' => 'copy_mask', ++ 'offset' => '21', ++ 'type' => '1987' ++ }, ++ '5' => { ++ 'name' => 'comp_mask', ++ 'offset' => '24', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sig_block_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '17380' => { ++ 'BaseType' => '17281', ++ 'Name' => 'struct mlx5dv_sig_block_attr const', ++ 'Size' => '32', ++ 'Type' => 'Const' ++ }, ++ '17385' => { ++ 'BaseType' => '17276', ++ 'Name' => 'struct mlx5dv_sig_block_domain const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '17391' => { ++ 'Header' => undef, ++ 'Line' => '403', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_CRYPTO_STANDARD_AES_XTS', ++ 'value' => '0' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_crypto_standard', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '17417' => { ++ 'Header' => undef, ++ 'Line' => '407', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_SIGNATURE_CRYPTO_ORDER_SIGNATURE_AFTER_CRYPTO_ON_TX', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_SIGNATURE_CRYPTO_ORDER_SIGNATURE_BEFORE_CRYPTO_ON_TX', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_signature_crypto_order', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '17449' => { ++ 'Header' => undef, ++ 'Line' => '412', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'crypto_standard', ++ 'offset' => '0', ++ 'type' => '17391' ++ }, ++ '1' => { ++ 'name' => 'encrypt_on_tx', ++ 'offset' => '4', ++ 'type' => '2098' ++ }, ++ '2' => { ++ 'name' => 'signature_crypto_order', ++ 'offset' => '8', ++ 'type' => '17417' ++ }, ++ '3' => { ++ 'name' => 'data_unit_size', ++ 'offset' => '12', ++ 'type' => '16126' ++ }, ++ '4' => { ++ 'name' => 'initial_tweak', ++ 'offset' => '16', ++ 'type' => '17581' ++ }, ++ '5' => { ++ 'name' => 'dek', ++ 'offset' => '32', ++ 'type' => '17626' ++ }, ++ '6' => { ++ 'name' => 'keytag', ++ 'offset' => '40', ++ 'type' => '983' ++ }, ++ '7' => { ++ 'name' => 'comp_mask', ++ 'offset' => '48', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_crypto_attr', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '17576' => { ++ 'BaseType' => '17449', ++ 'Name' => 'struct mlx5dv_crypto_attr const', ++ 'Size' => '56', ++ 'Type' => 'Const' ++ }, ++ '17581' => { ++ 'BaseType' => '316', ++ 'Name' => 'char[16]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '17597' => { ++ 'Header' => undef, ++ 'Line' => '895', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'devx_obj', ++ 'offset' => '0', ++ 'type' => '19143' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dek', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '17626' => { ++ 'BaseType' => '17597', ++ 'Name' => 'struct mlx5dv_dek*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '17632' => { ++ 'Header' => undef, ++ 'Line' => '427', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'conf_flags', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_mkey_conf_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '17675' => { ++ 'Header' => undef, ++ 'Line' => '438', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'wr_set_dc_addr', ++ 'offset' => '8', ++ 'type' => '17904' ++ }, ++ '10' => { ++ 'name' => 'wr_set_dc_addr_stream', ++ 'offset' => '80', ++ 'type' => '18207' ++ }, ++ '11' => { ++ 'name' => 'wr_memcpy', ++ 'offset' => '88', ++ 'type' => '18249' ++ }, ++ '12' => { ++ 'name' => 'wr_set_mkey_crypto', ++ 'offset' => '96', ++ 'type' => '18277' ++ }, ++ '2' => { ++ 'name' => 'wr_mr_interleaved', ++ 'offset' => '16', ++ 'type' => '17958' ++ }, ++ '3' => { ++ 'name' => 'wr_mr_list', ++ 'offset' => '24', ++ 'type' => '17995' ++ }, ++ '4' => { ++ 'name' => 'wr_mkey_configure', ++ 'offset' => '32', ++ 'type' => '18033' ++ }, ++ '5' => { ++ 'name' => 'wr_set_mkey_access_flags', ++ 'offset' => '40', ++ 'type' => '18055' ++ }, ++ '6' => { ++ 'name' => 'wr_set_mkey_layout_list', ++ 'offset' => '48', ++ 'type' => '18082' ++ }, ++ '7' => { ++ 'name' => 'wr_set_mkey_layout_interleaved', ++ 'offset' => '56', ++ 'type' => '18120' ++ }, ++ '8' => { ++ 'name' => 'wr_set_mkey_sig_block', ++ 'offset' => '64', ++ 'type' => '18148' ++ }, ++ '9' => { ++ 'name' => 'wr_raw_wqe', ++ 'offset' => '72', ++ 'type' => '18170' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_qp_ex', ++ 'Size' => '104', ++ 'Type' => 'Struct' ++ }, ++ '17898' => { ++ 'BaseType' => '17675', ++ 'Name' => 'struct mlx5dv_qp_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '17904' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, struct ibv_ah*, uint32_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '8272' ++ }, ++ '2' => { ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '17946' => { ++ 'BaseType' => '16682', ++ 'Name' => 'struct mlx5dv_mkey*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '17952' => { ++ 'BaseType' => '16943', ++ 'Name' => 'struct mlx5dv_mr_interleaved*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '17958' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, struct mlx5dv_mkey*, uint32_t, uint32_t, uint16_t, struct mlx5dv_mr_interleaved*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '17946' ++ }, ++ '2' => { ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'type' => '1999' ++ }, ++ '5' => { ++ 'type' => '17952' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '17995' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, struct mlx5dv_mkey*, uint32_t, uint16_t, struct ibv_sge*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '17946' ++ }, ++ '2' => { ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'type' => '1999' ++ }, ++ '4' => { ++ 'type' => '8668' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18027' => { ++ 'BaseType' => '17632', ++ 'Name' => 'struct mlx5dv_mkey_conf_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18033' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, struct mlx5dv_mkey*, uint8_t, struct mlx5dv_mkey_conf_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '17946' ++ }, ++ '2' => { ++ 'type' => '1987' ++ }, ++ '3' => { ++ 'type' => '18027' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18055' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18082' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, uint16_t, struct ibv_sge const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'type' => '9880' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18114' => { ++ 'BaseType' => '17014', ++ 'Name' => 'struct mlx5dv_mr_interleaved const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1812' => { ++ 'BaseType' => '1421', ++ 'Header' => undef, ++ 'Line' => '7', ++ 'Name' => 'FILE', ++ 'Size' => '216', ++ 'Type' => 'Typedef' ++ }, ++ '18120' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, uint32_t, uint16_t, struct mlx5dv_mr_interleaved const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'type' => '18114' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18142' => { ++ 'BaseType' => '17380', ++ 'Name' => 'struct mlx5dv_sig_block_attr const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18148' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, struct mlx5dv_sig_block_attr const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '18142' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18170' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, void const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '1980' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18207' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, struct ibv_ah*, uint32_t, uint64_t, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '8272' ++ }, ++ '2' => { ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'type' => '2028' ++ }, ++ '4' => { ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '1824' => { ++ 'BaseType' => '1', ++ 'Header' => undef, ++ 'Line' => '43', ++ 'Name' => '_IO_lock_t', ++ 'Type' => 'Typedef' ++ }, ++ '18249' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, uint32_t, uint64_t, uint32_t, uint64_t, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'type' => '2028' ++ }, ++ '5' => { ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18271' => { ++ 'BaseType' => '17576', ++ 'Name' => 'struct mlx5dv_crypto_attr const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18277' => { ++ 'Name' => 'void(*)(struct mlx5dv_qp_ex*, struct mlx5dv_crypto_attr const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '17898' ++ }, ++ '1' => { ++ 'type' => '18271' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '18283' => { ++ 'Header' => undef, ++ 'Line' => '615', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'credential_id', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'import_kek_id', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'credential', ++ 'offset' => '8', ++ 'type' => '955' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '56', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_crypto_login_attr', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '1832' => { ++ 'Name' => 'struct _IO_marker', ++ 'Type' => 'Struct' ++ }, ++ '18354' => { ++ 'Header' => undef, ++ 'Line' => '622', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_CRYPTO_LOGIN_STATE_VALID', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5DV_CRYPTO_LOGIN_STATE_INVALID', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_crypto_login_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '1837' => { ++ 'BaseType' => '1832', ++ 'Name' => 'struct _IO_marker*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18392' => { ++ 'Header' => undef, ++ 'Line' => '636', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_CRYPTO_KEY_SIZE_128', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_CRYPTO_KEY_SIZE_256', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_crypto_key_size', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '18424' => { ++ 'Header' => undef, ++ 'Line' => '641', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_CRYPTO_KEY_PURPOSE_AES_XTS', ++ 'value' => '0' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_crypto_key_purpose', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '1843' => { ++ 'BaseType' => '1421', ++ 'Name' => 'struct _IO_FILE*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18450' => { ++ 'Header' => undef, ++ 'Line' => '645', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_DEK_STATE_READY', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_DEK_STATE_ERROR', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_dek_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '18482' => { ++ 'Header' => undef, ++ 'Line' => '650', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'key_size', ++ 'offset' => '0', ++ 'type' => '18392' ++ }, ++ '1' => { ++ 'name' => 'has_keytag', ++ 'offset' => '4', ++ 'type' => '2098' ++ }, ++ '2' => { ++ 'name' => 'key_purpose', ++ 'offset' => '8', ++ 'type' => '18424' ++ }, ++ '3' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '6322' ++ }, ++ '4' => { ++ 'name' => 'opaque', ++ 'offset' => '24', ++ 'type' => '983' ++ }, ++ '5' => { ++ 'name' => 'key', ++ 'offset' => '32', ++ 'type' => '18594' ++ }, ++ '6' => { ++ 'name' => 'comp_mask', ++ 'offset' => '160', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dek_init_attr', ++ 'Size' => '168', ++ 'Type' => 'Struct' ++ }, ++ '1849' => { ++ 'BaseType' => '316', ++ 'Name' => 'char[1]', ++ 'Size' => '1', ++ 'Type' => 'Array' ++ }, ++ '18594' => { ++ 'BaseType' => '316', ++ 'Name' => 'char[128]', ++ 'Size' => '128', ++ 'Type' => 'Array' ++ }, ++ '18610' => { ++ 'Header' => undef, ++ 'Line' => '660', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'state', ++ 'offset' => '0', ++ 'type' => '18450' ++ }, ++ '1' => { ++ 'name' => 'opaque', ++ 'offset' => '4', ++ 'type' => '983' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dek_attr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '1865' => { ++ 'BaseType' => '1824', ++ 'Name' => '_IO_lock_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18667' => { ++ 'Header' => undef, ++ 'Line' => '679', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'action_flags', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_flow_action_esp', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '1871' => { ++ 'Name' => 'struct _IO_codecvt', ++ 'Type' => 'Struct' ++ }, ++ '18710' => { ++ 'Header' => undef, ++ 'Line' => '684', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'match_sz', ++ 'offset' => '0', ++ 'type' => '386' ++ }, ++ '1' => { ++ 'name' => 'match_buf', ++ 'offset' => '8', ++ 'type' => '18753' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_flow_match_parameters', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '18753' => { ++ 'BaseType' => '2028', ++ 'Name' => 'uint64_t[]', ++ 'Size' => '8', ++ 'Type' => 'Array' ++ }, ++ '1876' => { ++ 'BaseType' => '1871', ++ 'Name' => 'struct _IO_codecvt*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18768' => { ++ 'Header' => undef, ++ 'Line' => '693', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'type', ++ 'offset' => '0', ++ 'type' => '10824' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'priority', ++ 'offset' => '8', ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'name' => 'match_criteria_enable', ++ 'offset' => '10', ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'name' => 'match_mask', ++ 'offset' => '16', ++ 'type' => '18881' ++ }, ++ '5' => { ++ 'name' => 'comp_mask', ++ 'offset' => '24', ++ 'type' => '2028' ++ }, ++ '6' => { ++ 'name' => 'ft_type', ++ 'offset' => '32', ++ 'type' => '15413' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_flow_matcher_attr', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '1882' => { ++ 'Name' => 'struct _IO_wide_data', ++ 'Type' => 'Struct' ++ }, ++ '1887' => { ++ 'BaseType' => '1882', ++ 'Name' => 'struct _IO_wide_data*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18881' => { ++ 'BaseType' => '18710', ++ 'Name' => 'struct mlx5dv_flow_match_parameters*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '18887' => { ++ 'Header' => undef, ++ 'Line' => '711', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_FLOW_ACTION_DEST_IBV_QP', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_FLOW_ACTION_DROP', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5DV_FLOW_ACTION_IBV_COUNTER', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'MLX5DV_FLOW_ACTION_IBV_FLOW_ACTION', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'MLX5DV_FLOW_ACTION_TAG', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'MLX5DV_FLOW_ACTION_DEST_DEVX', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'MLX5DV_FLOW_ACTION_COUNTERS_DEVX', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'MLX5DV_FLOW_ACTION_DEFAULT_MISS', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_flow_action_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '1893' => { ++ 'BaseType' => '316', ++ 'Name' => 'char[20]', ++ 'Size' => '20', ++ 'Type' => 'Array' ++ }, ++ '18955' => { ++ 'Header' => undef, ++ 'Line' => '724', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp', ++ 'offset' => '0', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'counter', ++ 'offset' => '0', ++ 'type' => '10942' ++ }, ++ '2' => { ++ 'name' => 'action', ++ 'offset' => '0', ++ 'type' => '13715' ++ }, ++ '3' => { ++ 'name' => 'tag_value', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'obj', ++ 'offset' => '0', ++ 'type' => '19143' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '19030' => { ++ 'Header' => undef, ++ 'Line' => '774', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'type', ++ 'offset' => '12', ++ 'type' => '27892' ++ }, ++ '3' => { ++ 'name' => 'object_id', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'rx_icm_addr', ++ 'offset' => '24', ++ 'type' => '2028' ++ }, ++ '5' => { ++ 'name' => 'log_obj_range', ++ 'offset' => '32', ++ 'type' => '1987' ++ }, ++ '6' => { ++ 'name' => 'priv', ++ 'offset' => '40', ++ 'type' => '267' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_devx_obj', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '19143' => { ++ 'BaseType' => '19030', ++ 'Name' => 'struct mlx5dv_devx_obj*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19149' => { ++ 'Header' => undef, ++ 'Line' => '722', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'type', ++ 'offset' => '0', ++ 'type' => '18887' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '18955' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_flow_action_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '19184' => { ++ 'Header' => undef, ++ 'Line' => '793', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'wqe_cnt', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'stride', ++ 'offset' => '12', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '1921' => { ++ 'BaseType' => '207', ++ 'Header' => undef, ++ 'Line' => '63', ++ 'Name' => 'off_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '19237' => { ++ 'Header' => undef, ++ 'Line' => '798', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'wqe_cnt', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'stride', ++ 'offset' => '12', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '19290' => { ++ 'Header' => undef, ++ 'Line' => '803', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'reg', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'size', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '19329' => { ++ 'Header' => undef, ++ 'Line' => '791', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dbrec', ++ 'offset' => '0', ++ 'type' => '19495' ++ }, ++ '1' => { ++ 'name' => 'sq', ++ 'offset' => '8', ++ 'type' => '19184' ++ }, ++ '10' => { ++ 'name' => 'tir_icm_addr', ++ 'offset' => '88', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'rq', ++ 'offset' => '24', ++ 'type' => '19237' ++ }, ++ '3' => { ++ 'name' => 'bf', ++ 'offset' => '40', ++ 'type' => '19290' ++ }, ++ '4' => { ++ 'name' => 'comp_mask', ++ 'offset' => '56', ++ 'type' => '2028' ++ }, ++ '5' => { ++ 'name' => 'uar_mmap_offset', ++ 'offset' => '64', ++ 'type' => '1921' ++ }, ++ '6' => { ++ 'name' => 'tirn', ++ 'offset' => '72', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'tisn', ++ 'offset' => '76', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'rqn', ++ 'offset' => '80', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'name' => 'sqn', ++ 'offset' => '84', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_qp', ++ 'Size' => '96', ++ 'Type' => 'Struct' ++ }, ++ '1933' => { ++ 'BaseType' => '269', ++ 'Header' => undef, ++ 'Line' => '77', ++ 'Name' => 'ssize_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1945' => { ++ 'BaseType' => '1812', ++ 'Name' => 'FILE*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19495' => { ++ 'BaseType' => '2165', ++ 'Name' => '__be32*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19501' => { ++ 'Header' => undef, ++ 'Line' => '816', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'dbrec', ++ 'offset' => '8', ++ 'type' => '19495' ++ }, ++ '2' => { ++ 'name' => 'cqe_cnt', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'cqe_size', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'cq_uar', ++ 'offset' => '24', ++ 'type' => '267' ++ }, ++ '5' => { ++ 'name' => 'cqn', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'comp_mask', ++ 'offset' => '40', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_cq', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '19614' => { ++ 'Header' => undef, ++ 'Line' => '830', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'dbrec', ++ 'offset' => '8', ++ 'type' => '19495' ++ }, ++ '2' => { ++ 'name' => 'stride', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'head', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'tail', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'comp_mask', ++ 'offset' => '32', ++ 'type' => '2028' ++ }, ++ '6' => { ++ 'name' => 'srqn', ++ 'offset' => '40', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_srq', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '19727' => { ++ 'Header' => undef, ++ 'Line' => '840', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'dbrec', ++ 'offset' => '8', ++ 'type' => '19495' ++ }, ++ '2' => { ++ 'name' => 'wqe_cnt', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'stride', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'comp_mask', ++ 'offset' => '24', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_rwq', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '1980' => { ++ 'BaseType' => '1986', ++ 'Name' => 'void const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '19812' => { ++ 'Header' => undef, ++ 'Line' => '848', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'type', ++ 'offset' => '0', ++ 'type' => '15562' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_alloc_dm_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '19855' => { ++ 'Header' => undef, ++ 'Line' => '857', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'name' => 'remote_va', ++ 'offset' => '24', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dm', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '1986' => { ++ 'BaseType' => '1', ++ 'Name' => 'void const', ++ 'Type' => 'Const' ++ }, ++ '1987' => { ++ 'BaseType' => '97', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => 'uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '19926' => { ++ 'Header' => undef, ++ 'Line' => '872', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'av', ++ 'offset' => '0', ++ 'type' => '20137' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_ah', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '19968' => { ++ 'Header' => undef, ++ 'Line' => '1216', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'key', ++ 'offset' => '0', ++ 'type' => '20873' ++ }, ++ '1' => { ++ 'name' => 'dqp_dct', ++ 'offset' => '8', ++ 'type' => '2165' ++ }, ++ '10' => { ++ 'name' => 'rgid', ++ 'offset' => '32', ++ 'type' => '2512' ++ }, ++ '2' => { ++ 'name' => 'stat_rate_sl', ++ 'offset' => '12', ++ 'type' => '1987' ++ }, ++ '3' => { ++ 'name' => 'fl_mlid', ++ 'offset' => '13', ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'name' => 'rlid', ++ 'offset' => '14', ++ 'type' => '2153' ++ }, ++ '5' => { ++ 'name' => 'reserved0', ++ 'offset' => '16', ++ 'type' => '20718' ++ }, ++ '6' => { ++ 'name' => 'rmac', ++ 'offset' => '20', ++ 'type' => '10868' ++ }, ++ '7' => { ++ 'name' => 'tclass', ++ 'offset' => '26', ++ 'type' => '1987' ++ }, ++ '8' => { ++ 'name' => 'hop_limit', ++ 'offset' => '27', ++ 'type' => '1987' ++ }, ++ '9' => { ++ 'name' => 'grh_gid_fl', ++ 'offset' => '28', ++ 'type' => '2165' ++ } ++ }, ++ 'Name' => 'struct mlx5_wqe_av', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '1999' => { ++ 'BaseType' => '116', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => 'uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '2011' => { ++ 'BaseType' => '140', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => 'uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '20137' => { ++ 'BaseType' => '19968', ++ 'Name' => 'struct mlx5_wqe_av*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20143' => { ++ 'Header' => undef, ++ 'Line' => '877', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'pdn', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_pd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20186' => { ++ 'Header' => undef, ++ 'Line' => '883', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '5101' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '20224' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20224' => { ++ 'BaseType' => '19329', ++ 'Name' => 'struct mlx5dv_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20230' => { ++ 'Header' => undef, ++ 'Line' => '887', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '4899' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '20268' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20268' => { ++ 'BaseType' => '19501', ++ 'Name' => 'struct mlx5dv_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20274' => { ++ 'Header' => undef, ++ 'Line' => '891', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '5219' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '20312' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '2028' => { ++ 'BaseType' => '159', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => 'uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '20312' => { ++ 'BaseType' => '19614', ++ 'Name' => 'struct mlx5dv_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20318' => { ++ 'Header' => undef, ++ 'Line' => '895', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '5420' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '20356' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20356' => { ++ 'BaseType' => '19727', ++ 'Name' => 'struct mlx5dv_rwq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20362' => { ++ 'Header' => undef, ++ 'Line' => '899', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '2974' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '20400' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20400' => { ++ 'BaseType' => '19855', ++ 'Name' => 'struct mlx5dv_dm*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20406' => { ++ 'Header' => undef, ++ 'Line' => '903', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '8272' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '20444' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20444' => { ++ 'BaseType' => '19926', ++ 'Name' => 'struct mlx5dv_ah*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20450' => { ++ 'Header' => undef, ++ 'Line' => '907', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'in', ++ 'offset' => '0', ++ 'type' => '6322' ++ }, ++ '1' => { ++ 'name' => 'out', ++ 'offset' => '8', ++ 'type' => '20488' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '20488' => { ++ 'BaseType' => '20143', ++ 'Name' => 'struct mlx5dv_pd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20494' => { ++ 'Header' => undef, ++ 'Line' => '882', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp', ++ 'offset' => '0', ++ 'type' => '20186' ++ }, ++ '1' => { ++ 'name' => 'cq', ++ 'offset' => '16', ++ 'type' => '20230' ++ }, ++ '2' => { ++ 'name' => 'srq', ++ 'offset' => '32', ++ 'type' => '20274' ++ }, ++ '3' => { ++ 'name' => 'rwq', ++ 'offset' => '48', ++ 'type' => '20318' ++ }, ++ '4' => { ++ 'name' => 'dm', ++ 'offset' => '64', ++ 'type' => '20362' ++ }, ++ '5' => { ++ 'name' => 'ah', ++ 'offset' => '80', ++ 'type' => '20406' ++ }, ++ '6' => { ++ 'name' => 'pd', ++ 'offset' => '96', ++ 'type' => '20450' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_obj', ++ 'Size' => '112', ++ 'Type' => 'Struct' ++ }, ++ '20602' => { ++ 'Header' => undef, ++ 'Line' => '927', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'single_stride_log_num_of_bytes', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'single_wqe_log_num_of_strides', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'two_byte_shift_en', ++ 'offset' => '8', ++ 'type' => '1987' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_striding_rq_init_attr', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '20659' => { ++ 'Header' => undef, ++ 'Line' => '933', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'striding_rq_attrs', ++ 'offset' => '8', ++ 'type' => '20602' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_wq_init_attr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '207' => { ++ 'BaseType' => '152', ++ 'Header' => undef, ++ 'Line' => '152', ++ 'Name' => '__off_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '20718' => { ++ 'BaseType' => '1987', ++ 'Name' => 'uint8_t[4]', ++ 'Size' => '4', ++ 'Type' => 'Array' ++ }, ++ '20834' => { ++ 'Header' => undef, ++ 'Line' => '1218', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qkey', ++ 'offset' => '0', ++ 'type' => '2165' ++ }, ++ '1' => { ++ 'name' => 'reserved', ++ 'offset' => '4', ++ 'type' => '2165' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '20873' => { ++ 'Header' => undef, ++ 'Line' => '1217', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qkey', ++ 'offset' => '0', ++ 'type' => '20834' ++ }, ++ '1' => { ++ 'name' => 'dc_key', ++ 'offset' => '0', ++ 'type' => '2177' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '20910' => { ++ 'Header' => undef, ++ 'Line' => '1547', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_CTX_ATTR_BUF_ALLOCATORS', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_set_ctx_attr_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '2098' => { ++ 'Name' => '_Bool', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '21041' => { ++ 'Header' => undef, ++ 'Line' => '1571', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'nsec', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'last_cycles', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'frac', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'name' => 'mult', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'shift', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'mask', ++ 'offset' => '32', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_clock_info', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '2105' => { ++ 'BaseType' => '45', ++ 'Header' => undef, ++ 'Line' => '21', ++ 'Name' => '__u8', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '21140' => { ++ 'Header' => undef, ++ 'Line' => '1693', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'umem_id', ++ 'offset' => '0', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_devx_umem', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '21169' => { ++ 'Header' => undef, ++ 'Line' => '1700', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'size', ++ 'offset' => '8', ++ 'type' => '386' ++ }, ++ '2' => { ++ 'name' => 'access', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'pgsz_bitmap', ++ 'offset' => '24', ++ 'type' => '2028' ++ }, ++ '4' => { ++ 'name' => 'comp_mask', ++ 'offset' => '32', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_devx_umem_in', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '2117' => { ++ 'BaseType' => '52', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => '__u16', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '21254' => { ++ 'Header' => undef, ++ 'Line' => '1713', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'reg_addr', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'base_addr', ++ 'offset' => '8', ++ 'type' => '267' ++ }, ++ '2' => { ++ 'name' => 'page_id', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'mmap_off', ++ 'offset' => '24', ++ 'type' => '1921' ++ }, ++ '4' => { ++ 'name' => 'comp_mask', ++ 'offset' => '32', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_devx_uar', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '2129' => { ++ 'BaseType' => '59', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__u32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '21339' => { ++ 'Header' => undef, ++ 'Line' => '1726', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'page_id', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'mmap_off', ++ 'offset' => '8', ++ 'type' => '1921' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_var', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '2141' => { ++ 'BaseType' => '405', ++ 'Header' => undef, ++ 'Line' => '31', ++ 'Name' => '__u64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '21410' => { ++ 'Header' => undef, ++ 'Line' => '1763', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fd', ++ 'offset' => '0', ++ 'type' => '128' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_devx_cmd_comp', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '21438' => { ++ 'Header' => undef, ++ 'Line' => '1779', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fd', ++ 'offset' => '0', ++ 'type' => '128' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_devx_event_channel', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '21466' => { ++ 'Header' => undef, ++ 'Line' => '2069', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'index', ++ 'offset' => '0', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_pp', ++ 'Size' => '2', ++ 'Type' => 'Struct' ++ }, ++ '21495' => { ++ 'Header' => undef, ++ 'Line' => '2095', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'parent', ++ 'offset' => '0', ++ 'type' => '21628' ++ }, ++ '1' => { ++ 'name' => 'flags', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'bw_share', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'max_avg_bw', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'comp_mask', ++ 'offset' => '24', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sched_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '2153' => { ++ 'BaseType' => '2117', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => '__be16', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '21580' => { ++ 'BaseType' => '21495', ++ 'Name' => 'struct mlx5dv_sched_attr const', ++ 'Size' => '32', ++ 'Type' => 'Const' ++ }, ++ '21585' => { ++ 'Header' => undef, ++ 'Line' => '913', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'parent', ++ 'offset' => '0', ++ 'type' => '21628' ++ }, ++ '1' => { ++ 'name' => 'obj', ++ 'offset' => '8', ++ 'type' => '19143' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sched_node', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '21628' => { ++ 'BaseType' => '21585', ++ 'Name' => 'struct mlx5dv_sched_node*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '21634' => { ++ 'Header' => undef, ++ 'Line' => '2138', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'vector', ++ 'offset' => '0', ++ 'type' => '128' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '4', ++ 'type' => '128' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_devx_msi_vector', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '2165' => { ++ 'BaseType' => '2129', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__be32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '21676' => { ++ 'Header' => undef, ++ 'Line' => '2148', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'vaddr', ++ 'offset' => '0', ++ 'type' => '267' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_devx_eq', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '2177' => { ++ 'BaseType' => '2141', ++ 'Header' => undef, ++ 'Line' => '29', ++ 'Name' => '__be64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '21789' => { ++ 'Header' => undef, ++ 'Line' => '197', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5_ALLOC_TYPE_ANON', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5_ALLOC_TYPE_HUGE', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5_ALLOC_TYPE_CONTIG', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'MLX5_ALLOC_TYPE_PREFER_HUGE', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'MLX5_ALLOC_TYPE_PREFER_CONTIG', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'MLX5_ALLOC_TYPE_EXTERNAL', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'MLX5_ALLOC_TYPE_CUSTOM', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'MLX5_ALLOC_TYPE_ALL', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum mlx5_alloc_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '219' => { ++ 'BaseType' => '152', ++ 'Header' => undef, ++ 'Line' => '153', ++ 'Name' => '__off64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '21945' => { ++ 'Header' => undef, ++ 'Line' => '243', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'lock', ++ 'offset' => '0', ++ 'type' => '999' ++ }, ++ '1' => { ++ 'name' => 'in_use', ++ 'offset' => '4', ++ 'type' => '128' ++ }, ++ '2' => { ++ 'name' => 'need_lock', ++ 'offset' => '8', ++ 'type' => '128' ++ } ++ }, ++ 'Name' => 'struct mlx5_spinlock', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '2205' => { ++ 'Header' => undef, ++ 'Line' => '144', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM', ++ 'value' => '0' ++ } ++ }, ++ 'Name' => 'enum ib_uverbs_flow_action_esp_keymat', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '2230' => { ++ 'Header' => undef, ++ 'Line' => '163', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum ib_uverbs_flow_action_esp_replay', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '22314' => { ++ 'BaseType' => '66', ++ 'Name' => 'unsigned long*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2261' => { ++ 'Header' => undef, ++ 'Line' => '189', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'val_ptr', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'val_ptr_data_u64', ++ 'offset' => '0', ++ 'type' => '2141' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '2297' => { ++ 'Header' => undef, ++ 'Line' => '190', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next_ptr', ++ 'offset' => '0', ++ 'type' => '2388' ++ }, ++ '1' => { ++ 'name' => 'next_ptr_data_u64', ++ 'offset' => '0', ++ 'type' => '2141' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '2333' => { ++ 'Header' => undef, ++ 'Line' => '185', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '2261' ++ }, ++ '1' => { ++ 'name' => 'unnamed1', ++ 'offset' => '8', ++ 'type' => '2297' ++ }, ++ '2' => { ++ 'name' => 'len', ++ 'offset' => '16', ++ 'type' => '2117' ++ }, ++ '3' => { ++ 'name' => 'type', ++ 'offset' => '18', ++ 'type' => '2117' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_flow_action_esp_encap', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '2388' => { ++ 'BaseType' => '2333', ++ 'Name' => 'struct ib_uverbs_flow_action_esp_encap*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2394' => { ++ 'Header' => undef, ++ 'Line' => '195', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'spi', ++ 'offset' => '0', ++ 'type' => '2129' ++ }, ++ '1' => { ++ 'name' => 'seq', ++ 'offset' => '4', ++ 'type' => '2129' ++ }, ++ '2' => { ++ 'name' => 'tfc_pad', ++ 'offset' => '8', ++ 'type' => '2129' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'offset' => '12', ++ 'type' => '2129' ++ }, ++ '4' => { ++ 'name' => 'hard_limit_pkts', ++ 'offset' => '16', ++ 'type' => '2141' ++ } ++ }, ++ 'Name' => 'struct ib_uverbs_flow_action_esp', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '2512' => { ++ 'BaseType' => '1987', ++ 'Name' => 'uint8_t[16]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '2528' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_NODE_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_NODE_CA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_NODE_SWITCH', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_NODE_ROUTER', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_NODE_RNIC', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_NODE_USNIC', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_NODE_USNIC_UDP', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_NODE_UNSPECIFIED', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_node_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '25436' => { ++ 'Header' => undef, ++ 'Line' => '603', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'reg', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'need_lock', ++ 'offset' => '8', ++ 'type' => '128' ++ }, ++ '10' => { ++ 'bitfield' => '1', ++ 'name' => 'dyn_alloc_uar', ++ 'offset' => '112', ++ 'type' => '1987' ++ }, ++ '11' => { ++ 'bitfield' => '1', ++ 'name' => 'mmaped_entry', ++ 'offset' => '112', ++ 'type' => '1987' ++ }, ++ '12' => { ++ 'bitfield' => '1', ++ 'name' => 'nc_mode', ++ 'offset' => '112', ++ 'type' => '1987' ++ }, ++ '13' => { ++ 'bitfield' => '1', ++ 'name' => 'qp_dedicated', ++ 'offset' => '112', ++ 'type' => '1987' ++ }, ++ '14' => { ++ 'bitfield' => '1', ++ 'name' => 'qp_shared', ++ 'offset' => '112', ++ 'type' => '1987' ++ }, ++ '15' => { ++ 'name' => 'count', ++ 'offset' => '116', ++ 'type' => '2011' ++ }, ++ '16' => { ++ 'name' => 'uar_entry', ++ 'offset' => '120', ++ 'type' => '14461' ++ }, ++ '17' => { ++ 'name' => 'uar_handle', ++ 'offset' => '136', ++ 'type' => '2011' ++ }, ++ '18' => { ++ 'name' => 'length', ++ 'offset' => '140', ++ 'type' => '2011' ++ }, ++ '19' => { ++ 'name' => 'page_id', ++ 'offset' => '144', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'lock', ++ 'offset' => '12', ++ 'type' => '21945' ++ }, ++ '3' => { ++ 'name' => 'offset', ++ 'offset' => '24', ++ 'type' => '59' ++ }, ++ '4' => { ++ 'name' => 'buf_size', ++ 'offset' => '28', ++ 'type' => '59' ++ }, ++ '5' => { ++ 'name' => 'uuarn', ++ 'offset' => '32', ++ 'type' => '59' ++ }, ++ '6' => { ++ 'name' => 'uar_mmap_offset', ++ 'offset' => '40', ++ 'type' => '1921' ++ }, ++ '7' => { ++ 'name' => 'uar', ++ 'offset' => '48', ++ 'type' => '267' ++ }, ++ '8' => { ++ 'name' => 'bfreg_dyn_index', ++ 'offset' => '56', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'name' => 'devx_uar', ++ 'offset' => '64', ++ 'type' => '27800' ++ } ++ }, ++ 'Name' => 'struct mlx5_bf', ++ 'Size' => '152', ++ 'Type' => 'Struct' ++ }, ++ '25746' => { ++ 'BaseType' => '25436', ++ 'Name' => 'struct mlx5_bf*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2595' => { ++ 'Header' => undef, ++ 'Line' => '106', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_TRANSPORT_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_TRANSPORT_IB', ++ 'value' => '0' ++ }, ++ '2' => { ++ 'name' => 'IBV_TRANSPORT_IWARP', ++ 'value' => '1' ++ }, ++ '3' => { ++ 'name' => 'IBV_TRANSPORT_USNIC', ++ 'value' => '2' ++ }, ++ '4' => { ++ 'name' => 'IBV_TRANSPORT_USNIC_UDP', ++ 'value' => '3' ++ }, ++ '5' => { ++ 'name' => 'IBV_TRANSPORT_UNSPECIFIED', ++ 'value' => '4' ++ } ++ }, ++ 'Name' => 'enum ibv_transport_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '2650' => { ++ 'Header' => undef, ++ 'Line' => '155', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_ATOMIC_NONE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_ATOMIC_HCA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_ATOMIC_GLOB', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_atomic_cap', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '267' => { ++ 'BaseType' => '1', ++ 'Name' => 'void*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2687' => { ++ 'Header' => undef, ++ 'Line' => '161', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'length', ++ 'offset' => '0', ++ 'type' => '386' ++ }, ++ '1' => { ++ 'name' => 'log_align_req', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '12', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_alloc_dm_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '26888' => { ++ 'Header' => undef, ++ 'Line' => '423', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'shmid', ++ 'offset' => '0', ++ 'type' => '128' ++ }, ++ '1' => { ++ 'name' => 'shmaddr', ++ 'offset' => '8', ++ 'type' => '267' ++ }, ++ '2' => { ++ 'name' => 'bitmap', ++ 'offset' => '16', ++ 'type' => '22314' ++ }, ++ '3' => { ++ 'name' => 'bmp_size', ++ 'offset' => '24', ++ 'type' => '66' ++ }, ++ '4' => { ++ 'name' => 'entry', ++ 'offset' => '32', ++ 'type' => '14461' ++ } ++ }, ++ 'Name' => 'struct mlx5_hugetlb_mem', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '269' => { ++ 'BaseType' => '152', ++ 'Header' => undef, ++ 'Line' => '193', ++ 'Name' => '__ssize_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '26973' => { ++ 'Header' => undef, ++ 'Line' => '431', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '386' ++ }, ++ '2' => { ++ 'name' => 'base', ++ 'offset' => '16', ++ 'type' => '128' ++ }, ++ '3' => { ++ 'name' => 'hmem', ++ 'offset' => '24', ++ 'type' => '27100' ++ }, ++ '4' => { ++ 'name' => 'type', ++ 'offset' => '32', ++ 'type' => '21789' ++ }, ++ '5' => { ++ 'name' => 'resource_type', ++ 'offset' => '40', ++ 'type' => '2028' ++ }, ++ '6' => { ++ 'name' => 'req_alignment', ++ 'offset' => '48', ++ 'type' => '386' ++ }, ++ '7' => { ++ 'name' => 'mparent_domain', ++ 'offset' => '56', ++ 'type' => '27191' ++ } ++ }, ++ 'Name' => 'struct mlx5_buf', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '27100' => { ++ 'BaseType' => '26888', ++ 'Name' => 'struct mlx5_hugetlb_mem*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '27106' => { ++ 'Header' => undef, ++ 'Line' => '460', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mpd', ++ 'offset' => '0', ++ 'type' => '27313' ++ }, ++ '1' => { ++ 'name' => 'mtd', ++ 'offset' => '88', ++ 'type' => '27403' ++ }, ++ '2' => { ++ 'name' => 'alloc', ++ 'offset' => '96', ++ 'type' => '12562' ++ }, ++ '3' => { ++ 'name' => 'free', ++ 'offset' => '104', ++ 'type' => '12594' ++ }, ++ '4' => { ++ 'name' => 'pd_context', ++ 'offset' => '112', ++ 'type' => '267' ++ } ++ }, ++ 'Name' => 'struct mlx5_parent_domain', ++ 'Size' => '120', ++ 'Type' => 'Struct' ++ }, ++ '27191' => { ++ 'BaseType' => '27106', ++ 'Name' => 'struct mlx5_parent_domain*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '27197' => { ++ 'Header' => undef, ++ 'Line' => '442', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ibv_td', ++ 'offset' => '0', ++ 'type' => '6208' ++ }, ++ '1' => { ++ 'name' => 'bf', ++ 'offset' => '8', ++ 'type' => '25746' ++ }, ++ '2' => { ++ 'name' => 'refcount', ++ 'offset' => '16', ++ 'type' => '14752' ++ } ++ }, ++ 'Name' => 'struct mlx5_td', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '27260' => { ++ 'Header' => undef, ++ 'Line' => '453', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'opaque_buf', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'opaque_mr', ++ 'offset' => '8', ++ 'type' => '6130' ++ }, ++ '2' => { ++ 'name' => 'opaque_mr_mutex', ++ 'offset' => '16', ++ 'type' => '897' ++ } ++ }, ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '27313' => { ++ 'Header' => undef, ++ 'Line' => '448', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ibv_pd', ++ 'offset' => '0', ++ 'type' => '6136' ++ }, ++ '1' => { ++ 'name' => 'pdn', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'refcount', ++ 'offset' => '20', ++ 'type' => '14752' ++ }, ++ '3' => { ++ 'name' => 'mprotection_domain', ++ 'offset' => '24', ++ 'type' => '27397' ++ }, ++ '4' => { ++ 'name' => 'unnamed0', ++ 'offset' => '32', ++ 'type' => '27260' ++ } ++ }, ++ 'Name' => 'struct mlx5_pd', ++ 'Size' => '88', ++ 'Type' => 'Struct' ++ }, ++ '27397' => { ++ 'BaseType' => '27313', ++ 'Name' => 'struct mlx5_pd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2740' => { ++ 'Header' => undef, ++ 'Line' => '171', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'memcpy_to_dm', ++ 'offset' => '8', ++ 'type' => '2980' ++ }, ++ '2' => { ++ 'name' => 'memcpy_from_dm', ++ 'offset' => '16', ++ 'type' => '3016' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'handle', ++ 'offset' => '28', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_dm', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '27403' => { ++ 'BaseType' => '27197', ++ 'Name' => 'struct mlx5_td*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '27794' => { ++ 'BaseType' => '59', ++ 'Name' => 'unsigned int*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '27800' => { ++ 'Header' => undef, ++ 'Line' => '598', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dv_devx_uar', ++ 'offset' => '0', ++ 'type' => '21254' ++ }, ++ '1' => { ++ 'name' => 'context', ++ 'offset' => '40', ++ 'type' => '2938' ++ } ++ }, ++ 'Name' => 'struct mlx5_devx_uar', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '27849' => { ++ 'Header' => undef, ++ 'Line' => '754', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_flow_matcher', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '27892' => { ++ 'Header' => undef, ++ 'Line' => '759', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5_DEVX_FLOW_TABLE', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'MLX5_DEVX_FLOW_COUNTER', ++ 'value' => '2' ++ }, ++ '10' => { ++ 'name' => 'MLX5_DEVX_ASO_FLOW_METER', ++ 'value' => '11' ++ }, ++ '11' => { ++ 'name' => 'MLX5_DEVX_ASO_CT', ++ 'value' => '12' ++ }, ++ '2' => { ++ 'name' => 'MLX5_DEVX_FLOW_METER', ++ 'value' => '3' ++ }, ++ '3' => { ++ 'name' => 'MLX5_DEVX_QP', ++ 'value' => '4' ++ }, ++ '4' => { ++ 'name' => 'MLX5_DEVX_PKT_REFORMAT_CTX', ++ 'value' => '5' ++ }, ++ '5' => { ++ 'name' => 'MLX5_DEVX_TIR', ++ 'value' => '6' ++ }, ++ '6' => { ++ 'name' => 'MLX5_DEVX_FLOW_GROUP', ++ 'value' => '7' ++ }, ++ '7' => { ++ 'name' => 'MLX5_DEVX_FLOW_TABLE_ENTRY', ++ 'value' => '8' ++ }, ++ '8' => { ++ 'name' => 'MLX5_DEVX_FLOW_SAMPLER', ++ 'value' => '9' ++ }, ++ '9' => { ++ 'name' => 'MLX5_DEVX_ASO_FIRST_HIT', ++ 'value' => '10' ++ } ++ }, ++ 'Name' => 'enum mlx5_devx_obj_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '2819' => { ++ 'Header' => undef, ++ 'Line' => '1986', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'device', ++ 'offset' => '0', ++ 'type' => '11342' ++ }, ++ '1' => { ++ 'name' => 'ops', ++ 'offset' => '8', ++ 'type' => '11502' ++ }, ++ '2' => { ++ 'name' => 'cmd_fd', ++ 'offset' => '264', ++ 'type' => '128' ++ }, ++ '3' => { ++ 'name' => 'async_fd', ++ 'offset' => '268', ++ 'type' => '128' ++ }, ++ '4' => { ++ 'name' => 'num_comp_vectors', ++ 'offset' => '272', ++ 'type' => '128' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '280', ++ 'type' => '897' ++ }, ++ '6' => { ++ 'name' => 'abi_compat', ++ 'offset' => '320', ++ 'type' => '267' ++ } ++ }, ++ 'Name' => 'struct ibv_context', ++ 'Size' => '328', ++ 'Type' => 'Struct' ++ }, ++ '28757' => { ++ 'Header' => undef, ++ 'Line' => '918', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'parent', ++ 'offset' => '0', ++ 'type' => '21628' ++ }, ++ '1' => { ++ 'name' => 'obj', ++ 'offset' => '8', ++ 'type' => '19143' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_sched_leaf', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '28800' => { ++ 'BaseType' => '28757', ++ 'Name' => 'struct mlx5dv_sched_leaf const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '28943' => { ++ 'Name' => 'int(*)(struct mlx5dv_devx_obj*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '19143' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29200' => { ++ 'BaseType' => '21410', ++ 'Name' => 'struct mlx5dv_devx_cmd_comp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29249' => { ++ 'BaseType' => '21438', ++ 'Name' => 'struct mlx5dv_devx_event_channel*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '292994' => { ++ 'Header' => undef, ++ 'Line' => '1875', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_DR_DOMAIN_TYPE_NIC_RX', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_DR_DOMAIN_TYPE_NIC_TX', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'MLX5DV_DR_DOMAIN_TYPE_FDB', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_dr_domain_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '293032' => { ++ 'Header' => undef, ++ 'Line' => '1887', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next_table', ++ 'offset' => '0', ++ 'type' => '293256' ++ }, ++ '1' => { ++ 'name' => 'active', ++ 'offset' => '8', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'reg_c_index', ++ 'offset' => '9', ++ 'type' => '1987' ++ }, ++ '3' => { ++ 'name' => 'flow_meter_parameter_sz', ++ 'offset' => '16', ++ 'type' => '386' ++ }, ++ '4' => { ++ 'name' => 'flow_meter_parameter', ++ 'offset' => '24', ++ 'type' => '267' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_flow_meter_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '293117' => { ++ 'Header' => undef, ++ 'Line' => '1107', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'offset' => '0', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'rx', ++ 'offset' => '8', ++ 'type' => '313434' ++ }, ++ '2' => { ++ 'name' => 'tx', ++ 'offset' => '24', ++ 'type' => '313434' ++ }, ++ '3' => { ++ 'name' => 'level', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'table_type', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'matcher_list', ++ 'offset' => '48', ++ 'type' => '14507' ++ }, ++ '6' => { ++ 'name' => 'devx_obj', ++ 'offset' => '64', ++ 'type' => '19143' ++ }, ++ '7' => { ++ 'name' => 'refcount', ++ 'offset' => '72', ++ 'type' => '128' ++ }, ++ '8' => { ++ 'name' => 'tbl_list', ++ 'offset' => '80', ++ 'type' => '14461' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_table', ++ 'Size' => '96', ++ 'Type' => 'Struct' ++ }, ++ '29313' => { ++ 'BaseType' => '1999', ++ 'Name' => 'uint16_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '293256' => { ++ 'BaseType' => '293117', ++ 'Name' => 'struct mlx5dv_dr_table*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '293262' => { ++ 'Header' => undef, ++ 'Line' => '1895', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'sample_ratio', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'default_next_table', ++ 'offset' => '8', ++ 'type' => '293256' ++ }, ++ '2' => { ++ 'name' => 'num_sample_actions', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'sample_actions', ++ 'offset' => '24', ++ 'type' => '293396' ++ }, ++ '4' => { ++ 'name' => 'action', ++ 'offset' => '32', ++ 'type' => '2177' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_flow_sampler_attr', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '293347' => { ++ 'Header' => undef, ++ 'Line' => '1172', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'action_type', ++ 'offset' => '0', ++ 'type' => '305966' ++ }, ++ '1' => { ++ 'name' => 'refcount', ++ 'offset' => '4', ++ 'type' => '128' ++ }, ++ '2' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '314933' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_action', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '293396' => { ++ 'BaseType' => '293402', ++ 'Name' => 'struct mlx5dv_dr_action**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '293402' => { ++ 'BaseType' => '293347', ++ 'Name' => 'struct mlx5dv_dr_action*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '293434' => { ++ 'Header' => undef, ++ 'Line' => '1972', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'MLX5DV_DR_ACTION_DEST', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'MLX5DV_DR_ACTION_DEST_REFORMAT', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum mlx5dv_dr_action_dest_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '293466' => { ++ 'Header' => undef, ++ 'Line' => '1977', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'reformat', ++ 'offset' => '0', ++ 'type' => '293402' ++ }, ++ '1' => { ++ 'name' => 'dest', ++ 'offset' => '8', ++ 'type' => '293402' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_action_dest_reformat', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '293509' => { ++ 'Header' => undef, ++ 'Line' => '1984', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dest', ++ 'offset' => '0', ++ 'type' => '293402' ++ }, ++ '1' => { ++ 'name' => 'dest_reformat', ++ 'offset' => '0', ++ 'type' => '293546' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '293546' => { ++ 'BaseType' => '293466', ++ 'Name' => 'struct mlx5dv_dr_action_dest_reformat*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '293552' => { ++ 'Header' => undef, ++ 'Line' => '1982', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'type', ++ 'offset' => '0', ++ 'type' => '293434' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '293509' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_action_dest_attr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '2938' => { ++ 'BaseType' => '2819', ++ 'Name' => 'struct ibv_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29432' => { ++ 'BaseType' => '15505', ++ 'Name' => 'struct mlx5_ib_uapi_devx_async_cmd_hdr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29469' => { ++ 'BaseType' => '15624', ++ 'Name' => 'struct mlx5_ib_uapi_devx_async_event_hdr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29501' => { ++ 'BaseType' => '21254', ++ 'Name' => 'struct mlx5dv_devx_uar*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29560' => { ++ 'BaseType' => '21140', ++ 'Name' => 'struct mlx5dv_devx_umem*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29592' => { ++ 'BaseType' => '21169', ++ 'Name' => 'struct mlx5dv_devx_umem_in*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29640' => { ++ 'BaseType' => '16626', ++ 'Name' => 'struct mlx5dv_mkey_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29693' => { ++ 'BaseType' => '18283', ++ 'Name' => 'struct mlx5dv_crypto_login_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29725' => { ++ 'BaseType' => '18354', ++ 'Name' => 'enum mlx5dv_crypto_login_state*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2974' => { ++ 'BaseType' => '2740', ++ 'Name' => 'struct ibv_dm*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29778' => { ++ 'BaseType' => '18482', ++ 'Name' => 'struct mlx5dv_dek_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '2980' => { ++ 'Name' => 'int(*)(struct ibv_dm*, uint64_t, void const*, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '2974' ++ }, ++ '1' => { ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'type' => '1980' ++ }, ++ '3' => { ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29810' => { ++ 'BaseType' => '18610', ++ 'Name' => 'struct mlx5dv_dek_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29863' => { ++ 'BaseType' => '21339', ++ 'Name' => 'struct mlx5dv_var*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29922' => { ++ 'BaseType' => '21466', ++ 'Name' => 'struct mlx5dv_pp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29971' => { ++ 'BaseType' => '20494', ++ 'Name' => 'struct mlx5dv_obj*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30008' => { ++ 'BaseType' => '16555', ++ 'Name' => 'struct mlx5dv_cq_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30045' => { ++ 'BaseType' => '16872', ++ 'Name' => 'struct mlx5dv_qp_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30103' => { ++ 'BaseType' => '20659', ++ 'Name' => 'struct mlx5dv_wq_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30140' => { ++ 'BaseType' => '19812', ++ 'Name' => 'struct mlx5dv_alloc_dm_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3016' => { ++ 'Name' => 'int(*)(void*, struct ibv_dm*, uint64_t, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '267' ++ }, ++ '1' => { ++ 'type' => '2974' ++ }, ++ '2' => { ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '30203' => { ++ 'BaseType' => '18667', ++ 'Name' => 'struct mlx5dv_flow_action_esp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3022' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fw_ver', ++ 'offset' => '0', ++ 'type' => '3556' ++ }, ++ '1' => { ++ 'name' => 'node_guid', ++ 'offset' => '64', ++ 'type' => '2177' ++ }, ++ '10' => { ++ 'name' => 'device_cap_flags', ++ 'offset' => '116', ++ 'type' => '59' ++ }, ++ '11' => { ++ 'name' => 'max_sge', ++ 'offset' => '120', ++ 'type' => '128' ++ }, ++ '12' => { ++ 'name' => 'max_sge_rd', ++ 'offset' => '124', ++ 'type' => '128' ++ }, ++ '13' => { ++ 'name' => 'max_cq', ++ 'offset' => '128', ++ 'type' => '128' ++ }, ++ '14' => { ++ 'name' => 'max_cqe', ++ 'offset' => '132', ++ 'type' => '128' ++ }, ++ '15' => { ++ 'name' => 'max_mr', ++ 'offset' => '136', ++ 'type' => '128' ++ }, ++ '16' => { ++ 'name' => 'max_pd', ++ 'offset' => '140', ++ 'type' => '128' ++ }, ++ '17' => { ++ 'name' => 'max_qp_rd_atom', ++ 'offset' => '144', ++ 'type' => '128' ++ }, ++ '18' => { ++ 'name' => 'max_ee_rd_atom', ++ 'offset' => '148', ++ 'type' => '128' ++ }, ++ '19' => { ++ 'name' => 'max_res_rd_atom', ++ 'offset' => '152', ++ 'type' => '128' ++ }, ++ '2' => { ++ 'name' => 'sys_image_guid', ++ 'offset' => '72', ++ 'type' => '2177' ++ }, ++ '20' => { ++ 'name' => 'max_qp_init_rd_atom', ++ 'offset' => '156', ++ 'type' => '128' ++ }, ++ '21' => { ++ 'name' => 'max_ee_init_rd_atom', ++ 'offset' => '160', ++ 'type' => '128' ++ }, ++ '22' => { ++ 'name' => 'atomic_cap', ++ 'offset' => '164', ++ 'type' => '2650' ++ }, ++ '23' => { ++ 'name' => 'max_ee', ++ 'offset' => '168', ++ 'type' => '128' ++ }, ++ '24' => { ++ 'name' => 'max_rdd', ++ 'offset' => '172', ++ 'type' => '128' ++ }, ++ '25' => { ++ 'name' => 'max_mw', ++ 'offset' => '176', ++ 'type' => '128' ++ }, ++ '26' => { ++ 'name' => 'max_raw_ipv6_qp', ++ 'offset' => '180', ++ 'type' => '128' ++ }, ++ '27' => { ++ 'name' => 'max_raw_ethy_qp', ++ 'offset' => '184', ++ 'type' => '128' ++ }, ++ '28' => { ++ 'name' => 'max_mcast_grp', ++ 'offset' => '188', ++ 'type' => '128' ++ }, ++ '29' => { ++ 'name' => 'max_mcast_qp_attach', ++ 'offset' => '192', ++ 'type' => '128' ++ }, ++ '3' => { ++ 'name' => 'max_mr_size', ++ 'offset' => '80', ++ 'type' => '2028' ++ }, ++ '30' => { ++ 'name' => 'max_total_mcast_qp_attach', ++ 'offset' => '196', ++ 'type' => '128' ++ }, ++ '31' => { ++ 'name' => 'max_ah', ++ 'offset' => '200', ++ 'type' => '128' ++ }, ++ '32' => { ++ 'name' => 'max_fmr', ++ 'offset' => '204', ++ 'type' => '128' ++ }, ++ '33' => { ++ 'name' => 'max_map_per_fmr', ++ 'offset' => '208', ++ 'type' => '128' ++ }, ++ '34' => { ++ 'name' => 'max_srq', ++ 'offset' => '212', ++ 'type' => '128' ++ }, ++ '35' => { ++ 'name' => 'max_srq_wr', ++ 'offset' => '216', ++ 'type' => '128' ++ }, ++ '36' => { ++ 'name' => 'max_srq_sge', ++ 'offset' => '220', ++ 'type' => '128' ++ }, ++ '37' => { ++ 'name' => 'max_pkeys', ++ 'offset' => '224', ++ 'type' => '1999' ++ }, ++ '38' => { ++ 'name' => 'local_ca_ack_delay', ++ 'offset' => '226', ++ 'type' => '1987' ++ }, ++ '39' => { ++ 'name' => 'phys_port_cnt', ++ 'offset' => '227', ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'name' => 'page_size_cap', ++ 'offset' => '88', ++ 'type' => '2028' ++ }, ++ '5' => { ++ 'name' => 'vendor_id', ++ 'offset' => '96', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'vendor_part_id', ++ 'offset' => '100', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'hw_ver', ++ 'offset' => '104', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'max_qp', ++ 'offset' => '108', ++ 'type' => '128' ++ }, ++ '9' => { ++ 'name' => 'max_qp_wr', ++ 'offset' => '112', ++ 'type' => '128' ++ } ++ }, ++ 'Name' => 'struct ibv_device_attr', ++ 'Size' => '232', ++ 'Type' => 'Struct' ++ }, ++ '30312' => { ++ 'BaseType' => '27849', ++ 'Name' => 'struct mlx5dv_flow_matcher*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30318' => { ++ 'BaseType' => '18768', ++ 'Name' => 'struct mlx5dv_flow_matcher_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30386' => { ++ 'BaseType' => '19149', ++ 'Name' => 'struct mlx5dv_flow_action_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30424' => { ++ 'BaseType' => '16320', ++ 'Name' => 'struct mlx5dv_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '305' => { ++ 'BaseType' => '316', ++ 'Name' => 'char*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30539' => { ++ 'BaseType' => '21580', ++ 'Name' => 'struct mlx5dv_sched_attr const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '305664' => { ++ 'Header' => undef, ++ 'Line' => '66', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'DR_CHUNK_SIZE_1', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'DR_CHUNK_SIZE_MIN', ++ 'value' => '0' ++ }, ++ '10' => { ++ 'name' => 'DR_CHUNK_SIZE_512', ++ 'value' => '9' ++ }, ++ '11' => { ++ 'name' => 'DR_CHUNK_SIZE_1K', ++ 'value' => '10' ++ }, ++ '12' => { ++ 'name' => 'DR_CHUNK_SIZE_2K', ++ 'value' => '11' ++ }, ++ '13' => { ++ 'name' => 'DR_CHUNK_SIZE_4K', ++ 'value' => '12' ++ }, ++ '14' => { ++ 'name' => 'DR_CHUNK_SIZE_8K', ++ 'value' => '13' ++ }, ++ '15' => { ++ 'name' => 'DR_CHUNK_SIZE_16K', ++ 'value' => '14' ++ }, ++ '16' => { ++ 'name' => 'DR_CHUNK_SIZE_32K', ++ 'value' => '15' ++ }, ++ '17' => { ++ 'name' => 'DR_CHUNK_SIZE_64K', ++ 'value' => '16' ++ }, ++ '18' => { ++ 'name' => 'DR_CHUNK_SIZE_128K', ++ 'value' => '17' ++ }, ++ '19' => { ++ 'name' => 'DR_CHUNK_SIZE_256K', ++ 'value' => '18' ++ }, ++ '2' => { ++ 'name' => 'DR_CHUNK_SIZE_2', ++ 'value' => '1' ++ }, ++ '20' => { ++ 'name' => 'DR_CHUNK_SIZE_512K', ++ 'value' => '19' ++ }, ++ '21' => { ++ 'name' => 'DR_CHUNK_SIZE_1024K', ++ 'value' => '20' ++ }, ++ '22' => { ++ 'name' => 'DR_CHUNK_SIZE_2048K', ++ 'value' => '21' ++ }, ++ '23' => { ++ 'name' => 'DR_CHUNK_SIZE_MAX', ++ 'value' => '22' ++ }, ++ '3' => { ++ 'name' => 'DR_CHUNK_SIZE_4', ++ 'value' => '2' ++ }, ++ '4' => { ++ 'name' => 'DR_CHUNK_SIZE_8', ++ 'value' => '3' ++ }, ++ '5' => { ++ 'name' => 'DR_CHUNK_SIZE_16', ++ 'value' => '4' ++ }, ++ '6' => { ++ 'name' => 'DR_CHUNK_SIZE_32', ++ 'value' => '5' ++ }, ++ '7' => { ++ 'name' => 'DR_CHUNK_SIZE_64', ++ 'value' => '6' ++ }, ++ '8' => { ++ 'name' => 'DR_CHUNK_SIZE_128', ++ 'value' => '7' ++ }, ++ '9' => { ++ 'name' => 'DR_CHUNK_SIZE_256', ++ 'value' => '8' ++ } ++ }, ++ 'Name' => 'enum dr_icm_chunk_size', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '30571' => { ++ 'BaseType' => '28757', ++ 'Name' => 'struct mlx5dv_sched_leaf*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '305966' => { ++ 'Header' => undef, ++ 'Line' => '161', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'DR_ACTION_TYP_TNL_L2_TO_L2', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'DR_ACTION_TYP_L2_TO_TNL_L2', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'DR_ACTION_TYP_VPORT', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'DR_ACTION_TYP_METER', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'DR_ACTION_TYP_MISS', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'DR_ACTION_TYP_SAMPLER', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'DR_ACTION_TYP_DEST_ARRAY', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'DR_ACTION_TYP_POP_VLAN', ++ 'value' => '15' ++ }, ++ '16' => { ++ 'name' => 'DR_ACTION_TYP_PUSH_VLAN', ++ 'value' => '16' ++ }, ++ '17' => { ++ 'name' => 'DR_ACTION_TYP_ASO_FIRST_HIT', ++ 'value' => '17' ++ }, ++ '18' => { ++ 'name' => 'DR_ACTION_TYP_ASO_FLOW_METER', ++ 'value' => '18' ++ }, ++ '19' => { ++ 'name' => 'DR_ACTION_TYP_ASO_CT', ++ 'value' => '19' ++ }, ++ '2' => { ++ 'name' => 'DR_ACTION_TYP_TNL_L3_TO_L2', ++ 'value' => '2' ++ }, ++ '20' => { ++ 'name' => 'DR_ACTION_TYP_MAX', ++ 'value' => '20' ++ }, ++ '3' => { ++ 'name' => 'DR_ACTION_TYP_L2_TO_TNL_L3', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'DR_ACTION_TYP_DROP', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'DR_ACTION_TYP_QP', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'DR_ACTION_TYP_FT', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'DR_ACTION_TYP_CTR', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'DR_ACTION_TYP_TAG', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'DR_ACTION_TYP_MODIFY_HDR', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum dr_action_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '306111' => { ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hw_ste', ++ 'offset' => '0', ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'name' => 'refcount', ++ 'offset' => '8', ++ 'type' => '14752' ++ }, ++ '2' => { ++ 'name' => 'miss_list_node', ++ 'offset' => '16', ++ 'type' => '14461' ++ }, ++ '3' => { ++ 'name' => 'htbl', ++ 'offset' => '32', ++ 'type' => '306396' ++ }, ++ '4' => { ++ 'name' => 'next_htbl', ++ 'offset' => '40', ++ 'type' => '306396' ++ }, ++ '5' => { ++ 'name' => 'rule_rx_tx', ++ 'offset' => '48', ++ 'type' => '306459' ++ }, ++ '6' => { ++ 'name' => 'ste_chain_location', ++ 'offset' => '56', ++ 'type' => '1987' ++ }, ++ '7' => { ++ 'name' => 'size', ++ 'offset' => '57', ++ 'type' => '1987' ++ } ++ }, ++ 'Name' => 'struct dr_ste', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '306236' => { ++ 'Header' => undef, ++ 'Line' => '245', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'type', ++ 'offset' => '0', ++ 'type' => '306505' ++ }, ++ '1' => { ++ 'name' => 'lu_type', ++ 'offset' => '4', ++ 'type' => '1999' ++ }, ++ '10' => { ++ 'name' => 'ctrl', ++ 'offset' => '64', ++ 'type' => '306465' ++ }, ++ '2' => { ++ 'name' => 'byte_mask', ++ 'offset' => '6', ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'name' => 'refcount', ++ 'offset' => '8', ++ 'type' => '14752' ++ }, ++ '4' => { ++ 'name' => 'chunk', ++ 'offset' => '16', ++ 'type' => '306712' ++ }, ++ '5' => { ++ 'name' => 'ste_arr', ++ 'offset' => '24', ++ 'type' => '306718' ++ }, ++ '6' => { ++ 'name' => 'hw_ste_arr', ++ 'offset' => '32', ++ 'type' => '7345' ++ }, ++ '7' => { ++ 'name' => 'miss_list', ++ 'offset' => '40', ++ 'type' => '39434' ++ }, ++ '8' => { ++ 'name' => 'chunk_size', ++ 'offset' => '48', ++ 'type' => '305664' ++ }, ++ '9' => { ++ 'name' => 'pointing_ste', ++ 'offset' => '56', ++ 'type' => '306718' ++ } ++ }, ++ 'Name' => 'struct dr_ste_htbl', ++ 'Size' => '72', ++ 'Type' => 'Struct' ++ }, ++ '306396' => { ++ 'BaseType' => '306236', ++ 'Name' => 'struct dr_ste_htbl*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '306402' => { ++ 'Header' => undef, ++ 'Line' => '1267', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'nic_matcher', ++ 'offset' => '0', ++ 'type' => '315156' ++ }, ++ '1' => { ++ 'name' => 'last_rule_ste', ++ 'offset' => '8', ++ 'type' => '306718' ++ }, ++ '2' => { ++ 'name' => 'lock_index', ++ 'offset' => '16', ++ 'type' => '1987' ++ } ++ }, ++ 'Name' => 'struct dr_rule_rx_tx', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '306459' => { ++ 'BaseType' => '306402', ++ 'Name' => 'struct dr_rule_rx_tx*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '306465' => { ++ 'Header' => undef, ++ 'Line' => '230', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'num_of_valid_entries', ++ 'offset' => '0', ++ 'type' => '128' ++ }, ++ '1' => { ++ 'name' => 'num_of_collisions', ++ 'offset' => '4', ++ 'type' => '128' ++ } ++ }, ++ 'Name' => 'struct dr_ste_htbl_ctrl', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '306505' => { ++ 'Header' => undef, ++ 'Line' => '240', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'DR_STE_HTBL_TYPE_LEGACY', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'DR_STE_HTBL_TYPE_MATCH', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum dr_ste_htbl_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '306543' => { ++ 'Header' => undef, ++ 'Line' => '1330', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buddy_mem', ++ 'offset' => '0', ++ 'type' => '315439' ++ }, ++ '1' => { ++ 'name' => 'chunk_list', ++ 'offset' => '8', ++ 'type' => '14461' ++ }, ++ '10' => { ++ 'name' => 'miss_list', ++ 'offset' => '80', ++ 'type' => '39434' ++ }, ++ '2' => { ++ 'name' => 'rkey', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'num_of_entries', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'byte_size', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'icm_addr', ++ 'offset' => '40', ++ 'type' => '2028' ++ }, ++ '6' => { ++ 'name' => 'mr_addr', ++ 'offset' => '48', ++ 'type' => '2028' ++ }, ++ '7' => { ++ 'name' => 'seg', ++ 'offset' => '56', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'ste_arr', ++ 'offset' => '64', ++ 'type' => '306718' ++ }, ++ '9' => { ++ 'name' => 'hw_ste_arr', ++ 'offset' => '72', ++ 'type' => '7345' ++ } ++ }, ++ 'Name' => 'struct dr_icm_chunk', ++ 'Size' => '88', ++ 'Type' => 'Struct' ++ }, ++ '306712' => { ++ 'BaseType' => '306543', ++ 'Name' => 'struct dr_icm_chunk*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '306718' => { ++ 'BaseType' => '306111', ++ 'Name' => 'struct dr_ste*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '306730' => { ++ 'Header' => undef, ++ 'Line' => '284', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'byte_mask', ++ 'offset' => '0', ++ 'type' => '1999' ++ }, ++ '1' => { ++ 'name' => 'bit_mask', ++ 'offset' => '2', ++ 'type' => '2512' ++ } ++ }, ++ 'Size' => '18', ++ 'Type' => 'Struct' ++ }, ++ '306769' => { ++ 'Header' => undef, ++ 'Line' => '288', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'format_id', ++ 'offset' => '0', ++ 'type' => '1999' ++ }, ++ '1' => { ++ 'name' => 'match', ++ 'offset' => '2', ++ 'type' => '63227' ++ }, ++ '2' => { ++ 'name' => 'definer_obj', ++ 'offset' => '40', ++ 'type' => '19143' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '306822' => { ++ 'Header' => undef, ++ 'Line' => '283', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '306730' ++ }, ++ '1' => { ++ 'name' => 'unnamed1', ++ 'offset' => '0', ++ 'type' => '306769' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '306843' => { ++ 'Header' => undef, ++ 'Line' => '277', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'inner', ++ 'offset' => '0', ++ 'type' => '2098' ++ }, ++ '1' => { ++ 'name' => 'rx', ++ 'offset' => '1', ++ 'type' => '2098' ++ }, ++ '2' => { ++ 'name' => 'caps', ++ 'offset' => '8', ++ 'type' => '307536' ++ }, ++ '3' => { ++ 'name' => 'lu_type', ++ 'offset' => '16', ++ 'type' => '1999' ++ }, ++ '4' => { ++ 'name' => 'htbl_type', ++ 'offset' => '20', ++ 'type' => '306505' ++ }, ++ '5' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '306822' ++ }, ++ '6' => { ++ 'name' => 'ste_build_tag_func', ++ 'offset' => '72', ++ 'type' => '307696' ++ } ++ }, ++ 'Name' => 'struct dr_ste_build', ++ 'Size' => '80', ++ 'Type' => 'Struct' ++ }, ++ '306947' => { ++ 'Header' => undef, ++ 'Line' => '898', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'offset' => '0', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'gvmi', ++ 'offset' => '8', ++ 'type' => '1999' ++ }, ++ '10' => { ++ 'name' => 'flex_protocols', ++ 'offset' => '72', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'name' => 'flex_parser_header_modify', ++ 'offset' => '76', ++ 'type' => '1987' ++ }, ++ '12' => { ++ 'name' => 'flex_parser_id_icmp_dw0', ++ 'offset' => '77', ++ 'type' => '1987' ++ }, ++ '13' => { ++ 'name' => 'flex_parser_id_icmp_dw1', ++ 'offset' => '78', ++ 'type' => '1987' ++ }, ++ '14' => { ++ 'name' => 'flex_parser_id_icmpv6_dw0', ++ 'offset' => '79', ++ 'type' => '1987' ++ }, ++ '15' => { ++ 'name' => 'flex_parser_id_icmpv6_dw1', ++ 'offset' => '80', ++ 'type' => '1987' ++ }, ++ '16' => { ++ 'name' => 'flex_parser_id_geneve_opt_0', ++ 'offset' => '81', ++ 'type' => '1987' ++ }, ++ '17' => { ++ 'name' => 'flex_parser_id_mpls_over_gre', ++ 'offset' => '82', ++ 'type' => '1987' ++ }, ++ '18' => { ++ 'name' => 'flex_parser_id_mpls_over_udp', ++ 'offset' => '83', ++ 'type' => '1987' ++ }, ++ '19' => { ++ 'name' => 'flex_parser_id_gtpu_dw_0', ++ 'offset' => '84', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'nic_rx_drop_address', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '20' => { ++ 'name' => 'flex_parser_id_gtpu_teid', ++ 'offset' => '85', ++ 'type' => '1987' ++ }, ++ '21' => { ++ 'name' => 'flex_parser_id_gtpu_dw_2', ++ 'offset' => '86', ++ 'type' => '1987' ++ }, ++ '22' => { ++ 'name' => 'flex_parser_id_gtpu_first_ext_dw_0', ++ 'offset' => '87', ++ 'type' => '1987' ++ }, ++ '23' => { ++ 'name' => 'flex_parser_ok_bits_supp', ++ 'offset' => '88', ++ 'type' => '1987' ++ }, ++ '24' => { ++ 'name' => 'definer_supp_checksum', ++ 'offset' => '89', ++ 'type' => '1987' ++ }, ++ '25' => { ++ 'name' => 'max_ft_level', ++ 'offset' => '90', ++ 'type' => '1987' ++ }, ++ '26' => { ++ 'name' => 'sw_format_ver', ++ 'offset' => '91', ++ 'type' => '1987' ++ }, ++ '27' => { ++ 'name' => 'isolate_vl_tc', ++ 'offset' => '92', ++ 'type' => '2098' ++ }, ++ '28' => { ++ 'name' => 'eswitch_manager', ++ 'offset' => '93', ++ 'type' => '2098' ++ }, ++ '29' => { ++ 'name' => 'rx_sw_owner', ++ 'offset' => '94', ++ 'type' => '2098' ++ }, ++ '3' => { ++ 'name' => 'nic_tx_drop_address', ++ 'offset' => '24', ++ 'type' => '2028' ++ }, ++ '30' => { ++ 'name' => 'tx_sw_owner', ++ 'offset' => '95', ++ 'type' => '2098' ++ }, ++ '31' => { ++ 'name' => 'fdb_sw_owner', ++ 'offset' => '96', ++ 'type' => '2098' ++ }, ++ '32' => { ++ 'name' => 'rx_sw_owner_v2', ++ 'offset' => '97', ++ 'type' => '2098' ++ }, ++ '33' => { ++ 'name' => 'tx_sw_owner_v2', ++ 'offset' => '98', ++ 'type' => '2098' ++ }, ++ '34' => { ++ 'name' => 'fdb_sw_owner_v2', ++ 'offset' => '99', ++ 'type' => '2098' ++ }, ++ '35' => { ++ 'name' => 'roce_caps', ++ 'offset' => '100', ++ 'type' => '311227' ++ }, ++ '36' => { ++ 'name' => 'definer_format_sup', ++ 'offset' => '104', ++ 'type' => '2028' ++ }, ++ '37' => { ++ 'name' => 'prio_tag_required', ++ 'offset' => '112', ++ 'type' => '2098' ++ }, ++ '38' => { ++ 'name' => 'is_ecpf', ++ 'offset' => '113', ++ 'type' => '2098' ++ }, ++ '39' => { ++ 'name' => 'vports', ++ 'offset' => '120', ++ 'type' => '311344' ++ }, ++ '4' => { ++ 'name' => 'nic_tx_allow_address', ++ 'offset' => '32', ++ 'type' => '2028' ++ }, ++ '40' => { ++ 'name' => 'support_full_tnl_hdr', ++ 'offset' => '240', ++ 'type' => '2098' ++ }, ++ '5' => { ++ 'name' => 'esw_rx_drop_address', ++ 'offset' => '40', ++ 'type' => '2028' ++ }, ++ '6' => { ++ 'name' => 'esw_tx_drop_address', ++ 'offset' => '48', ++ 'type' => '2028' ++ }, ++ '7' => { ++ 'name' => 'log_icm_size', ++ 'offset' => '56', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'log_modify_hdr_icm_size', ++ 'offset' => '60', ++ 'type' => '1987' ++ }, ++ '9' => { ++ 'name' => 'hdr_modify_icm_addr', ++ 'offset' => '64', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct dr_devx_caps', ++ 'Size' => '248', ++ 'Type' => 'Struct' ++ }, ++ '30702' => { ++ 'BaseType' => '28800', ++ 'Name' => 'struct mlx5dv_sched_leaf const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '307536' => { ++ 'BaseType' => '306947', ++ 'Name' => 'struct dr_devx_caps*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '307567' => { ++ 'BaseType' => '307573', ++ 'Name' => 'struct dr_match_param*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '307573' => { ++ 'Header' => undef, ++ 'Line' => '837', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'outer', ++ 'offset' => '0', ++ 'type' => '308529' ++ }, ++ '1' => { ++ 'name' => 'misc', ++ 'offset' => '64', ++ 'type' => '309109' ++ }, ++ '2' => { ++ 'name' => 'inner', ++ 'offset' => '128', ++ 'type' => '308529' ++ }, ++ '3' => { ++ 'name' => 'misc2', ++ 'offset' => '192', ++ 'type' => '309828' ++ }, ++ '4' => { ++ 'name' => 'misc3', ++ 'offset' => '256', ++ 'type' => '310323' ++ }, ++ '5' => { ++ 'name' => 'misc4', ++ 'offset' => '320', ++ 'type' => '310698' ++ }, ++ '6' => { ++ 'name' => 'misc5', ++ 'offset' => '384', ++ 'type' => '310937' ++ } ++ }, ++ 'Name' => 'struct dr_match_param', ++ 'Size' => '448', ++ 'Type' => 'Struct' ++ }, ++ '307690' => { ++ 'BaseType' => '306843', ++ 'Name' => 'struct dr_ste_build*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '307696' => { ++ 'Name' => 'int(*)(struct dr_match_param*, struct dr_ste_build*, uint8_t*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '307567' ++ }, ++ '1' => { ++ 'type' => '307690' ++ }, ++ '2' => { ++ 'type' => '7345' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '307751' => { ++ 'Header' => undef, ++ 'Line' => '356', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'set', ++ 'offset' => '0', ++ 'type' => '2098' ++ } ++ }, ++ 'Size' => '1', ++ 'Type' => 'Struct' ++ }, ++ '307776' => { ++ 'Header' => undef, ++ 'Line' => '359', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'initial_color', ++ 'offset' => '0', ++ 'type' => '1987' ++ } ++ }, ++ 'Size' => '1', ++ 'Type' => 'Struct' ++ }, ++ '307801' => { ++ 'Header' => undef, ++ 'Line' => '362', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'direction', ++ 'offset' => '0', ++ 'type' => '2098' ++ } ++ }, ++ 'Size' => '1', ++ 'Type' => 'Struct' ++ }, ++ '307826' => { ++ 'Header' => undef, ++ 'Line' => '355', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'first_hit', ++ 'offset' => '0', ++ 'type' => '307751' ++ }, ++ '1' => { ++ 'name' => 'flow_meter', ++ 'offset' => '0', ++ 'type' => '307776' ++ }, ++ '2' => { ++ 'name' => 'ct', ++ 'offset' => '0', ++ 'type' => '307801' ++ } ++ }, ++ 'Size' => '1', ++ 'Type' => 'Union' ++ }, ++ '307875' => { ++ 'Header' => undef, ++ 'Line' => '350', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'offset' => '0', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'devx_obj', ++ 'offset' => '8', ++ 'type' => '19143' ++ }, ++ '2' => { ++ 'name' => 'offset', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'dest_reg_id', ++ 'offset' => '20', ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'name' => 'unnamed0', ++ 'offset' => '21', ++ 'type' => '307826' ++ } ++ }, ++ 'Name' => 'struct dr_action_aso', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '307952' => { ++ 'Header' => undef, ++ 'Line' => '1028', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ctx', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'ste_ctx', ++ 'offset' => '8', ++ 'type' => '313215' ++ }, ++ '10' => { ++ 'name' => 'tbl_list', ++ 'offset' => '1008', ++ 'type' => '14507' ++ }, ++ '11' => { ++ 'name' => 'flags', ++ 'offset' => '1024', ++ 'type' => '2011' ++ }, ++ '12' => { ++ 'name' => 'debug_lock', ++ 'offset' => '1028', ++ 'type' => '999' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '6322' ++ }, ++ '3' => { ++ 'name' => 'uar', ++ 'offset' => '24', ++ 'type' => '29501' ++ }, ++ '4' => { ++ 'name' => 'type', ++ 'offset' => '32', ++ 'type' => '292994' ++ }, ++ '5' => { ++ 'name' => 'refcount', ++ 'offset' => '36', ++ 'type' => '128' ++ }, ++ '6' => { ++ 'name' => 'ste_icm_pool', ++ 'offset' => '40', ++ 'type' => '313226' ++ }, ++ '7' => { ++ 'name' => 'action_icm_pool', ++ 'offset' => '48', ++ 'type' => '313226' ++ }, ++ '8' => { ++ 'name' => 'send_ring', ++ 'offset' => '56', ++ 'type' => '313232' ++ }, ++ '9' => { ++ 'name' => 'info', ++ 'offset' => '168', ++ 'type' => '312178' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_domain', ++ 'Size' => '1032', ++ 'Type' => 'Struct' ++ }, ++ '308152' => { ++ 'BaseType' => '307952', ++ 'Name' => 'struct mlx5dv_dr_domain*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '308158' => { ++ 'Header' => undef, ++ 'Line' => '383', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'count_pop', ++ 'offset' => '0', ++ 'type' => '128' ++ }, ++ '1' => { ++ 'name' => 'count_push', ++ 'offset' => '4', ++ 'type' => '128' ++ }, ++ '2' => { ++ 'name' => 'headers', ++ 'offset' => '8', ++ 'type' => '308211' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '30817' => { ++ 'BaseType' => '21041', ++ 'Name' => 'struct mlx5dv_clock_info*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '308211' => { ++ 'BaseType' => '2011', ++ 'Name' => 'uint32_t[2]', ++ 'Size' => '8', ++ 'Type' => 'Array' ++ }, ++ '308227' => { ++ 'Header' => undef, ++ 'Line' => '368', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'modify_index', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'modify_actions', ++ 'offset' => '4', ++ 'type' => '1999' ++ }, ++ '10' => { ++ 'name' => 'hit_gvmi', ++ 'offset' => '42', ++ 'type' => '1999' ++ }, ++ '11' => { ++ 'name' => 'reformat_id', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '12' => { ++ 'name' => 'reformat_size', ++ 'offset' => '48', ++ 'type' => '2011' ++ }, ++ '13' => { ++ 'name' => 'prio_tag_required', ++ 'offset' => '52', ++ 'type' => '2098' ++ }, ++ '14' => { ++ 'name' => 'vlans', ++ 'offset' => '56', ++ 'type' => '308158' ++ }, ++ '15' => { ++ 'name' => 'aso', ++ 'offset' => '72', ++ 'type' => '308480' ++ }, ++ '16' => { ++ 'name' => 'aso_ste_loc', ++ 'offset' => '80', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'single_modify_action', ++ 'offset' => '8', ++ 'type' => '7345' ++ }, ++ '3' => { ++ 'name' => 'decap_index', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'decap_actions', ++ 'offset' => '20', ++ 'type' => '1999' ++ }, ++ '5' => { ++ 'name' => 'decap_with_vlan', ++ 'offset' => '22', ++ 'type' => '2098' ++ }, ++ '6' => { ++ 'name' => 'final_icm_addr', ++ 'offset' => '24', ++ 'type' => '2028' ++ }, ++ '7' => { ++ 'name' => 'flow_tag', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'ctr_id', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'name' => 'gvmi', ++ 'offset' => '40', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct dr_ste_actions_attr', ++ 'Size' => '88', ++ 'Type' => 'Struct' ++ }, ++ '308480' => { ++ 'BaseType' => '307875', ++ 'Name' => 'struct dr_action_aso*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '308529' => { ++ 'Header' => undef, ++ 'Line' => '664', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'smac_47_16', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'bitfield' => '16', ++ 'name' => 'smac_15_0', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '10' => { ++ 'bitfield' => '2', ++ 'name' => 'ip_ecn', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'bitfield' => '1', ++ 'name' => 'cvlan_tag', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '12' => { ++ 'bitfield' => '1', ++ 'name' => 'svlan_tag', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '13' => { ++ 'bitfield' => '1', ++ 'name' => 'frag', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '14' => { ++ 'bitfield' => '4', ++ 'name' => 'ip_version', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '15' => { ++ 'bitfield' => '9', ++ 'name' => 'tcp_flags', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '16' => { ++ 'bitfield' => '16', ++ 'name' => 'tcp_sport', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '17' => { ++ 'bitfield' => '16', ++ 'name' => 'tcp_dport', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '18' => { ++ 'bitfield' => '16', ++ 'name' => 'reserved_at_c0', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '19' => { ++ 'bitfield' => '4', ++ 'name' => 'ipv4_ihl', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'bitfield' => '16', ++ 'name' => 'ethertype', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '20' => { ++ 'bitfield' => '1', ++ 'name' => 'l3_ok', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '21' => { ++ 'bitfield' => '1', ++ 'name' => 'l4_ok', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '22' => { ++ 'bitfield' => '1', ++ 'name' => 'ipv4_checksum_ok', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '23' => { ++ 'bitfield' => '1', ++ 'name' => 'l4_checksum_ok', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '24' => { ++ 'bitfield' => '8', ++ 'name' => 'ip_ttl_hoplimit', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '25' => { ++ 'bitfield' => '16', ++ 'name' => 'udp_sport', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '26' => { ++ 'bitfield' => '16', ++ 'name' => 'udp_dport', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '27' => { ++ 'name' => 'src_ip_127_96', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '28' => { ++ 'name' => 'src_ip_95_64', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '29' => { ++ 'name' => 'src_ip_63_32', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'dmac_47_16', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '30' => { ++ 'name' => 'src_ip_31_0', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '31' => { ++ 'name' => 'dst_ip_127_96', ++ 'offset' => '48', ++ 'type' => '2011' ++ }, ++ '32' => { ++ 'name' => 'dst_ip_95_64', ++ 'offset' => '52', ++ 'type' => '2011' ++ }, ++ '33' => { ++ 'name' => 'dst_ip_63_32', ++ 'offset' => '56', ++ 'type' => '2011' ++ }, ++ '34' => { ++ 'name' => 'dst_ip_31_0', ++ 'offset' => '60', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'bitfield' => '16', ++ 'name' => 'dmac_15_0', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'bitfield' => '3', ++ 'name' => 'first_prio', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'bitfield' => '1', ++ 'name' => 'first_cfi', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'bitfield' => '12', ++ 'name' => 'first_vid', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'bitfield' => '8', ++ 'name' => 'ip_protocol', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'bitfield' => '6', ++ 'name' => 'ip_dscp', ++ 'offset' => '16', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct dr_match_spec', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '30859' => { ++ 'BaseType' => '15706', ++ 'Name' => 'struct mlx5_ib_uapi_query_port*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '309109' => { ++ 'Header' => undef, ++ 'Line' => '702', ++ 'Memb' => { ++ '0' => { ++ 'bitfield' => '1', ++ 'name' => 'gre_c_present', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'bitfield' => '1', ++ 'name' => 'reserved_at1', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '10' => { ++ 'bitfield' => '12', ++ 'name' => 'outer_second_vid', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'bitfield' => '3', ++ 'name' => 'inner_second_prio', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '12' => { ++ 'bitfield' => '1', ++ 'name' => 'inner_second_cfi', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '13' => { ++ 'bitfield' => '12', ++ 'name' => 'inner_second_vid', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '14' => { ++ 'bitfield' => '1', ++ 'name' => 'outer_second_cvlan_tag', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '15' => { ++ 'bitfield' => '1', ++ 'name' => 'inner_second_cvlan_tag', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '16' => { ++ 'bitfield' => '1', ++ 'name' => 'outer_second_svlan_tag', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '17' => { ++ 'bitfield' => '1', ++ 'name' => 'inner_second_svlan_tag', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '18' => { ++ 'bitfield' => '1', ++ 'name' => 'outer_emd_tag', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '19' => { ++ 'bitfield' => '11', ++ 'name' => 'reserved_at_65', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'bitfield' => '1', ++ 'name' => 'gre_k_present', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '20' => { ++ 'bitfield' => '16', ++ 'name' => 'gre_protocol', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '21' => { ++ 'bitfield' => '24', ++ 'name' => 'gre_key_h', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '22' => { ++ 'bitfield' => '8', ++ 'name' => 'gre_key_l', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '23' => { ++ 'bitfield' => '24', ++ 'name' => 'vxlan_vni', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '24' => { ++ 'bitfield' => '8', ++ 'name' => 'reserved_at_b8', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '25' => { ++ 'bitfield' => '24', ++ 'name' => 'geneve_vni', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '26' => { ++ 'bitfield' => '6', ++ 'name' => 'reserved_at_e4', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '27' => { ++ 'bitfield' => '1', ++ 'name' => 'geneve_tlv_option_0_exist', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '28' => { ++ 'bitfield' => '1', ++ 'name' => 'geneve_oam', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '29' => { ++ 'bitfield' => '12', ++ 'name' => 'reserved_at_ec', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'bitfield' => '1', ++ 'name' => 'gre_s_present', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '30' => { ++ 'bitfield' => '20', ++ 'name' => 'outer_ipv6_flow_label', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '31' => { ++ 'bitfield' => '12', ++ 'name' => 'reserved_at_100', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '32' => { ++ 'bitfield' => '20', ++ 'name' => 'inner_ipv6_flow_label', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '33' => { ++ 'bitfield' => '10', ++ 'name' => 'reserved_at_120', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '34' => { ++ 'bitfield' => '6', ++ 'name' => 'geneve_opt_len', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '35' => { ++ 'bitfield' => '16', ++ 'name' => 'geneve_protocol_type', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '36' => { ++ 'bitfield' => '8', ++ 'name' => 'reserved_at_140', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '37' => { ++ 'bitfield' => '24', ++ 'name' => 'bth_dst_qp', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '38' => { ++ 'name' => 'inner_esp_spi', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '39' => { ++ 'name' => 'outer_esp_spi', ++ 'offset' => '48', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'bitfield' => '4', ++ 'name' => 'source_vhca_port', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '40' => { ++ 'name' => 'reserved_at_1a0', ++ 'offset' => '52', ++ 'type' => '309812' ++ }, ++ '5' => { ++ 'bitfield' => '24', ++ 'name' => 'source_sqn', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'bitfield' => '16', ++ 'name' => 'source_eswitch_owner_vhca_id', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'bitfield' => '16', ++ 'name' => 'source_port', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'bitfield' => '3', ++ 'name' => 'outer_second_prio', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'bitfield' => '1', ++ 'name' => 'outer_second_cfi', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct dr_match_misc', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '30912' => { ++ 'BaseType' => '21634', ++ 'Name' => 'struct mlx5dv_devx_msi_vector*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '30980' => { ++ 'BaseType' => '21676', ++ 'Name' => 'struct mlx5dv_devx_eq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '309812' => { ++ 'BaseType' => '2011', ++ 'Name' => 'uint32_t[3]', ++ 'Size' => '12', ++ 'Type' => 'Array' ++ }, ++ '309828' => { ++ 'Header' => undef, ++ 'Line' => '746', ++ 'Memb' => { ++ '0' => { ++ 'bitfield' => '20', ++ 'name' => 'outer_first_mpls_label', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'bitfield' => '3', ++ 'name' => 'outer_first_mpls_exp', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '10' => { ++ 'bitfield' => '1', ++ 'name' => 'outer_first_mpls_over_gre_s_bos', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'bitfield' => '8', ++ 'name' => 'outer_first_mpls_over_gre_ttl', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '12' => { ++ 'bitfield' => '20', ++ 'name' => 'outer_first_mpls_over_udp_label', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '13' => { ++ 'bitfield' => '3', ++ 'name' => 'outer_first_mpls_over_udp_exp', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '14' => { ++ 'bitfield' => '1', ++ 'name' => 'outer_first_mpls_over_udp_s_bos', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '15' => { ++ 'bitfield' => '8', ++ 'name' => 'outer_first_mpls_over_udp_ttl', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '16' => { ++ 'name' => 'metadata_reg_c_7', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '17' => { ++ 'name' => 'metadata_reg_c_6', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '18' => { ++ 'name' => 'metadata_reg_c_5', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '19' => { ++ 'name' => 'metadata_reg_c_4', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'bitfield' => '1', ++ 'name' => 'outer_first_mpls_s_bos', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '20' => { ++ 'name' => 'metadata_reg_c_3', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '21' => { ++ 'name' => 'metadata_reg_c_2', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '22' => { ++ 'name' => 'metadata_reg_c_1', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '23' => { ++ 'name' => 'metadata_reg_c_0', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '24' => { ++ 'name' => 'metadata_reg_a', ++ 'offset' => '48', ++ 'type' => '2011' ++ }, ++ '25' => { ++ 'bitfield' => '8', ++ 'name' => 'psp_syndrome', ++ 'offset' => '52', ++ 'type' => '2011' ++ }, ++ '26' => { ++ 'bitfield' => '8', ++ 'name' => 'reserved_at_1a8', ++ 'offset' => '52', ++ 'type' => '2011' ++ }, ++ '27' => { ++ 'bitfield' => '8', ++ 'name' => 'ipsec_syndrome', ++ 'offset' => '52', ++ 'type' => '2011' ++ }, ++ '28' => { ++ 'bitfield' => '8', ++ 'name' => 'ipsec_next_header', ++ 'offset' => '52', ++ 'type' => '2011' ++ }, ++ '29' => { ++ 'name' => 'reserved_at_260', ++ 'offset' => '56', ++ 'type' => '308211' ++ }, ++ '3' => { ++ 'bitfield' => '8', ++ 'name' => 'outer_first_mpls_ttl', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'bitfield' => '20', ++ 'name' => 'inner_first_mpls_label', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'bitfield' => '3', ++ 'name' => 'inner_first_mpls_exp', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'bitfield' => '1', ++ 'name' => 'inner_first_mpls_s_bos', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'bitfield' => '8', ++ 'name' => 'inner_first_mpls_ttl', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'bitfield' => '20', ++ 'name' => 'outer_first_mpls_over_gre_label', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'bitfield' => '3', ++ 'name' => 'outer_first_mpls_over_gre_exp', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct dr_match_misc2', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '310323' => { ++ 'Header' => undef, ++ 'Line' => '779', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'inner_tcp_seq_num', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'outer_tcp_seq_num', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '10' => { ++ 'name' => 'icmpv6_header_data', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'name' => 'icmpv4_type', ++ 'offset' => '32', ++ 'type' => '1987' ++ }, ++ '12' => { ++ 'name' => 'icmpv4_code', ++ 'offset' => '33', ++ 'type' => '1987' ++ }, ++ '13' => { ++ 'name' => 'icmpv6_type', ++ 'offset' => '34', ++ 'type' => '1987' ++ }, ++ '14' => { ++ 'name' => 'icmpv6_code', ++ 'offset' => '35', ++ 'type' => '1987' ++ }, ++ '15' => { ++ 'name' => 'geneve_tlv_option_0_data', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '16' => { ++ 'name' => 'gtpu_teid', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '17' => { ++ 'bitfield' => '8', ++ 'name' => 'gtpu_msg_type', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '18' => { ++ 'bitfield' => '8', ++ 'name' => 'gtpu_msg_flags', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '19' => { ++ 'bitfield' => '16', ++ 'name' => 'reserved_at_150', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'inner_tcp_ack_num', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '20' => { ++ 'name' => 'gtpu_dw_2', ++ 'offset' => '48', ++ 'type' => '2011' ++ }, ++ '21' => { ++ 'name' => 'gtpu_first_ext_dw_0', ++ 'offset' => '52', ++ 'type' => '2011' ++ }, ++ '22' => { ++ 'name' => 'gtpu_dw_0', ++ 'offset' => '56', ++ 'type' => '2011' ++ }, ++ '23' => { ++ 'name' => 'reserved_at_1c0', ++ 'offset' => '60', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'outer_tcp_ack_num', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'bitfield' => '8', ++ 'name' => 'reserved_at_80', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'bitfield' => '24', ++ 'name' => 'outer_vxlan_gpe_vni', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'bitfield' => '8', ++ 'name' => 'outer_vxlan_gpe_next_protocol', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'bitfield' => '8', ++ 'name' => 'outer_vxlan_gpe_flags', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'bitfield' => '16', ++ 'name' => 'reserved_at_b0', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'name' => 'icmpv4_header_data', ++ 'offset' => '24', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct dr_match_misc3', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '310698' => { ++ 'Header' => undef, ++ 'Line' => '806', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'prog_sample_field_value_0', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'prog_sample_field_id_0', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '10' => { ++ 'name' => 'prog_sample_field_value_5', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'name' => 'prog_sample_field_id_5', ++ 'offset' => '44', ++ 'type' => '2011' ++ }, ++ '12' => { ++ 'name' => 'prog_sample_field_value_6', ++ 'offset' => '48', ++ 'type' => '2011' ++ }, ++ '13' => { ++ 'name' => 'prog_sample_field_id_6', ++ 'offset' => '52', ++ 'type' => '2011' ++ }, ++ '14' => { ++ 'name' => 'prog_sample_field_value_7', ++ 'offset' => '56', ++ 'type' => '2011' ++ }, ++ '15' => { ++ 'name' => 'prog_sample_field_id_7', ++ 'offset' => '60', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'prog_sample_field_value_1', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'prog_sample_field_id_1', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'prog_sample_field_value_2', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'prog_sample_field_id_2', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'prog_sample_field_value_3', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'prog_sample_field_id_3', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'prog_sample_field_value_4', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'name' => 'prog_sample_field_id_4', ++ 'offset' => '36', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct dr_match_misc4', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '310937' => { ++ 'Header' => undef, ++ 'Line' => '825', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'macsec_tag_0', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'macsec_tag_1', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'macsec_tag_2', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'macsec_tag_3', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'tunnel_header_0', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'tunnel_header_1', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'tunnel_header_2', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'tunnel_header_3', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'reserved', ++ 'offset' => '32', ++ 'type' => '311078' ++ } ++ }, ++ 'Name' => 'struct dr_match_misc5', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '311078' => { ++ 'BaseType' => '2011', ++ 'Name' => 'uint32_t[8]', ++ 'Size' => '32', ++ 'Type' => 'Array' ++ }, ++ '311094' => { ++ 'Header' => undef, ++ 'Line' => '860', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'vport_gvmi', ++ 'offset' => '0', ++ 'type' => '1999' ++ }, ++ '1' => { ++ 'name' => 'vhca_gvmi', ++ 'offset' => '2', ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'name' => 'icm_address_rx', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'name' => 'icm_address_tx', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '4' => { ++ 'name' => 'num', ++ 'offset' => '24', ++ 'type' => '1999' ++ }, ++ '5' => { ++ 'name' => 'metadata_c', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'metadata_c_mask', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'next', ++ 'offset' => '40', ++ 'type' => '311221' ++ } ++ }, ++ 'Name' => 'struct dr_devx_vport_cap', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '311221' => { ++ 'BaseType' => '311094', ++ 'Name' => 'struct dr_devx_vport_cap*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '311227' => { ++ 'Header' => undef, ++ 'Line' => '872', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'roce_en', ++ 'offset' => '0', ++ 'type' => '2098' ++ }, ++ '1' => { ++ 'name' => 'fl_rc_qp_when_roce_disabled', ++ 'offset' => '1', ++ 'type' => '2098' ++ }, ++ '2' => { ++ 'name' => 'fl_rc_qp_when_roce_enabled', ++ 'offset' => '2', ++ 'type' => '2098' ++ }, ++ '3' => { ++ 'name' => 'qp_ts_format', ++ 'offset' => '3', ++ 'type' => '1987' ++ } ++ }, ++ 'Name' => 'struct dr_devx_roce_cap', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '311298' => { ++ 'Header' => undef, ++ 'Line' => '879', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buckets', ++ 'offset' => '0', ++ 'type' => '311328' ++ } ++ }, ++ 'Name' => 'struct dr_vports_table', ++ 'Size' => '2048', ++ 'Type' => 'Struct' ++ }, ++ '311328' => { ++ 'BaseType' => '311221', ++ 'Name' => 'struct dr_devx_vport_cap*[256]', ++ 'Size' => '2048', ++ 'Type' => 'Array' ++ }, ++ '311344' => { ++ 'Header' => undef, ++ 'Line' => '883', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'esw_mngr', ++ 'offset' => '0', ++ 'type' => '311094' ++ }, ++ '1' => { ++ 'name' => 'wire', ++ 'offset' => '48', ++ 'type' => '311094' ++ }, ++ '2' => { ++ 'name' => 'vports', ++ 'offset' => '96', ++ 'type' => '311443' ++ }, ++ '3' => { ++ 'name' => 'ib_ports', ++ 'offset' => '104', ++ 'type' => '311449' ++ }, ++ '4' => { ++ 'name' => 'num_ports', ++ 'offset' => '112', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'lock', ++ 'offset' => '116', ++ 'type' => '999' ++ } ++ }, ++ 'Name' => 'struct dr_devx_vports', ++ 'Size' => '120', ++ 'Type' => 'Struct' ++ }, ++ '311443' => { ++ 'BaseType' => '311298', ++ 'Name' => 'struct dr_vports_table*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '311449' => { ++ 'BaseType' => '311221', ++ 'Name' => 'struct dr_devx_vport_cap**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '311870' => { ++ 'Header' => undef, ++ 'Line' => '980', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'type', ++ 'offset' => '0', ++ 'type' => '1987' ++ }, ++ '1' => { ++ 'name' => 'level', ++ 'offset' => '1', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'ft_dvo', ++ 'offset' => '8', ++ 'type' => '19143' ++ }, ++ '3' => { ++ 'name' => 'fg_dvo', ++ 'offset' => '16', ++ 'type' => '19143' ++ }, ++ '4' => { ++ 'name' => 'fte_dvo', ++ 'offset' => '24', ++ 'type' => '19143' ++ } ++ }, ++ 'Name' => 'struct dr_devx_tbl', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '312054' => { ++ 'Header' => undef, ++ 'Line' => '997', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'DR_DOMAIN_NIC_TYPE_RX', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'DR_DOMAIN_NIC_TYPE_TX', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum dr_domain_nic_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '312086' => { ++ 'Header' => undef, ++ 'Line' => '1002', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'drop_icm_addr', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'default_icm_addr', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'type', ++ 'offset' => '16', ++ 'type' => '312054' ++ }, ++ '3' => { ++ 'name' => 'locks', ++ 'offset' => '20', ++ 'type' => '312173' ++ } ++ }, ++ 'Name' => 'struct dr_domain_rx_tx', ++ 'Size' => '80', ++ 'Type' => 'Struct' ++ }, ++ '312157' => { ++ 'BaseType' => '999', ++ 'Name' => 'pthread_spinlock_t[14]', ++ 'Size' => '56', ++ 'Type' => 'Array' ++ }, ++ '312173' => { ++ 'BaseType' => '312157', ++ 'Name' => 'pthread_spinlock_t[14] volatile', ++ 'Size' => '56', ++ 'Type' => 'Volatile' ++ }, ++ '312178' => { ++ 'Header' => undef, ++ 'Line' => '1010', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'supp_sw_steering', ++ 'offset' => '0', ++ 'type' => '2098' ++ }, ++ '1' => { ++ 'name' => 'max_inline_size', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'max_log_sw_icm_sz', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'max_log_action_icm_sz', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'max_send_size', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'rx', ++ 'offset' => '24', ++ 'type' => '312086' ++ }, ++ '6' => { ++ 'name' => 'tx', ++ 'offset' => '104', ++ 'type' => '312086' ++ }, ++ '7' => { ++ 'name' => 'attr', ++ 'offset' => '184', ++ 'type' => '4061' ++ }, ++ '8' => { ++ 'name' => 'caps', ++ 'offset' => '584', ++ 'type' => '306947' ++ }, ++ '9' => { ++ 'name' => 'use_mqs', ++ 'offset' => '832', ++ 'type' => '2098' ++ } ++ }, ++ 'Name' => 'struct dr_domain_info', ++ 'Size' => '840', ++ 'Type' => 'Struct' ++ }, ++ '312334' => { ++ 'Header' => undef, ++ 'Line' => '155', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'build_eth_l2_src_dst_init', ++ 'offset' => '0', ++ 'type' => '315931' ++ }, ++ '1' => { ++ 'name' => 'build_eth_l3_ipv6_src_init', ++ 'offset' => '8', ++ 'type' => '315931' ++ }, ++ '10' => { ++ 'name' => 'build_tnl_gre_init', ++ 'offset' => '80', ++ 'type' => '315931' ++ }, ++ '11' => { ++ 'name' => 'build_tnl_mpls_over_gre_init', ++ 'offset' => '88', ++ 'type' => '315931' ++ }, ++ '12' => { ++ 'name' => 'build_tnl_mpls_over_udp_init', ++ 'offset' => '96', ++ 'type' => '315931' ++ }, ++ '13' => { ++ 'name' => 'build_icmp_init', ++ 'offset' => '104', ++ 'type' => '315931' ++ }, ++ '14' => { ++ 'name' => 'build_general_purpose_init', ++ 'offset' => '112', ++ 'type' => '315931' ++ }, ++ '15' => { ++ 'name' => 'build_eth_l4_misc_init', ++ 'offset' => '120', ++ 'type' => '315931' ++ }, ++ '16' => { ++ 'name' => 'build_tnl_vxlan_gpe_init', ++ 'offset' => '128', ++ 'type' => '315931' ++ }, ++ '17' => { ++ 'name' => 'build_tnl_geneve_init', ++ 'offset' => '136', ++ 'type' => '315931' ++ }, ++ '18' => { ++ 'name' => 'build_tnl_geneve_tlv_opt_init', ++ 'offset' => '144', ++ 'type' => '315931' ++ }, ++ '19' => { ++ 'name' => 'build_tnl_geneve_tlv_opt_exist_init', ++ 'offset' => '152', ++ 'type' => '315931' ++ }, ++ '2' => { ++ 'name' => 'build_eth_l3_ipv6_dst_init', ++ 'offset' => '16', ++ 'type' => '315931' ++ }, ++ '20' => { ++ 'name' => 'build_tnl_gtpu_init', ++ 'offset' => '160', ++ 'type' => '315931' ++ }, ++ '21' => { ++ 'name' => 'build_tnl_gtpu_flex_parser_0', ++ 'offset' => '168', ++ 'type' => '315931' ++ }, ++ '22' => { ++ 'name' => 'build_tnl_gtpu_flex_parser_1', ++ 'offset' => '176', ++ 'type' => '315931' ++ }, ++ '23' => { ++ 'name' => 'build_register_0_init', ++ 'offset' => '184', ++ 'type' => '315931' ++ }, ++ '24' => { ++ 'name' => 'build_register_1_init', ++ 'offset' => '192', ++ 'type' => '315931' ++ }, ++ '25' => { ++ 'name' => 'build_src_gvmi_qpn_init', ++ 'offset' => '200', ++ 'type' => '315931' ++ }, ++ '26' => { ++ 'name' => 'build_flex_parser_0_init', ++ 'offset' => '208', ++ 'type' => '315931' ++ }, ++ '27' => { ++ 'name' => 'build_flex_parser_1_init', ++ 'offset' => '216', ++ 'type' => '315931' ++ }, ++ '28' => { ++ 'name' => 'build_tunnel_header_init', ++ 'offset' => '224', ++ 'type' => '315931' ++ }, ++ '29' => { ++ 'name' => 'build_def0_init', ++ 'offset' => '232', ++ 'type' => '315931' ++ }, ++ '3' => { ++ 'name' => 'build_eth_l3_ipv4_5_tuple_init', ++ 'offset' => '24', ++ 'type' => '315931' ++ }, ++ '30' => { ++ 'name' => 'build_def2_init', ++ 'offset' => '240', ++ 'type' => '315931' ++ }, ++ '31' => { ++ 'name' => 'build_def6_init', ++ 'offset' => '248', ++ 'type' => '315931' ++ }, ++ '32' => { ++ 'name' => 'build_def16_init', ++ 'offset' => '256', ++ 'type' => '315931' ++ }, ++ '33' => { ++ 'name' => 'build_def22_init', ++ 'offset' => '264', ++ 'type' => '315931' ++ }, ++ '34' => { ++ 'name' => 'build_def24_init', ++ 'offset' => '272', ++ 'type' => '315931' ++ }, ++ '35' => { ++ 'name' => 'build_def25_init', ++ 'offset' => '280', ++ 'type' => '315931' ++ }, ++ '36' => { ++ 'name' => 'build_def26_init', ++ 'offset' => '288', ++ 'type' => '315931' ++ }, ++ '37' => { ++ 'name' => 'build_def28_init', ++ 'offset' => '296', ++ 'type' => '315931' ++ }, ++ '38' => { ++ 'name' => 'build_def33_init', ++ 'offset' => '304', ++ 'type' => '315931' ++ }, ++ '39' => { ++ 'name' => 'aso_other_domain_link', ++ 'offset' => '312', ++ 'type' => '316000' ++ }, ++ '4' => { ++ 'name' => 'build_eth_l2_src_init', ++ 'offset' => '32', ++ 'type' => '315931' ++ }, ++ '40' => { ++ 'name' => 'aso_other_domain_unlink', ++ 'offset' => '320', ++ 'type' => '28943' ++ }, ++ '41' => { ++ 'name' => 'ste_init', ++ 'offset' => '328', ++ 'type' => '316032' ++ }, ++ '42' => { ++ 'name' => 'set_next_lu_type', ++ 'offset' => '336', ++ 'type' => '316054' ++ }, ++ '43' => { ++ 'name' => 'get_next_lu_type', ++ 'offset' => '344', ++ 'type' => '316075' ++ }, ++ '44' => { ++ 'name' => 'set_miss_addr', ++ 'offset' => '352', ++ 'type' => '316097' ++ }, ++ '45' => { ++ 'name' => 'get_miss_addr', ++ 'offset' => '360', ++ 'type' => '316118' ++ }, ++ '46' => { ++ 'name' => 'set_hit_addr', ++ 'offset' => '368', ++ 'type' => '316145' ++ }, ++ '47' => { ++ 'name' => 'set_byte_mask', ++ 'offset' => '376', ++ 'type' => '316054' ++ }, ++ '48' => { ++ 'name' => 'get_byte_mask', ++ 'offset' => '384', ++ 'type' => '316075' ++ }, ++ '49' => { ++ 'name' => 'set_ctrl_always_hit_htbl', ++ 'offset' => '392', ++ 'type' => '316187' ++ }, ++ '5' => { ++ 'name' => 'build_eth_l2_dst_init', ++ 'offset' => '40', ++ 'type' => '315931' ++ }, ++ '50' => { ++ 'name' => 'set_ctrl_always_miss', ++ 'offset' => '400', ++ 'type' => '316214' ++ }, ++ '51' => { ++ 'name' => 'set_hit_gvmi', ++ 'offset' => '408', ++ 'type' => '316054' ++ }, ++ '52' => { ++ 'name' => 'actions_caps', ++ 'offset' => '416', ++ 'type' => '2011' ++ }, ++ '53' => { ++ 'name' => 'action_modify_field_arr', ++ 'offset' => '424', ++ 'type' => '316220' ++ }, ++ '54' => { ++ 'name' => 'action_modify_field_arr_size', ++ 'offset' => '432', ++ 'type' => '386' ++ }, ++ '55' => { ++ 'name' => 'set_actions_rx', ++ 'offset' => '440', ++ 'type' => '316263' ++ }, ++ '56' => { ++ 'name' => 'set_actions_tx', ++ 'offset' => '448', ++ 'type' => '316263' ++ }, ++ '57' => { ++ 'name' => 'set_action_set', ++ 'offset' => '456', ++ 'type' => '316300' ++ }, ++ '58' => { ++ 'name' => 'set_action_add', ++ 'offset' => '464', ++ 'type' => '316300' ++ }, ++ '59' => { ++ 'name' => 'set_action_copy', ++ 'offset' => '472', ++ 'type' => '316342' ++ }, ++ '6' => { ++ 'name' => 'build_eth_l2_tnl_init', ++ 'offset' => '48', ++ 'type' => '315931' ++ }, ++ '60' => { ++ 'name' => 'get_action_hw_field', ++ 'offset' => '480', ++ 'type' => '316373' ++ }, ++ '61' => { ++ 'name' => 'set_action_decap_l3_list', ++ 'offset' => '488', ++ 'type' => '316414' ++ }, ++ '62' => { ++ 'name' => 'set_aso_ct_cross_dmn', ++ 'offset' => '496', ++ 'type' => '316451' ++ }, ++ '63' => { ++ 'name' => 'prepare_for_postsend', ++ 'offset' => '504', ++ 'type' => '316473' ++ }, ++ '7' => { ++ 'name' => 'build_eth_l3_ipv4_misc_init', ++ 'offset' => '56', ++ 'type' => '315931' ++ }, ++ '8' => { ++ 'name' => 'build_eth_ipv6_l3_l4_init', ++ 'offset' => '64', ++ 'type' => '315931' ++ }, ++ '9' => { ++ 'name' => 'build_mpls_init', ++ 'offset' => '72', ++ 'type' => '315931' ++ } ++ }, ++ 'Name' => 'struct dr_ste_ctx', ++ 'Size' => '512', ++ 'Type' => 'Struct' ++ }, ++ '313215' => { ++ 'BaseType' => '312334', ++ 'Name' => 'struct dr_ste_ctx*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '313221' => { ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'icm_type', ++ 'offset' => '0', ++ 'type' => '507926' ++ }, ++ '1' => { ++ 'name' => 'dmn', ++ 'offset' => '8', ++ 'type' => '308152' ++ }, ++ '2' => { ++ 'name' => 'max_log_chunk_sz', ++ 'offset' => '16', ++ 'type' => '305664' ++ }, ++ '3' => { ++ 'name' => 'lock', ++ 'offset' => '20', ++ 'type' => '999' ++ }, ++ '4' => { ++ 'name' => 'buddy_mem_list', ++ 'offset' => '24', ++ 'type' => '14507' ++ }, ++ '5' => { ++ 'name' => 'hot_memory_size', ++ 'offset' => '40', ++ 'type' => '2028' ++ }, ++ '6' => { ++ 'name' => 'syncing', ++ 'offset' => '48', ++ 'type' => '2098' ++ } ++ }, ++ 'Name' => 'struct dr_icm_pool', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '313226' => { ++ 'BaseType' => '313221', ++ 'Name' => 'struct dr_icm_pool*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '313232' => { ++ 'BaseType' => '313248', ++ 'Name' => 'struct dr_send_ring*[14]', ++ 'Size' => '112', ++ 'Type' => 'Array' ++ }, ++ '313248' => { ++ 'BaseType' => '313254', ++ 'Name' => 'struct dr_send_ring*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '313254' => { ++ 'Header' => undef, ++ 'Line' => '1588', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'cq', ++ 'offset' => '0', ++ 'type' => '315783' ++ }, ++ '1' => { ++ 'name' => 'qp', ++ 'offset' => '48', ++ 'type' => '315908' ++ }, ++ '10' => { ++ 'name' => 'sync_buff', ++ 'offset' => '104', ++ 'type' => '267' ++ }, ++ '11' => { ++ 'name' => 'sync_mr', ++ 'offset' => '112', ++ 'type' => '6130' ++ }, ++ '2' => { ++ 'name' => 'mr', ++ 'offset' => '56', ++ 'type' => '6130' ++ }, ++ '3' => { ++ 'name' => 'pending_wqe', ++ 'offset' => '64', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'signal_th', ++ 'offset' => '68', ++ 'type' => '1999' ++ }, ++ '5' => { ++ 'name' => 'max_inline_size', ++ 'offset' => '72', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'tx_head', ++ 'offset' => '76', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'lock', ++ 'offset' => '80', ++ 'type' => '999' ++ }, ++ '8' => { ++ 'name' => 'buf', ++ 'offset' => '88', ++ 'type' => '267' ++ }, ++ '9' => { ++ 'name' => 'buf_size', ++ 'offset' => '96', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct dr_send_ring', ++ 'Size' => '120', ++ 'Type' => 'Struct' ++ }, ++ '313434' => { ++ 'Header' => undef, ++ 'Line' => '1102', ++ 'Memb' => { ++ '0' => { ++ 'name' => 's_anchor', ++ 'offset' => '0', ++ 'type' => '306396' ++ }, ++ '1' => { ++ 'name' => 'nic_dmn', ++ 'offset' => '8', ++ 'type' => '313477' ++ } ++ }, ++ 'Name' => 'struct dr_table_rx_tx', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '313477' => { ++ 'BaseType' => '312086', ++ 'Name' => 'struct dr_domain_rx_tx*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '313483' => { ++ 'Header' => undef, ++ 'Line' => '1119', ++ 'Memb' => { ++ '0' => { ++ 'name' => 's_htbl', ++ 'offset' => '0', ++ 'type' => '306396' ++ }, ++ '1' => { ++ 'name' => 'e_anchor', ++ 'offset' => '8', ++ 'type' => '306396' ++ }, ++ '2' => { ++ 'name' => 'ste_builder', ++ 'offset' => '16', ++ 'type' => '313601' ++ }, ++ '3' => { ++ 'name' => 'num_of_builders', ++ 'offset' => '1616', ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'name' => 'default_icm_addr', ++ 'offset' => '1624', ++ 'type' => '2028' ++ }, ++ '5' => { ++ 'name' => 'nic_tbl', ++ 'offset' => '1632', ++ 'type' => '313617' ++ }, ++ '6' => { ++ 'name' => 'fixed_size', ++ 'offset' => '1640', ++ 'type' => '2098' ++ } ++ }, ++ 'Name' => 'struct dr_matcher_rx_tx', ++ 'Size' => '1648', ++ 'Type' => 'Struct' ++ }, ++ '313601' => { ++ 'BaseType' => '306843', ++ 'Name' => 'struct dr_ste_build[20]', ++ 'Size' => '1600', ++ 'Type' => 'Array' ++ }, ++ '313617' => { ++ 'BaseType' => '313434', ++ 'Name' => 'struct dr_table_rx_tx*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '313623' => { ++ 'Header' => undef, ++ 'Line' => '1129', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'tbl', ++ 'offset' => '0', ++ 'type' => '293256' ++ }, ++ '1' => { ++ 'name' => 'rx', ++ 'offset' => '8', ++ 'type' => '313483' ++ }, ++ '2' => { ++ 'name' => 'tx', ++ 'offset' => '1656', ++ 'type' => '313483' ++ }, ++ '3' => { ++ 'name' => 'matcher_list', ++ 'offset' => '3304', ++ 'type' => '14461' ++ }, ++ '4' => { ++ 'name' => 'prio', ++ 'offset' => '3320', ++ 'type' => '1999' ++ }, ++ '5' => { ++ 'name' => 'mask', ++ 'offset' => '3324', ++ 'type' => '307573' ++ }, ++ '6' => { ++ 'name' => 'match_criteria', ++ 'offset' => '3772', ++ 'type' => '1987' ++ }, ++ '7' => { ++ 'name' => 'refcount', ++ 'offset' => '3776', ++ 'type' => '128' ++ }, ++ '8' => { ++ 'name' => 'dv_matcher', ++ 'offset' => '3784', ++ 'type' => '30312' ++ }, ++ '9' => { ++ 'name' => 'rule_list', ++ 'offset' => '3792', ++ 'type' => '14507' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_matcher', ++ 'Size' => '3808', ++ 'Type' => 'Struct' ++ }, ++ '313785' => { ++ 'Header' => undef, ++ 'Line' => '1142', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hw_field', ++ 'offset' => '0', ++ 'type' => '1999' ++ }, ++ '1' => { ++ 'name' => 'start', ++ 'offset' => '2', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'end', ++ 'offset' => '3', ++ 'type' => '1987' ++ }, ++ '3' => { ++ 'name' => 'l3_type', ++ 'offset' => '4', ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'name' => 'l4_type', ++ 'offset' => '5', ++ 'type' => '1987' ++ }, ++ '5' => { ++ 'name' => 'flags', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct dr_ste_action_modify_field', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '313884' => { ++ 'BaseType' => '313785', ++ 'Name' => 'struct dr_ste_action_modify_field const', ++ 'Size' => '12', ++ 'Type' => 'Const' ++ }, ++ '313889' => { ++ 'Header' => undef, ++ 'Line' => '1151', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ref_actions_num', ++ 'offset' => '0', ++ 'type' => '1999' ++ }, ++ '1' => { ++ 'name' => 'ref_actions', ++ 'offset' => '8', ++ 'type' => '293396' ++ }, ++ '2' => { ++ 'name' => 'devx_tbl', ++ 'offset' => '16', ++ 'type' => '313946' ++ } ++ }, ++ 'Name' => 'struct dr_devx_tbl_with_refs', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '313946' => { ++ 'BaseType' => '311870', ++ 'Name' => 'struct dr_devx_tbl*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '313952' => { ++ 'Header' => undef, ++ 'Line' => '1157', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'devx_obj', ++ 'offset' => '0', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'rx_icm_addr', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'tx_icm_addr', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'name' => 'next_ft', ++ 'offset' => '24', ++ 'type' => '293256' ++ } ++ }, ++ 'Name' => 'struct dr_flow_sampler', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '314023' => { ++ 'Header' => undef, ++ 'Line' => '1164', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'tbl', ++ 'offset' => '0', ++ 'type' => '293256' ++ }, ++ '1' => { ++ 'name' => 'matcher', ++ 'offset' => '8', ++ 'type' => '314108' ++ }, ++ '2' => { ++ 'name' => 'rule', ++ 'offset' => '16', ++ 'type' => '314191' ++ }, ++ '3' => { ++ 'name' => 'actions', ++ 'offset' => '24', ++ 'type' => '293396' ++ }, ++ '4' => { ++ 'name' => 'num_of_actions', ++ 'offset' => '32', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct dr_flow_sampler_restore_tbl', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '314108' => { ++ 'BaseType' => '313623', ++ 'Name' => 'struct mlx5dv_dr_matcher*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314114' => { ++ 'Header' => undef, ++ 'Line' => '1273', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'matcher', ++ 'offset' => '0', ++ 'type' => '314108' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '315199' ++ }, ++ '2' => { ++ 'name' => 'rule_list', ++ 'offset' => '56', ++ 'type' => '14461' ++ }, ++ '3' => { ++ 'name' => 'actions', ++ 'offset' => '72', ++ 'type' => '293396' ++ }, ++ '4' => { ++ 'name' => 'num_actions', ++ 'offset' => '80', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_rule', ++ 'Size' => '88', ++ 'Type' => 'Struct' ++ }, ++ '314191' => { ++ 'BaseType' => '314114', ++ 'Name' => 'struct mlx5dv_dr_rule*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314197' => { ++ 'Header' => undef, ++ 'Line' => '1181', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'chunk', ++ 'offset' => '0', ++ 'type' => '306712' ++ }, ++ '1' => { ++ 'name' => 'data', ++ 'offset' => '8', ++ 'type' => '7345' ++ }, ++ '2' => { ++ 'name' => 'data_size', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'index', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'num_of_actions', ++ 'offset' => '24', ++ 'type' => '1999' ++ }, ++ '5' => { ++ 'bitfield' => '1', ++ 'name' => 'single_action_opt', ++ 'offset' => '26', ++ 'type' => '1987' ++ }, ++ '6' => { ++ 'bitfield' => '1', ++ 'name' => 'allow_rx', ++ 'offset' => '26', ++ 'type' => '1987' ++ }, ++ '7' => { ++ 'bitfield' => '1', ++ 'name' => 'allow_tx', ++ 'offset' => '26', ++ 'type' => '1987' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '314329' => { ++ 'Header' => undef, ++ 'Line' => '1179', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'flow_action', ++ 'offset' => '0', ++ 'type' => '13715' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '314197' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '314358' => { ++ 'Header' => undef, ++ 'Line' => '1176', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'offset' => '0', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'is_root_level', ++ 'offset' => '8', ++ 'type' => '2098' ++ }, ++ '2' => { ++ 'name' => 'unnamed0', ++ 'offset' => '16', ++ 'type' => '314329' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '314403' => { ++ 'Header' => undef, ++ 'Line' => '1198', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dvo', ++ 'offset' => '0', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'reformat_size', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '314442' => { ++ 'Header' => undef, ++ 'Line' => '1196', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'flow_action', ++ 'offset' => '0', ++ 'type' => '13715' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '314403' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '314471' => { ++ 'Header' => undef, ++ 'Line' => '1193', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'offset' => '0', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'is_root_level', ++ 'offset' => '8', ++ 'type' => '2098' ++ }, ++ '2' => { ++ 'name' => 'unnamed0', ++ 'offset' => '16', ++ 'type' => '314442' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '314516' => { ++ 'Header' => undef, ++ 'Line' => '1204', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'next_ft', ++ 'offset' => '0', ++ 'type' => '293256' ++ }, ++ '1' => { ++ 'name' => 'devx_obj', ++ 'offset' => '8', ++ 'type' => '19143' ++ }, ++ '2' => { ++ 'name' => 'rx_icm_addr', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'name' => 'tx_icm_addr', ++ 'offset' => '24', ++ 'type' => '2028' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '314583' => { ++ 'Header' => undef, ++ 'Line' => '1210', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'offset' => '0', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'term_tbl', ++ 'offset' => '8', ++ 'type' => '314664' ++ }, ++ '2' => { ++ 'name' => 'sampler_default', ++ 'offset' => '16', ++ 'type' => '314670' ++ }, ++ '3' => { ++ 'name' => 'restore_tbl', ++ 'offset' => '24', ++ 'type' => '314676' ++ }, ++ '4' => { ++ 'name' => 'sampler_restore', ++ 'offset' => '32', ++ 'type' => '314670' ++ } ++ }, ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '314664' => { ++ 'BaseType' => '313889', ++ 'Name' => 'struct dr_devx_tbl_with_refs*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314670' => { ++ 'BaseType' => '313952', ++ 'Name' => 'struct dr_flow_sampler*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314676' => { ++ 'BaseType' => '314023', ++ 'Name' => 'struct dr_flow_sampler_restore_tbl*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '314682' => { ++ 'Header' => undef, ++ 'Line' => '1218', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'offset' => '0', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'actions_list', ++ 'offset' => '8', ++ 'type' => '14507' ++ }, ++ '2' => { ++ 'name' => 'devx_tbl', ++ 'offset' => '24', ++ 'type' => '313946' ++ }, ++ '3' => { ++ 'name' => 'rx_icm_addr', ++ 'offset' => '32', ++ 'type' => '2028' ++ }, ++ '4' => { ++ 'name' => 'tx_icm_addr', ++ 'offset' => '40', ++ 'type' => '2028' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '314763' => { ++ 'Header' => undef, ++ 'Line' => '1225', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'devx_obj', ++ 'offset' => '0', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'offset', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '314802' => { ++ 'Header' => undef, ++ 'Line' => '1229', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dmn', ++ 'offset' => '0', ++ 'type' => '308152' ++ }, ++ '1' => { ++ 'name' => 'caps', ++ 'offset' => '8', ++ 'type' => '311221' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '314841' => { ++ 'Header' => undef, ++ 'Line' => '1233', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'vlan_hdr', ++ 'offset' => '0', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '314866' => { ++ 'Header' => undef, ++ 'Line' => '1238', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'devx_tir', ++ 'offset' => '0', ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'name' => 'qp', ++ 'offset' => '0', ++ 'type' => '5101' ++ } ++ }, ++ 'Size' => '8', ++ 'Type' => 'Union' ++ }, ++ '314902' => { ++ 'Header' => undef, ++ 'Line' => '1236', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'is_qp', ++ 'offset' => '0', ++ 'type' => '2098' ++ }, ++ '1' => { ++ 'name' => 'unnamed0', ++ 'offset' => '8', ++ 'type' => '314866' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '314933' => { ++ 'Header' => undef, ++ 'Line' => '1175', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rewrite', ++ 'offset' => '0', ++ 'type' => '314358' ++ }, ++ '1' => { ++ 'name' => 'reformat', ++ 'offset' => '0', ++ 'type' => '314471' ++ }, ++ '10' => { ++ 'name' => 'aso', ++ 'offset' => '0', ++ 'type' => '307875' ++ }, ++ '11' => { ++ 'name' => 'devx_obj', ++ 'offset' => '0', ++ 'type' => '19143' ++ }, ++ '12' => { ++ 'name' => 'flow_tag', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'meter', ++ 'offset' => '0', ++ 'type' => '314516' ++ }, ++ '3' => { ++ 'name' => 'sampler', ++ 'offset' => '0', ++ 'type' => '314583' ++ }, ++ '4' => { ++ 'name' => 'dest_tbl', ++ 'offset' => '0', ++ 'type' => '293256' ++ }, ++ '5' => { ++ 'name' => 'dest_array', ++ 'offset' => '0', ++ 'type' => '314682' ++ }, ++ '6' => { ++ 'name' => 'ctr', ++ 'offset' => '0', ++ 'type' => '314763' ++ }, ++ '7' => { ++ 'name' => 'vport', ++ 'offset' => '0', ++ 'type' => '314802' ++ }, ++ '8' => { ++ 'name' => 'push_vlan', ++ 'offset' => '0', ++ 'type' => '314841' ++ }, ++ '9' => { ++ 'name' => 'dest_qp', ++ 'offset' => '0', ++ 'type' => '314902' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '315156' => { ++ 'BaseType' => '313483', ++ 'Name' => 'struct dr_matcher_rx_tx*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315162' => { ++ 'Header' => undef, ++ 'Line' => '1276', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rx', ++ 'offset' => '0', ++ 'type' => '306402' ++ }, ++ '1' => { ++ 'name' => 'tx', ++ 'offset' => '24', ++ 'type' => '306402' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '315199' => { ++ 'Header' => undef, ++ 'Line' => '1275', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '315162' ++ }, ++ '1' => { ++ 'name' => 'flow', ++ 'offset' => '0', ++ 'type' => '13536' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '315228' => { ++ 'Header' => undef, ++ 'Line' => '1627', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'bits', ++ 'offset' => '0', ++ 'type' => '315914' ++ }, ++ '1' => { ++ 'name' => 'num_free', ++ 'offset' => '8', ++ 'type' => '27794' ++ }, ++ '10' => { ++ 'name' => 'ste_arr', ++ 'offset' => '104', ++ 'type' => '306718' ++ }, ++ '11' => { ++ 'name' => 'miss_list', ++ 'offset' => '112', ++ 'type' => '39434' ++ }, ++ '12' => { ++ 'name' => 'hw_ste_arr', ++ 'offset' => '120', ++ 'type' => '7345' ++ }, ++ '13' => { ++ 'name' => 'hw_ste_sz', ++ 'offset' => '128', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'set_bit', ++ 'offset' => '16', ++ 'type' => '315914' ++ }, ++ '3' => { ++ 'name' => 'max_order', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'list_node', ++ 'offset' => '32', ++ 'type' => '14461' ++ }, ++ '5' => { ++ 'name' => 'icm_mr', ++ 'offset' => '48', ++ 'type' => '315925' ++ }, ++ '6' => { ++ 'name' => 'pool', ++ 'offset' => '56', ++ 'type' => '313226' ++ }, ++ '7' => { ++ 'name' => 'used_list', ++ 'offset' => '64', ++ 'type' => '14507' ++ }, ++ '8' => { ++ 'name' => 'used_memory', ++ 'offset' => '80', ++ 'type' => '386' ++ }, ++ '9' => { ++ 'name' => 'hot_list', ++ 'offset' => '88', ++ 'type' => '14507' ++ } ++ }, ++ 'Name' => 'struct dr_icm_buddy_mem', ++ 'Size' => '136', ++ 'Type' => 'Struct' ++ }, ++ '315439' => { ++ 'BaseType' => '315228', ++ 'Name' => 'struct dr_icm_buddy_mem*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315445' => { ++ 'Header' => undef, ++ 'Line' => '1547', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wqe_head', ++ 'offset' => '0', ++ 'type' => '27794' ++ }, ++ '1' => { ++ 'name' => 'wqe_cnt', ++ 'offset' => '8', ++ 'type' => '59' ++ }, ++ '2' => { ++ 'name' => 'max_post', ++ 'offset' => '12', ++ 'type' => '59' ++ }, ++ '3' => { ++ 'name' => 'head', ++ 'offset' => '16', ++ 'type' => '59' ++ }, ++ '4' => { ++ 'name' => 'tail', ++ 'offset' => '20', ++ 'type' => '59' ++ }, ++ '5' => { ++ 'name' => 'cur_post', ++ 'offset' => '24', ++ 'type' => '59' ++ }, ++ '6' => { ++ 'name' => 'max_gs', ++ 'offset' => '28', ++ 'type' => '128' ++ }, ++ '7' => { ++ 'name' => 'wqe_shift', ++ 'offset' => '32', ++ 'type' => '128' ++ }, ++ '8' => { ++ 'name' => 'offset', ++ 'offset' => '36', ++ 'type' => '128' ++ }, ++ '9' => { ++ 'name' => 'qend', ++ 'offset' => '40', ++ 'type' => '267' ++ } ++ }, ++ 'Name' => 'struct dr_wq', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '315600' => { ++ 'Header' => undef, ++ 'Line' => '1560', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '26973' ++ }, ++ '1' => { ++ 'name' => 'sq', ++ 'offset' => '64', ++ 'type' => '315445' ++ }, ++ '10' => { ++ 'name' => 'db_umem', ++ 'offset' => '216', ++ 'type' => '29560' ++ }, ++ '11' => { ++ 'bitfield' => '1', ++ 'name' => 'nc_uar', ++ 'offset' => '224', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'rq', ++ 'offset' => '112', ++ 'type' => '315445' ++ }, ++ '3' => { ++ 'name' => 'sq_size', ++ 'offset' => '160', ++ 'type' => '128' ++ }, ++ '4' => { ++ 'name' => 'sq_start', ++ 'offset' => '168', ++ 'type' => '267' ++ }, ++ '5' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '176', ++ 'type' => '128' ++ }, ++ '6' => { ++ 'name' => 'db', ++ 'offset' => '184', ++ 'type' => '19495' ++ }, ++ '7' => { ++ 'name' => 'obj', ++ 'offset' => '192', ++ 'type' => '19143' ++ }, ++ '8' => { ++ 'name' => 'uar', ++ 'offset' => '200', ++ 'type' => '29501' ++ }, ++ '9' => { ++ 'name' => 'buf_umem', ++ 'offset' => '208', ++ 'type' => '29560' ++ } ++ }, ++ 'Name' => 'struct dr_qp', ++ 'Size' => '232', ++ 'Type' => 'Struct' ++ }, ++ '315783' => { ++ 'Header' => undef, ++ 'Line' => '1575', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'buf', ++ 'offset' => '0', ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'name' => 'cons_index', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'ncqe', ++ 'offset' => '12', ++ 'type' => '128' ++ }, ++ '3' => { ++ 'name' => 'qp', ++ 'offset' => '16', ++ 'type' => '315908' ++ }, ++ '4' => { ++ 'name' => 'db', ++ 'offset' => '24', ++ 'type' => '19495' ++ }, ++ '5' => { ++ 'name' => 'ibv_cq', ++ 'offset' => '32', ++ 'type' => '4899' ++ }, ++ '6' => { ++ 'name' => 'cqn', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'cqe_sz', ++ 'offset' => '44', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct dr_cq', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '315908' => { ++ 'BaseType' => '315600', ++ 'Name' => 'struct dr_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315914' => { ++ 'BaseType' => '22314', ++ 'Name' => 'unsigned long**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315920' => { ++ 'Header' => undef, ++ 'Line' => '49', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mr', ++ 'offset' => '0', ++ 'type' => '6130' ++ }, ++ '1' => { ++ 'name' => 'dm', ++ 'offset' => '8', ++ 'type' => '2974' ++ }, ++ '2' => { ++ 'name' => 'icm_start_addr', ++ 'offset' => '16', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct dr_icm_mr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '315925' => { ++ 'BaseType' => '315920', ++ 'Name' => 'struct dr_icm_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '315931' => { ++ 'BaseType' => '315943', ++ 'Header' => undef, ++ 'Line' => '152', ++ 'Name' => 'dr_ste_builder_void_init', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '315943' => { ++ 'Name' => 'void(*)(struct dr_ste_build*, struct dr_match_param*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '307690' ++ }, ++ '1' => { ++ 'type' => '307567' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316' => { ++ 'Name' => 'char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '316000' => { ++ 'Name' => 'int(*)(struct mlx5dv_devx_obj*, struct mlx5dv_dr_domain*, struct mlx5dv_dr_domain*, uint32_t, uint8_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '19143' ++ }, ++ '1' => { ++ 'type' => '308152' ++ }, ++ '2' => { ++ 'type' => '308152' ++ }, ++ '3' => { ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'type' => '1987' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316032' => { ++ 'Name' => 'void(*)(uint8_t*, uint16_t, _Bool, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'type' => '2098' ++ }, ++ '3' => { ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316054' => { ++ 'Name' => 'void(*)(uint8_t*, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316075' => { ++ 'Name' => 'uint16_t(*)(uint8_t*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ } ++ }, ++ 'Return' => '1999', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316097' => { ++ 'Name' => 'void(*)(uint8_t*, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316118' => { ++ 'Name' => 'uint64_t(*)(uint8_t*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ } ++ }, ++ 'Return' => '2028', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316145' => { ++ 'Name' => 'void(*)(uint8_t*, uint64_t, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316187' => { ++ 'Name' => 'void(*)(uint8_t*, uint16_t, uint16_t, uint64_t, uint32_t, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'type' => '2028' ++ }, ++ '4' => { ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316214' => { ++ 'Name' => 'void(*)(uint8_t*, uint64_t, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316220' => { ++ 'BaseType' => '313884', ++ 'Name' => 'struct dr_ste_action_modify_field const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '316257' => { ++ 'BaseType' => '308227', ++ 'Name' => 'struct dr_ste_actions_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '316263' => { ++ 'Name' => 'void(*)(uint8_t*, uint32_t, uint8_t*, struct dr_ste_actions_attr*, uint32_t*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '7345' ++ }, ++ '3' => { ++ 'type' => '316257' ++ }, ++ '4' => { ++ 'type' => '14364' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316300' => { ++ 'Name' => 'void(*)(uint8_t*, uint8_t, uint8_t, uint8_t, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'type' => '1987' ++ }, ++ '3' => { ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316342' => { ++ 'Name' => 'void(*)(uint8_t*, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'type' => '1987' ++ }, ++ '3' => { ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'type' => '1987' ++ }, ++ '5' => { ++ 'type' => '1987' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316373' => { ++ 'Name' => 'struct dr_ste_action_modify_field const*(*)(struct dr_ste_ctx*, uint16_t, struct dr_devx_caps*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '313215' ++ }, ++ '1' => { ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'type' => '307536' ++ } ++ }, ++ 'Return' => '316220', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316414' => { ++ 'Name' => 'int(*)(void*, uint32_t, uint8_t*, uint32_t, uint16_t*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '267' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '7345' ++ }, ++ '3' => { ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'type' => '29313' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316451' => { ++ 'Name' => 'void(*)(uint8_t*, uint32_t, uint32_t, uint8_t, _Bool)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'type' => '1987' ++ }, ++ '4' => { ++ 'type' => '2098' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '316473' => { ++ 'Name' => 'void(*)(uint8_t*, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '7345' ++ }, ++ '1' => { ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '317189' => { ++ 'BaseType' => '293032', ++ 'Name' => 'struct mlx5dv_dr_flow_meter_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '317277' => { ++ 'BaseType' => '2177', ++ 'Name' => '__be64*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '319715' => { ++ 'BaseType' => '319721', ++ 'Name' => 'struct mlx5dv_dr_action_dest_attr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '319721' => { ++ 'BaseType' => '293552', ++ 'Name' => 'struct mlx5dv_dr_action_dest_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '322458' => { ++ 'BaseType' => '293262', ++ 'Name' => 'struct mlx5dv_dr_flow_sampler_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '323' => { ++ 'BaseType' => '316', ++ 'Name' => 'char const', ++ 'Size' => '1', ++ 'Type' => 'Const' ++ }, ++ '3556' => { ++ 'BaseType' => '316', ++ 'Name' => 'char[64]', ++ 'Size' => '64', ++ 'Type' => 'Array' ++ }, ++ '3604' => { ++ 'Header' => undef, ++ 'Line' => '242', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rc_odp_caps', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'uc_odp_caps', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'ud_odp_caps', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '3653' => { ++ 'Header' => undef, ++ 'Line' => '240', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'general_caps', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'per_transport_caps', ++ 'offset' => '8', ++ 'type' => '3604' ++ } ++ }, ++ 'Name' => 'struct ibv_odp_caps', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '3693' => { ++ 'Header' => undef, ++ 'Line' => '254', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_tso', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '4', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_tso_caps', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '3734' => { ++ 'Header' => undef, ++ 'Line' => '285', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'max_rwq_indirection_tables', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'max_rwq_indirection_table_size', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'rx_hash_fields_mask', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '4' => { ++ 'name' => 'rx_hash_function', ++ 'offset' => '24', ++ 'type' => '1987' ++ } ++ }, ++ 'Name' => 'struct ibv_rss_caps', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '375' => { ++ 'BaseType' => '323', ++ 'Name' => 'char const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3819' => { ++ 'Header' => undef, ++ 'Line' => '293', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_rate_limit_min', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'qp_rate_limit_max', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'supported_qpts', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_packet_pacing_caps', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '386' => { ++ 'BaseType' => '66', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => 'size_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '3876' => { ++ 'Header' => undef, ++ 'Line' => '310', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_rndv_hdr_size', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'max_num_tags', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'max_ops', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'max_sge', ++ 'offset' => '16', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_tm_caps', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '39434' => { ++ 'BaseType' => '14507', ++ 'Name' => 'struct list_head*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '3961' => { ++ 'Header' => undef, ++ 'Line' => '323', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_cq_count', ++ 'offset' => '0', ++ 'type' => '1999' ++ }, ++ '1' => { ++ 'name' => 'max_cq_period', ++ 'offset' => '2', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct ibv_cq_moderation_caps', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '4004' => { ++ 'Header' => undef, ++ 'Line' => '338', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fetch_add', ++ 'offset' => '0', ++ 'type' => '1999' ++ }, ++ '1' => { ++ 'name' => 'swap', ++ 'offset' => '2', ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'name' => 'compare_swap', ++ 'offset' => '4', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct ibv_pci_atomic_caps', ++ 'Size' => '6', ++ 'Type' => 'Struct' ++ }, ++ '405' => { ++ 'Name' => 'unsigned long long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '4061' => { ++ 'Header' => undef, ++ 'Line' => '344', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'orig_attr', ++ 'offset' => '0', ++ 'type' => '3022' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '232', ++ 'type' => '2011' ++ }, ++ '10' => { ++ 'name' => 'raw_packet_caps', ++ 'offset' => '344', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'name' => 'tm_caps', ++ 'offset' => '348', ++ 'type' => '3876' ++ }, ++ '12' => { ++ 'name' => 'cq_mod_caps', ++ 'offset' => '368', ++ 'type' => '3961' ++ }, ++ '13' => { ++ 'name' => 'max_dm_size', ++ 'offset' => '376', ++ 'type' => '2028' ++ }, ++ '14' => { ++ 'name' => 'pci_atomic_caps', ++ 'offset' => '384', ++ 'type' => '4004' ++ }, ++ '15' => { ++ 'name' => 'xrc_odp_caps', ++ 'offset' => '392', ++ 'type' => '2011' ++ }, ++ '16' => { ++ 'name' => 'phys_port_cnt_ex', ++ 'offset' => '396', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'odp_caps', ++ 'offset' => '240', ++ 'type' => '3653' ++ }, ++ '3' => { ++ 'name' => 'completion_timestamp_mask', ++ 'offset' => '264', ++ 'type' => '2028' ++ }, ++ '4' => { ++ 'name' => 'hca_core_clock', ++ 'offset' => '272', ++ 'type' => '2028' ++ }, ++ '5' => { ++ 'name' => 'device_cap_flags_ex', ++ 'offset' => '280', ++ 'type' => '2028' ++ }, ++ '6' => { ++ 'name' => 'tso_caps', ++ 'offset' => '288', ++ 'type' => '3693' ++ }, ++ '7' => { ++ 'name' => 'rss_caps', ++ 'offset' => '296', ++ 'type' => '3734' ++ }, ++ '8' => { ++ 'name' => 'max_wq_type_rq', ++ 'offset' => '328', ++ 'type' => '2011' ++ }, ++ '9' => { ++ 'name' => 'packet_pacing_caps', ++ 'offset' => '332', ++ 'type' => '3819' ++ } ++ }, ++ 'Name' => 'struct ibv_device_attr_ex', ++ 'Size' => '400', ++ 'Type' => 'Struct' ++ }, ++ '45' => { ++ 'Name' => 'unsigned char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '4758' => { ++ 'Header' => undef, ++ 'Line' => '1458', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'offset' => '8', ++ 'type' => '9969' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'offset' => '16', ++ 'type' => '267' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'cqe', ++ 'offset' => '28', ++ 'type' => '128' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '897' ++ }, ++ '6' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '971' ++ }, ++ '7' => { ++ 'name' => 'comp_events_completed', ++ 'offset' => '120', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'async_events_completed', ++ 'offset' => '124', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_cq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '4899' => { ++ 'BaseType' => '4758', ++ 'Name' => 'struct ibv_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '4905' => { ++ 'Header' => undef, ++ 'Line' => '1252', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'qp_context', ++ 'offset' => '8', ++ 'type' => '267' ++ }, ++ '10' => { ++ 'name' => 'mutex', ++ 'offset' => '64', ++ 'type' => '897' ++ }, ++ '11' => { ++ 'name' => 'cond', ++ 'offset' => '104', ++ 'type' => '971' ++ }, ++ '12' => { ++ 'name' => 'events_completed', ++ 'offset' => '152', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '6322' ++ }, ++ '3' => { ++ 'name' => 'send_cq', ++ 'offset' => '24', ++ 'type' => '4899' ++ }, ++ '4' => { ++ 'name' => 'recv_cq', ++ 'offset' => '32', ++ 'type' => '4899' ++ }, ++ '5' => { ++ 'name' => 'srq', ++ 'offset' => '40', ++ 'type' => '5219' ++ }, ++ '6' => { ++ 'name' => 'handle', ++ 'offset' => '48', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'qp_num', ++ 'offset' => '52', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'state', ++ 'offset' => '56', ++ 'type' => '7680' ++ }, ++ '9' => { ++ 'name' => 'qp_type', ++ 'offset' => '60', ++ 'type' => '7127' ++ } ++ }, ++ 'Name' => 'struct ibv_qp', ++ 'Size' => '160', ++ 'Type' => 'Struct' ++ }, ++ '507926' => { ++ 'Header' => undef, ++ 'Line' => '93', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'DR_ICM_TYPE_STE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'DR_ICM_TYPE_MODIFY_ACTION', ++ 'value' => '1' ++ } ++ }, ++ 'Name' => 'enum dr_icm_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '5101' => { ++ 'BaseType' => '4905', ++ 'Name' => 'struct ibv_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5107' => { ++ 'Header' => undef, ++ 'Line' => '1212', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'srq_context', ++ 'offset' => '8', ++ 'type' => '267' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '6322' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '897' ++ }, ++ '5' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '971' ++ }, ++ '6' => { ++ 'name' => 'events_completed', ++ 'offset' => '120', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_srq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '52' => { ++ 'Name' => 'unsigned short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ }, ++ '5219' => { ++ 'BaseType' => '5107', ++ 'Name' => 'struct ibv_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5225' => { ++ 'Header' => undef, ++ 'Line' => '1234', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'wq_context', ++ 'offset' => '8', ++ 'type' => '267' ++ }, ++ '10' => { ++ 'name' => 'cond', ++ 'offset' => '96', ++ 'type' => '971' ++ }, ++ '11' => { ++ 'name' => 'events_completed', ++ 'offset' => '144', ++ 'type' => '2011' ++ }, ++ '12' => { ++ 'name' => 'comp_mask', ++ 'offset' => '148', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '6322' ++ }, ++ '3' => { ++ 'name' => 'cq', ++ 'offset' => '24', ++ 'type' => '4899' ++ }, ++ '4' => { ++ 'name' => 'wq_num', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'handle', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'state', ++ 'offset' => '40', ++ 'type' => '6864' ++ }, ++ '7' => { ++ 'name' => 'wq_type', ++ 'offset' => '44', ++ 'type' => '6713' ++ }, ++ '8' => { ++ 'name' => 'post_recv', ++ 'offset' => '48', ++ 'type' => '9101' ++ }, ++ '9' => { ++ 'name' => 'mutex', ++ 'offset' => '56', ++ 'type' => '897' ++ } ++ }, ++ 'Name' => 'struct ibv_wq', ++ 'Size' => '152', ++ 'Type' => 'Struct' ++ }, ++ '5420' => { ++ 'BaseType' => '5225', ++ 'Name' => 'struct ibv_wq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5426' => { ++ 'Header' => undef, ++ 'Line' => '483', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SUCCESS', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_LOC_LEN_ERR', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_REM_ACCESS_ERR', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_REM_OP_ERR', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_RETRY_EXC_ERR', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_RNR_RETRY_EXC_ERR', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_LOC_RDD_VIOL_ERR', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_REM_INV_RD_REQ_ERR', ++ 'value' => '15' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_REM_ABORT_ERR', ++ 'value' => '16' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_INV_EECN_ERR', ++ 'value' => '17' ++ }, ++ '18' => { ++ 'name' => 'IBV_WC_INV_EEC_STATE_ERR', ++ 'value' => '18' ++ }, ++ '19' => { ++ 'name' => 'IBV_WC_FATAL_ERR', ++ 'value' => '19' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_LOC_QP_OP_ERR', ++ 'value' => '2' ++ }, ++ '20' => { ++ 'name' => 'IBV_WC_RESP_TIMEOUT_ERR', ++ 'value' => '20' ++ }, ++ '21' => { ++ 'name' => 'IBV_WC_GENERAL_ERR', ++ 'value' => '21' ++ }, ++ '22' => { ++ 'name' => 'IBV_WC_TM_ERR', ++ 'value' => '22' ++ }, ++ '23' => { ++ 'name' => 'IBV_WC_TM_RNDV_INCOMPLETE', ++ 'value' => '23' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_LOC_EEC_OP_ERR', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_LOC_PROT_ERR', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_WR_FLUSH_ERR', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_MW_BIND_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_BAD_RESP_ERR', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_LOC_ACCESS_ERR', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_REM_INV_REQ_ERR', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_status', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '543815' => { ++ 'Header' => undef, ++ 'Line' => '1935', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'flags', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'log_num_of_rules_hint', ++ 'offset' => '4', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct mlx5dv_dr_matcher_layout', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '5590' => { ++ 'Header' => undef, ++ 'Line' => '511', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SEND', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_RDMA_WRITE', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_TM_ADD', ++ 'value' => '130' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_TM_DEL', ++ 'value' => '131' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_TM_SYNC', ++ 'value' => '132' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_TM_RECV', ++ 'value' => '133' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_TM_NO_TAG', ++ 'value' => '134' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_DRIVER1', ++ 'value' => '135' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_DRIVER2', ++ 'value' => '136' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_DRIVER3', ++ 'value' => '137' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_RDMA_READ', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_COMP_SWAP', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_FETCH_ADD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_BIND_MW', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_LOCAL_INV', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_TSO', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_RECV', ++ 'value' => '128' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_RECV_RDMA_WITH_IMM', ++ 'value' => '129' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '567800' => { ++ 'BaseType' => '543815', ++ 'Name' => 'struct mlx5dv_dr_matcher_layout*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '5718' => { ++ 'Header' => undef, ++ 'Line' => '594', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '2165' ++ }, ++ '1' => { ++ 'name' => 'invalidated_rkey', ++ 'offset' => '0', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '5755' => { ++ 'Header' => undef, ++ 'Line' => '585', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'status', ++ 'offset' => '8', ++ 'type' => '5426' ++ }, ++ '10' => { ++ 'name' => 'slid', ++ 'offset' => '42', ++ 'type' => '1999' ++ }, ++ '11' => { ++ 'name' => 'sl', ++ 'offset' => '44', ++ 'type' => '1987' ++ }, ++ '12' => { ++ 'name' => 'dlid_path_bits', ++ 'offset' => '45', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'opcode', ++ 'offset' => '12', ++ 'type' => '5590' ++ }, ++ '3' => { ++ 'name' => 'vendor_err', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'byte_len', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '5718' ++ }, ++ '6' => { ++ 'name' => 'qp_num', ++ 'offset' => '28', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'src_qp', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'wc_flags', ++ 'offset' => '36', ++ 'type' => '59' ++ }, ++ '9' => { ++ 'name' => 'pkey_index', ++ 'offset' => '40', ++ 'type' => '1999' ++ } ++ }, ++ 'Name' => 'struct ibv_wc', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '59' => { ++ 'Name' => 'unsigned int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '5943' => { ++ 'Header' => undef, ++ 'Line' => '619', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mr', ++ 'offset' => '0', ++ 'type' => '6130' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'name' => 'mw_access_flags', ++ 'offset' => '24', ++ 'type' => '59' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind_info', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '6013' => { ++ 'BaseType' => '5943', ++ 'Name' => 'struct ibv_mw_bind_info const', ++ 'Size' => '32', ++ 'Type' => 'Const' ++ }, ++ '6018' => { ++ 'Header' => undef, ++ 'Line' => '662', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '6322' ++ }, ++ '2' => { ++ 'name' => 'addr', ++ 'offset' => '16', ++ 'type' => '267' ++ }, ++ '3' => { ++ 'name' => 'length', ++ 'offset' => '24', ++ 'type' => '386' ++ }, ++ '4' => { ++ 'name' => 'handle', ++ 'offset' => '32', ++ 'type' => '2011' ++ }, ++ '5' => { ++ 'name' => 'lkey', ++ 'offset' => '36', ++ 'type' => '2011' ++ }, ++ '6' => { ++ 'name' => 'rkey', ++ 'offset' => '40', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_mr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '6130' => { ++ 'BaseType' => '6018', ++ 'Name' => 'struct ibv_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6136' => { ++ 'Header' => undef, ++ 'Line' => '626', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_pd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '6208' => { ++ 'Header' => undef, ++ 'Line' => '635', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ } ++ }, ++ 'Name' => 'struct ibv_td', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '6293' => { ++ 'Header' => undef, ++ 'Line' => '651', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ } ++ }, ++ 'Name' => 'struct ibv_xrcd', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '6322' => { ++ 'BaseType' => '6136', ++ 'Name' => 'struct ibv_pd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '63227' => { ++ 'BaseType' => '1987', ++ 'Name' => 'uint8_t[32]', ++ 'Size' => '32', ++ 'Type' => 'Array' ++ }, ++ '6328' => { ++ 'Header' => undef, ++ 'Line' => '672', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MW_TYPE_1', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'IBV_MW_TYPE_2', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_mw_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '6360' => { ++ 'Header' => undef, ++ 'Line' => '677', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '6322' ++ }, ++ '2' => { ++ 'name' => 'rkey', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '20', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'type', ++ 'offset' => '24', ++ 'type' => '6328' ++ } ++ }, ++ 'Name' => 'struct ibv_mw', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '66' => { ++ 'Name' => 'unsigned long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '6707' => { ++ 'BaseType' => '6293', ++ 'Name' => 'struct ibv_xrcd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '6713' => { ++ 'Header' => undef, ++ 'Line' => '814', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WQT_RQ', ++ 'value' => '0' ++ } ++ }, ++ 'Name' => 'enum ibv_wq_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '6739' => { ++ 'Header' => undef, ++ 'Line' => '831', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wq_context', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'wq_type', ++ 'offset' => '8', ++ 'type' => '6713' ++ }, ++ '2' => { ++ 'name' => 'max_wr', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'max_sge', ++ 'offset' => '16', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'pd', ++ 'offset' => '24', ++ 'type' => '6322' ++ }, ++ '5' => { ++ 'name' => 'cq', ++ 'offset' => '32', ++ 'type' => '4899' ++ }, ++ '6' => { ++ 'name' => 'comp_mask', ++ 'offset' => '40', ++ 'type' => '2011' ++ }, ++ '7' => { ++ 'name' => 'create_flags', ++ 'offset' => '44', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_wq_init_attr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '6864' => { ++ 'Header' => undef, ++ 'Line' => '842', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WQS_RESET', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WQS_RDY', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_WQS_ERR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WQS_UNKNOWN', ++ 'value' => '3' ++ } ++ }, ++ 'Name' => 'enum ibv_wq_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '6993' => { ++ 'Header' => undef, ++ 'Line' => '874', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'ind_tbl_handle', ++ 'offset' => '8', ++ 'type' => '128' ++ }, ++ '2' => { ++ 'name' => 'ind_tbl_num', ++ 'offset' => '12', ++ 'type' => '128' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_rwq_ind_table', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '7127' => { ++ 'Header' => undef, ++ 'Line' => '895', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPT_RC', ++ 'value' => '2' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPT_UC', ++ 'value' => '3' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPT_UD', ++ 'value' => '4' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPT_RAW_PACKET', ++ 'value' => '8' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPT_XRC_SEND', ++ 'value' => '9' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPT_XRC_RECV', ++ 'value' => '10' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPT_DRIVER', ++ 'value' => '255' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '7189' => { ++ 'Header' => undef, ++ 'Line' => '905', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '0', ++ 'type' => '2011' ++ }, ++ '1' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '4', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '12', ++ 'type' => '2011' ++ }, ++ '4' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '16', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_cap', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '7274' => { ++ 'Header' => undef, ++ 'Line' => '955', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rx_hash_function', ++ 'offset' => '0', ++ 'type' => '1987' ++ }, ++ '1' => { ++ 'name' => 'rx_hash_key_len', ++ 'offset' => '1', ++ 'type' => '1987' ++ }, ++ '2' => { ++ 'name' => 'rx_hash_key', ++ 'offset' => '8', ++ 'type' => '7345' ++ }, ++ '3' => { ++ 'name' => 'rx_hash_fields_mask', ++ 'offset' => '16', ++ 'type' => '2028' ++ } ++ }, ++ 'Name' => 'struct ibv_rx_hash_conf', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '7345' => { ++ 'BaseType' => '1987', ++ 'Name' => 'uint8_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7351' => { ++ 'Header' => undef, ++ 'Line' => '964', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '4899' ++ }, ++ '10' => { ++ 'name' => 'create_flags', ++ 'offset' => '80', ++ 'type' => '2011' ++ }, ++ '11' => { ++ 'name' => 'max_tso_header', ++ 'offset' => '84', ++ 'type' => '1999' ++ }, ++ '12' => { ++ 'name' => 'rwq_ind_tbl', ++ 'offset' => '88', ++ 'type' => '7589' ++ }, ++ '13' => { ++ 'name' => 'rx_hash_conf', ++ 'offset' => '96', ++ 'type' => '7274' ++ }, ++ '14' => { ++ 'name' => 'source_qpn', ++ 'offset' => '120', ++ 'type' => '2011' ++ }, ++ '15' => { ++ 'name' => 'send_ops_flags', ++ 'offset' => '128', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '4899' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '5219' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '7189' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '7127' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '128' ++ }, ++ '7' => { ++ 'name' => 'comp_mask', ++ 'offset' => '60', ++ 'type' => '2011' ++ }, ++ '8' => { ++ 'name' => 'pd', ++ 'offset' => '64', ++ 'type' => '6322' ++ }, ++ '9' => { ++ 'name' => 'xrcd', ++ 'offset' => '72', ++ 'type' => '6707' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr_ex', ++ 'Size' => '136', ++ 'Type' => 'Struct' ++ }, ++ '7589' => { ++ 'BaseType' => '6993', ++ 'Name' => 'struct ibv_rwq_ind_table*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7680' => { ++ 'Header' => undef, ++ 'Line' => '1033', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPS_RESET', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPS_INIT', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPS_RTR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPS_RTS', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPS_SQD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPS_SQE', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPS_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_QPS_UNKNOWN', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '7819' => { ++ 'Header' => undef, ++ 'Line' => '1086', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WR_RDMA_WRITE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WR_RDMA_WRITE_WITH_IMM', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WR_TSO', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WR_DRIVER1', ++ 'value' => '11' ++ }, ++ '2' => { ++ 'name' => 'IBV_WR_SEND', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WR_SEND_WITH_IMM', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WR_RDMA_READ', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WR_ATOMIC_CMP_AND_SWP', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WR_ATOMIC_FETCH_AND_ADD', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WR_LOCAL_INV', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WR_BIND_MW', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WR_SEND_WITH_INV', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wr_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '7911' => { ++ 'Header' => undef, ++ 'Line' => '1109', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '386' ++ } ++ }, ++ 'Name' => 'struct ibv_data_buf', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '7954' => { ++ 'BaseType' => '7911', ++ 'Name' => 'struct ibv_data_buf const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '7959' => { ++ 'Header' => undef, ++ 'Line' => '1114', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'lkey', ++ 'offset' => '12', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_sge', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '8016' => { ++ 'BaseType' => '7959', ++ 'Name' => 'struct ibv_sge const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '8021' => { ++ 'Header' => undef, ++ 'Line' => '1130', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '2165' ++ }, ++ '1' => { ++ 'name' => 'invalidate_rkey', ++ 'offset' => '0', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '8058' => { ++ 'Header' => undef, ++ 'Line' => '1135', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '8097' => { ++ 'Header' => undef, ++ 'Line' => '1139', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'compare_add', ++ 'offset' => '8', ++ 'type' => '2028' ++ }, ++ '2' => { ++ 'name' => 'swap', ++ 'offset' => '16', ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'name' => 'rkey', ++ 'offset' => '24', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '8164' => { ++ 'Header' => undef, ++ 'Line' => '1145', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ah', ++ 'offset' => '0', ++ 'type' => '8272' ++ }, ++ '1' => { ++ 'name' => 'remote_qpn', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'remote_qkey', ++ 'offset' => '12', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '8216' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '6322' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_ah', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '8272' => { ++ 'BaseType' => '8216', ++ 'Name' => 'struct ibv_ah*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '8278' => { ++ 'Header' => undef, ++ 'Line' => '1134', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rdma', ++ 'offset' => '0', ++ 'type' => '8058' ++ }, ++ '1' => { ++ 'name' => 'atomic', ++ 'offset' => '0', ++ 'type' => '8097' ++ }, ++ '2' => { ++ 'name' => 'ud', ++ 'offset' => '0', ++ 'type' => '8164' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '8327' => { ++ 'Header' => undef, ++ 'Line' => '1152', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_srqn', ++ 'offset' => '0', ++ 'type' => '2011' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '8352' => { ++ 'Header' => undef, ++ 'Line' => '1151', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'xrc', ++ 'offset' => '0', ++ 'type' => '8327' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '8376' => { ++ 'Header' => undef, ++ 'Line' => '1157', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mw', ++ 'offset' => '0', ++ 'type' => '8428' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '5943' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '8428' => { ++ 'BaseType' => '6360', ++ 'Name' => 'struct ibv_mw*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '8434' => { ++ 'Header' => undef, ++ 'Line' => '1162', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '267' ++ }, ++ '1' => { ++ 'name' => 'hdr_sz', ++ 'offset' => '8', ++ 'type' => '1999' ++ }, ++ '2' => { ++ 'name' => 'mss', ++ 'offset' => '10', ++ 'type' => '1999' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '8487' => { ++ 'Header' => undef, ++ 'Line' => '1156', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'bind_mw', ++ 'offset' => '0', ++ 'type' => '8376' ++ }, ++ '1' => { ++ 'name' => 'tso', ++ 'offset' => '0', ++ 'type' => '8434' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '8524' => { ++ 'Header' => undef, ++ 'Line' => '1120', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '8662' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '8668' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '128' ++ }, ++ '4' => { ++ 'name' => 'opcode', ++ 'offset' => '28', ++ 'type' => '7819' ++ }, ++ '5' => { ++ 'name' => 'send_flags', ++ 'offset' => '32', ++ 'type' => '59' ++ }, ++ '6' => { ++ 'name' => 'unnamed0', ++ 'offset' => '36', ++ 'type' => '8021' ++ }, ++ '7' => { ++ 'name' => 'wr', ++ 'offset' => '40', ++ 'type' => '8278' ++ }, ++ '8' => { ++ 'name' => 'qp_type', ++ 'offset' => '72', ++ 'type' => '8352' ++ }, ++ '9' => { ++ 'name' => 'unnamed1', ++ 'offset' => '80', ++ 'type' => '8487' ++ } ++ }, ++ 'Name' => 'struct ibv_send_wr', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '8662' => { ++ 'BaseType' => '8524', ++ 'Name' => 'struct ibv_send_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '8668' => { ++ 'BaseType' => '7959', ++ 'Name' => 'struct ibv_sge*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '8674' => { ++ 'Header' => undef, ++ 'Line' => '1170', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '8745' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '8668' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '128' ++ } ++ }, ++ 'Name' => 'struct ibv_recv_wr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '8745' => { ++ 'BaseType' => '8674', ++ 'Name' => 'struct ibv_recv_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '90' => { ++ 'Name' => 'signed char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '9013' => { ++ 'Header' => undef, ++ 'Line' => '1206', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '2028' ++ }, ++ '1' => { ++ 'name' => 'send_flags', ++ 'offset' => '8', ++ 'type' => '59' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '5943' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '9095' => { ++ 'BaseType' => '8745', ++ 'Name' => 'struct ibv_recv_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9101' => { ++ 'Name' => 'int(*)(struct ibv_wq*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '5420' ++ }, ++ '1' => { ++ 'type' => '8745' ++ }, ++ '2' => { ++ 'type' => '9095' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9107' => { ++ 'Header' => undef, ++ 'Line' => '1269', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_base', ++ 'offset' => '0', ++ 'type' => '4905' ++ }, ++ '1' => { ++ 'name' => 'comp_mask', ++ 'offset' => '160', ++ 'type' => '2028' ++ }, ++ '10' => { ++ 'name' => 'wr_rdma_write_imm', ++ 'offset' => '232', ++ 'type' => '9658' ++ }, ++ '11' => { ++ 'name' => 'wr_send', ++ 'offset' => '240', ++ 'type' => '9675' ++ }, ++ '12' => { ++ 'name' => 'wr_send_imm', ++ 'offset' => '248', ++ 'type' => '9697' ++ }, ++ '13' => { ++ 'name' => 'wr_send_inv', ++ 'offset' => '256', ++ 'type' => '9599' ++ }, ++ '14' => { ++ 'name' => 'wr_send_tso', ++ 'offset' => '264', ++ 'type' => '9729' ++ }, ++ '15' => { ++ 'name' => 'wr_set_ud_addr', ++ 'offset' => '272', ++ 'type' => '9761' ++ }, ++ '16' => { ++ 'name' => 'wr_set_xrc_srqn', ++ 'offset' => '280', ++ 'type' => '9599' ++ }, ++ '17' => { ++ 'name' => 'wr_set_inline_data', ++ 'offset' => '288', ++ 'type' => '9788' ++ }, ++ '18' => { ++ 'name' => 'wr_set_inline_data_list', ++ 'offset' => '296', ++ 'type' => '9821' ++ }, ++ '19' => { ++ 'name' => 'wr_set_sge', ++ 'offset' => '304', ++ 'type' => '9853' ++ }, ++ '2' => { ++ 'name' => 'wr_id', ++ 'offset' => '168', ++ 'type' => '2028' ++ }, ++ '20' => { ++ 'name' => 'wr_set_sge_list', ++ 'offset' => '312', ++ 'type' => '9886' ++ }, ++ '21' => { ++ 'name' => 'wr_start', ++ 'offset' => '320', ++ 'type' => '9675' ++ }, ++ '22' => { ++ 'name' => 'wr_complete', ++ 'offset' => '328', ++ 'type' => '9907' ++ }, ++ '23' => { ++ 'name' => 'wr_abort', ++ 'offset' => '336', ++ 'type' => '9675' ++ }, ++ '3' => { ++ 'name' => 'wr_flags', ++ 'offset' => '176', ++ 'type' => '59' ++ }, ++ '4' => { ++ 'name' => 'wr_atomic_cmp_swp', ++ 'offset' => '184', ++ 'type' => '9507' ++ }, ++ '5' => { ++ 'name' => 'wr_atomic_fetch_add', ++ 'offset' => '192', ++ 'type' => '9539' ++ }, ++ '6' => { ++ 'name' => 'wr_bind_mw', ++ 'offset' => '200', ++ 'type' => '9577' ++ }, ++ '7' => { ++ 'name' => 'wr_local_inv', ++ 'offset' => '208', ++ 'type' => '9599' ++ }, ++ '8' => { ++ 'name' => 'wr_rdma_read', ++ 'offset' => '216', ++ 'type' => '9626' ++ }, ++ '9' => { ++ 'name' => 'wr_rdma_write', ++ 'offset' => '224', ++ 'type' => '9626' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_ex', ++ 'Size' => '344', ++ 'Type' => 'Struct' ++ }, ++ '9501' => { ++ 'BaseType' => '9107', ++ 'Name' => 'struct ibv_qp_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9507' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t, uint64_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'type' => '2028' ++ }, ++ '4' => { ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9539' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '955' => { ++ 'BaseType' => '316', ++ 'Name' => 'char[48]', ++ 'Size' => '48', ++ 'Type' => 'Array' ++ }, ++ '9571' => { ++ 'BaseType' => '6013', ++ 'Name' => 'struct ibv_mw_bind_info const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9577' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, struct ibv_mw*, uint32_t, struct ibv_mw_bind_info const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '8428' ++ }, ++ '2' => { ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'type' => '9571' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9599' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9626' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '2028' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9658' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t, __be32)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'type' => '2165' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9675' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9697' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, __be32)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '2165' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '97' => { ++ 'BaseType' => '45', ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Name' => '__uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '9729' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, void*, uint16_t, uint16_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '267' ++ }, ++ '2' => { ++ 'type' => '1999' ++ }, ++ '3' => { ++ 'type' => '1999' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9761' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, struct ibv_ah*, uint32_t, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '8272' ++ }, ++ '2' => { ++ 'type' => '2011' ++ }, ++ '3' => { ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9788' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, void*, size_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '267' ++ }, ++ '2' => { ++ 'type' => '386' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9815' => { ++ 'BaseType' => '7954', ++ 'Name' => 'struct ibv_data_buf const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9821' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, size_t, struct ibv_data_buf const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '386' ++ }, ++ '2' => { ++ 'type' => '9815' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '983' => { ++ 'BaseType' => '316', ++ 'Name' => 'char[8]', ++ 'Size' => '8', ++ 'Type' => 'Array' ++ }, ++ '9853' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, uint32_t, uint64_t, uint32_t)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '2011' ++ }, ++ '2' => { ++ 'type' => '2028' ++ }, ++ '3' => { ++ 'type' => '2011' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9880' => { ++ 'BaseType' => '8016', ++ 'Name' => 'struct ibv_sge const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9886' => { ++ 'Name' => 'void(*)(struct ibv_qp_ex*, size_t, struct ibv_sge const*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ }, ++ '1' => { ++ 'type' => '386' ++ }, ++ '2' => { ++ 'type' => '9880' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9907' => { ++ 'Name' => 'int(*)(struct ibv_qp_ex*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '9501' ++ } ++ }, ++ 'Return' => '128', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '9913' => { ++ 'Header' => undef, ++ 'Line' => '1452', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '2938' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '8', ++ 'type' => '128' ++ }, ++ '2' => { ++ 'name' => 'refcnt', ++ 'offset' => '12', ++ 'type' => '128' ++ } ++ }, ++ 'Name' => 'struct ibv_comp_channel', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '9969' => { ++ 'BaseType' => '9913', ++ 'Name' => 'struct ibv_comp_channel*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '9975' => { ++ 'Header' => undef, ++ 'Line' => '1471', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '2011' ++ } ++ }, ++ 'Name' => 'struct ibv_poll_cq_attr', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '999' => { ++ 'BaseType' => '135', ++ 'Header' => undef, ++ 'Line' => '103', ++ 'Name' => 'pthread_spinlock_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ } ++ }, ++ 'UndefinedSymbols' => { ++ 'libmlx5.so.1.23.41.0' => { ++ '_ITM_deregisterTMCloneTable' => 0, ++ '_ITM_registerTMCloneTable' => 0, ++ '__cxa_finalize@GLIBC_2.2.5' => 0, ++ '__errno_location@GLIBC_2.2.5' => 0, ++ '__fprintf_chk@GLIBC_2.3.4' => 0, ++ '__gmon_start__' => 0, ++ '__isoc99_sscanf@GLIBC_2.7' => 0, ++ '__memcpy_chk@GLIBC_2.3.4' => 0, ++ '__pread_chk@GLIBC_2.4' => 0, ++ '__snprintf_chk@GLIBC_2.3.4' => 0, ++ '__sprintf_chk@GLIBC_2.3.4' => 0, ++ '__stack_chk_fail@GLIBC_2.4' => 0, ++ '__strncat_chk@GLIBC_2.3.4' => 0, ++ '__vfprintf_chk@GLIBC_2.3.4' => 0, ++ '__xstat@GLIBC_2.2.5' => 0, ++ '_verbs_init_and_alloc_context@IBVERBS_PRIVATE_34' => 0, ++ 'abort@GLIBC_2.2.5' => 0, ++ 'basename@GLIBC_2.2.5' => 0, ++ 'calloc@GLIBC_2.2.5' => 0, ++ 'close@GLIBC_2.2.5' => 0, ++ 'eventfd@GLIBC_2.7' => 0, ++ 'execute_ioctl@IBVERBS_PRIVATE_34' => 0, ++ 'fclose@GLIBC_2.2.5' => 0, ++ 'fcntl@GLIBC_2.2.5' => 0, ++ 'fgets@GLIBC_2.2.5' => 0, ++ 'fopen@GLIBC_2.2.5' => 0, ++ 'fputc@GLIBC_2.2.5' => 0, ++ 'free@GLIBC_2.2.5' => 0, ++ 'fwrite@GLIBC_2.2.5' => 0, ++ 'getenv@GLIBC_2.2.5' => 0, ++ 'gethostname@GLIBC_2.2.5' => 0, ++ 'getpid@GLIBC_2.2.5' => 0, ++ 'getrandom@GLIBC_2.25' => 0, ++ 'gettimeofday@GLIBC_2.2.5' => 0, ++ 'ibv_alloc_pd@IBVERBS_1.1' => 0, ++ 'ibv_cmd_advise_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_alloc_dm@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_alloc_mw@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_alloc_pd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_attach_mcast@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_close_xrcd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_ah@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_counters@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_cq_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_flow@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_flow_action_esp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_qp_ex2@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_qp_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_rwq_ind_table@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_srq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_srq_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_create_wq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_dealloc_mw@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_dealloc_pd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_dereg_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_ah@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_counters@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_cq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_flow@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_flow_action@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_rwq_ind_table@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_srq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_destroy_wq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_detach_mcast@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_free_dm@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_get_context@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_cq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_flow_action_esp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_qp_ex@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_srq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_modify_wq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_open_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_open_xrcd@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_context@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_device_any@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_port@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_qp@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_query_srq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_read_counters@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_reg_dm_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_reg_dmabuf_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_reg_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_rereg_mr@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_cmd_resize_cq@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_create_cq@IBVERBS_1.1' => 0, ++ 'ibv_dealloc_pd@IBVERBS_1.1' => 0, ++ 'ibv_dereg_mr@IBVERBS_1.1' => 0, ++ 'ibv_destroy_cq@IBVERBS_1.1' => 0, ++ 'ibv_dofork_range@IBVERBS_1.1' => 0, ++ 'ibv_dontfork_range@IBVERBS_1.1' => 0, ++ 'ibv_get_device_name@IBVERBS_1.1' => 0, ++ 'ibv_qp_to_qp_ex@IBVERBS_1.6' => 0, ++ 'ibv_query_device@IBVERBS_1.1' => 0, ++ 'ibv_query_gid_type@IBVERBS_PRIVATE_34' => 0, ++ 'ibv_query_port@IBVERBS_1.1' => 0, ++ 'ibv_reg_mr@IBVERBS_1.1' => 0, ++ 'ibv_resolve_eth_l2_from_gid@IBVERBS_1.1' => 0, ++ 'ioctl@GLIBC_2.2.5' => 0, ++ 'malloc@GLIBC_2.2.5' => 0, ++ 'memcmp@GLIBC_2.2.5' => 0, ++ 'memcpy@GLIBC_2.14' => 0, ++ 'memset@GLIBC_2.2.5' => 0, ++ 'mmap@GLIBC_2.2.5' => 0, ++ 'munmap@GLIBC_2.2.5' => 0, ++ 'open@GLIBC_2.2.5' => 0, ++ 'poll@GLIBC_2.2.5' => 0, ++ 'posix_memalign@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_init@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_lock@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_unlock@GLIBC_2.2.5' => 0, ++ 'pthread_spin_destroy@GLIBC_2.2.5' => 0, ++ 'pthread_spin_init@GLIBC_2.2.5' => 0, ++ 'pthread_spin_lock@GLIBC_2.2.5' => 0, ++ 'pthread_spin_unlock@GLIBC_2.2.5' => 0, ++ 'pwrite@GLIBC_2.2.5' => 0, ++ 'rand_r@GLIBC_2.2.5' => 0, ++ 'read@GLIBC_2.2.5' => 0, ++ 'readlink@GLIBC_2.2.5' => 0, ++ 'realloc@GLIBC_2.2.5' => 0, ++ 'sched_getaffinity@GLIBC_2.3.4' => 0, ++ 'sched_yield@GLIBC_2.2.5' => 0, ++ 'shmat@GLIBC_2.2.5' => 0, ++ 'shmctl@GLIBC_2.2.5' => 0, ++ 'shmdt@GLIBC_2.2.5' => 0, ++ 'shmget@GLIBC_2.2.5' => 0, ++ 'sleep@GLIBC_2.2.5' => 0, ++ 'stderr@GLIBC_2.2.5' => 0, ++ 'strcasecmp@GLIBC_2.2.5' => 0, ++ 'strchr@GLIBC_2.2.5' => 0, ++ 'strdup@GLIBC_2.2.5' => 0, ++ 'strerror@GLIBC_2.2.5' => 0, ++ 'strlen@GLIBC_2.2.5' => 0, ++ 'strncpy@GLIBC_2.2.5' => 0, ++ 'strrchr@GLIBC_2.2.5' => 0, ++ 'strtol@GLIBC_2.2.5' => 0, ++ 'strtoul@GLIBC_2.2.5' => 0, ++ 'sysconf@GLIBC_2.2.5' => 0, ++ 'time@GLIBC_2.2.5' => 0, ++ 'usleep@GLIBC_2.2.5' => 0, ++ 'verbs_allow_disassociate_destroy@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_init_cq@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_open_device@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_register_driver_34@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_set_ops@IBVERBS_PRIVATE_34' => 0, ++ 'verbs_uninit_context@IBVERBS_PRIVATE_34' => 0, ++ 'write@GLIBC_2.2.5' => 0 ++ } ++ }, ++ 'WordSize' => '8' ++ }; +diff --git a/ABI/rdmacm.dump b/ABI/rdmacm.dump +new file mode 100644 +index 0000000..c83a163 +--- /dev/null ++++ b/ABI/rdmacm.dump +@@ -0,0 +1,5867 @@ ++$VAR1 = { ++ 'ABI_DUMPER_VERSION' => '1.1', ++ 'ABI_DUMP_VERSION' => '3.5', ++ 'Arch' => 'x86_64', ++ 'GccVersion' => '11.1.0', ++ 'Headers' => {}, ++ 'Language' => 'C', ++ 'LibraryName' => 'librdmacm.so.1.3.41.0', ++ 'LibraryVersion' => 'rdmacm', ++ 'MissedOffsets' => '1', ++ 'MissedRegs' => '1', ++ 'NameSpaces' => {}, ++ 'Needed' => { ++ 'ld-linux-x86-64.so.2' => 1, ++ 'libc.so.6' => 1, ++ 'libibverbs.so.1' => 1, ++ 'libnl-3.so.200' => 1, ++ 'libpthread.so.0' => 1 ++ }, ++ 'Sources' => {}, ++ 'SymbolInfo' => { ++ '112284' => { ++ 'Header' => undef, ++ 'Line' => '4125', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '1839' ++ }, ++ '2' => { ++ 'name' => 'count', ++ 'type' => '45' ++ }, ++ '3' => { ++ 'name' => 'offset', ++ 'type' => '82081' ++ }, ++ '4' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '45', ++ 'ShortName' => 'riowrite' ++ }, ++ '114082' => { ++ 'Header' => undef, ++ 'Line' => '4078', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'len', ++ 'type' => '45' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'riounmap' ++ }, ++ '114627' => { ++ 'Header' => undef, ++ 'Line' => '4029', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'len', ++ 'type' => '45' ++ }, ++ '3' => { ++ 'name' => 'prot', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'offset', ++ 'type' => '82081' ++ } ++ }, ++ 'Return' => '82081', ++ 'ShortName' => 'riomap' ++ }, ++ '115863' => { ++ 'Header' => undef, ++ 'Line' => '3972', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'cmd', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'type' => '-1' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rfcntl' ++ }, ++ '116334' => { ++ 'Header' => undef, ++ 'Line' => '3827', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'level', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'optname', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'optval', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'optlen', ++ 'type' => '14411' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rgetsockopt' ++ }, ++ '117325' => { ++ 'Header' => undef, ++ 'Line' => '3646', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'level', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'optname', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'optval', ++ 'type' => '1839' ++ }, ++ '4' => { ++ 'name' => 'optlen', ++ 'type' => '1073' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rsetsockopt' ++ }, ++ '118987' => { ++ 'Header' => undef, ++ 'Line' => '3604', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '1833' ++ }, ++ '2' => { ++ 'name' => 'addrlen', ++ 'type' => '14411' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rgetsockname' ++ }, ++ '119638' => { ++ 'Header' => undef, ++ 'Line' => '3589', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '1833' ++ }, ++ '2' => { ++ 'name' => 'addrlen', ++ 'type' => '14411' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rgetpeername' ++ }, ++ '119888' => { ++ 'Header' => undef, ++ 'Line' => '3551', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rclose' ++ }, ++ '120481' => { ++ 'Header' => undef, ++ 'Line' => '3480', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'how', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rshutdown' ++ }, ++ '121220' => { ++ 'Header' => undef, ++ 'Line' => '3449', ++ 'Param' => { ++ '0' => { ++ 'name' => 'nfds', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'readfds', ++ 'type' => '122188' ++ }, ++ '2' => { ++ 'name' => 'writefds', ++ 'type' => '122188' ++ }, ++ '3' => { ++ 'name' => 'exceptfds', ++ 'type' => '122188' ++ }, ++ '4' => { ++ 'name' => 'timeout', ++ 'type' => '122194' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rselect' ++ }, ++ '12234' => { ++ 'Header' => undef, ++ 'Line' => '748', ++ 'Param' => { ++ '0' => { ++ 'name' => 'node', ++ 'type' => '750' ++ }, ++ '1' => { ++ 'name' => 'service', ++ 'type' => '750' ++ }, ++ '2' => { ++ 'name' => 'hints', ++ 'type' => '7878' ++ }, ++ '3' => { ++ 'name' => 'res', ++ 'type' => '7872' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_getaddrinfo' ++ }, ++ '122553' => { ++ 'Header' => undef, ++ 'Line' => '3334', ++ 'Param' => { ++ '0' => { ++ 'name' => 'fds', ++ 'type' => '102454' ++ }, ++ '1' => { ++ 'name' => 'nfds', ++ 'type' => '101211' ++ }, ++ '2' => { ++ 'name' => 'timeout', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rpoll' ++ }, ++ '126542' => { ++ 'Header' => undef, ++ 'Line' => '3031', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'iov', ++ 'type' => '126681' ++ }, ++ '2' => { ++ 'name' => 'iovcnt', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rwritev' ++ }, ++ '126687' => { ++ 'Header' => undef, ++ 'Line' => '3026', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '1839' ++ }, ++ '2' => { ++ 'name' => 'count', ++ 'type' => '45' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rwrite' ++ }, ++ '126826' => { ++ 'Header' => undef, ++ 'Line' => '3018', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'msg', ++ 'type' => '105672' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rsendmsg' ++ }, ++ '128470' => { ++ 'Header' => undef, ++ 'Line' => '2877', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '1839' ++ }, ++ '2' => { ++ 'name' => 'len', ++ 'type' => '45' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'dest_addr', ++ 'type' => '4547' ++ }, ++ '5' => { ++ 'name' => 'addrlen', ++ 'type' => '1073' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rsendto' ++ }, ++ '129282' => { ++ 'Header' => undef, ++ 'Line' => '2788', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '1839' ++ }, ++ '2' => { ++ 'name' => 'len', ++ 'type' => '45' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rsend' ++ }, ++ '133587' => { ++ 'Header' => undef, ++ 'Line' => '2630', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'iov', ++ 'type' => '126681' ++ }, ++ '2' => { ++ 'name' => 'iovcnt', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rreadv' ++ }, ++ '133794' => { ++ 'Header' => undef, ++ 'Line' => '2625', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'count', ++ 'type' => '45' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rread' ++ }, ++ '133933' => { ++ 'Header' => undef, ++ 'Line' => '2617', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'msg', ++ 'type' => '134195' ++ }, ++ '2' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rrecvmsg' ++ }, ++ '134272' => { ++ 'Header' => undef, ++ 'Line' => '2585', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'len', ++ 'type' => '45' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'src_addr', ++ 'type' => '1833' ++ }, ++ '5' => { ++ 'name' => 'addrlen', ++ 'type' => '14411' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rrecvfrom' ++ }, ++ '134861' => { ++ 'Header' => undef, ++ 'Line' => '2514', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'buf', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'len', ++ 'type' => '45' ++ }, ++ '3' => { ++ 'name' => 'flags', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '727', ++ 'ShortName' => 'rrecv' ++ }, ++ '144114' => { ++ 'Header' => undef, ++ 'Line' => '1713', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '4547' ++ }, ++ '2' => { ++ 'name' => 'addrlen', ++ 'type' => '1073' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rconnect' ++ }, ++ '150026' => { ++ 'Header' => undef, ++ 'Line' => '1348', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '1833' ++ }, ++ '2' => { ++ 'name' => 'addrlen', ++ 'type' => '14411' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'raccept' ++ }, ++ '150695' => { ++ 'Header' => undef, ++ 'Line' => '1257', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'backlog', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rlisten' ++ }, ++ '151157' => { ++ 'Header' => undef, ++ 'Line' => '1234', ++ 'Param' => { ++ '0' => { ++ 'name' => 'socket', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '4547' ++ }, ++ '2' => { ++ 'name' => 'addrlen', ++ 'type' => '1073' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rbind' ++ }, ++ '151560' => { ++ 'Header' => undef, ++ 'Line' => '1192', ++ 'Param' => { ++ '0' => { ++ 'name' => 'domain', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'type', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'protocol', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rsocket' ++ }, ++ '40994' => { ++ 'Header' => undef, ++ 'Line' => '2909', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'ece', ++ 'type' => '34038' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_get_remote_ece' ++ }, ++ '41142' => { ++ 'Header' => undef, ++ 'Line' => '2895', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'ece', ++ 'type' => '34038' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_set_local_ece' ++ }, ++ '4119' => { ++ 'Header' => undef, ++ 'Line' => '752', ++ 'Param' => { ++ '0' => { ++ 'name' => 'res', ++ 'type' => '3116' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'rdma_freeaddrinfo' ++ }, ++ '41290' => { ++ 'Header' => undef, ++ 'Line' => '2890', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ } ++ }, ++ 'Return' => '1976', ++ 'ShortName' => 'rdma_get_dst_port' ++ }, ++ '41370' => { ++ 'Header' => undef, ++ 'Line' => '2885', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ } ++ }, ++ 'Return' => '1976', ++ 'ShortName' => 'rdma_get_src_port' ++ }, ++ '42238' => { ++ 'Header' => undef, ++ 'Line' => '2833', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'rdma_destroy_ep' ++ }, ++ '42393' => { ++ 'Header' => undef, ++ 'Line' => '2769', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '43365' ++ }, ++ '1' => { ++ 'name' => 'res', ++ 'type' => '3116' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'type' => '22902' ++ }, ++ '3' => { ++ 'name' => 'qp_init_attr', ++ 'type' => '34020' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_create_ep' ++ }, ++ '43466' => { ++ 'Header' => undef, ++ 'Line' => '2685', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'type' => '32561' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_migrate_id' ++ }, ++ '44100' => { ++ 'Header' => undef, ++ 'Line' => '735', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'level', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'optname', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'optval', ++ 'type' => '71' ++ }, ++ '4' => { ++ 'name' => 'optlen', ++ 'type' => '45' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_set_option' ++ }, ++ '44474' => { ++ 'Header' => undef, ++ 'Line' => '2623', ++ 'Param' => { ++ '0' => { ++ 'name' => 'event', ++ 'type' => '31863' ++ } ++ }, ++ 'Return' => '750', ++ 'ShortName' => 'rdma_event_str' ++ }, ++ '44525' => { ++ 'Header' => undef, ++ 'Line' => '2478', ++ 'Param' => { ++ '0' => { ++ 'name' => 'channel', ++ 'type' => '32561' ++ }, ++ '1' => { ++ 'name' => 'event', ++ 'type' => '48543' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_get_cm_event' ++ }, ++ '48555' => { ++ 'Header' => undef, ++ 'Line' => '2466', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_establish' ++ }, ++ '49802' => { ++ 'Header' => undef, ++ 'Line' => '2229', ++ 'Param' => { ++ '0' => { ++ 'name' => 'event', ++ 'type' => '32645' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_ack_cm_event' ++ }, ++ '49902' => { ++ 'Header' => undef, ++ 'Line' => '2161', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '1833' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_leave_multicast' ++ }, ++ '50740' => { ++ 'Header' => undef, ++ 'Line' => '2148', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '1833' ++ }, ++ '2' => { ++ 'name' => 'context', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_join_multicast' ++ }, ++ '50989' => { ++ 'Header' => undef, ++ 'Line' => '2124', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'mc_join_attr', ++ 'type' => '51281' ++ }, ++ '2' => { ++ 'name' => 'context', ++ 'type' => '71' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_join_multicast_ex' ++ }, ++ '52523' => { ++ 'Header' => undef, ++ 'Line' => '2029', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_disconnect' ++ }, ++ '53283' => { ++ 'Header' => undef, ++ 'Line' => '1996', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'event', ++ 'type' => '21025' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_notify' ++ }, ++ '53593' => { ++ 'Header' => undef, ++ 'Line' => '1989', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'private_data', ++ 'type' => '1839' ++ }, ++ '2' => { ++ 'name' => 'private_data_len', ++ 'type' => '761' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_reject_ece' ++ }, ++ '53735' => { ++ 'Header' => undef, ++ 'Line' => '524', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'private_data', ++ 'type' => '1839' ++ }, ++ '2' => { ++ 'name' => 'private_data_len', ++ 'type' => '761' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_reject' ++ }, ++ '54343' => { ++ 'Header' => undef, ++ 'Line' => '506', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'conn_param', ++ 'type' => '48812' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_accept' ++ }, ++ '55420' => { ++ 'Header' => undef, ++ 'Line' => '485', ++ 'Param' => { ++ '0' => { ++ 'name' => 'listen', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'id', ++ 'type' => '43365' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_get_request' ++ }, ++ '55888' => { ++ 'Header' => undef, ++ 'Line' => '480', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'backlog', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_listen' ++ }, ++ '56235' => { ++ 'Header' => undef, ++ 'Line' => '442', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'conn_param', ++ 'type' => '48812' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_connect' ++ }, ++ '57224' => { ++ 'Header' => undef, ++ 'Line' => '424', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'rdma_destroy_qp' ++ }, ++ '57310' => { ++ 'Header' => undef, ++ 'Line' => '408', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'type' => '22902' ++ }, ++ '2' => { ++ 'name' => 'qp_init_attr', ++ 'type' => '34020' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_create_qp' ++ }, ++ '57629' => { ++ 'Header' => undef, ++ 'Line' => '1621', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '31212' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_create_qp_ex' ++ }, ++ '58805' => { ++ 'Header' => undef, ++ 'Line' => '1559', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'rdma_destroy_srq' ++ }, ++ '58891' => { ++ 'Header' => undef, ++ 'Line' => '1540', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'type' => '22902' ++ }, ++ '2' => { ++ 'name' => 'attr', ++ 'type' => '34026' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_create_srq' ++ }, ++ '59205' => { ++ 'Header' => undef, ++ 'Line' => '1495', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'type' => '31276' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_create_srq_ex' ++ }, ++ '61412' => { ++ 'Header' => undef, ++ 'Line' => '1242', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'qp_attr', ++ 'type' => '34032' ++ }, ++ '2' => { ++ 'name' => 'qp_attr_mask', ++ 'type' => '4113' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_init_qp_attr' ++ }, ++ '61802' => { ++ 'Header' => undef, ++ 'Line' => '385', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'timeout_ms', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_resolve_route' ++ }, ++ '62511' => { ++ 'Header' => undef, ++ 'Line' => '368', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'src_addr', ++ 'type' => '1833' ++ }, ++ '2' => { ++ 'name' => 'dst_addr', ++ 'type' => '1833' ++ }, ++ '3' => { ++ 'name' => 'timeout_ms', ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_resolve_addr' ++ }, ++ '64238' => { ++ 'Header' => undef, ++ 'Line' => '343', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'type' => '1833' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_bind_addr' ++ }, ++ '67751' => { ++ 'Header' => undef, ++ 'Line' => '325', ++ 'Param' => { ++ '0' => { ++ 'name' => 'id', ++ 'type' => '32921' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_destroy_id' ++ }, ++ '68332' => { ++ 'Header' => undef, ++ 'Line' => '272', ++ 'Param' => { ++ '0' => { ++ 'name' => 'channel', ++ 'type' => '32561' ++ }, ++ '1' => { ++ 'name' => 'id', ++ 'type' => '43365' ++ }, ++ '2' => { ++ 'name' => 'context', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'ps', ++ 'type' => '2856' ++ } ++ }, ++ 'Return' => '130', ++ 'ShortName' => 'rdma_create_id' ++ }, ++ '71389' => { ++ 'Header' => undef, ++ 'Line' => '587', ++ 'Param' => { ++ '0' => { ++ 'name' => 'channel', ++ 'type' => '32561' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'rdma_destroy_event_channel' ++ }, ++ '71476' => { ++ 'Header' => undef, ++ 'Line' => '566', ++ 'Return' => '32561', ++ 'ShortName' => 'rdma_create_event_channel' ++ }, ++ '71637' => { ++ 'Header' => undef, ++ 'Line' => '542', ++ 'Param' => { ++ '0' => { ++ 'name' => 'list', ++ 'type' => '72119' ++ } ++ }, ++ 'Return' => '1', ++ 'ShortName' => 'rdma_free_devices' ++ }, ++ '72125' => { ++ 'Header' => undef, ++ 'Line' => '496', ++ 'Param' => { ++ '0' => { ++ 'name' => 'num_devices', ++ 'type' => '4113' ++ } ++ }, ++ 'Return' => '72119', ++ 'ShortName' => 'rdma_get_devices' ++ } ++ }, ++ 'SymbolVersion' => { ++ 'raccept' => 'raccept@@RDMACM_1.0', ++ 'rbind' => 'rbind@@RDMACM_1.0', ++ 'rclose' => 'rclose@@RDMACM_1.0', ++ 'rconnect' => 'rconnect@@RDMACM_1.0', ++ 'rdma_accept' => 'rdma_accept@@RDMACM_1.0', ++ 'rdma_ack_cm_event' => 'rdma_ack_cm_event@@RDMACM_1.0', ++ 'rdma_bind_addr' => 'rdma_bind_addr@@RDMACM_1.0', ++ 'rdma_connect' => 'rdma_connect@@RDMACM_1.0', ++ 'rdma_create_ep' => 'rdma_create_ep@@RDMACM_1.0', ++ 'rdma_create_event_channel' => 'rdma_create_event_channel@@RDMACM_1.0', ++ 'rdma_create_id' => 'rdma_create_id@@RDMACM_1.0', ++ 'rdma_create_qp' => 'rdma_create_qp@@RDMACM_1.0', ++ 'rdma_create_qp_ex' => 'rdma_create_qp_ex@@RDMACM_1.0', ++ 'rdma_create_srq' => 'rdma_create_srq@@RDMACM_1.0', ++ 'rdma_create_srq_ex' => 'rdma_create_srq_ex@@RDMACM_1.0', ++ 'rdma_destroy_ep' => 'rdma_destroy_ep@@RDMACM_1.0', ++ 'rdma_destroy_event_channel' => 'rdma_destroy_event_channel@@RDMACM_1.0', ++ 'rdma_destroy_id' => 'rdma_destroy_id@@RDMACM_1.0', ++ 'rdma_destroy_qp' => 'rdma_destroy_qp@@RDMACM_1.0', ++ 'rdma_destroy_srq' => 'rdma_destroy_srq@@RDMACM_1.0', ++ 'rdma_disconnect' => 'rdma_disconnect@@RDMACM_1.0', ++ 'rdma_establish' => 'rdma_establish@@RDMACM_1.2', ++ 'rdma_event_str' => 'rdma_event_str@@RDMACM_1.0', ++ 'rdma_free_devices' => 'rdma_free_devices@@RDMACM_1.0', ++ 'rdma_freeaddrinfo' => 'rdma_freeaddrinfo@@RDMACM_1.0', ++ 'rdma_get_cm_event' => 'rdma_get_cm_event@@RDMACM_1.0', ++ 'rdma_get_devices' => 'rdma_get_devices@@RDMACM_1.0', ++ 'rdma_get_dst_port' => 'rdma_get_dst_port@@RDMACM_1.0', ++ 'rdma_get_remote_ece' => 'rdma_get_remote_ece@@RDMACM_1.3', ++ 'rdma_get_request' => 'rdma_get_request@@RDMACM_1.0', ++ 'rdma_get_src_port' => 'rdma_get_src_port@@RDMACM_1.0', ++ 'rdma_getaddrinfo' => 'rdma_getaddrinfo@@RDMACM_1.0', ++ 'rdma_init_qp_attr' => 'rdma_init_qp_attr@@RDMACM_1.2', ++ 'rdma_join_multicast' => 'rdma_join_multicast@@RDMACM_1.0', ++ 'rdma_join_multicast_ex' => 'rdma_join_multicast_ex@@RDMACM_1.1', ++ 'rdma_leave_multicast' => 'rdma_leave_multicast@@RDMACM_1.0', ++ 'rdma_listen' => 'rdma_listen@@RDMACM_1.0', ++ 'rdma_migrate_id' => 'rdma_migrate_id@@RDMACM_1.0', ++ 'rdma_notify' => 'rdma_notify@@RDMACM_1.0', ++ 'rdma_reject' => 'rdma_reject@@RDMACM_1.0', ++ 'rdma_reject_ece' => 'rdma_reject_ece@@RDMACM_1.3', ++ 'rdma_resolve_addr' => 'rdma_resolve_addr@@RDMACM_1.0', ++ 'rdma_resolve_route' => 'rdma_resolve_route@@RDMACM_1.0', ++ 'rdma_set_local_ece' => 'rdma_set_local_ece@@RDMACM_1.3', ++ 'rdma_set_option' => 'rdma_set_option@@RDMACM_1.0', ++ 'rfcntl' => 'rfcntl@@RDMACM_1.0', ++ 'rgetpeername' => 'rgetpeername@@RDMACM_1.0', ++ 'rgetsockname' => 'rgetsockname@@RDMACM_1.0', ++ 'rgetsockopt' => 'rgetsockopt@@RDMACM_1.0', ++ 'riomap' => 'riomap@@RDMACM_1.0', ++ 'riounmap' => 'riounmap@@RDMACM_1.0', ++ 'riowrite' => 'riowrite@@RDMACM_1.0', ++ 'rlisten' => 'rlisten@@RDMACM_1.0', ++ 'rpoll' => 'rpoll@@RDMACM_1.0', ++ 'rread' => 'rread@@RDMACM_1.0', ++ 'rreadv' => 'rreadv@@RDMACM_1.0', ++ 'rrecv' => 'rrecv@@RDMACM_1.0', ++ 'rrecvfrom' => 'rrecvfrom@@RDMACM_1.0', ++ 'rrecvmsg' => 'rrecvmsg@@RDMACM_1.0', ++ 'rselect' => 'rselect@@RDMACM_1.0', ++ 'rsend' => 'rsend@@RDMACM_1.0', ++ 'rsendmsg' => 'rsendmsg@@RDMACM_1.0', ++ 'rsendto' => 'rsendto@@RDMACM_1.0', ++ 'rsetsockopt' => 'rsetsockopt@@RDMACM_1.0', ++ 'rshutdown' => 'rshutdown@@RDMACM_1.0', ++ 'rsocket' => 'rsocket@@RDMACM_1.0', ++ 'rwrite' => 'rwrite@@RDMACM_1.0', ++ 'rwritev' => 'rwritev@@RDMACM_1.0' ++ }, ++ 'Symbols' => { ++ 'librdmacm.so.1.3.41.0' => { ++ 'raccept@@RDMACM_1.0' => 1, ++ 'rbind@@RDMACM_1.0' => 1, ++ 'rclose@@RDMACM_1.0' => 1, ++ 'rconnect@@RDMACM_1.0' => 1, ++ 'rdma_accept@@RDMACM_1.0' => 1, ++ 'rdma_ack_cm_event@@RDMACM_1.0' => 1, ++ 'rdma_bind_addr@@RDMACM_1.0' => 1, ++ 'rdma_connect@@RDMACM_1.0' => 1, ++ 'rdma_create_ep@@RDMACM_1.0' => 1, ++ 'rdma_create_event_channel@@RDMACM_1.0' => 1, ++ 'rdma_create_id@@RDMACM_1.0' => 1, ++ 'rdma_create_qp@@RDMACM_1.0' => 1, ++ 'rdma_create_qp_ex@@RDMACM_1.0' => 1, ++ 'rdma_create_srq@@RDMACM_1.0' => 1, ++ 'rdma_create_srq_ex@@RDMACM_1.0' => 1, ++ 'rdma_destroy_ep@@RDMACM_1.0' => 1, ++ 'rdma_destroy_event_channel@@RDMACM_1.0' => 1, ++ 'rdma_destroy_id@@RDMACM_1.0' => 1, ++ 'rdma_destroy_qp@@RDMACM_1.0' => 1, ++ 'rdma_destroy_srq@@RDMACM_1.0' => 1, ++ 'rdma_disconnect@@RDMACM_1.0' => 1, ++ 'rdma_establish@@RDMACM_1.2' => 1, ++ 'rdma_event_str@@RDMACM_1.0' => 1, ++ 'rdma_free_devices@@RDMACM_1.0' => 1, ++ 'rdma_freeaddrinfo@@RDMACM_1.0' => 1, ++ 'rdma_get_cm_event@@RDMACM_1.0' => 1, ++ 'rdma_get_devices@@RDMACM_1.0' => 1, ++ 'rdma_get_dst_port@@RDMACM_1.0' => 1, ++ 'rdma_get_remote_ece@@RDMACM_1.3' => 1, ++ 'rdma_get_request@@RDMACM_1.0' => 1, ++ 'rdma_get_src_port@@RDMACM_1.0' => 1, ++ 'rdma_getaddrinfo@@RDMACM_1.0' => 1, ++ 'rdma_init_qp_attr@@RDMACM_1.2' => 1, ++ 'rdma_join_multicast@@RDMACM_1.0' => 1, ++ 'rdma_join_multicast_ex@@RDMACM_1.1' => 1, ++ 'rdma_leave_multicast@@RDMACM_1.0' => 1, ++ 'rdma_listen@@RDMACM_1.0' => 1, ++ 'rdma_migrate_id@@RDMACM_1.0' => 1, ++ 'rdma_notify@@RDMACM_1.0' => 1, ++ 'rdma_reject@@RDMACM_1.0' => 1, ++ 'rdma_reject_ece@@RDMACM_1.3' => 1, ++ 'rdma_resolve_addr@@RDMACM_1.0' => 1, ++ 'rdma_resolve_route@@RDMACM_1.0' => 1, ++ 'rdma_set_local_ece@@RDMACM_1.3' => 1, ++ 'rdma_set_option@@RDMACM_1.0' => 1, ++ 'rfcntl@@RDMACM_1.0' => 1, ++ 'rgetpeername@@RDMACM_1.0' => 1, ++ 'rgetsockname@@RDMACM_1.0' => 1, ++ 'rgetsockopt@@RDMACM_1.0' => 1, ++ 'riomap@@RDMACM_1.0' => 1, ++ 'riounmap@@RDMACM_1.0' => 1, ++ 'riowrite@@RDMACM_1.0' => 1, ++ 'rlisten@@RDMACM_1.0' => 1, ++ 'rpoll@@RDMACM_1.0' => 1, ++ 'rread@@RDMACM_1.0' => 1, ++ 'rreadv@@RDMACM_1.0' => 1, ++ 'rrecv@@RDMACM_1.0' => 1, ++ 'rrecvfrom@@RDMACM_1.0' => 1, ++ 'rrecvmsg@@RDMACM_1.0' => 1, ++ 'rselect@@RDMACM_1.0' => 1, ++ 'rsend@@RDMACM_1.0' => 1, ++ 'rsendmsg@@RDMACM_1.0' => 1, ++ 'rsendto@@RDMACM_1.0' => 1, ++ 'rsetsockopt@@RDMACM_1.0' => 1, ++ 'rshutdown@@RDMACM_1.0' => 1, ++ 'rsocket@@RDMACM_1.0' => 1, ++ 'rwrite@@RDMACM_1.0' => 1, ++ 'rwritev@@RDMACM_1.0' => 1 ++ } ++ }, ++ 'Target' => 'unix', ++ 'TypeInfo' => { ++ '-1' => { ++ 'Name' => '...', ++ 'Type' => 'Intrinsic' ++ }, ++ '1' => { ++ 'Name' => 'void', ++ 'Type' => 'Intrinsic' ++ }, ++ '101211' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '33', ++ 'Name' => 'nfds_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '101223' => { ++ 'Header' => undef, ++ 'Line' => '36', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fd', ++ 'offset' => '0', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'events', ++ 'offset' => '4', ++ 'type' => '111' ++ }, ++ '2' => { ++ 'name' => 'revents', ++ 'offset' => '6', ++ 'type' => '111' ++ } ++ }, ++ 'Name' => 'struct pollfd', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '102454' => { ++ 'BaseType' => '101223', ++ 'Name' => 'struct pollfd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '105672' => { ++ 'BaseType' => '83515', ++ 'Name' => 'struct msghdr const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1073' => { ++ 'BaseType' => '227', ++ 'Header' => undef, ++ 'Line' => '33', ++ 'Name' => 'socklen_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '111' => { ++ 'Name' => 'short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ }, ++ '11187' => { ++ 'Header' => undef, ++ 'Line' => '895', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPT_RC', ++ 'value' => '2' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPT_UC', ++ 'value' => '3' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPT_UD', ++ 'value' => '4' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPT_RAW_PACKET', ++ 'value' => '8' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPT_XRC_SEND', ++ 'value' => '9' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPT_XRC_RECV', ++ 'value' => '10' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPT_DRIVER', ++ 'value' => '255' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '1162' => { ++ 'BaseType' => '85', ++ 'Header' => undef, ++ 'Line' => '28', ++ 'Name' => 'sa_family_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '1174' => { ++ 'Header' => undef, ++ 'Line' => '178', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'sa_family', ++ 'offset' => '0', ++ 'type' => '1162' ++ }, ++ '1' => { ++ 'name' => 'sa_data', ++ 'offset' => '2', ++ 'type' => '1219' ++ } ++ }, ++ 'Name' => 'struct sockaddr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '118' => { ++ 'BaseType' => '85', ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Name' => '__uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '1214' => { ++ 'BaseType' => '1174', ++ 'Name' => 'struct sockaddr const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '1219' => { ++ 'BaseType' => '215', ++ 'Name' => 'char[14]', ++ 'Size' => '14', ++ 'Type' => 'Array' ++ }, ++ '122194' => { ++ 'BaseType' => '82129', ++ 'Name' => 'struct timeval*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '126681' => { ++ 'BaseType' => '82996', ++ 'Name' => 'struct iovec const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '130' => { ++ 'Name' => 'int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '1324' => { ++ 'BaseType' => '785', ++ 'Header' => undef, ++ 'Line' => '30', ++ 'Name' => 'in_addr_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '1336' => { ++ 'Header' => undef, ++ 'Line' => '31', ++ 'Memb' => { ++ '0' => { ++ 'name' => 's_addr', ++ 'offset' => '0', ++ 'type' => '1324' ++ } ++ }, ++ 'Name' => 'struct in_addr', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '134195' => { ++ 'BaseType' => '83402', ++ 'Name' => 'struct msghdr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '137' => { ++ 'BaseType' => '64', ++ 'Header' => undef, ++ 'Line' => '42', ++ 'Name' => '__uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '14411' => { ++ 'BaseType' => '1073', ++ 'Name' => 'socklen_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '149' => { ++ 'Name' => 'long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '1535' => { ++ 'BaseType' => '773', ++ 'Header' => undef, ++ 'Line' => '119', ++ 'Name' => 'in_port_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '1547' => { ++ 'Header' => undef, ++ 'Line' => '214', ++ 'Memb' => { ++ '0' => { ++ 'name' => '__u6_addr8', ++ 'offset' => '0', ++ 'type' => '1593' ++ }, ++ '1' => { ++ 'name' => '__u6_addr16', ++ 'offset' => '0', ++ 'type' => '1609' ++ }, ++ '2' => { ++ 'name' => '__u6_addr32', ++ 'offset' => '0', ++ 'type' => '1625' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '15524' => { ++ 'BaseType' => '149', ++ 'Header' => undef, ++ 'Line' => '160', ++ 'Name' => '__time_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '156' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '45', ++ 'Name' => '__uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1593' => { ++ 'BaseType' => '761', ++ 'Name' => 'uint8_t[16]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '1609' => { ++ 'BaseType' => '773', ++ 'Name' => 'uint16_t[8]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '1625' => { ++ 'BaseType' => '785', ++ 'Name' => 'uint32_t[4]', ++ 'Size' => '16', ++ 'Type' => 'Array' ++ }, ++ '1641' => { ++ 'Header' => undef, ++ 'Line' => '212', ++ 'Memb' => { ++ '0' => { ++ 'name' => '__in6_u', ++ 'offset' => '0', ++ 'type' => '1547' ++ } ++ }, ++ 'Name' => 'struct in6_addr', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '16678' => { ++ 'Header' => undef, ++ 'Line' => '191', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ss_family', ++ 'offset' => '0', ++ 'type' => '1162' ++ }, ++ '1' => { ++ 'name' => '__ss_padding', ++ 'offset' => '2', ++ 'type' => '16731' ++ }, ++ '2' => { ++ 'name' => '__ss_align', ++ 'offset' => '120', ++ 'type' => '57' ++ } ++ }, ++ 'Name' => 'struct sockaddr_storage', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '1668' => { ++ 'Header' => undef, ++ 'Line' => '238', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'sin_family', ++ 'offset' => '0', ++ 'type' => '1162' ++ }, ++ '1' => { ++ 'name' => 'sin_port', ++ 'offset' => '2', ++ 'type' => '1535' ++ }, ++ '2' => { ++ 'name' => 'sin_addr', ++ 'offset' => '4', ++ 'type' => '1336' ++ }, ++ '3' => { ++ 'name' => 'sin_zero', ++ 'offset' => '8', ++ 'type' => '1734' ++ } ++ }, ++ 'Name' => 'struct sockaddr_in', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '16731' => { ++ 'BaseType' => '215', ++ 'Name' => 'char[118]', ++ 'Size' => '118', ++ 'Type' => 'Array' ++ }, ++ '168' => { ++ 'BaseType' => '149', ++ 'Header' => undef, ++ 'Line' => '152', ++ 'Name' => '__off_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1734' => { ++ 'BaseType' => '78', ++ 'Name' => 'unsigned char[8]', ++ 'Size' => '8', ++ 'Type' => 'Array' ++ }, ++ '1750' => { ++ 'Header' => undef, ++ 'Line' => '253', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'sin6_family', ++ 'offset' => '0', ++ 'type' => '1162' ++ }, ++ '1' => { ++ 'name' => 'sin6_port', ++ 'offset' => '2', ++ 'type' => '1535' ++ }, ++ '2' => { ++ 'name' => 'sin6_flowinfo', ++ 'offset' => '4', ++ 'type' => '785' ++ }, ++ '3' => { ++ 'name' => 'sin6_addr', ++ 'offset' => '8', ++ 'type' => '1641' ++ }, ++ '4' => { ++ 'name' => 'sin6_scope_id', ++ 'offset' => '24', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct sockaddr_in6', ++ 'Size' => '28', ++ 'Type' => 'Struct' ++ }, ++ '1833' => { ++ 'BaseType' => '1174', ++ 'Name' => 'struct sockaddr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1839' => { ++ 'BaseType' => '1850', ++ 'Name' => 'void const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '1850' => { ++ 'BaseType' => '1', ++ 'Name' => 'void const', ++ 'Type' => 'Const' ++ }, ++ '18761' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_NODE_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_NODE_CA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_NODE_SWITCH', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_NODE_ROUTER', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_NODE_RNIC', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_NODE_USNIC', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_NODE_USNIC_UDP', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_NODE_UNSPECIFIED', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_node_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '18828' => { ++ 'Header' => undef, ++ 'Line' => '106', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_TRANSPORT_UNKNOWN', ++ 'value' => '18446744073709551615 (-1)' ++ }, ++ '1' => { ++ 'name' => 'IBV_TRANSPORT_IB', ++ 'value' => '0' ++ }, ++ '2' => { ++ 'name' => 'IBV_TRANSPORT_IWARP', ++ 'value' => '1' ++ }, ++ '3' => { ++ 'name' => 'IBV_TRANSPORT_USNIC', ++ 'value' => '2' ++ }, ++ '4' => { ++ 'name' => 'IBV_TRANSPORT_USNIC_UDP', ++ 'value' => '3' ++ }, ++ '5' => { ++ 'name' => 'IBV_TRANSPORT_UNSPECIFIED', ++ 'value' => '4' ++ } ++ }, ++ 'Name' => 'enum ibv_transport_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '18883' => { ++ 'Header' => undef, ++ 'Line' => '155', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_ATOMIC_NONE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_ATOMIC_HCA', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_ATOMIC_GLOB', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_atomic_cap', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '19052' => { ++ 'Header' => undef, ++ 'Line' => '1986', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'device', ++ 'offset' => '0', ++ 'type' => '28186' ++ }, ++ '1' => { ++ 'name' => 'ops', ++ 'offset' => '8', ++ 'type' => '28375' ++ }, ++ '2' => { ++ 'name' => 'cmd_fd', ++ 'offset' => '264', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'async_fd', ++ 'offset' => '268', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'num_comp_vectors', ++ 'offset' => '272', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '280', ++ 'type' => '16276' ++ }, ++ '6' => { ++ 'name' => 'abi_compat', ++ 'offset' => '320', ++ 'type' => '71' ++ } ++ }, ++ 'Name' => 'struct ibv_context', ++ 'Size' => '328', ++ 'Type' => 'Struct' ++ }, ++ '19171' => { ++ 'BaseType' => '19052', ++ 'Name' => 'struct ibv_context*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '192' => { ++ 'BaseType' => '149', ++ 'Header' => undef, ++ 'Line' => '193', ++ 'Name' => '__ssize_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '19255' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fw_ver', ++ 'offset' => '0', ++ 'type' => '19789' ++ }, ++ '1' => { ++ 'name' => 'node_guid', ++ 'offset' => '64', ++ 'type' => '2000' ++ }, ++ '10' => { ++ 'name' => 'device_cap_flags', ++ 'offset' => '116', ++ 'type' => '64' ++ }, ++ '11' => { ++ 'name' => 'max_sge', ++ 'offset' => '120', ++ 'type' => '130' ++ }, ++ '12' => { ++ 'name' => 'max_sge_rd', ++ 'offset' => '124', ++ 'type' => '130' ++ }, ++ '13' => { ++ 'name' => 'max_cq', ++ 'offset' => '128', ++ 'type' => '130' ++ }, ++ '14' => { ++ 'name' => 'max_cqe', ++ 'offset' => '132', ++ 'type' => '130' ++ }, ++ '15' => { ++ 'name' => 'max_mr', ++ 'offset' => '136', ++ 'type' => '130' ++ }, ++ '16' => { ++ 'name' => 'max_pd', ++ 'offset' => '140', ++ 'type' => '130' ++ }, ++ '17' => { ++ 'name' => 'max_qp_rd_atom', ++ 'offset' => '144', ++ 'type' => '130' ++ }, ++ '18' => { ++ 'name' => 'max_ee_rd_atom', ++ 'offset' => '148', ++ 'type' => '130' ++ }, ++ '19' => { ++ 'name' => 'max_res_rd_atom', ++ 'offset' => '152', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'sys_image_guid', ++ 'offset' => '72', ++ 'type' => '2000' ++ }, ++ '20' => { ++ 'name' => 'max_qp_init_rd_atom', ++ 'offset' => '156', ++ 'type' => '130' ++ }, ++ '21' => { ++ 'name' => 'max_ee_init_rd_atom', ++ 'offset' => '160', ++ 'type' => '130' ++ }, ++ '22' => { ++ 'name' => 'atomic_cap', ++ 'offset' => '164', ++ 'type' => '18883' ++ }, ++ '23' => { ++ 'name' => 'max_ee', ++ 'offset' => '168', ++ 'type' => '130' ++ }, ++ '24' => { ++ 'name' => 'max_rdd', ++ 'offset' => '172', ++ 'type' => '130' ++ }, ++ '25' => { ++ 'name' => 'max_mw', ++ 'offset' => '176', ++ 'type' => '130' ++ }, ++ '26' => { ++ 'name' => 'max_raw_ipv6_qp', ++ 'offset' => '180', ++ 'type' => '130' ++ }, ++ '27' => { ++ 'name' => 'max_raw_ethy_qp', ++ 'offset' => '184', ++ 'type' => '130' ++ }, ++ '28' => { ++ 'name' => 'max_mcast_grp', ++ 'offset' => '188', ++ 'type' => '130' ++ }, ++ '29' => { ++ 'name' => 'max_mcast_qp_attach', ++ 'offset' => '192', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'max_mr_size', ++ 'offset' => '80', ++ 'type' => '797' ++ }, ++ '30' => { ++ 'name' => 'max_total_mcast_qp_attach', ++ 'offset' => '196', ++ 'type' => '130' ++ }, ++ '31' => { ++ 'name' => 'max_ah', ++ 'offset' => '200', ++ 'type' => '130' ++ }, ++ '32' => { ++ 'name' => 'max_fmr', ++ 'offset' => '204', ++ 'type' => '130' ++ }, ++ '33' => { ++ 'name' => 'max_map_per_fmr', ++ 'offset' => '208', ++ 'type' => '130' ++ }, ++ '34' => { ++ 'name' => 'max_srq', ++ 'offset' => '212', ++ 'type' => '130' ++ }, ++ '35' => { ++ 'name' => 'max_srq_wr', ++ 'offset' => '216', ++ 'type' => '130' ++ }, ++ '36' => { ++ 'name' => 'max_srq_sge', ++ 'offset' => '220', ++ 'type' => '130' ++ }, ++ '37' => { ++ 'name' => 'max_pkeys', ++ 'offset' => '224', ++ 'type' => '773' ++ }, ++ '38' => { ++ 'name' => 'local_ca_ack_delay', ++ 'offset' => '226', ++ 'type' => '761' ++ }, ++ '39' => { ++ 'name' => 'phys_port_cnt', ++ 'offset' => '227', ++ 'type' => '761' ++ }, ++ '4' => { ++ 'name' => 'page_size_cap', ++ 'offset' => '88', ++ 'type' => '797' ++ }, ++ '5' => { ++ 'name' => 'vendor_id', ++ 'offset' => '96', ++ 'type' => '785' ++ }, ++ '6' => { ++ 'name' => 'vendor_part_id', ++ 'offset' => '100', ++ 'type' => '785' ++ }, ++ '7' => { ++ 'name' => 'hw_ver', ++ 'offset' => '104', ++ 'type' => '785' ++ }, ++ '8' => { ++ 'name' => 'max_qp', ++ 'offset' => '108', ++ 'type' => '130' ++ }, ++ '9' => { ++ 'name' => 'max_qp_wr', ++ 'offset' => '112', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_device_attr', ++ 'Size' => '232', ++ 'Type' => 'Struct' ++ }, ++ '1940' => { ++ 'BaseType' => '85', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => '__u16', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '1952' => { ++ 'BaseType' => '64', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__u32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '1964' => { ++ 'BaseType' => '985', ++ 'Header' => undef, ++ 'Line' => '31', ++ 'Name' => '__u64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '1976' => { ++ 'BaseType' => '1940', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => '__be16', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '19789' => { ++ 'BaseType' => '215', ++ 'Name' => 'char[64]', ++ 'Size' => '64', ++ 'Type' => 'Array' ++ }, ++ '1988' => { ++ 'BaseType' => '1952', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => '__be32', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '2000' => { ++ 'BaseType' => '1964', ++ 'Header' => undef, ++ 'Line' => '29', ++ 'Name' => '__be64', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '204' => { ++ 'BaseType' => '215', ++ 'Name' => 'char*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '20562' => { ++ 'Header' => undef, ++ 'Line' => '364', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MTU_256', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'IBV_MTU_512', ++ 'value' => '2' ++ }, ++ '2' => { ++ 'name' => 'IBV_MTU_1024', ++ 'value' => '3' ++ }, ++ '3' => { ++ 'name' => 'IBV_MTU_2048', ++ 'value' => '4' ++ }, ++ '4' => { ++ 'name' => 'IBV_MTU_4096', ++ 'value' => '5' ++ } ++ }, ++ 'Name' => 'enum ibv_mtu', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '21025' => { ++ 'Header' => undef, ++ 'Line' => '449', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_EVENT_CQ_ERR', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_EVENT_QP_FATAL', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_EVENT_PORT_ERR', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_EVENT_LID_CHANGE', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'IBV_EVENT_PKEY_CHANGE', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'IBV_EVENT_SM_CHANGE', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'IBV_EVENT_SRQ_ERR', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'IBV_EVENT_SRQ_LIMIT_REACHED', ++ 'value' => '15' ++ }, ++ '16' => { ++ 'name' => 'IBV_EVENT_QP_LAST_WQE_REACHED', ++ 'value' => '16' ++ }, ++ '17' => { ++ 'name' => 'IBV_EVENT_CLIENT_REREGISTER', ++ 'value' => '17' ++ }, ++ '18' => { ++ 'name' => 'IBV_EVENT_GID_CHANGE', ++ 'value' => '18' ++ }, ++ '19' => { ++ 'name' => 'IBV_EVENT_WQ_FATAL', ++ 'value' => '19' ++ }, ++ '2' => { ++ 'name' => 'IBV_EVENT_QP_REQ_ERR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_EVENT_QP_ACCESS_ERR', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_EVENT_COMM_EST', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_EVENT_SQ_DRAINED', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_EVENT_PATH_MIG', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_EVENT_PATH_MIG_ERR', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_EVENT_DEVICE_FATAL', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_EVENT_PORT_ACTIVE', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_event_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '21165' => { ++ 'Header' => undef, ++ 'Line' => '1458', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'offset' => '8', ++ 'type' => '26813' ++ }, ++ '2' => { ++ 'name' => 'cq_context', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '785' ++ }, ++ '4' => { ++ 'name' => 'cqe', ++ 'offset' => '28', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '16276' ++ }, ++ '6' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '16350' ++ }, ++ '7' => { ++ 'name' => 'comp_events_completed', ++ 'offset' => '120', ++ 'type' => '785' ++ }, ++ '8' => { ++ 'name' => 'async_events_completed', ++ 'offset' => '124', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_cq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '21306' => { ++ 'BaseType' => '21165', ++ 'Name' => 'struct ibv_cq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '21312' => { ++ 'Header' => undef, ++ 'Line' => '1252', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'qp_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '10' => { ++ 'name' => 'mutex', ++ 'offset' => '64', ++ 'type' => '16276' ++ }, ++ '11' => { ++ 'name' => 'cond', ++ 'offset' => '104', ++ 'type' => '16350' ++ }, ++ '12' => { ++ 'name' => 'events_completed', ++ 'offset' => '152', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '22902' ++ }, ++ '3' => { ++ 'name' => 'send_cq', ++ 'offset' => '24', ++ 'type' => '21306' ++ }, ++ '4' => { ++ 'name' => 'recv_cq', ++ 'offset' => '32', ++ 'type' => '21306' ++ }, ++ '5' => { ++ 'name' => 'srq', ++ 'offset' => '40', ++ 'type' => '21626' ++ }, ++ '6' => { ++ 'name' => 'handle', ++ 'offset' => '48', ++ 'type' => '785' ++ }, ++ '7' => { ++ 'name' => 'qp_num', ++ 'offset' => '52', ++ 'type' => '785' ++ }, ++ '8' => { ++ 'name' => 'state', ++ 'offset' => '56', ++ 'type' => '24909' ++ }, ++ '9' => { ++ 'name' => 'qp_type', ++ 'offset' => '60', ++ 'type' => '11187' ++ } ++ }, ++ 'Name' => 'struct ibv_qp', ++ 'Size' => '160', ++ 'Type' => 'Struct' ++ }, ++ '215' => { ++ 'Name' => 'char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '21508' => { ++ 'BaseType' => '21312', ++ 'Name' => 'struct ibv_qp*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '21514' => { ++ 'Header' => undef, ++ 'Line' => '1212', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'srq_context', ++ 'offset' => '8', ++ 'type' => '71' ++ }, ++ '2' => { ++ 'name' => 'pd', ++ 'offset' => '16', ++ 'type' => '22902' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '24', ++ 'type' => '785' ++ }, ++ '4' => { ++ 'name' => 'mutex', ++ 'offset' => '32', ++ 'type' => '16276' ++ }, ++ '5' => { ++ 'name' => 'cond', ++ 'offset' => '72', ++ 'type' => '16350' ++ }, ++ '6' => { ++ 'name' => 'events_completed', ++ 'offset' => '120', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_srq', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '21626' => { ++ 'BaseType' => '21514', ++ 'Name' => 'struct ibv_srq*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '21833' => { ++ 'Header' => undef, ++ 'Line' => '483', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SUCCESS', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_LOC_LEN_ERR', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_REM_ACCESS_ERR', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_REM_OP_ERR', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_RETRY_EXC_ERR', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_RNR_RETRY_EXC_ERR', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_LOC_RDD_VIOL_ERR', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_REM_INV_RD_REQ_ERR', ++ 'value' => '15' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_REM_ABORT_ERR', ++ 'value' => '16' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_INV_EECN_ERR', ++ 'value' => '17' ++ }, ++ '18' => { ++ 'name' => 'IBV_WC_INV_EEC_STATE_ERR', ++ 'value' => '18' ++ }, ++ '19' => { ++ 'name' => 'IBV_WC_FATAL_ERR', ++ 'value' => '19' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_LOC_QP_OP_ERR', ++ 'value' => '2' ++ }, ++ '20' => { ++ 'name' => 'IBV_WC_RESP_TIMEOUT_ERR', ++ 'value' => '20' ++ }, ++ '21' => { ++ 'name' => 'IBV_WC_GENERAL_ERR', ++ 'value' => '21' ++ }, ++ '22' => { ++ 'name' => 'IBV_WC_TM_ERR', ++ 'value' => '22' ++ }, ++ '23' => { ++ 'name' => 'IBV_WC_TM_RNDV_INCOMPLETE', ++ 'value' => '23' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_LOC_EEC_OP_ERR', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_LOC_PROT_ERR', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_WR_FLUSH_ERR', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_MW_BIND_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_BAD_RESP_ERR', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_LOC_ACCESS_ERR', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_REM_INV_REQ_ERR', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_status', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '21997' => { ++ 'Header' => undef, ++ 'Line' => '511', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WC_SEND', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WC_RDMA_WRITE', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WC_TM_ADD', ++ 'value' => '130' ++ }, ++ '11' => { ++ 'name' => 'IBV_WC_TM_DEL', ++ 'value' => '131' ++ }, ++ '12' => { ++ 'name' => 'IBV_WC_TM_SYNC', ++ 'value' => '132' ++ }, ++ '13' => { ++ 'name' => 'IBV_WC_TM_RECV', ++ 'value' => '133' ++ }, ++ '14' => { ++ 'name' => 'IBV_WC_TM_NO_TAG', ++ 'value' => '134' ++ }, ++ '15' => { ++ 'name' => 'IBV_WC_DRIVER1', ++ 'value' => '135' ++ }, ++ '16' => { ++ 'name' => 'IBV_WC_DRIVER2', ++ 'value' => '136' ++ }, ++ '17' => { ++ 'name' => 'IBV_WC_DRIVER3', ++ 'value' => '137' ++ }, ++ '2' => { ++ 'name' => 'IBV_WC_RDMA_READ', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WC_COMP_SWAP', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WC_FETCH_ADD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WC_BIND_MW', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WC_LOCAL_INV', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WC_TSO', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WC_RECV', ++ 'value' => '128' ++ }, ++ '9' => { ++ 'name' => 'IBV_WC_RECV_RDMA_WITH_IMM', ++ 'value' => '129' ++ } ++ }, ++ 'Name' => 'enum ibv_wc_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '222' => { ++ 'BaseType' => '215', ++ 'Name' => 'char const', ++ 'Size' => '1', ++ 'Type' => 'Const' ++ }, ++ '22265' => { ++ 'Header' => undef, ++ 'Line' => '594', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '1988' ++ }, ++ '1' => { ++ 'name' => 'invalidated_rkey', ++ 'offset' => '0', ++ 'type' => '785' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '22302' => { ++ 'Header' => undef, ++ 'Line' => '585', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '797' ++ }, ++ '1' => { ++ 'name' => 'status', ++ 'offset' => '8', ++ 'type' => '21833' ++ }, ++ '10' => { ++ 'name' => 'slid', ++ 'offset' => '42', ++ 'type' => '773' ++ }, ++ '11' => { ++ 'name' => 'sl', ++ 'offset' => '44', ++ 'type' => '761' ++ }, ++ '12' => { ++ 'name' => 'dlid_path_bits', ++ 'offset' => '45', ++ 'type' => '761' ++ }, ++ '2' => { ++ 'name' => 'opcode', ++ 'offset' => '12', ++ 'type' => '21997' ++ }, ++ '3' => { ++ 'name' => 'vendor_err', ++ 'offset' => '16', ++ 'type' => '785' ++ }, ++ '4' => { ++ 'name' => 'byte_len', ++ 'offset' => '20', ++ 'type' => '785' ++ }, ++ '5' => { ++ 'name' => 'unnamed0', ++ 'offset' => '24', ++ 'type' => '22265' ++ }, ++ '6' => { ++ 'name' => 'qp_num', ++ 'offset' => '28', ++ 'type' => '785' ++ }, ++ '7' => { ++ 'name' => 'src_qp', ++ 'offset' => '32', ++ 'type' => '785' ++ }, ++ '8' => { ++ 'name' => 'wc_flags', ++ 'offset' => '36', ++ 'type' => '64' ++ }, ++ '9' => { ++ 'name' => 'pkey_index', ++ 'offset' => '40', ++ 'type' => '773' ++ } ++ }, ++ 'Name' => 'struct ibv_wc', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '22490' => { ++ 'Header' => undef, ++ 'Line' => '619', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mr', ++ 'offset' => '0', ++ 'type' => '22672' ++ }, ++ '1' => { ++ 'name' => 'addr', ++ 'offset' => '8', ++ 'type' => '797' ++ }, ++ '2' => { ++ 'name' => 'length', ++ 'offset' => '16', ++ 'type' => '797' ++ }, ++ '3' => { ++ 'name' => 'mw_access_flags', ++ 'offset' => '24', ++ 'type' => '64' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind_info', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '22560' => { ++ 'Header' => undef, ++ 'Line' => '662', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '22902' ++ }, ++ '2' => { ++ 'name' => 'addr', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'length', ++ 'offset' => '24', ++ 'type' => '45' ++ }, ++ '4' => { ++ 'name' => 'handle', ++ 'offset' => '32', ++ 'type' => '785' ++ }, ++ '5' => { ++ 'name' => 'lkey', ++ 'offset' => '36', ++ 'type' => '785' ++ }, ++ '6' => { ++ 'name' => 'rkey', ++ 'offset' => '40', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_mr', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '22672' => { ++ 'BaseType' => '22560', ++ 'Name' => 'struct ibv_mr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '22678' => { ++ 'Header' => undef, ++ 'Line' => '626', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'handle', ++ 'offset' => '8', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_pd', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '227' => { ++ 'BaseType' => '64', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => '__socklen_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '22873' => { ++ 'Header' => undef, ++ 'Line' => '651', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ } ++ }, ++ 'Name' => 'struct ibv_xrcd', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '22902' => { ++ 'BaseType' => '22678', ++ 'Name' => 'struct ibv_pd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '22908' => { ++ 'Header' => undef, ++ 'Line' => '672', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MW_TYPE_1', ++ 'value' => '1' ++ }, ++ '1' => { ++ 'name' => 'IBV_MW_TYPE_2', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_mw_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '22940' => { ++ 'Header' => undef, ++ 'Line' => '677', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '22902' ++ }, ++ '2' => { ++ 'name' => 'rkey', ++ 'offset' => '16', ++ 'type' => '785' ++ }, ++ '3' => { ++ 'name' => 'handle', ++ 'offset' => '20', ++ 'type' => '785' ++ }, ++ '4' => { ++ 'name' => 'type', ++ 'offset' => '24', ++ 'type' => '22908' ++ } ++ }, ++ 'Name' => 'struct ibv_mw', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '23024' => { ++ 'Header' => undef, ++ 'Line' => '685', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dgid', ++ 'offset' => '0', ++ 'type' => '2355' ++ }, ++ '1' => { ++ 'name' => 'flow_label', ++ 'offset' => '16', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'sgid_index', ++ 'offset' => '20', ++ 'type' => '761' ++ }, ++ '3' => { ++ 'name' => 'hop_limit', ++ 'offset' => '21', ++ 'type' => '761' ++ }, ++ '4' => { ++ 'name' => 'traffic_class', ++ 'offset' => '22', ++ 'type' => '761' ++ } ++ }, ++ 'Name' => 'struct ibv_global_route', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '23109' => { ++ 'Header' => undef, ++ 'Line' => '756', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'grh', ++ 'offset' => '0', ++ 'type' => '23024' ++ }, ++ '1' => { ++ 'name' => 'dlid', ++ 'offset' => '24', ++ 'type' => '773' ++ }, ++ '2' => { ++ 'name' => 'sl', ++ 'offset' => '26', ++ 'type' => '761' ++ }, ++ '3' => { ++ 'name' => 'src_path_bits', ++ 'offset' => '27', ++ 'type' => '761' ++ }, ++ '4' => { ++ 'name' => 'static_rate', ++ 'offset' => '28', ++ 'type' => '761' ++ }, ++ '5' => { ++ 'name' => 'is_global', ++ 'offset' => '29', ++ 'type' => '761' ++ }, ++ '6' => { ++ 'name' => 'port_num', ++ 'offset' => '30', ++ 'type' => '761' ++ } ++ }, ++ 'Name' => 'struct ibv_ah_attr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '2319' => { ++ 'Header' => undef, ++ 'Line' => '67', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'subnet_prefix', ++ 'offset' => '0', ++ 'type' => '2000' ++ }, ++ '1' => { ++ 'name' => 'interface_id', ++ 'offset' => '8', ++ 'type' => '2000' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '23221' => { ++ 'Header' => undef, ++ 'Line' => '771', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_wr', ++ 'offset' => '0', ++ 'type' => '785' ++ }, ++ '1' => { ++ 'name' => 'max_sge', ++ 'offset' => '4', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'srq_limit', ++ 'offset' => '8', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_srq_attr', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '23278' => { ++ 'Header' => undef, ++ 'Line' => '777', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'srq_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'offset' => '8', ++ 'type' => '23221' ++ } ++ }, ++ 'Name' => 'struct ibv_srq_init_attr', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '23321' => { ++ 'Header' => undef, ++ 'Line' => '782', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_SRQT_BASIC', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_SRQT_XRC', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_SRQT_TM', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_srq_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '23415' => { ++ 'Header' => undef, ++ 'Line' => '797', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_num_tags', ++ 'offset' => '0', ++ 'type' => '785' ++ }, ++ '1' => { ++ 'name' => 'max_ops', ++ 'offset' => '4', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_tm_cap', ++ 'Size' => '8', ++ 'Type' => 'Struct' ++ }, ++ '23458' => { ++ 'Header' => undef, ++ 'Line' => '802', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'srq_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'attr', ++ 'offset' => '8', ++ 'type' => '23221' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '20', ++ 'type' => '785' ++ }, ++ '3' => { ++ 'name' => 'srq_type', ++ 'offset' => '24', ++ 'type' => '23321' ++ }, ++ '4' => { ++ 'name' => 'pd', ++ 'offset' => '32', ++ 'type' => '22902' ++ }, ++ '5' => { ++ 'name' => 'xrcd', ++ 'offset' => '40', ++ 'type' => '23583' ++ }, ++ '6' => { ++ 'name' => 'cq', ++ 'offset' => '48', ++ 'type' => '21306' ++ }, ++ '7' => { ++ 'name' => 'tm_cap', ++ 'offset' => '56', ++ 'type' => '23415' ++ } ++ }, ++ 'Name' => 'struct ibv_srq_init_attr_ex', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '2355' => { ++ 'Header' => undef, ++ 'Line' => '65', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'raw', ++ 'offset' => '0', ++ 'type' => '1593' ++ }, ++ '1' => { ++ 'name' => 'global', ++ 'offset' => '0', ++ 'type' => '2319' ++ } ++ }, ++ 'Name' => 'union ibv_gid', ++ 'Size' => '16', ++ 'Type' => 'Union' ++ }, ++ '23583' => { ++ 'BaseType' => '22873', ++ 'Name' => 'struct ibv_xrcd*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '23869' => { ++ 'Header' => undef, ++ 'Line' => '874', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'ind_tbl_handle', ++ 'offset' => '8', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'ind_tbl_num', ++ 'offset' => '12', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'comp_mask', ++ 'offset' => '16', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_rwq_ind_table', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '24065' => { ++ 'Header' => undef, ++ 'Line' => '905', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'max_send_wr', ++ 'offset' => '0', ++ 'type' => '785' ++ }, ++ '1' => { ++ 'name' => 'max_recv_wr', ++ 'offset' => '4', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'max_send_sge', ++ 'offset' => '8', ++ 'type' => '785' ++ }, ++ '3' => { ++ 'name' => 'max_recv_sge', ++ 'offset' => '12', ++ 'type' => '785' ++ }, ++ '4' => { ++ 'name' => 'max_inline_data', ++ 'offset' => '16', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_cap', ++ 'Size' => '20', ++ 'Type' => 'Struct' ++ }, ++ '24150' => { ++ 'Header' => undef, ++ 'Line' => '913', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '21306' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '21306' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '21626' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '24065' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '11187' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '24325' => { ++ 'Header' => undef, ++ 'Line' => '955', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rx_hash_function', ++ 'offset' => '0', ++ 'type' => '761' ++ }, ++ '1' => { ++ 'name' => 'rx_hash_key_len', ++ 'offset' => '1', ++ 'type' => '761' ++ }, ++ '2' => { ++ 'name' => 'rx_hash_key', ++ 'offset' => '8', ++ 'type' => '24396' ++ }, ++ '3' => { ++ 'name' => 'rx_hash_fields_mask', ++ 'offset' => '16', ++ 'type' => '797' ++ } ++ }, ++ 'Name' => 'struct ibv_rx_hash_conf', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '24396' => { ++ 'BaseType' => '761', ++ 'Name' => 'uint8_t*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '24402' => { ++ 'Header' => undef, ++ 'Line' => '964', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_context', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'send_cq', ++ 'offset' => '8', ++ 'type' => '21306' ++ }, ++ '10' => { ++ 'name' => 'create_flags', ++ 'offset' => '80', ++ 'type' => '785' ++ }, ++ '11' => { ++ 'name' => 'max_tso_header', ++ 'offset' => '84', ++ 'type' => '773' ++ }, ++ '12' => { ++ 'name' => 'rwq_ind_tbl', ++ 'offset' => '88', ++ 'type' => '24640' ++ }, ++ '13' => { ++ 'name' => 'rx_hash_conf', ++ 'offset' => '96', ++ 'type' => '24325' ++ }, ++ '14' => { ++ 'name' => 'source_qpn', ++ 'offset' => '120', ++ 'type' => '785' ++ }, ++ '15' => { ++ 'name' => 'send_ops_flags', ++ 'offset' => '128', ++ 'type' => '797' ++ }, ++ '2' => { ++ 'name' => 'recv_cq', ++ 'offset' => '16', ++ 'type' => '21306' ++ }, ++ '3' => { ++ 'name' => 'srq', ++ 'offset' => '24', ++ 'type' => '21626' ++ }, ++ '4' => { ++ 'name' => 'cap', ++ 'offset' => '32', ++ 'type' => '24065' ++ }, ++ '5' => { ++ 'name' => 'qp_type', ++ 'offset' => '52', ++ 'type' => '11187' ++ }, ++ '6' => { ++ 'name' => 'sq_sig_all', ++ 'offset' => '56', ++ 'type' => '130' ++ }, ++ '7' => { ++ 'name' => 'comp_mask', ++ 'offset' => '60', ++ 'type' => '785' ++ }, ++ '8' => { ++ 'name' => 'pd', ++ 'offset' => '64', ++ 'type' => '22902' ++ }, ++ '9' => { ++ 'name' => 'xrcd', ++ 'offset' => '72', ++ 'type' => '23583' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_init_attr_ex', ++ 'Size' => '136', ++ 'Type' => 'Struct' ++ }, ++ '24640' => { ++ 'BaseType' => '23869', ++ 'Name' => 'struct ibv_rwq_ind_table*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '24909' => { ++ 'Header' => undef, ++ 'Line' => '1033', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_QPS_RESET', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_QPS_INIT', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_QPS_RTR', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_QPS_RTS', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_QPS_SQD', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_QPS_SQE', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_QPS_ERR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_QPS_UNKNOWN', ++ 'value' => '7' ++ } ++ }, ++ 'Name' => 'enum ibv_qp_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '24977' => { ++ 'Header' => undef, ++ 'Line' => '1044', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_MIG_MIGRATED', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_MIG_REARM', ++ 'value' => '1' ++ }, ++ '2' => { ++ 'name' => 'IBV_MIG_ARMED', ++ 'value' => '2' ++ } ++ }, ++ 'Name' => 'enum ibv_mig_state', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '25015' => { ++ 'Header' => undef, ++ 'Line' => '1050', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'qp_state', ++ 'offset' => '0', ++ 'type' => '24909' ++ }, ++ '1' => { ++ 'name' => 'cur_qp_state', ++ 'offset' => '4', ++ 'type' => '24909' ++ }, ++ '10' => { ++ 'name' => 'ah_attr', ++ 'offset' => '56', ++ 'type' => '23109' ++ }, ++ '11' => { ++ 'name' => 'alt_ah_attr', ++ 'offset' => '88', ++ 'type' => '23109' ++ }, ++ '12' => { ++ 'name' => 'pkey_index', ++ 'offset' => '120', ++ 'type' => '773' ++ }, ++ '13' => { ++ 'name' => 'alt_pkey_index', ++ 'offset' => '122', ++ 'type' => '773' ++ }, ++ '14' => { ++ 'name' => 'en_sqd_async_notify', ++ 'offset' => '124', ++ 'type' => '761' ++ }, ++ '15' => { ++ 'name' => 'sq_draining', ++ 'offset' => '125', ++ 'type' => '761' ++ }, ++ '16' => { ++ 'name' => 'max_rd_atomic', ++ 'offset' => '126', ++ 'type' => '761' ++ }, ++ '17' => { ++ 'name' => 'max_dest_rd_atomic', ++ 'offset' => '127', ++ 'type' => '761' ++ }, ++ '18' => { ++ 'name' => 'min_rnr_timer', ++ 'offset' => '128', ++ 'type' => '761' ++ }, ++ '19' => { ++ 'name' => 'port_num', ++ 'offset' => '129', ++ 'type' => '761' ++ }, ++ '2' => { ++ 'name' => 'path_mtu', ++ 'offset' => '8', ++ 'type' => '20562' ++ }, ++ '20' => { ++ 'name' => 'timeout', ++ 'offset' => '130', ++ 'type' => '761' ++ }, ++ '21' => { ++ 'name' => 'retry_cnt', ++ 'offset' => '131', ++ 'type' => '761' ++ }, ++ '22' => { ++ 'name' => 'rnr_retry', ++ 'offset' => '132', ++ 'type' => '761' ++ }, ++ '23' => { ++ 'name' => 'alt_port_num', ++ 'offset' => '133', ++ 'type' => '761' ++ }, ++ '24' => { ++ 'name' => 'alt_timeout', ++ 'offset' => '134', ++ 'type' => '761' ++ }, ++ '25' => { ++ 'name' => 'rate_limit', ++ 'offset' => '136', ++ 'type' => '785' ++ }, ++ '3' => { ++ 'name' => 'path_mig_state', ++ 'offset' => '12', ++ 'type' => '24977' ++ }, ++ '4' => { ++ 'name' => 'qkey', ++ 'offset' => '16', ++ 'type' => '785' ++ }, ++ '5' => { ++ 'name' => 'rq_psn', ++ 'offset' => '20', ++ 'type' => '785' ++ }, ++ '6' => { ++ 'name' => 'sq_psn', ++ 'offset' => '24', ++ 'type' => '785' ++ }, ++ '7' => { ++ 'name' => 'dest_qp_num', ++ 'offset' => '28', ++ 'type' => '785' ++ }, ++ '8' => { ++ 'name' => 'qp_access_flags', ++ 'offset' => '32', ++ 'type' => '64' ++ }, ++ '9' => { ++ 'name' => 'cap', ++ 'offset' => '36', ++ 'type' => '24065' ++ } ++ }, ++ 'Name' => 'struct ibv_qp_attr', ++ 'Size' => '144', ++ 'Type' => 'Struct' ++ }, ++ '25465' => { ++ 'Header' => undef, ++ 'Line' => '1086', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'IBV_WR_RDMA_WRITE', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'IBV_WR_RDMA_WRITE_WITH_IMM', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'IBV_WR_TSO', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'IBV_WR_DRIVER1', ++ 'value' => '11' ++ }, ++ '2' => { ++ 'name' => 'IBV_WR_SEND', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'IBV_WR_SEND_WITH_IMM', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'IBV_WR_RDMA_READ', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'IBV_WR_ATOMIC_CMP_AND_SWP', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'IBV_WR_ATOMIC_FETCH_AND_ADD', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'IBV_WR_LOCAL_INV', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'IBV_WR_BIND_MW', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'IBV_WR_SEND_WITH_INV', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum ibv_wr_opcode', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '25557' => { ++ 'Header' => undef, ++ 'Line' => '1114', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '797' ++ }, ++ '1' => { ++ 'name' => 'length', ++ 'offset' => '8', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'lkey', ++ 'offset' => '12', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_sge', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '25614' => { ++ 'Header' => undef, ++ 'Line' => '1130', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'imm_data', ++ 'offset' => '0', ++ 'type' => '1988' ++ }, ++ '1' => { ++ 'name' => 'invalidate_rkey', ++ 'offset' => '0', ++ 'type' => '785' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '25651' => { ++ 'Header' => undef, ++ 'Line' => '1135', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '797' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '785' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '25690' => { ++ 'Header' => undef, ++ 'Line' => '1139', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_addr', ++ 'offset' => '0', ++ 'type' => '797' ++ }, ++ '1' => { ++ 'name' => 'compare_add', ++ 'offset' => '8', ++ 'type' => '797' ++ }, ++ '2' => { ++ 'name' => 'swap', ++ 'offset' => '16', ++ 'type' => '797' ++ }, ++ '3' => { ++ 'name' => 'rkey', ++ 'offset' => '24', ++ 'type' => '785' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '25757' => { ++ 'Header' => undef, ++ 'Line' => '1145', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ah', ++ 'offset' => '0', ++ 'type' => '25865' ++ }, ++ '1' => { ++ 'name' => 'remote_qpn', ++ 'offset' => '8', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'remote_qkey', ++ 'offset' => '12', ++ 'type' => '785' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '25809' => { ++ 'Header' => undef, ++ 'Line' => '1645', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'pd', ++ 'offset' => '8', ++ 'type' => '22902' ++ }, ++ '2' => { ++ 'name' => 'handle', ++ 'offset' => '16', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_ah', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '25865' => { ++ 'BaseType' => '25809', ++ 'Name' => 'struct ibv_ah*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '25871' => { ++ 'Header' => undef, ++ 'Line' => '1134', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'rdma', ++ 'offset' => '0', ++ 'type' => '25651' ++ }, ++ '1' => { ++ 'name' => 'atomic', ++ 'offset' => '0', ++ 'type' => '25690' ++ }, ++ '2' => { ++ 'name' => 'ud', ++ 'offset' => '0', ++ 'type' => '25757' ++ } ++ }, ++ 'Size' => '32', ++ 'Type' => 'Union' ++ }, ++ '25920' => { ++ 'Header' => undef, ++ 'Line' => '1152', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'remote_srqn', ++ 'offset' => '0', ++ 'type' => '785' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '25945' => { ++ 'Header' => undef, ++ 'Line' => '1151', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'xrc', ++ 'offset' => '0', ++ 'type' => '25920' ++ } ++ }, ++ 'Size' => '4', ++ 'Type' => 'Union' ++ }, ++ '25969' => { ++ 'Header' => undef, ++ 'Line' => '1157', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'mw', ++ 'offset' => '0', ++ 'type' => '26021' ++ }, ++ '1' => { ++ 'name' => 'rkey', ++ 'offset' => '8', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '22490' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '26021' => { ++ 'BaseType' => '22940', ++ 'Name' => 'struct ibv_mw*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '26027' => { ++ 'Header' => undef, ++ 'Line' => '1162', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'hdr', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'hdr_sz', ++ 'offset' => '8', ++ 'type' => '773' ++ }, ++ '2' => { ++ 'name' => 'mss', ++ 'offset' => '10', ++ 'type' => '773' ++ } ++ }, ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '26080' => { ++ 'Header' => undef, ++ 'Line' => '1156', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'bind_mw', ++ 'offset' => '0', ++ 'type' => '25969' ++ }, ++ '1' => { ++ 'name' => 'tso', ++ 'offset' => '0', ++ 'type' => '26027' ++ } ++ }, ++ 'Size' => '48', ++ 'Type' => 'Union' ++ }, ++ '26117' => { ++ 'Header' => undef, ++ 'Line' => '1120', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '797' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '26255' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '26261' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'opcode', ++ 'offset' => '28', ++ 'type' => '25465' ++ }, ++ '5' => { ++ 'name' => 'send_flags', ++ 'offset' => '32', ++ 'type' => '64' ++ }, ++ '6' => { ++ 'name' => 'unnamed0', ++ 'offset' => '36', ++ 'type' => '25614' ++ }, ++ '7' => { ++ 'name' => 'wr', ++ 'offset' => '40', ++ 'type' => '25871' ++ }, ++ '8' => { ++ 'name' => 'qp_type', ++ 'offset' => '72', ++ 'type' => '25945' ++ }, ++ '9' => { ++ 'name' => 'unnamed1', ++ 'offset' => '80', ++ 'type' => '26080' ++ } ++ }, ++ 'Name' => 'struct ibv_send_wr', ++ 'Size' => '128', ++ 'Type' => 'Struct' ++ }, ++ '26255' => { ++ 'BaseType' => '26117', ++ 'Name' => 'struct ibv_send_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '26261' => { ++ 'BaseType' => '25557', ++ 'Name' => 'struct ibv_sge*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '26267' => { ++ 'Header' => undef, ++ 'Line' => '1170', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '797' ++ }, ++ '1' => { ++ 'name' => 'next', ++ 'offset' => '8', ++ 'type' => '26338' ++ }, ++ '2' => { ++ 'name' => 'sg_list', ++ 'offset' => '16', ++ 'type' => '26261' ++ }, ++ '3' => { ++ 'name' => 'num_sge', ++ 'offset' => '24', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_recv_wr', ++ 'Size' => '32', ++ 'Type' => 'Struct' ++ }, ++ '26338' => { ++ 'BaseType' => '26267', ++ 'Name' => 'struct ibv_recv_wr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '26606' => { ++ 'Header' => undef, ++ 'Line' => '1206', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'wr_id', ++ 'offset' => '0', ++ 'type' => '797' ++ }, ++ '1' => { ++ 'name' => 'send_flags', ++ 'offset' => '8', ++ 'type' => '64' ++ }, ++ '2' => { ++ 'name' => 'bind_info', ++ 'offset' => '16', ++ 'type' => '22490' ++ } ++ }, ++ 'Name' => 'struct ibv_mw_bind', ++ 'Size' => '48', ++ 'Type' => 'Struct' ++ }, ++ '26688' => { ++ 'BaseType' => '26338', ++ 'Name' => 'struct ibv_recv_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '26700' => { ++ 'Header' => undef, ++ 'Line' => '1437', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'vendor_id', ++ 'offset' => '0', ++ 'type' => '785' ++ }, ++ '1' => { ++ 'name' => 'options', ++ 'offset' => '4', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'comp_mask', ++ 'offset' => '8', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct ibv_ece', ++ 'Size' => '12', ++ 'Type' => 'Struct' ++ }, ++ '26757' => { ++ 'Header' => undef, ++ 'Line' => '1452', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'context', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'fd', ++ 'offset' => '8', ++ 'type' => '130' ++ }, ++ '2' => { ++ 'name' => 'refcnt', ++ 'offset' => '12', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct ibv_comp_channel', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '26813' => { ++ 'BaseType' => '26757', ++ 'Name' => 'struct ibv_comp_channel*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '28123' => { ++ 'Header' => undef, ++ 'Line' => '1918', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_dummy1', ++ 'offset' => '0', ++ 'type' => '28307' ++ }, ++ '1' => { ++ 'name' => '_dummy2', ++ 'offset' => '8', ++ 'type' => '28324' ++ } ++ }, ++ 'Name' => 'struct _ibv_device_ops', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '28186' => { ++ 'BaseType' => '28192', ++ 'Name' => 'struct ibv_device*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '28192' => { ++ 'Header' => undef, ++ 'Line' => '1928', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_ops', ++ 'offset' => '0', ++ 'type' => '28123' ++ }, ++ '1' => { ++ 'name' => 'node_type', ++ 'offset' => '16', ++ 'type' => '18761' ++ }, ++ '2' => { ++ 'name' => 'transport_type', ++ 'offset' => '20', ++ 'type' => '18828' ++ }, ++ '3' => { ++ 'name' => 'name', ++ 'offset' => '24', ++ 'type' => '19789' ++ }, ++ '4' => { ++ 'name' => 'dev_name', ++ 'offset' => '88', ++ 'type' => '19789' ++ }, ++ '5' => { ++ 'name' => 'dev_path', ++ 'offset' => '152', ++ 'type' => '28359' ++ }, ++ '6' => { ++ 'name' => 'ibdev_path', ++ 'offset' => '408', ++ 'type' => '28359' ++ } ++ }, ++ 'Name' => 'struct ibv_device', ++ 'Size' => '664', ++ 'Type' => 'Struct' ++ }, ++ '28307' => { ++ 'Name' => 'struct ibv_context*(*)(struct ibv_device*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '28186' ++ }, ++ '1' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '19171', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '28324' => { ++ 'Name' => 'void(*)(struct ibv_context*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '19171' ++ } ++ }, ++ 'Return' => '1', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '28359' => { ++ 'BaseType' => '215', ++ 'Name' => 'char[256]', ++ 'Size' => '256', ++ 'Type' => 'Array' ++ }, ++ '28375' => { ++ 'Header' => undef, ++ 'Line' => '1943', ++ 'Memb' => { ++ '0' => { ++ 'name' => '_compat_query_device', ++ 'offset' => '0', ++ 'type' => '28865' ++ }, ++ '1' => { ++ 'name' => '_compat_query_port', ++ 'offset' => '8', ++ 'type' => '28907' ++ }, ++ '10' => { ++ 'name' => '_compat_create_cq', ++ 'offset' => '80', ++ 'type' => '28918' ++ }, ++ '11' => { ++ 'name' => 'poll_cq', ++ 'offset' => '88', ++ 'type' => '29039' ++ }, ++ '12' => { ++ 'name' => 'req_notify_cq', ++ 'offset' => '96', ++ 'type' => '29065' ++ }, ++ '13' => { ++ 'name' => '_compat_cq_event', ++ 'offset' => '104', ++ 'type' => '28918' ++ }, ++ '14' => { ++ 'name' => '_compat_resize_cq', ++ 'offset' => '112', ++ 'type' => '28918' ++ }, ++ '15' => { ++ 'name' => '_compat_destroy_cq', ++ 'offset' => '120', ++ 'type' => '28918' ++ }, ++ '16' => { ++ 'name' => '_compat_create_srq', ++ 'offset' => '128', ++ 'type' => '28918' ++ }, ++ '17' => { ++ 'name' => '_compat_modify_srq', ++ 'offset' => '136', ++ 'type' => '28918' ++ }, ++ '18' => { ++ 'name' => '_compat_query_srq', ++ 'offset' => '144', ++ 'type' => '28918' ++ }, ++ '19' => { ++ 'name' => '_compat_destroy_srq', ++ 'offset' => '152', ++ 'type' => '28918' ++ }, ++ '2' => { ++ 'name' => '_compat_alloc_pd', ++ 'offset' => '16', ++ 'type' => '28918' ++ }, ++ '20' => { ++ 'name' => 'post_srq_recv', ++ 'offset' => '160', ++ 'type' => '29096' ++ }, ++ '21' => { ++ 'name' => '_compat_create_qp', ++ 'offset' => '168', ++ 'type' => '28918' ++ }, ++ '22' => { ++ 'name' => '_compat_query_qp', ++ 'offset' => '176', ++ 'type' => '28918' ++ }, ++ '23' => { ++ 'name' => '_compat_modify_qp', ++ 'offset' => '184', ++ 'type' => '28918' ++ }, ++ '24' => { ++ 'name' => '_compat_destroy_qp', ++ 'offset' => '192', ++ 'type' => '28918' ++ }, ++ '25' => { ++ 'name' => 'post_send', ++ 'offset' => '200', ++ 'type' => '29133' ++ }, ++ '26' => { ++ 'name' => 'post_recv', ++ 'offset' => '208', ++ 'type' => '29164' ++ }, ++ '27' => { ++ 'name' => '_compat_create_ah', ++ 'offset' => '216', ++ 'type' => '28918' ++ }, ++ '28' => { ++ 'name' => '_compat_destroy_ah', ++ 'offset' => '224', ++ 'type' => '28918' ++ }, ++ '29' => { ++ 'name' => '_compat_attach_mcast', ++ 'offset' => '232', ++ 'type' => '28918' ++ }, ++ '3' => { ++ 'name' => '_compat_dealloc_pd', ++ 'offset' => '24', ++ 'type' => '28918' ++ }, ++ '30' => { ++ 'name' => '_compat_detach_mcast', ++ 'offset' => '240', ++ 'type' => '28918' ++ }, ++ '31' => { ++ 'name' => '_compat_async_event', ++ 'offset' => '248', ++ 'type' => '28918' ++ }, ++ '4' => { ++ 'name' => '_compat_reg_mr', ++ 'offset' => '32', ++ 'type' => '28918' ++ }, ++ '5' => { ++ 'name' => '_compat_rereg_mr', ++ 'offset' => '40', ++ 'type' => '28918' ++ }, ++ '6' => { ++ 'name' => '_compat_dereg_mr', ++ 'offset' => '48', ++ 'type' => '28918' ++ }, ++ '7' => { ++ 'name' => 'alloc_mw', ++ 'offset' => '56', ++ 'type' => '28944' ++ }, ++ '8' => { ++ 'name' => 'bind_mw', ++ 'offset' => '64', ++ 'type' => '28981' ++ }, ++ '9' => { ++ 'name' => 'dealloc_mw', ++ 'offset' => '72', ++ 'type' => '29002' ++ } ++ }, ++ 'Name' => 'struct ibv_context_ops', ++ 'Size' => '256', ++ 'Type' => 'Struct' ++ }, ++ '2856' => { ++ 'Header' => undef, ++ 'Line' => '69', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'RDMA_PS_IPOIB', ++ 'value' => '2' ++ }, ++ '1' => { ++ 'name' => 'RDMA_PS_TCP', ++ 'value' => '262' ++ }, ++ '2' => { ++ 'name' => 'RDMA_PS_UDP', ++ 'value' => '273' ++ }, ++ '3' => { ++ 'name' => 'RDMA_PS_IB', ++ 'value' => '319' ++ } ++ }, ++ 'Name' => 'enum rdma_port_space', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '28859' => { ++ 'BaseType' => '19255', ++ 'Name' => 'struct ibv_device_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '28865' => { ++ 'Name' => 'int(*)(struct ibv_context*, struct ibv_device_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'type' => '28859' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '28896' => { ++ 'BaseType' => '28902', ++ 'Name' => 'struct _compat_ibv_port_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '28902' => { ++ 'Name' => 'struct _compat_ibv_port_attr', ++ 'Type' => 'Struct' ++ }, ++ '28907' => { ++ 'Name' => 'int(*)(struct ibv_context*, uint8_t, struct _compat_ibv_port_attr*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'type' => '761' ++ }, ++ '2' => { ++ 'type' => '28896' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '28918' => { ++ 'Name' => 'void*(*)()', ++ 'Return' => '71', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '28944' => { ++ 'Name' => 'struct ibv_mw*(*)(struct ibv_pd*, enum ibv_mw_type)', ++ 'Param' => { ++ '0' => { ++ 'type' => '22902' ++ }, ++ '1' => { ++ 'type' => '22908' ++ } ++ }, ++ 'Return' => '26021', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '28975' => { ++ 'BaseType' => '26606', ++ 'Name' => 'struct ibv_mw_bind*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '28981' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_mw*, struct ibv_mw_bind*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '21508' ++ }, ++ '1' => { ++ 'type' => '26021' ++ }, ++ '2' => { ++ 'type' => '28975' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29002' => { ++ 'Name' => 'int(*)(struct ibv_mw*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '26021' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '2902' => { ++ 'Header' => undef, ++ 'Line' => '182', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ai_flags', ++ 'offset' => '0', ++ 'type' => '130' ++ }, ++ '1' => { ++ 'name' => 'ai_family', ++ 'offset' => '4', ++ 'type' => '130' ++ }, ++ '10' => { ++ 'name' => 'ai_route_len', ++ 'offset' => '56', ++ 'type' => '45' ++ }, ++ '11' => { ++ 'name' => 'ai_route', ++ 'offset' => '64', ++ 'type' => '71' ++ }, ++ '12' => { ++ 'name' => 'ai_connect_len', ++ 'offset' => '72', ++ 'type' => '45' ++ }, ++ '13' => { ++ 'name' => 'ai_connect', ++ 'offset' => '80', ++ 'type' => '71' ++ }, ++ '14' => { ++ 'name' => 'ai_next', ++ 'offset' => '88', ++ 'type' => '3116' ++ }, ++ '2' => { ++ 'name' => 'ai_qp_type', ++ 'offset' => '8', ++ 'type' => '130' ++ }, ++ '3' => { ++ 'name' => 'ai_port_space', ++ 'offset' => '12', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'ai_src_len', ++ 'offset' => '16', ++ 'type' => '1073' ++ }, ++ '5' => { ++ 'name' => 'ai_dst_len', ++ 'offset' => '20', ++ 'type' => '1073' ++ }, ++ '6' => { ++ 'name' => 'ai_src_addr', ++ 'offset' => '24', ++ 'type' => '1833' ++ }, ++ '7' => { ++ 'name' => 'ai_dst_addr', ++ 'offset' => '32', ++ 'type' => '1833' ++ }, ++ '8' => { ++ 'name' => 'ai_src_canonname', ++ 'offset' => '40', ++ 'type' => '204' ++ }, ++ '9' => { ++ 'name' => 'ai_dst_canonname', ++ 'offset' => '48', ++ 'type' => '204' ++ } ++ }, ++ 'Name' => 'struct rdma_addrinfo', ++ 'Size' => '96', ++ 'Type' => 'Struct' ++ }, ++ '29033' => { ++ 'BaseType' => '22302', ++ 'Name' => 'struct ibv_wc*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29039' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int, struct ibv_wc*)', ++ 'Param' => { ++ '0' => { ++ 'type' => '21306' ++ }, ++ '1' => { ++ 'type' => '130' ++ }, ++ '2' => { ++ 'type' => '29033' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29065' => { ++ 'Name' => 'int(*)(struct ibv_cq*, int)', ++ 'Param' => { ++ '0' => { ++ 'type' => '21306' ++ }, ++ '1' => { ++ 'type' => '130' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29096' => { ++ 'Name' => 'int(*)(struct ibv_srq*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '21626' ++ }, ++ '1' => { ++ 'type' => '26338' ++ }, ++ '2' => { ++ 'type' => '26688' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29127' => { ++ 'BaseType' => '26255', ++ 'Name' => 'struct ibv_send_wr**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '29133' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_send_wr*, struct ibv_send_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '21508' ++ }, ++ '1' => { ++ 'type' => '26255' ++ }, ++ '2' => { ++ 'type' => '29127' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '29164' => { ++ 'Name' => 'int(*)(struct ibv_qp*, struct ibv_recv_wr*, struct ibv_recv_wr**)', ++ 'Param' => { ++ '0' => { ++ 'type' => '21508' ++ }, ++ '1' => { ++ 'type' => '26338' ++ }, ++ '2' => { ++ 'type' => '26688' ++ } ++ }, ++ 'Return' => '130', ++ 'Size' => '8', ++ 'Type' => 'FuncPtr' ++ }, ++ '3111' => { ++ 'BaseType' => '2902', ++ 'Name' => 'struct rdma_addrinfo const', ++ 'Size' => '96', ++ 'Type' => 'Const' ++ }, ++ '3116' => { ++ 'BaseType' => '2902', ++ 'Name' => 'struct rdma_addrinfo*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '31212' => { ++ 'BaseType' => '24402', ++ 'Name' => 'struct ibv_qp_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '31276' => { ++ 'BaseType' => '23458', ++ 'Name' => 'struct ibv_srq_init_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '31341' => { ++ 'Header' => undef, ++ 'Line' => '40', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dgid', ++ 'offset' => '0', ++ 'type' => '2355' ++ }, ++ '1' => { ++ 'name' => 'sgid', ++ 'offset' => '16', ++ 'type' => '2355' ++ }, ++ '10' => { ++ 'name' => 'pkey', ++ 'offset' => '54', ++ 'type' => '1976' ++ }, ++ '11' => { ++ 'name' => 'sl', ++ 'offset' => '56', ++ 'type' => '761' ++ }, ++ '12' => { ++ 'name' => 'mtu_selector', ++ 'offset' => '57', ++ 'type' => '761' ++ }, ++ '13' => { ++ 'name' => 'mtu', ++ 'offset' => '58', ++ 'type' => '761' ++ }, ++ '14' => { ++ 'name' => 'rate_selector', ++ 'offset' => '59', ++ 'type' => '761' ++ }, ++ '15' => { ++ 'name' => 'rate', ++ 'offset' => '60', ++ 'type' => '761' ++ }, ++ '16' => { ++ 'name' => 'packet_life_time_selector', ++ 'offset' => '61', ++ 'type' => '761' ++ }, ++ '17' => { ++ 'name' => 'packet_life_time', ++ 'offset' => '62', ++ 'type' => '761' ++ }, ++ '18' => { ++ 'name' => 'preference', ++ 'offset' => '63', ++ 'type' => '761' ++ }, ++ '2' => { ++ 'name' => 'dlid', ++ 'offset' => '32', ++ 'type' => '1976' ++ }, ++ '3' => { ++ 'name' => 'slid', ++ 'offset' => '34', ++ 'type' => '1976' ++ }, ++ '4' => { ++ 'name' => 'raw_traffic', ++ 'offset' => '36', ++ 'type' => '130' ++ }, ++ '5' => { ++ 'name' => 'flow_label', ++ 'offset' => '40', ++ 'type' => '1988' ++ }, ++ '6' => { ++ 'name' => 'hop_limit', ++ 'offset' => '44', ++ 'type' => '761' ++ }, ++ '7' => { ++ 'name' => 'traffic_class', ++ 'offset' => '45', ++ 'type' => '761' ++ }, ++ '8' => { ++ 'name' => 'reversible', ++ 'offset' => '48', ++ 'type' => '130' ++ }, ++ '9' => { ++ 'name' => 'numb_path', ++ 'offset' => '52', ++ 'type' => '761' ++ } ++ }, ++ 'Name' => 'struct ibv_sa_path_rec', ++ 'Size' => '64', ++ 'Type' => 'Struct' ++ }, ++ '31863' => { ++ 'Header' => undef, ++ 'Line' => '50', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'RDMA_CM_EVENT_ADDR_RESOLVED', ++ 'value' => '0' ++ }, ++ '1' => { ++ 'name' => 'RDMA_CM_EVENT_ADDR_ERROR', ++ 'value' => '1' ++ }, ++ '10' => { ++ 'name' => 'RDMA_CM_EVENT_DISCONNECTED', ++ 'value' => '10' ++ }, ++ '11' => { ++ 'name' => 'RDMA_CM_EVENT_DEVICE_REMOVAL', ++ 'value' => '11' ++ }, ++ '12' => { ++ 'name' => 'RDMA_CM_EVENT_MULTICAST_JOIN', ++ 'value' => '12' ++ }, ++ '13' => { ++ 'name' => 'RDMA_CM_EVENT_MULTICAST_ERROR', ++ 'value' => '13' ++ }, ++ '14' => { ++ 'name' => 'RDMA_CM_EVENT_ADDR_CHANGE', ++ 'value' => '14' ++ }, ++ '15' => { ++ 'name' => 'RDMA_CM_EVENT_TIMEWAIT_EXIT', ++ 'value' => '15' ++ }, ++ '2' => { ++ 'name' => 'RDMA_CM_EVENT_ROUTE_RESOLVED', ++ 'value' => '2' ++ }, ++ '3' => { ++ 'name' => 'RDMA_CM_EVENT_ROUTE_ERROR', ++ 'value' => '3' ++ }, ++ '4' => { ++ 'name' => 'RDMA_CM_EVENT_CONNECT_REQUEST', ++ 'value' => '4' ++ }, ++ '5' => { ++ 'name' => 'RDMA_CM_EVENT_CONNECT_RESPONSE', ++ 'value' => '5' ++ }, ++ '6' => { ++ 'name' => 'RDMA_CM_EVENT_CONNECT_ERROR', ++ 'value' => '6' ++ }, ++ '7' => { ++ 'name' => 'RDMA_CM_EVENT_UNREACHABLE', ++ 'value' => '7' ++ }, ++ '8' => { ++ 'name' => 'RDMA_CM_EVENT_REJECTED', ++ 'value' => '8' ++ }, ++ '9' => { ++ 'name' => 'RDMA_CM_EVENT_ESTABLISHED', ++ 'value' => '9' ++ } ++ }, ++ 'Name' => 'enum rdma_cm_event_type', ++ 'Size' => '4', ++ 'Type' => 'Enum' ++ }, ++ '32024' => { ++ 'Header' => undef, ++ 'Line' => '88', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'sgid', ++ 'offset' => '0', ++ 'type' => '2355' ++ }, ++ '1' => { ++ 'name' => 'dgid', ++ 'offset' => '16', ++ 'type' => '2355' ++ }, ++ '2' => { ++ 'name' => 'pkey', ++ 'offset' => '32', ++ 'type' => '1976' ++ } ++ }, ++ 'Name' => 'struct rdma_ib_addr', ++ 'Size' => '40', ++ 'Type' => 'Struct' ++ }, ++ '32077' => { ++ 'Header' => undef, ++ 'Line' => '95', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'src_addr', ++ 'offset' => '0', ++ 'type' => '1174' ++ }, ++ '1' => { ++ 'name' => 'src_sin', ++ 'offset' => '0', ++ 'type' => '1668' ++ }, ++ '2' => { ++ 'name' => 'src_sin6', ++ 'offset' => '0', ++ 'type' => '1750' ++ }, ++ '3' => { ++ 'name' => 'src_storage', ++ 'offset' => '0', ++ 'type' => '16678' ++ } ++ }, ++ 'Size' => '128', ++ 'Type' => 'Union' ++ }, ++ '32135' => { ++ 'Header' => undef, ++ 'Line' => '101', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'dst_addr', ++ 'offset' => '0', ++ 'type' => '1174' ++ }, ++ '1' => { ++ 'name' => 'dst_sin', ++ 'offset' => '0', ++ 'type' => '1668' ++ }, ++ '2' => { ++ 'name' => 'dst_sin6', ++ 'offset' => '0', ++ 'type' => '1750' ++ }, ++ '3' => { ++ 'name' => 'dst_storage', ++ 'offset' => '0', ++ 'type' => '16678' ++ } ++ }, ++ 'Size' => '128', ++ 'Type' => 'Union' ++ }, ++ '32193' => { ++ 'Header' => undef, ++ 'Line' => '107', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'ibaddr', ++ 'offset' => '0', ++ 'type' => '32024' ++ } ++ }, ++ 'Size' => '40', ++ 'Type' => 'Union' ++ }, ++ '32215' => { ++ 'Header' => undef, ++ 'Line' => '94', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'unnamed0', ++ 'offset' => '0', ++ 'type' => '32077' ++ }, ++ '1' => { ++ 'name' => 'unnamed1', ++ 'offset' => '128', ++ 'type' => '32135' ++ }, ++ '2' => { ++ 'name' => 'addr', ++ 'offset' => '256', ++ 'type' => '32193' ++ } ++ }, ++ 'Name' => 'struct rdma_addr', ++ 'Size' => '296', ++ 'Type' => 'Struct' ++ }, ++ '32256' => { ++ 'Header' => undef, ++ 'Line' => '112', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'addr', ++ 'offset' => '0', ++ 'type' => '32215' ++ }, ++ '1' => { ++ 'name' => 'path_rec', ++ 'offset' => '296', ++ 'type' => '32312' ++ }, ++ '2' => { ++ 'name' => 'num_paths', ++ 'offset' => '304', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct rdma_route', ++ 'Size' => '312', ++ 'Type' => 'Struct' ++ }, ++ '32312' => { ++ 'BaseType' => '31341', ++ 'Name' => 'struct ibv_sa_path_rec*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '32318' => { ++ 'Header' => undef, ++ 'Line' => '118', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'fd', ++ 'offset' => '0', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct rdma_event_channel', ++ 'Size' => '4', ++ 'Type' => 'Struct' ++ }, ++ '32344' => { ++ 'Header' => undef, ++ 'Line' => '122', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'verbs', ++ 'offset' => '0', ++ 'type' => '19171' ++ }, ++ '1' => { ++ 'name' => 'channel', ++ 'offset' => '8', ++ 'type' => '32561' ++ }, ++ '10' => { ++ 'name' => 'recv_cq_channel', ++ 'offset' => '376', ++ 'type' => '26813' ++ }, ++ '11' => { ++ 'name' => 'recv_cq', ++ 'offset' => '384', ++ 'type' => '21306' ++ }, ++ '12' => { ++ 'name' => 'srq', ++ 'offset' => '392', ++ 'type' => '21626' ++ }, ++ '13' => { ++ 'name' => 'pd', ++ 'offset' => '400', ++ 'type' => '22902' ++ }, ++ '14' => { ++ 'name' => 'qp_type', ++ 'offset' => '408', ++ 'type' => '11187' ++ }, ++ '2' => { ++ 'name' => 'context', ++ 'offset' => '16', ++ 'type' => '71' ++ }, ++ '3' => { ++ 'name' => 'qp', ++ 'offset' => '24', ++ 'type' => '21508' ++ }, ++ '4' => { ++ 'name' => 'route', ++ 'offset' => '32', ++ 'type' => '32256' ++ }, ++ '5' => { ++ 'name' => 'ps', ++ 'offset' => '344', ++ 'type' => '2856' ++ }, ++ '6' => { ++ 'name' => 'port_num', ++ 'offset' => '348', ++ 'type' => '761' ++ }, ++ '7' => { ++ 'name' => 'event', ++ 'offset' => '352', ++ 'type' => '32645' ++ }, ++ '8' => { ++ 'name' => 'send_cq_channel', ++ 'offset' => '360', ++ 'type' => '26813' ++ }, ++ '9' => { ++ 'name' => 'send_cq', ++ 'offset' => '368', ++ 'type' => '21306' ++ } ++ }, ++ 'Name' => 'struct rdma_cm_id', ++ 'Size' => '416', ++ 'Type' => 'Struct' ++ }, ++ '32561' => { ++ 'BaseType' => '32318', ++ 'Name' => 'struct rdma_event_channel*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '32567' => { ++ 'Header' => undef, ++ 'Line' => '166', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'id', ++ 'offset' => '0', ++ 'type' => '32921' ++ }, ++ '1' => { ++ 'name' => 'listen_id', ++ 'offset' => '8', ++ 'type' => '32921' ++ }, ++ '2' => { ++ 'name' => 'event', ++ 'offset' => '16', ++ 'type' => '31863' ++ }, ++ '3' => { ++ 'name' => 'status', ++ 'offset' => '20', ++ 'type' => '130' ++ }, ++ '4' => { ++ 'name' => 'param', ++ 'offset' => '24', ++ 'type' => '32888' ++ } ++ }, ++ 'Name' => 'struct rdma_cm_event', ++ 'Size' => '80', ++ 'Type' => 'Struct' ++ }, ++ '32645' => { ++ 'BaseType' => '32567', ++ 'Name' => 'struct rdma_cm_event*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '32678' => { ++ 'Header' => undef, ++ 'Line' => '145', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'private_data', ++ 'offset' => '0', ++ 'type' => '1839' ++ }, ++ '1' => { ++ 'name' => 'private_data_len', ++ 'offset' => '8', ++ 'type' => '761' ++ }, ++ '2' => { ++ 'name' => 'responder_resources', ++ 'offset' => '9', ++ 'type' => '761' ++ }, ++ '3' => { ++ 'name' => 'initiator_depth', ++ 'offset' => '10', ++ 'type' => '761' ++ }, ++ '4' => { ++ 'name' => 'flow_control', ++ 'offset' => '11', ++ 'type' => '761' ++ }, ++ '5' => { ++ 'name' => 'retry_count', ++ 'offset' => '12', ++ 'type' => '761' ++ }, ++ '6' => { ++ 'name' => 'rnr_retry_count', ++ 'offset' => '13', ++ 'type' => '761' ++ }, ++ '7' => { ++ 'name' => 'srq', ++ 'offset' => '14', ++ 'type' => '761' ++ }, ++ '8' => { ++ 'name' => 'qp_num', ++ 'offset' => '16', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct rdma_conn_param', ++ 'Size' => '24', ++ 'Type' => 'Struct' ++ }, ++ '32809' => { ++ 'Header' => undef, ++ 'Line' => '158', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'private_data', ++ 'offset' => '0', ++ 'type' => '1839' ++ }, ++ '1' => { ++ 'name' => 'private_data_len', ++ 'offset' => '8', ++ 'type' => '761' ++ }, ++ '2' => { ++ 'name' => 'ah_attr', ++ 'offset' => '16', ++ 'type' => '23109' ++ }, ++ '3' => { ++ 'name' => 'qp_num', ++ 'offset' => '48', ++ 'type' => '785' ++ }, ++ '4' => { ++ 'name' => 'qkey', ++ 'offset' => '52', ++ 'type' => '785' ++ } ++ }, ++ 'Name' => 'struct rdma_ud_param', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '32888' => { ++ 'Header' => undef, ++ 'Line' => '171', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'conn', ++ 'offset' => '0', ++ 'type' => '32678' ++ }, ++ '1' => { ++ 'name' => 'ud', ++ 'offset' => '0', ++ 'type' => '32809' ++ } ++ }, ++ 'Size' => '56', ++ 'Type' => 'Union' ++ }, ++ '32921' => { ++ 'BaseType' => '32344', ++ 'Name' => 'struct rdma_cm_id*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '33221' => { ++ 'Header' => undef, ++ 'Line' => '214', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'comp_mask', ++ 'offset' => '0', ++ 'type' => '785' ++ }, ++ '1' => { ++ 'name' => 'join_flags', ++ 'offset' => '4', ++ 'type' => '785' ++ }, ++ '2' => { ++ 'name' => 'addr', ++ 'offset' => '8', ++ 'type' => '1833' ++ } ++ }, ++ 'Name' => 'struct rdma_cm_join_mc_attr_ex', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '34020' => { ++ 'BaseType' => '24150', ++ 'Name' => 'struct ibv_qp_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34026' => { ++ 'BaseType' => '23278', ++ 'Name' => 'struct ibv_srq_init_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34032' => { ++ 'BaseType' => '25015', ++ 'Name' => 'struct ibv_qp_attr*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '34038' => { ++ 'BaseType' => '26700', ++ 'Name' => 'struct ibv_ece*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '4113' => { ++ 'BaseType' => '130', ++ 'Name' => 'int*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '43365' => { ++ 'BaseType' => '32921', ++ 'Name' => 'struct rdma_cm_id**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '45' => { ++ 'BaseType' => '57', ++ 'Header' => undef, ++ 'Line' => '209', ++ 'Name' => 'size_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '4547' => { ++ 'BaseType' => '1214', ++ 'Name' => 'struct sockaddr const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '48543' => { ++ 'BaseType' => '32645', ++ 'Name' => 'struct rdma_cm_event**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '48812' => { ++ 'BaseType' => '32678', ++ 'Name' => 'struct rdma_conn_param*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '51281' => { ++ 'BaseType' => '33221', ++ 'Name' => 'struct rdma_cm_join_mc_attr_ex*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '57' => { ++ 'Name' => 'unsigned long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '64' => { ++ 'Name' => 'unsigned int', ++ 'Size' => '4', ++ 'Type' => 'Intrinsic' ++ }, ++ '71' => { ++ 'BaseType' => '1', ++ 'Name' => 'void*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '72119' => { ++ 'BaseType' => '19171', ++ 'Name' => 'struct ibv_context**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '727' => { ++ 'BaseType' => '192', ++ 'Header' => undef, ++ 'Line' => '77', ++ 'Name' => 'ssize_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '750' => { ++ 'BaseType' => '222', ++ 'Name' => 'char const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '761' => { ++ 'BaseType' => '99', ++ 'Header' => undef, ++ 'Line' => '24', ++ 'Name' => 'uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ }, ++ '773' => { ++ 'BaseType' => '118', ++ 'Header' => undef, ++ 'Line' => '25', ++ 'Name' => 'uint16_t', ++ 'Size' => '2', ++ 'Type' => 'Typedef' ++ }, ++ '78' => { ++ 'Name' => 'unsigned char', ++ 'Size' => '1', ++ 'Type' => 'Intrinsic' ++ }, ++ '785' => { ++ 'BaseType' => '137', ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Name' => 'uint32_t', ++ 'Size' => '4', ++ 'Type' => 'Typedef' ++ }, ++ '7872' => { ++ 'BaseType' => '3116', ++ 'Name' => 'struct rdma_addrinfo**', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '7878' => { ++ 'BaseType' => '3111', ++ 'Name' => 'struct rdma_addrinfo const*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '797' => { ++ 'BaseType' => '156', ++ 'Header' => undef, ++ 'Line' => '27', ++ 'Name' => 'uint64_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '81991' => { ++ 'BaseType' => '149', ++ 'Header' => undef, ++ 'Line' => '162', ++ 'Name' => '__suseconds_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '82081' => { ++ 'BaseType' => '168', ++ 'Header' => undef, ++ 'Line' => '85', ++ 'Name' => 'off_t', ++ 'Size' => '8', ++ 'Type' => 'Typedef' ++ }, ++ '82129' => { ++ 'Header' => undef, ++ 'Line' => '8', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'tv_sec', ++ 'offset' => '0', ++ 'type' => '15524' ++ }, ++ '1' => { ++ 'name' => 'tv_usec', ++ 'offset' => '8', ++ 'type' => '81991' ++ } ++ }, ++ 'Name' => 'struct timeval', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '82956' => { ++ 'Header' => undef, ++ 'Line' => '26', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'iov_base', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'iov_len', ++ 'offset' => '8', ++ 'type' => '45' ++ } ++ }, ++ 'Name' => 'struct iovec', ++ 'Size' => '16', ++ 'Type' => 'Struct' ++ }, ++ '82996' => { ++ 'BaseType' => '82956', ++ 'Name' => 'struct iovec const', ++ 'Size' => '16', ++ 'Type' => 'Const' ++ }, ++ '83402' => { ++ 'Header' => undef, ++ 'Line' => '257', ++ 'Memb' => { ++ '0' => { ++ 'name' => 'msg_name', ++ 'offset' => '0', ++ 'type' => '71' ++ }, ++ '1' => { ++ 'name' => 'msg_namelen', ++ 'offset' => '8', ++ 'type' => '1073' ++ }, ++ '2' => { ++ 'name' => 'msg_iov', ++ 'offset' => '16', ++ 'type' => '83520' ++ }, ++ '3' => { ++ 'name' => 'msg_iovlen', ++ 'offset' => '24', ++ 'type' => '45' ++ }, ++ '4' => { ++ 'name' => 'msg_control', ++ 'offset' => '32', ++ 'type' => '71' ++ }, ++ '5' => { ++ 'name' => 'msg_controllen', ++ 'offset' => '40', ++ 'type' => '45' ++ }, ++ '6' => { ++ 'name' => 'msg_flags', ++ 'offset' => '48', ++ 'type' => '130' ++ } ++ }, ++ 'Name' => 'struct msghdr', ++ 'Size' => '56', ++ 'Type' => 'Struct' ++ }, ++ '83515' => { ++ 'BaseType' => '83402', ++ 'Name' => 'struct msghdr const', ++ 'Size' => '56', ++ 'Type' => 'Const' ++ }, ++ '83520' => { ++ 'BaseType' => '82956', ++ 'Name' => 'struct iovec*', ++ 'Size' => '8', ++ 'Type' => 'Pointer' ++ }, ++ '85' => { ++ 'Name' => 'unsigned short', ++ 'Size' => '2', ++ 'Type' => 'Intrinsic' ++ }, ++ '985' => { ++ 'Name' => 'unsigned long long', ++ 'Size' => '8', ++ 'Type' => 'Intrinsic' ++ }, ++ '99' => { ++ 'BaseType' => '78', ++ 'Header' => undef, ++ 'Line' => '38', ++ 'Name' => '__uint8_t', ++ 'Size' => '1', ++ 'Type' => 'Typedef' ++ } ++ }, ++ 'UndefinedSymbols' => { ++ 'librdmacm.so.1.3.41.0' => { ++ '_ITM_deregisterTMCloneTable' => 0, ++ '_ITM_registerTMCloneTable' => 0, ++ '__asprintf_chk@GLIBC_2.8' => 0, ++ '__cxa_finalize@GLIBC_2.2.5' => 0, ++ '__errno_location@GLIBC_2.2.5' => 0, ++ '__fdelt_chk@GLIBC_2.15' => 0, ++ '__fxstat@GLIBC_2.2.5' => 0, ++ '__gmon_start__' => 0, ++ '__isoc99_fscanf@GLIBC_2.7' => 0, ++ '__memcpy_chk@GLIBC_2.3.4' => 0, ++ '__stack_chk_fail@GLIBC_2.4' => 0, ++ '__syslog_chk@GLIBC_2.4' => 0, ++ '__tls_get_addr@GLIBC_2.3' => 0, ++ 'bind@GLIBC_2.2.5' => 0, ++ 'calloc@GLIBC_2.2.5' => 0, ++ 'clock_gettime@GLIBC_2.17' => 0, ++ 'close@GLIBC_2.2.5' => 0, ++ 'connect@GLIBC_2.2.5' => 0, ++ 'epoll_create@GLIBC_2.3.2' => 0, ++ 'epoll_ctl@GLIBC_2.3.2' => 0, ++ 'epoll_wait@GLIBC_2.3.2' => 0, ++ 'eventfd@GLIBC_2.7' => 0, ++ 'fclose@GLIBC_2.2.5' => 0, ++ 'fcntl@GLIBC_2.2.5' => 0, ++ 'fopen@GLIBC_2.2.5' => 0, ++ 'free@GLIBC_2.2.5' => 0, ++ 'freeaddrinfo@GLIBC_2.2.5' => 0, ++ 'getaddrinfo@GLIBC_2.2.5' => 0, ++ 'getenv@GLIBC_2.2.5' => 0, ++ 'getpeername@GLIBC_2.2.5' => 0, ++ 'getrandom@GLIBC_2.25' => 0, ++ 'getsockname@GLIBC_2.2.5' => 0, ++ 'ibv_ack_cq_events@IBVERBS_1.1' => 0, ++ 'ibv_alloc_pd@IBVERBS_1.1' => 0, ++ 'ibv_attach_mcast@IBVERBS_1.1' => 0, ++ 'ibv_close_device@IBVERBS_1.1' => 0, ++ 'ibv_copy_ah_attr_from_kern@IBVERBS_1.1' => 0, ++ 'ibv_copy_path_rec_from_kern@IBVERBS_1.0' => 0, ++ 'ibv_copy_qp_attr_from_kern@IBVERBS_1.0' => 0, ++ 'ibv_create_ah@IBVERBS_1.1' => 0, ++ 'ibv_create_comp_channel@IBVERBS_1.0' => 0, ++ 'ibv_create_cq@IBVERBS_1.1' => 0, ++ 'ibv_create_qp@IBVERBS_1.1' => 0, ++ 'ibv_create_srq@IBVERBS_1.1' => 0, ++ 'ibv_dealloc_pd@IBVERBS_1.1' => 0, ++ 'ibv_dereg_mr@IBVERBS_1.1' => 0, ++ 'ibv_destroy_ah@IBVERBS_1.1' => 0, ++ 'ibv_destroy_comp_channel@IBVERBS_1.0' => 0, ++ 'ibv_destroy_cq@IBVERBS_1.1' => 0, ++ 'ibv_destroy_qp@IBVERBS_1.1' => 0, ++ 'ibv_destroy_srq@IBVERBS_1.1' => 0, ++ 'ibv_detach_mcast@IBVERBS_1.1' => 0, ++ 'ibv_free_device_list@IBVERBS_1.1' => 0, ++ 'ibv_get_cq_event@IBVERBS_1.1' => 0, ++ 'ibv_get_device_guid@IBVERBS_1.1' => 0, ++ 'ibv_get_device_index@IBVERBS_1.9' => 0, ++ 'ibv_get_device_list@IBVERBS_1.1' => 0, ++ 'ibv_get_pkey_index@IBVERBS_1.5' => 0, ++ 'ibv_get_sysfs_path@IBVERBS_1.0' => 0, ++ 'ibv_modify_qp@IBVERBS_1.1' => 0, ++ 'ibv_open_device@IBVERBS_1.1' => 0, ++ 'ibv_query_device@IBVERBS_1.1' => 0, ++ 'ibv_query_ece@IBVERBS_1.10' => 0, ++ 'ibv_query_gid@IBVERBS_1.1' => 0, ++ 'ibv_query_port@IBVERBS_1.1' => 0, ++ 'ibv_read_sysfs_file@IBVERBS_1.0' => 0, ++ 'ibv_reg_mr@IBVERBS_1.1' => 0, ++ 'ibv_set_ece@IBVERBS_1.10' => 0, ++ 'in6addr_any@GLIBC_2.2.5' => 0, ++ 'in6addr_loopback@GLIBC_2.2.5' => 0, ++ 'inotify_add_watch@GLIBC_2.4' => 0, ++ 'inotify_init1@GLIBC_2.9' => 0, ++ 'malloc@GLIBC_2.2.5' => 0, ++ 'memcmp@GLIBC_2.2.5' => 0, ++ 'memcpy@GLIBC_2.14' => 0, ++ 'memset@GLIBC_2.2.5' => 0, ++ 'nl_connect' => 0, ++ 'nl_recvmsgs_default' => 0, ++ 'nl_send_auto' => 0, ++ 'nl_send_simple' => 0, ++ 'nl_socket_alloc' => 0, ++ 'nl_socket_disable_auto_ack' => 0, ++ 'nl_socket_disable_msg_peek' => 0, ++ 'nl_socket_free' => 0, ++ 'nl_socket_modify_cb' => 0, ++ 'nl_socket_modify_err_cb' => 0, ++ 'nla_get_string' => 0, ++ 'nla_get_u64' => 0, ++ 'nla_put' => 0, ++ 'nlmsg_alloc_simple' => 0, ++ 'nlmsg_free' => 0, ++ 'nlmsg_hdr' => 0, ++ 'nlmsg_parse' => 0, ++ 'open@GLIBC_2.2.5' => 0, ++ 'poll@GLIBC_2.2.5' => 0, ++ 'posix_memalign@GLIBC_2.2.5' => 0, ++ 'pthread_cond_destroy@GLIBC_2.3.2' => 0, ++ 'pthread_cond_init@GLIBC_2.3.2' => 0, ++ 'pthread_cond_signal@GLIBC_2.3.2' => 0, ++ 'pthread_cond_wait@GLIBC_2.3.2' => 0, ++ 'pthread_create@GLIBC_2.2.5' => 0, ++ 'pthread_join@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_destroy@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_init@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_lock@GLIBC_2.2.5' => 0, ++ 'pthread_mutex_unlock@GLIBC_2.2.5' => 0, ++ 'qsort@GLIBC_2.2.5' => 0, ++ 'rand_r@GLIBC_2.2.5' => 0, ++ 'read@GLIBC_2.2.5' => 0, ++ 'recv@GLIBC_2.2.5' => 0, ++ 'recvfrom@GLIBC_2.2.5' => 0, ++ 'sched_yield@GLIBC_2.2.5' => 0, ++ 'sem_destroy@GLIBC_2.2.5' => 0, ++ 'sem_init@GLIBC_2.2.5' => 0, ++ 'sem_post@GLIBC_2.2.5' => 0, ++ 'sem_wait@GLIBC_2.2.5' => 0, ++ 'send@GLIBC_2.2.5' => 0, ++ 'sendmsg@GLIBC_2.2.5' => 0, ++ 'setsockopt@GLIBC_2.2.5' => 0, ++ 'shutdown@GLIBC_2.2.5' => 0, ++ 'snprintf@GLIBC_2.2.5' => 0, ++ 'socket@GLIBC_2.2.5' => 0, ++ 'socketpair@GLIBC_2.2.5' => 0, ++ 'strdup@GLIBC_2.2.5' => 0, ++ 'strlen@GLIBC_2.2.5' => 0, ++ 'strtol@GLIBC_2.2.5' => 0, ++ 'sysconf@GLIBC_2.2.5' => 0, ++ 'tdelete@GLIBC_2.2.5' => 0, ++ 'tdestroy@GLIBC_2.2.5' => 0, ++ 'tfind@GLIBC_2.2.5' => 0, ++ 'time@GLIBC_2.2.5' => 0, ++ 'timerfd_create@GLIBC_2.8' => 0, ++ 'timerfd_settime@GLIBC_2.8' => 0, ++ 'tsearch@GLIBC_2.2.5' => 0, ++ 'write@GLIBC_2.2.5' => 0 ++ } ++ }, ++ 'WordSize' => '8' ++ }; +-- +2.34.1 + diff --git a/0017-mlx5-Adjust-Crypto-BSF-size-if-signature-is-used.patch b/0017-mlx5-Adjust-Crypto-BSF-size-if-signature-is-used.patch new file mode 100644 index 0000000000000000000000000000000000000000..f0e5a871d77da9e70ef226f2251c9ca06617c4e5 --- /dev/null +++ b/0017-mlx5-Adjust-Crypto-BSF-size-if-signature-is-used.patch @@ -0,0 +1,46 @@ +From 349d850df17e2287bd6b02766e30be79b701cd6e Mon Sep 17 00:00:00 2001 +From: Maher Sanalla +Date: Sun, 19 Jun 2022 13:34:23 +0300 +Subject: mlx5: Adjust Crypto BSF size if signature is used + +[ Upstream commit b38f3439a983f42dd5ac8f93f0813a969720225f ] + +When a Mkey is configured with crypto and signature offload, the crypto +BSF size and signature BSF size should both be set to 128 Bytes. +Currently, when building the crypto BSF, we do not take into account +if signature mode is configured or not, and we set the crypto BSF size to +64 Bytes. + +The situation above does not affect crypto configuration on CX6 HCA, +but will obstruct crypto traffic in more recent HCA's such as +CX6Dx and onwards. + +Thus, check if signature mode is configured when building crypto bsf, +and set the bsf size accordingly. + +Fixes: b5f0a5875380 ("mlx5: Add crypto setter for MKey") +Signed-off-by: Maher Sanalla +Reviewed-by: Avihai Horon +Signed-off-by: Yishai Hadas +Signed-off-by: Nicolas Morey-Chaisemartin +--- + providers/mlx5/qp.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/providers/mlx5/qp.c b/providers/mlx5/qp.c +index d0e5a49..f9f3d1a 100644 +--- a/providers/mlx5/qp.c ++++ b/providers/mlx5/qp.c +@@ -2414,7 +2414,8 @@ static int mlx5_umr_fill_crypto_bsf(struct mlx5_crypto_bsf *crypto_bsf, + + memset(crypto_bsf, 0, sizeof(*crypto_bsf)); + +- crypto_bsf->bsf_size_type |= MLX5_BSF_SIZE_WITH_INLINE ++ crypto_bsf->bsf_size_type |= (block ? MLX5_BSF_SIZE_SIG_AND_CRYPTO : ++ MLX5_BSF_SIZE_WITH_INLINE) + << MLX5_BSF_SIZE_SHIFT; + crypto_bsf->bsf_size_type |= MLX5_BSF_TYPE_CRYPTO; + order = get_crypto_order(attr->encrypt_on_tx, +-- +2.34.1 + diff --git a/0018-mlx5-DR-Fix-missing-comma-in-matcher-builder-dump-li.patch b/0018-mlx5-DR-Fix-missing-comma-in-matcher-builder-dump-li.patch new file mode 100644 index 0000000000000000000000000000000000000000..ecef7d696f0b3fe2d846132a0984b51eeafa7505 --- /dev/null +++ b/0018-mlx5-DR-Fix-missing-comma-in-matcher-builder-dump-li.patch @@ -0,0 +1,34 @@ +From 202637191a96aa1b8f1ee841d71ac8abdfad82bc Mon Sep 17 00:00:00 2001 +From: Muhammad Sammar +Date: Tue, 21 Jun 2022 12:30:39 +0300 +Subject: mlx5: DR, Fix missing comma in matcher builder dump line + +[ Upstream commit f50b33a69f12024d0b998d5d5062656a6aee6a92 ] + +Add missing comma to matcher builder dump line. + +Fixes: 6a1f3b4baa2e ("mlx5: Add support for dr_matcher to the steering dump API") +Reviewed-by: Erez Shitrit +Signed-off-by: Muhammad Sammar +Signed-off-by: Yishai Hadas +Signed-off-by: Nicolas Morey-Chaisemartin +--- + providers/mlx5/dr_dbg.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/providers/mlx5/dr_dbg.c b/providers/mlx5/dr_dbg.c +index 1e82e25..62e3f36 100644 +--- a/providers/mlx5/dr_dbg.c ++++ b/providers/mlx5/dr_dbg.c +@@ -410,7 +410,7 @@ static int dr_dump_matcher_builder(FILE *f, struct dr_ste_build *builder, + bool is_match = builder->htbl_type == DR_STE_HTBL_TYPE_MATCH; + int ret; + +- ret = fprintf(f, "%d,0x%" PRIx64 "%d,%d,0x%x,%d\n", ++ ret = fprintf(f, "%d,0x%" PRIx64 ",%d,%d,0x%x,%d\n", + DR_DUMP_REC_TYPE_MATCHER_BUILDER, + matcher_id, + index, +-- +2.34.1 + diff --git a/0019-Install-xprtrdma-svcrdma-kmods-in-redhat-suse-dracut.patch b/0019-Install-xprtrdma-svcrdma-kmods-in-redhat-suse-dracut.patch new file mode 100644 index 0000000000000000000000000000000000000000..5e9510ff845be8fd725a34de4dc795794e7f8cd4 --- /dev/null +++ b/0019-Install-xprtrdma-svcrdma-kmods-in-redhat-suse-dracut.patch @@ -0,0 +1,58 @@ +From f6aa0ecbe50a3141d6a3a03f0282df3ec96b76df Mon Sep 17 00:00:00 2001 +From: Benjamin Gilbert +Date: Tue, 16 Aug 2022 23:20:45 -0400 +Subject: Install xprtrdma/svcrdma kmods in redhat/suse dracut modules + +[ Upstream commit aa40d6dab34d2a465e520ddb13858bd47c7b1c06 ] + +The rdma dracut module installs udev rules that can cause +rdma-load-modules@rdma.service to load kernel modules listed in rdma.conf. +That file mentions the xprtrdma and svcrdma modules (both of which are +aliases for rpcrdma in kernel 5.18) but the dracut module doesn't install +them in the initrd. If they're not installed by other means, this causes +warnings in the journal: + + systemd-modules-load[...]: Failed to find module 'xprtrdma' + systemd-modules-load[...]: Failed to find module 'svcrdma' + +Before systemd 244, it also causes rdma-load-modules@rdma.service to fail +entirely. + +Fix by explicitly installing those modules in the initrd. + +See also https://bugzilla.redhat.com/show_bug.cgi?id=2117375. + +Fixes: 8bb38f6cb1b2 ("redhat: update dracut setting") +Fixes: 775241089e26 ("suse: fix dracut support") +Signed-off-by: Benjamin Gilbert +Signed-off-by: Nicolas Morey-Chaisemartin +--- + redhat/rdma.modules-setup.sh | 2 +- + suse/module-setup.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/redhat/rdma.modules-setup.sh b/redhat/rdma.modules-setup.sh +index 1dabb5d..4dab750 100644 +--- a/redhat/rdma.modules-setup.sh ++++ b/redhat/rdma.modules-setup.sh +@@ -29,5 +29,5 @@ install() { + + installkernel() { + hostonly='' instmods =drivers/infiniband =drivers/net/ethernet/mellanox =drivers/net/ethernet/chelsio =drivers/net/ethernet/cisco =drivers/net/ethernet/emulex =drivers/target +- hostonly='' instmods crc-t10dif crct10dif_common ++ hostonly='' instmods crc-t10dif crct10dif_common xprtrdma svcrdma + } +diff --git a/suse/module-setup.sh b/suse/module-setup.sh +index 26419bf..1e5c517 100644 +--- a/suse/module-setup.sh ++++ b/suse/module-setup.sh +@@ -27,5 +27,5 @@ install() { + + installkernel() { + hostonly='' instmods =drivers/infiniband =drivers/net/ethernet/mellanox =drivers/net/ethernet/chelsio =drivers/net/ethernet/cisco =drivers/net/ethernet/emulex =drivers/target +- hostonly='' instmods crc-t10dif crct10dif_common ++ hostonly='' instmods crc-t10dif crct10dif_common xprtrdma svcrdma + } +-- +2.34.1 + diff --git a/0020-providers-irdma-Explicitly-set-QP-modify-attributes-.patch b/0020-providers-irdma-Explicitly-set-QP-modify-attributes-.patch new file mode 100644 index 0000000000000000000000000000000000000000..108b6e482288a0afab92a578a74e0d56580f5a41 --- /dev/null +++ b/0020-providers-irdma-Explicitly-set-QP-modify-attributes-.patch @@ -0,0 +1,85 @@ +From 94b468fad35b00bd43d28b9e680a4921baaf75c4 Mon Sep 17 00:00:00 2001 +From: Sindhu-Devale +Date: Thu, 8 Sep 2022 15:44:12 -0400 +Subject: providers/irdma: Explicitly set QP modify attributes for reflush + +[ Upstream commit 1ffbbce65e60ee031be70a2bfb6ec319306e4378 ] + +irdma issues a reflush via a modify QP to ERROR op to report completions for +WR's posted once the QP is in error state. + +However, this reflush modify attributes is incorrectly keyed off the last QP +QP attributes by an application which might or might not be a modify to error. +In the later case, a flush WQE is missed. + +Explicitly set the attr.qp_state and attr_mask during a reflush modify +to move the QP to error state once its in error state. Remove ibv_qp +attributes from irdma_uqp struct + +Fixes: 14a0fc8 ("rdma-core/irdma: Implement device supported verb APIs") +Signed-off-by: Shiraz Saleem +Signed-off-by: Tatyana Nikolova +Signed-off-by: Sindhu-Devale +Signed-off-by: Nicolas Morey-Chaisemartin +--- + providers/irdma/umain.h | 2 -- + providers/irdma/uverbs.c | 9 +++------ + 2 files changed, 3 insertions(+), 8 deletions(-) + +diff --git a/providers/irdma/umain.h b/providers/irdma/umain.h +index 9e802fd..109e2f1 100644 +--- a/providers/irdma/umain.h ++++ b/providers/irdma/umain.h +@@ -88,7 +88,6 @@ struct irdma_ucq { + + struct irdma_uqp { + struct ibv_qp ibv_qp; +- struct ibv_qp_attr attr; + struct irdma_ucq *send_cq; + struct irdma_ucq *recv_cq; + struct verbs_mr vmr; +@@ -103,7 +102,6 @@ struct irdma_uqp { + struct ibv_recv_wr *pend_rx_wr; + struct irdma_qp_uk qp; + enum ibv_qp_type qp_type; +- enum ibv_qp_attr_mask attr_mask; + struct irdma_sge *recv_sges; + }; + +diff --git a/providers/irdma/uverbs.c b/providers/irdma/uverbs.c +index 040b4ec..c2b326d 100644 +--- a/providers/irdma/uverbs.c ++++ b/providers/irdma/uverbs.c +@@ -1416,12 +1416,9 @@ int irdma_umodify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, int attr_mask) + struct irdma_uvcontext *iwctx; + struct irdma_uqp *iwuqp; + +- + iwuqp = container_of(qp, struct irdma_uqp, ibv_qp); + iwctx = container_of(qp->context, struct irdma_uvcontext, + ibv_ctx.context); +- iwuqp->attr_mask = attr_mask; +- memcpy(&iwuqp->attr, attr, sizeof(iwuqp->attr)); + + if (iwuqp->qp.qp_caps & IRDMA_PUSH_MODE && + attr_mask & IBV_QP_STATE && iwctx->uk_attrs.hw_rev > IRDMA_GEN_1) { +@@ -1464,13 +1461,13 @@ static void irdma_issue_flush(struct ibv_qp *qp, bool sq_flush, bool rq_flush) + { + struct ib_uverbs_ex_modify_qp_resp resp = {}; + struct irdma_umodify_qp cmd_ex = {}; +- struct irdma_uqp *iwuqp; ++ struct ibv_qp_attr attr = {}; + ++ attr.qp_state = IBV_QPS_ERR; + cmd_ex.sq_flush = sq_flush; + cmd_ex.rq_flush = rq_flush; +- iwuqp = container_of(qp, struct irdma_uqp, ibv_qp); + +- ibv_cmd_modify_qp_ex(qp, &iwuqp->attr, iwuqp->attr_mask, ++ ibv_cmd_modify_qp_ex(qp, &attr, IBV_QP_STATE, + &cmd_ex.ibv_cmd, sizeof(cmd_ex), + &resp, sizeof(resp)); + } +-- +2.34.1 + diff --git a/0021-providers-irdma-Use-s-g-array-in-post-send-only-when.patch b/0021-providers-irdma-Use-s-g-array-in-post-send-only-when.patch new file mode 100644 index 0000000000000000000000000000000000000000..be9d4af5104fe3ac22d50e5b93233b39ac916121 --- /dev/null +++ b/0021-providers-irdma-Use-s-g-array-in-post-send-only-when.patch @@ -0,0 +1,38 @@ +From 660ac56e1ee71a177554432e9b9994aea1bdd0d4 Mon Sep 17 00:00:00 2001 +From: Sindhu-Devale +Date: Thu, 8 Sep 2022 17:22:32 -0400 +Subject: providers/irdma: Use s/g array in post send only when its valid + +[ Upstream commit 7bc6e3b49cdac9776e740e9d886e3676524996f8 ] + +Send with invalidate verb call can pass in an +uninitialized s/g array with 0 sge's which is +filled into irdma WQE and causes a HW asynchronous event. + +Fix this by using the s/g array in irdma post send only when its valid. + +Fixes: 3bebdf5 ("rdma-core/irdma: Add user/kernel shared libraries") +Signed-off-by: Tatyana Nikolova tatyana.e.nikolova@intel.com +Signed-off-by: Sindhu-Devale +Signed-off-by: Nicolas Morey-Chaisemartin +--- + providers/irdma/uk.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/providers/irdma/uk.c b/providers/irdma/uk.c +index beda34b..43ea45a 100644 +--- a/providers/irdma/uk.c ++++ b/providers/irdma/uk.c +@@ -476,7 +476,8 @@ enum irdma_status_code irdma_uk_send(struct irdma_qp_uk *qp, + FIELD_PREP(IRDMAQPSQ_IMMDATA, info->imm_data)); + i = 0; + } else { +- qp->wqe_ops.iw_set_fragment(wqe, 0, op_info->sg_list, ++ qp->wqe_ops.iw_set_fragment(wqe, 0, ++ frag_cnt ? op_info->sg_list : NULL, + qp->swqe_polarity); + i = 1; + } +-- +2.34.1 + diff --git a/0022-providers-irdma-Report-correct-WC-errors.patch b/0022-providers-irdma-Report-correct-WC-errors.patch new file mode 100644 index 0000000000000000000000000000000000000000..97f4292db59acade2d535749e879c07afa603fb6 --- /dev/null +++ b/0022-providers-irdma-Report-correct-WC-errors.patch @@ -0,0 +1,52 @@ +From b3dd8cf57c07055372f93aba508572274a59f7b5 Mon Sep 17 00:00:00 2001 +From: Sindhu-Devale +Date: Thu, 8 Sep 2022 17:39:40 -0400 +Subject: providers/irdma: Report correct WC errors + +[ Upstream commit 7f9761eb541413bf113a6ba841791bd5fd47872e ] + +Return specific WC errors for certain type of error +events. + +In particular, + +Return IBV_WC_REM_INV_REQ_ERR for an invalid +request related asynchronous event. + +Fixes: 14a0fc8 ("rdma-core/irdma: Implement device supported verb APIs") +Signed-off-by: Tatyana Nikolova +Signed-off-by: Sindhu-Devale +Signed-off-by: Nicolas Morey-Chaisemartin +--- + providers/irdma/user.h | 1 + + providers/irdma/uverbs.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/providers/irdma/user.h b/providers/irdma/user.h +index 2506d48..f8bbc27 100644 +--- a/providers/irdma/user.h ++++ b/providers/irdma/user.h +@@ -106,6 +106,7 @@ enum irdma_flush_opcode { + FLUSH_FATAL_ERR, + FLUSH_RETRY_EXC_ERR, + FLUSH_MW_BIND_ERR, ++ FLUSH_REM_INV_REQ_ERR, + }; + + enum irdma_cmpl_status { +diff --git a/providers/irdma/uverbs.c b/providers/irdma/uverbs.c +index c2b326d..1b36bca 100644 +--- a/providers/irdma/uverbs.c ++++ b/providers/irdma/uverbs.c +@@ -560,6 +560,8 @@ static enum ibv_wc_status irdma_flush_err_to_ib_wc_status(enum irdma_flush_opcod + return IBV_WC_RETRY_EXC_ERR; + case FLUSH_MW_BIND_ERR: + return IBV_WC_MW_BIND_ERR; ++ case FLUSH_REM_INV_REQ_ERR: ++ return IBV_WC_REM_INV_REQ_ERR; + case FLUSH_FATAL_ERR: + default: + return IBV_WC_FATAL_ERR; +-- +2.34.1 + diff --git a/0023-pyverbs-Increment-the-correct-rkey-in-test_qpex.patch b/0023-pyverbs-Increment-the-correct-rkey-in-test_qpex.patch new file mode 100644 index 0000000000000000000000000000000000000000..4f199203d79a7385aa8a8cba8bcd2dde52e0d920 --- /dev/null +++ b/0023-pyverbs-Increment-the-correct-rkey-in-test_qpex.patch @@ -0,0 +1,34 @@ +From ef27ae99376e5b672c12e856fb72c2d94d8d2cf5 Mon Sep 17 00:00:00 2001 +From: Bob Pearson +Date: Thu, 19 May 2022 10:58:11 -0500 +Subject: pyverbs: Increment the correct rkey in test_qpex + +[ Upstream commit 0c4d91db686ef4e4364aae2514d22e8462335bd9 ] + +The local bind is manipulating the local rkey, not the server rkey. Bind +doesn't check that the high bits are correct so this was missed. + +Fixes: 9fca2824b5ec ("tests: Retrieve tests that generates mlx5 CQE errors") +Signed-off-by: Bob Pearson +Signed-off-by: Jason Gunthorpe +Signed-off-by: Nicolas Morey-Chaisemartin +--- + tests/test_qpex.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_qpex.py b/tests/test_qpex.py +index 8f3f338..a4c9991 100644 +--- a/tests/test_qpex.py ++++ b/tests/test_qpex.py +@@ -300,7 +300,7 @@ class QpExTestCase(RDMATestCase): + if ex.error_code == errno.EOPNOTSUPP: + raise unittest.SkipTest('Memory Window allocation is not supported') + raise ex +- new_key = inc_rkey(server.mr.rkey) ++ new_key = inc_rkey(mw.rkey) + server.qp.wr_bind_mw(mw, new_key, bind_info) + server.qp.wr_complete() + u.poll_cq(server.cq) +-- +2.34.1 + diff --git a/0024-mckey-Use-rdma_create_qp_ex-only-for-loopback-preven.patch b/0024-mckey-Use-rdma_create_qp_ex-only-for-loopback-preven.patch new file mode 100644 index 0000000000000000000000000000000000000000..7db091719cd287378c6f17f74d29c4ce9a1b9b38 --- /dev/null +++ b/0024-mckey-Use-rdma_create_qp_ex-only-for-loopback-preven.patch @@ -0,0 +1,88 @@ +From 080f7181a2b4d2316d03c702f65640d6e8b1031e Mon Sep 17 00:00:00 2001 +From: Kamal Heib +Date: Mon, 19 Sep 2022 11:39:15 -0400 +Subject: mckey: Use rdma_create_qp_ex only for loopback prevention + +[ Upstream commit 926a1158e33d78573859f5dfea399f7a7edcf11f ] + +As not all the providers support the rdma_create_qp_ex(), change the +code to use rdma_create_qp_ex() only when loopback prevention is requested. + +Fixes: 40806cc22936 ("rdma-core: Add support for multicast loopback prevention to mckey") +Signed-off-by: Kamal Heib +Signed-off-by: Nicolas Morey-Chaisemartin +--- + librdmacm/examples/mckey.c | 48 +++++++++++++++++++++++++------------- + 1 file changed, 32 insertions(+), 16 deletions(-) + +diff --git a/librdmacm/examples/mckey.c b/librdmacm/examples/mckey.c +index 7015ed2..6df53a2 100644 +--- a/librdmacm/examples/mckey.c ++++ b/librdmacm/examples/mckey.c +@@ -134,7 +134,8 @@ static int verify_test_params(struct cmatest_node *node) + static int init_node(struct cmatest_node *node) + { + struct ibv_qp_init_attr_ex init_qp_attr_ex; +- int cqe, ret; ++ struct ibv_qp_init_attr init_qp_attr; ++ int cqe, ret = 0; + + node->pd = ibv_alloc_pd(node->cma_id->verbs); + if (!node->pd) { +@@ -151,23 +152,38 @@ static int init_node(struct cmatest_node *node) + goto out; + } + +- memset(&init_qp_attr_ex, 0, sizeof(init_qp_attr_ex)); +- init_qp_attr_ex.cap.max_send_wr = message_count ? message_count : 1; +- init_qp_attr_ex.cap.max_recv_wr = message_count ? message_count : 1; +- init_qp_attr_ex.cap.max_send_sge = 1; +- init_qp_attr_ex.cap.max_recv_sge = 1; +- init_qp_attr_ex.qp_context = node; +- init_qp_attr_ex.sq_sig_all = 0; +- init_qp_attr_ex.qp_type = IBV_QPT_UD; +- init_qp_attr_ex.send_cq = node->cq; +- init_qp_attr_ex.recv_cq = node->cq; +- +- init_qp_attr_ex.comp_mask = IBV_QP_INIT_ATTR_CREATE_FLAGS|IBV_QP_INIT_ATTR_PD; +- init_qp_attr_ex.pd = node->pd; +- if (!loopback) ++ memset(&init_qp_attr, 0, sizeof init_qp_attr); ++ init_qp_attr.cap.max_send_wr = message_count ? message_count : 1; ++ init_qp_attr.cap.max_recv_wr = message_count ? message_count : 1; ++ init_qp_attr.cap.max_send_sge = 1; ++ init_qp_attr.cap.max_recv_sge = 1; ++ init_qp_attr.qp_context = node; ++ init_qp_attr.sq_sig_all = 0; ++ init_qp_attr.qp_type = IBV_QPT_UD; ++ init_qp_attr.send_cq = node->cq; ++ init_qp_attr.recv_cq = node->cq; ++ ++ if (!loopback) { ++ memset(&init_qp_attr_ex, 0, sizeof(init_qp_attr_ex)); ++ init_qp_attr_ex.cap.max_send_wr = message_count ? message_count : 1; ++ init_qp_attr_ex.cap.max_recv_wr = message_count ? message_count : 1; ++ init_qp_attr_ex.cap.max_send_sge = 1; ++ init_qp_attr_ex.cap.max_recv_sge = 1; ++ init_qp_attr_ex.qp_context = node; ++ init_qp_attr_ex.sq_sig_all = 0; ++ init_qp_attr_ex.qp_type = IBV_QPT_UD; ++ init_qp_attr_ex.send_cq = node->cq; ++ init_qp_attr_ex.recv_cq = node->cq; ++ ++ init_qp_attr_ex.comp_mask = IBV_QP_INIT_ATTR_CREATE_FLAGS|IBV_QP_INIT_ATTR_PD; ++ init_qp_attr_ex.pd = node->pd; + init_qp_attr_ex.create_flags = IBV_QP_CREATE_BLOCK_SELF_MCAST_LB; + +- ret = rdma_create_qp_ex(node->cma_id, &init_qp_attr_ex); ++ ret = rdma_create_qp_ex(node->cma_id, &init_qp_attr_ex); ++ } else { ++ ret = rdma_create_qp(node->cma_id, node->pd, &init_qp_attr); ++ } ++ + if (ret) { + perror("mckey: unable to create QP"); + goto out; +-- +2.34.1 + diff --git a/0025-Fix-spelling-mistake-of-underlying.patch b/0025-Fix-spelling-mistake-of-underlying.patch new file mode 100644 index 0000000000000000000000000000000000000000..a3a5486f78b782079d90df82a147cae1a09efdcf --- /dev/null +++ b/0025-Fix-spelling-mistake-of-underlying.patch @@ -0,0 +1,35 @@ +From 3e56594215ccce88b89638ec16480d970776e3fb Mon Sep 17 00:00:00 2001 +From: Benjamin Drung +Date: Tue, 27 Sep 2022 12:01:14 +0200 +Subject: Fix spelling mistake of underlying + +[ Upstream commit 47f3a9fd706c4a407b7bbea12ffd16edd120883e ] + +Fixes: cc6eb6dd7b73 ("pyverbs: Add support for memory window creation") +Signed-off-by: Benjamin Drung +Signed-off-by: Nicolas Morey-Chaisemartin +--- + pyverbs/mr.pyx | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/pyverbs/mr.pyx b/pyverbs/mr.pyx +index 72bb181..e7f5f52 100644 +--- a/pyverbs/mr.pyx ++++ b/pyverbs/mr.pyx +@@ -314,10 +314,10 @@ cdef class MW(PyverbsCM): + + cpdef close(self): + """ +- Closes the underlaying C MW object. ++ Closes the underlying C MW object. + MW may be deleted directly or by deleting its PD, which leaves the +- Python object without the underlaying MW. +- Need to check that the underlaying MW wasn't dealloced before. ++ Python object without the underlying MW. ++ Need to check that the underlying MW wasn't dealloced before. + :return: None + """ + if self.mw is not NULL: +-- +2.34.1 + diff --git a/0026-rdma-ndd-disable-systemd-ProtectHostName-feature.patch b/0026-rdma-ndd-disable-systemd-ProtectHostName-feature.patch new file mode 100644 index 0000000000000000000000000000000000000000..247e2d5fc70e9958d9fa99cde3c9a445c98082fa --- /dev/null +++ b/0026-rdma-ndd-disable-systemd-ProtectHostName-feature.patch @@ -0,0 +1,33 @@ +From 1a2cad26263190460ed211329d040cb1da8d7ac2 Mon Sep 17 00:00:00 2001 +From: Nicolas Morey-Chaisemartin +Date: Thu, 13 Oct 2022 09:49:12 +0200 +Subject: rdma-ndd: disable systemd ProtectHostName feature + +[ Upstream commit 57637df8dd6b92b4bcd3e04cea476012901526d0 ] + +ProtectHostName prevents dynamic name changes to be noticed by the service. +This means that on a system with no static hostname, rdma-ndd is started with +a hostname 'localhost' and is not aware of new hostname retreived +through a DHCP lease. + +Fixes: 384b75b5f624 ("rdma-ndd: systemd hardening") +Signed-off-by: Nicolas Morey-Chaisemartin +--- + rdma-ndd/rdma-ndd.service.in | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/rdma-ndd/rdma-ndd.service.in b/rdma-ndd/rdma-ndd.service.in +index e3f8d11..368deec 100644 +--- a/rdma-ndd/rdma-ndd.service.in ++++ b/rdma-ndd/rdma-ndd.service.in +@@ -22,7 +22,6 @@ Restart=always + ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/rdma-ndd --systemd + ProtectSystem=full + ProtectHome=true +-ProtectHostname=true + ProtectKernelLogs=true + + # rdma-ndd is automatically wanted by udev when an RDMA device with a node description is present +-- +2.34.1 + diff --git a/0027-libhns-Add-RoH-device-IDs.patch b/0027-libhns-Add-RoH-device-IDs.patch new file mode 100644 index 0000000000000000000000000000000000000000..fe5956aff058fb7f14302cc5ccb123ed8889081c --- /dev/null +++ b/0027-libhns-Add-RoH-device-IDs.patch @@ -0,0 +1,33 @@ +From 0fcebb18e318cb0af02afa055f4357ba3002280b Mon Sep 17 00:00:00 2001 +From: Lang Cheng +Date: Fri, 9 Oct 2020 11:14:39 +0800 +Subject: libhns: Add RoH device IDs + +Add RoH device IDs. +0xA227 is a 100Gb/s RoH device, and it was mistakenly added before. +0xA22C is a 200Gb/s RoH device. +0xA22D is a 400Gb/s RoH device. + +Fixes:a0f8a069799e("libhns: Add new PCI device matching for hip08") + +Signed-off-by: Lang Cheng +--- + providers/hns/hns_roce_u.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 266e73e..60b3fe1 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -53,6 +53,8 @@ static const struct verbs_match_ent hca_table[] = { + VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA226, &hns_roce_u_hw_v2), + VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA227, &hns_roce_u_hw_v2), + VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA228, &hns_roce_u_hw_v2), ++ VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA22C, &hns_roce_u_hw_v2), ++ VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA22D, &hns_roce_u_hw_v2), + VERBS_PCI_MATCH(PCI_VENDOR_ID_HUAWEI, 0xA22F, &hns_roce_u_hw_v2), + {} + }; +-- +2.30.0 + diff --git a/0028-Update-kernel-headers.patch b/0028-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..90daaf9ebc8cf2e45e246302e8fa828d436200d5 --- /dev/null +++ b/0028-Update-kernel-headers.patch @@ -0,0 +1,28 @@ +From 4050da82f772478e1ebbcc6bd1971ecfa07399ad Mon Sep 17 00:00:00 2001 +From: Guofeng Yue +Date: Mon, 17 Oct 2022 11:12:15 +0800 +Subject: Update kernel headers + +To commit ?? ("RDMA/hns: Pass mac type to user driver for RoH mode"). + +Signed-off-by: Guofeng Yue +--- + kernel-headers/rdma/hns-abi.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index 542be5e..9866c51 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -116,6 +116,8 @@ struct hns_roce_ib_alloc_ucontext_resp { + __u32 reserved; + __u32 config; + __u32 max_inline_data; ++ __u8 mac_type; ++ __u8 rsv1[7]; + }; + + struct hns_roce_ib_alloc_ucontext { +-- +2.30.0 + diff --git a/0029-libhns-Add-the-parsing-of-mac-type-in-RoH-mode.patch b/0029-libhns-Add-the-parsing-of-mac-type-in-RoH-mode.patch new file mode 100644 index 0000000000000000000000000000000000000000..4c82033a2a5fdc57848a7cef6b56ac8aec0b56e5 --- /dev/null +++ b/0029-libhns-Add-the-parsing-of-mac-type-in-RoH-mode.patch @@ -0,0 +1,79 @@ +From f4626313eea2c78a8fac4b007b08533371ce1501 Mon Sep 17 00:00:00 2001 +From: Guofeng Yue +Date: Tue, 13 Sep 2022 20:09:27 +0800 +Subject: libhns: Add the parsing of mac type in RoH mode + +After parsing the mac type as RoH mode, the user driver +needs to set the dmac field of ud wqe to 0xFF, the hardware +will recognize this field, and increase the recognition of +the IP field in RoH mode, which is used for the CM link +building function in user mode. + +Signed-off-by: Yangyang Li +Signed-off-by: Guofeng Yue +--- + providers/hns/hns_roce_u.c | 2 ++ + providers/hns/hns_roce_u.h | 6 ++++++ + providers/hns/hns_roce_u_hw_v2.c | 4 ++++ + 3 files changed, 12 insertions(+) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 60b3fe1..20e3698 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -121,6 +121,8 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + &resp.ibv_resp, sizeof(resp))) + goto err_free; + ++ hr_dev->mac_type = resp.mac_type; ++ + if (!resp.cqe_size) + context->cqe_size = HNS_ROCE_CQE_SIZE; + else if (resp.cqe_size <= HNS_ROCE_V3_CQE_SIZE) +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 8c1cb1e..623be79 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -153,11 +153,17 @@ + #define HNS_ROCE_SRQ_TABLE_BITS 8 + #define HNS_ROCE_SRQ_TABLE_SIZE BIT(HNS_ROCE_SRQ_TABLE_BITS) + ++enum { ++ HNAE3_MAC_ETH, ++ HNAE3_MAC_ROH, ++}; ++ + struct hns_roce_device { + struct verbs_device ibv_dev; + int page_size; + const struct hns_roce_u_hw *u_hw; + int hw_version; ++ uint8_t mac_type; + }; + + struct hns_roce_buf { +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index c652eea..b0c3109 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -1068,6 +1068,7 @@ static inline void enable_wqe(struct hns_roce_qp *qp, void *sq_wqe, + static int set_ud_wqe(void *wqe, struct hns_roce_qp *qp, struct ibv_send_wr *wr, + unsigned int nreq, struct hns_roce_sge_info *sge_info) + { ++ struct hns_roce_device *hr_dev = to_hr_dev(qp->verbs_qp.qp.context->device); + struct hns_roce_ah *ah = to_hr_ah(wr->wr.ud.ah); + struct hns_roce_ud_sq_wqe *ud_sq_wqe = wqe; + int ret = 0; +@@ -1092,6 +1093,9 @@ static int set_ud_wqe(void *wqe, struct hns_roce_qp *qp, struct ibv_send_wr *wr, + if (ret) + return ret; + ++ if (hr_dev->mac_type == HNAE3_MAC_ROH) ++ ud_sq_wqe->dmac[0] = 0xFF; ++ + ret = fill_ud_data_seg(ud_sq_wqe, qp, wr, sge_info); + if (ret) + return ret; +-- +2.30.0 + diff --git a/0030-libhns-Add-support-for-the-thread-domain-and-the-par.patch b/0030-libhns-Add-support-for-the-thread-domain-and-the-par.patch new file mode 100644 index 0000000000000000000000000000000000000000..57262073f12e69ff1db61e9d1e7314cf5b1be5d3 --- /dev/null +++ b/0030-libhns-Add-support-for-the-thread-domain-and-the-par.patch @@ -0,0 +1,835 @@ +From 812372fadc96c6c59d460d84cdc72d60014f220d Mon Sep 17 00:00:00 2001 +From: Yixing Liu +Date: Mon, 27 Jun 2022 14:52:04 +0800 +Subject: [PATCH rdma-core] libhns: Add support for the thread domain and the parent domain + +Internal locks will be disabled for queues under the +thread domain with the parent domain. + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I63NGA + +------------------------------------------------------------------ + +Signed-off-by: Yixing Liu +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.c | 5 +- + providers/hns/hns_roce_u.h | 75 ++++++++- + providers/hns/hns_roce_u_hw_v2.c | 77 ++++----- + providers/hns/hns_roce_u_verbs.c | 267 ++++++++++++++++++++++++++++--- + 4 files changed, 357 insertions(+), 67 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 266e73e..e3c72bb 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -67,7 +67,7 @@ static const struct verbs_context_ops hns_common_ops = { + .create_qp = hns_roce_u_create_qp, + .create_qp_ex = hns_roce_u_create_qp_ex, + .dealloc_mw = hns_roce_u_dealloc_mw, +- .dealloc_pd = hns_roce_u_free_pd, ++ .dealloc_pd = hns_roce_u_dealloc_pd, + .dereg_mr = hns_roce_u_dereg_mr, + .destroy_cq = hns_roce_u_destroy_cq, + .modify_cq = hns_roce_u_modify_cq, +@@ -88,6 +88,9 @@ static const struct verbs_context_ops hns_common_ops = { + .close_xrcd = hns_roce_u_close_xrcd, + .open_qp = hns_roce_u_open_qp, + .get_srq_num = hns_roce_u_get_srq_num, ++ .alloc_td = hns_roce_u_alloc_td, ++ .dealloc_td = hns_roce_u_dealloc_td, ++ .alloc_parent_domain = hns_roce_u_alloc_pad, + }; + + static uint32_t calc_table_shift(uint32_t entry_count, uint32_t size_shift) +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 8c1cb1e..8181da7 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -188,6 +188,11 @@ struct hns_roce_db_page { + unsigned long *bitmap; + }; + ++struct hns_roce_spinlock { ++ pthread_spinlock_t lock; ++ int need_lock; ++}; ++ + struct hns_roce_context { + struct verbs_context ibv_ctx; + void *uar; +@@ -222,15 +227,27 @@ struct hns_roce_context { + unsigned int max_inline_data; + }; + ++struct hns_roce_td { ++ struct ibv_td ibv_td; ++ atomic_int refcount; ++}; ++ + struct hns_roce_pd { + struct ibv_pd ibv_pd; + unsigned int pdn; ++ atomic_int refcount; ++ struct hns_roce_pd *protection_domain; ++}; ++ ++struct hns_roce_pad { ++ struct hns_roce_pd pd; ++ struct hns_roce_td *td; + }; + + struct hns_roce_cq { + struct verbs_cq verbs_cq; + struct hns_roce_buf buf; +- pthread_spinlock_t lock; ++ struct hns_roce_spinlock hr_lock; + unsigned int cqn; + unsigned int cq_depth; + unsigned int cons_index; +@@ -266,7 +283,7 @@ struct hns_roce_srq { + struct hns_roce_idx_que idx_que; + struct hns_roce_buf wqe_buf; + struct hns_roce_rinl_buf srq_rinl_buf; +- pthread_spinlock_t lock; ++ struct hns_roce_spinlock hr_lock; + unsigned long *wrid; + unsigned int srqn; + unsigned int wqe_cnt; +@@ -279,7 +296,7 @@ struct hns_roce_srq { + + struct hns_roce_wq { + unsigned long *wrid; +- pthread_spinlock_t lock; ++ struct hns_roce_spinlock hr_lock; + unsigned int wqe_cnt; + int max_post; + unsigned int head; +@@ -397,9 +414,35 @@ static inline struct hns_roce_context *to_hr_ctx(struct ibv_context *ibv_ctx) + return container_of(ibv_ctx, struct hns_roce_context, ibv_ctx.context); + } + ++static inline struct hns_roce_td *to_hr_td(struct ibv_td *ibv_td) ++{ ++ return container_of(ibv_td, struct hns_roce_td, ibv_td); ++} ++ ++/* to_hr_pd always returns the real hns_roce_pd obj. */ + static inline struct hns_roce_pd *to_hr_pd(struct ibv_pd *ibv_pd) + { +- return container_of(ibv_pd, struct hns_roce_pd, ibv_pd); ++ struct hns_roce_pd *pd = ++ container_of(ibv_pd, struct hns_roce_pd, ibv_pd); ++ ++ if (pd->protection_domain) ++ return pd->protection_domain; ++ ++ return pd; ++} ++ ++static inline struct hns_roce_pad *to_hr_pad(struct ibv_pd *ibv_pd) ++{ ++ struct hns_roce_pad *pad = ++ ibv_pd ? ++ container_of(ibv_pd, struct hns_roce_pad, pd.ibv_pd) : ++ NULL; ++ ++ if (pad && pad->pd.protection_domain) ++ return pad; ++ ++ /* Otherwise ibv_pd isn't a parent_domain */ ++ return NULL; + } + + static inline struct hns_roce_cq *to_hr_cq(struct ibv_cq *ibv_cq) +@@ -422,14 +465,35 @@ static inline struct hns_roce_ah *to_hr_ah(struct ibv_ah *ibv_ah) + return container_of(ibv_ah, struct hns_roce_ah, ibv_ah); + } + ++static inline int hns_roce_spin_lock(struct hns_roce_spinlock *hr_lock) ++{ ++ if (hr_lock->need_lock) ++ return pthread_spin_lock(&hr_lock->lock); ++ ++ return 0; ++} ++ ++static inline int hns_roce_spin_unlock(struct hns_roce_spinlock *hr_lock) ++{ ++ if (hr_lock->need_lock) ++ return pthread_spin_unlock(&hr_lock->lock); ++ ++ return 0; ++} ++ + int hns_roce_u_query_device(struct ibv_context *context, + const struct ibv_query_device_ex_input *input, + struct ibv_device_attr_ex *attr, size_t attr_size); + int hns_roce_u_query_port(struct ibv_context *context, uint8_t port, + struct ibv_port_attr *attr); + ++struct ibv_td *hns_roce_u_alloc_td(struct ibv_context *context, ++ struct ibv_td_init_attr *attr); ++int hns_roce_u_dealloc_td(struct ibv_td *ibv_td); ++struct ibv_pd *hns_roce_u_alloc_pad(struct ibv_context *context, ++ struct ibv_parent_domain_init_attr *attr); + struct ibv_pd *hns_roce_u_alloc_pd(struct ibv_context *context); +-int hns_roce_u_free_pd(struct ibv_pd *pd); ++int hns_roce_u_dealloc_pd(struct ibv_pd *pd); + + struct ibv_mr *hns_roce_u_reg_mr(struct ibv_pd *pd, void *addr, size_t length, + uint64_t hca_va, int access); +@@ -488,6 +552,7 @@ int hns_roce_u_close_xrcd(struct ibv_xrcd *ibv_xrcd); + int hns_roce_alloc_buf(struct hns_roce_buf *buf, unsigned int size, + int page_size); + void hns_roce_free_buf(struct hns_roce_buf *buf); ++void hns_roce_qp_spinlock_destroy(struct hns_roce_qp *qp); + + void hns_roce_free_qp_buf(struct hns_roce_qp *qp, struct hns_roce_context *ctx); + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index c652eea..80e836d 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -227,14 +227,14 @@ static void hns_roce_free_srq_wqe(struct hns_roce_srq *srq, uint16_t ind) + uint32_t bitmap_num; + int bit_num; + +- pthread_spin_lock(&srq->lock); ++ hns_roce_spin_lock(&srq->hr_lock); + + bitmap_num = ind / BIT_CNT_PER_LONG; + bit_num = ind % BIT_CNT_PER_LONG; + srq->idx_que.bitmap[bitmap_num] |= (1ULL << bit_num); + srq->idx_que.tail++; + +- pthread_spin_unlock(&srq->lock); ++ hns_roce_spin_unlock(&srq->hr_lock); + } + + static int get_srq_from_cqe(struct hns_roce_v2_cqe *cqe, +@@ -266,9 +266,9 @@ static int hns_roce_v2_wq_overflow(struct hns_roce_wq *wq, unsigned int nreq, + if (cur + nreq < wq->max_post) + return 0; + +- pthread_spin_lock(&cq->lock); ++ hns_roce_spin_lock(&cq->hr_lock); + cur = wq->head - wq->tail; +- pthread_spin_unlock(&cq->lock); ++ hns_roce_spin_unlock(&cq->hr_lock); + + return cur + nreq >= wq->max_post; + } +@@ -721,7 +721,7 @@ static int hns_roce_u_v2_poll_cq(struct ibv_cq *ibvcq, int ne, + int err = V2_CQ_OK; + int npolled; + +- pthread_spin_lock(&cq->lock); ++ hns_roce_spin_lock(&cq->hr_lock); + + for (npolled = 0; npolled < ne; ++npolled) { + err = hns_roce_poll_one(ctx, &qp, cq, wc + npolled); +@@ -736,7 +736,7 @@ static int hns_roce_u_v2_poll_cq(struct ibv_cq *ibvcq, int ne, + update_cq_db(ctx, cq); + } + +- pthread_spin_unlock(&cq->lock); ++ hns_roce_spin_unlock(&cq->hr_lock); + + return err == V2_CQ_POLL_ERR ? err : npolled; + } +@@ -1273,7 +1273,7 @@ int hns_roce_u_v2_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr, + return ret; + } + +- pthread_spin_lock(&qp->sq.lock); ++ hns_roce_spin_lock(&qp->sq.hr_lock); + + sge_info.start_idx = qp->next_sge; /* start index of extend sge */ + +@@ -1333,7 +1333,7 @@ out: + *(qp->sdb) = qp->sq.head & 0xffff; + } + +- pthread_spin_unlock(&qp->sq.lock); ++ hns_roce_spin_unlock(&qp->sq.hr_lock); + + if (ibvqp->state == IBV_QPS_ERR) { + attr.qp_state = IBV_QPS_ERR; +@@ -1426,7 +1426,7 @@ static int hns_roce_u_v2_post_recv(struct ibv_qp *ibvqp, struct ibv_recv_wr *wr, + return ret; + } + +- pthread_spin_lock(&qp->rq.lock); ++ hns_roce_spin_lock(&qp->rq.hr_lock); + + max_sge = qp->rq.max_gs - qp->rq.rsv_sge; + for (nreq = 0; wr; ++nreq, wr = wr->next) { +@@ -1460,7 +1460,7 @@ out: + hns_roce_update_rq_db(ctx, ibvqp->qp_num, qp->rq.head); + } + +- pthread_spin_unlock(&qp->rq.lock); ++ hns_roce_spin_unlock(&qp->rq.hr_lock); + + if (ibvqp->state == IBV_QPS_ERR) { + attr.qp_state = IBV_QPS_ERR; +@@ -1515,9 +1515,9 @@ static void __hns_roce_v2_cq_clean(struct hns_roce_cq *cq, uint32_t qpn, + static void hns_roce_v2_cq_clean(struct hns_roce_cq *cq, unsigned int qpn, + struct hns_roce_srq *srq) + { +- pthread_spin_lock(&cq->lock); ++ hns_roce_spin_lock(&cq->hr_lock); + __hns_roce_v2_cq_clean(cq, qpn, srq); +- pthread_spin_unlock(&cq->lock); ++ hns_roce_spin_unlock(&cq->hr_lock); + } + + static void record_qp_attr(struct ibv_qp *qp, struct ibv_qp_attr *attr, +@@ -1550,8 +1550,8 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + int ret; + + if ((attr_mask & IBV_QP_STATE) && (attr->qp_state == IBV_QPS_ERR)) { +- pthread_spin_lock(&hr_qp->sq.lock); +- pthread_spin_lock(&hr_qp->rq.lock); ++ hns_roce_spin_lock(&hr_qp->sq.hr_lock); ++ hns_roce_spin_lock(&hr_qp->rq.hr_lock); + flag = true; + } + +@@ -1560,8 +1560,8 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + sizeof(resp_ex)); + + if (flag) { +- pthread_spin_unlock(&hr_qp->rq.lock); +- pthread_spin_unlock(&hr_qp->sq.lock); ++ hns_roce_spin_unlock(&hr_qp->sq.hr_lock); ++ hns_roce_spin_unlock(&hr_qp->rq.hr_lock); + } + + if (ret) +@@ -1602,18 +1602,18 @@ static void hns_roce_lock_cqs(struct ibv_qp *qp) + + if (send_cq && recv_cq) { + if (send_cq == recv_cq) { +- pthread_spin_lock(&send_cq->lock); ++ hns_roce_spin_lock(&send_cq->hr_lock); + } else if (send_cq->cqn < recv_cq->cqn) { +- pthread_spin_lock(&send_cq->lock); +- pthread_spin_lock(&recv_cq->lock); ++ hns_roce_spin_lock(&send_cq->hr_lock); ++ hns_roce_spin_lock(&recv_cq->hr_lock); + } else { +- pthread_spin_lock(&recv_cq->lock); +- pthread_spin_lock(&send_cq->lock); ++ hns_roce_spin_lock(&recv_cq->hr_lock); ++ hns_roce_spin_lock(&send_cq->hr_lock); + } + } else if (send_cq) { +- pthread_spin_lock(&send_cq->lock); ++ hns_roce_spin_lock(&send_cq->hr_lock); + } else if (recv_cq) { +- pthread_spin_lock(&recv_cq->lock); ++ hns_roce_spin_lock(&recv_cq->hr_lock); + } + } + +@@ -1624,18 +1624,18 @@ static void hns_roce_unlock_cqs(struct ibv_qp *qp) + + if (send_cq && recv_cq) { + if (send_cq == recv_cq) { +- pthread_spin_unlock(&send_cq->lock); ++ hns_roce_spin_unlock(&send_cq->hr_lock); + } else if (send_cq->cqn < recv_cq->cqn) { +- pthread_spin_unlock(&recv_cq->lock); +- pthread_spin_unlock(&send_cq->lock); ++ hns_roce_spin_unlock(&recv_cq->hr_lock); ++ hns_roce_spin_unlock(&send_cq->hr_lock); + } else { +- pthread_spin_unlock(&send_cq->lock); +- pthread_spin_unlock(&recv_cq->lock); ++ hns_roce_spin_unlock(&send_cq->hr_lock); ++ hns_roce_spin_unlock(&recv_cq->hr_lock); + } + } else if (send_cq) { +- pthread_spin_unlock(&send_cq->lock); ++ hns_roce_spin_unlock(&send_cq->hr_lock); + } else if (recv_cq) { +- pthread_spin_unlock(&recv_cq->lock); ++ hns_roce_spin_unlock(&recv_cq->hr_lock); + } + } + +@@ -1750,7 +1750,7 @@ static int hns_roce_u_v2_post_srq_recv(struct ibv_srq *ib_srq, + int ret = 0; + void *wqe; + +- pthread_spin_lock(&srq->lock); ++ hns_roce_spin_lock(&srq->hr_lock); + + max_sge = srq->max_gs - srq->rsv_sge; + for (nreq = 0; wr; ++nreq, wr = wr->next) { +@@ -1789,7 +1789,7 @@ static int hns_roce_u_v2_post_srq_recv(struct ibv_srq *ib_srq, + (__le32 *)&srq_db); + } + +- pthread_spin_unlock(&srq->lock); ++ hns_roce_spin_unlock(&srq->hr_lock); + + return ret; + } +@@ -1805,11 +1805,11 @@ static int wc_start_poll_cq(struct ibv_cq_ex *current, + if (attr->comp_mask) + return EINVAL; + +- pthread_spin_lock(&cq->lock); ++ hns_roce_spin_lock(&cq->hr_lock); + + err = hns_roce_poll_one(ctx, &qp, cq, NULL); + if (err != V2_CQ_OK) +- pthread_spin_unlock(&cq->lock); ++ hns_roce_spin_unlock(&cq->hr_lock); + + return err; + } +@@ -1843,7 +1843,7 @@ static void wc_end_poll_cq(struct ibv_cq_ex *current) + else + update_cq_db(ctx, cq); + +- pthread_spin_unlock(&cq->lock); ++ hns_roce_spin_unlock(&cq->hr_lock); + } + + static enum ibv_wc_opcode wc_read_opcode(struct ibv_cq_ex *current) +@@ -2558,7 +2558,7 @@ static void wr_start(struct ibv_qp_ex *ibv_qp) + return; + } + +- pthread_spin_lock(&qp->sq.lock); ++ hns_roce_spin_lock(&qp->sq.hr_lock); + qp->sge_info.start_idx = qp->next_sge; + qp->rb_sq_head = qp->sq.head; + qp->err = 0; +@@ -2591,7 +2591,8 @@ static int wr_complete(struct ibv_qp_ex *ibv_qp) + } + + out: +- pthread_spin_unlock(&qp->sq.lock); ++ hns_roce_spin_unlock(&qp->sq.hr_lock); ++ + if (ibv_qp->qp_base.state == IBV_QPS_ERR) { + attr.qp_state = IBV_QPS_ERR; + hns_roce_u_v2_modify_qp(&ibv_qp->qp_base, &attr, IBV_QP_STATE); +@@ -2606,7 +2607,7 @@ static void wr_abort(struct ibv_qp_ex *ibv_qp) + + qp->sq.head = qp->rb_sq_head; + +- pthread_spin_unlock(&qp->sq.lock); ++ hns_roce_spin_unlock(&qp->sq.hr_lock); + } + + enum { +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index 3b7a67d..f6c7423 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -42,6 +43,38 @@ + #include "hns_roce_u_db.h" + #include "hns_roce_u_hw_v2.h" + ++static int hns_roce_whether_need_lock(struct ibv_pd *pd) ++{ ++ struct hns_roce_pad *pad; ++ bool need_lock = true; ++ ++ pad = to_hr_pad(pd); ++ if (pad && pad->td) ++ need_lock = false; ++ ++ return need_lock; ++} ++ ++static int hns_roce_spinlock_init(struct hns_roce_spinlock *hr_lock, ++ bool need_lock) ++{ ++ hr_lock->need_lock = need_lock; ++ ++ if (need_lock) ++ return pthread_spin_init(&hr_lock->lock, ++ PTHREAD_PROCESS_PRIVATE); ++ ++ return 0; ++} ++ ++static int hns_roce_spinlock_destroy(struct hns_roce_spinlock *hr_lock) ++{ ++ if (hr_lock->need_lock) ++ return pthread_spin_destroy(&hr_lock->lock); ++ ++ return 0; ++} ++ + void hns_roce_init_qp_indices(struct hns_roce_qp *qp) + { + qp->sq.head = 0; +@@ -85,40 +118,153 @@ int hns_roce_u_query_port(struct ibv_context *context, uint8_t port, + return ibv_cmd_query_port(context, port, attr, &cmd, sizeof(cmd)); + } + ++struct ibv_td *hns_roce_u_alloc_td(struct ibv_context *context, ++ struct ibv_td_init_attr *attr) ++{ ++ struct hns_roce_td *td; ++ ++ if (attr->comp_mask) { ++ errno = EINVAL; ++ return NULL; ++ } ++ ++ td = calloc(1, sizeof(*td)); ++ if (!td) { ++ errno = ENOMEM; ++ return NULL; ++ } ++ ++ td->ibv_td.context = context; ++ atomic_init(&td->refcount, 1); ++ ++ return &td->ibv_td; ++} ++ ++int hns_roce_u_dealloc_td(struct ibv_td *ibv_td) ++{ ++ struct hns_roce_td *td; ++ int ret = 0; ++ ++ td = to_hr_td(ibv_td); ++ if (atomic_load(&td->refcount) > 1) { ++ ret = -EBUSY; ++ goto err; ++ } ++ ++ free(td); ++ ++err: ++ errno = abs(ret); ++ return ret; ++} ++ + struct ibv_pd *hns_roce_u_alloc_pd(struct ibv_context *context) + { ++ struct hns_roce_alloc_pd_resp resp = {}; + struct ibv_alloc_pd cmd; + struct hns_roce_pd *pd; +- struct hns_roce_alloc_pd_resp resp = {}; +- +- pd = malloc(sizeof(*pd)); +- if (!pd) +- return NULL; ++ int ret; + +- if (ibv_cmd_alloc_pd(context, &pd->ibv_pd, &cmd, sizeof(cmd), +- &resp.ibv_resp, sizeof(resp))) { +- free(pd); ++ pd = calloc(1, sizeof(*pd)); ++ if (!pd) { ++ errno = ENOMEM; + return NULL; + } + ++ ret = ibv_cmd_alloc_pd(context, &pd->ibv_pd, &cmd, sizeof(cmd), ++ &resp.ibv_resp, sizeof(resp)); ++ ++ if (ret) ++ goto err; ++ ++ atomic_init(&pd->refcount, 1); + pd->pdn = resp.pdn; + + return &pd->ibv_pd; ++ ++err: ++ free(pd); ++ errno = abs(ret); ++ return NULL; + } + +-int hns_roce_u_free_pd(struct ibv_pd *pd) ++struct ibv_pd *hns_roce_u_alloc_pad(struct ibv_context *context, ++ struct ibv_parent_domain_init_attr *attr) ++{ ++ struct hns_roce_pad *pad; ++ ++ if (ibv_check_alloc_parent_domain(attr)) ++ return NULL; ++ ++ if (attr->comp_mask) { ++ errno = EINVAL; ++ return NULL; ++ } ++ ++ pad = calloc(1, sizeof(*pad)); ++ if (!pad) { ++ errno = ENOMEM; ++ return NULL; ++ } ++ ++ if (attr->td) { ++ pad->td = to_hr_td(attr->td); ++ atomic_fetch_add(&pad->td->refcount, 1); ++ } ++ ++ pad->pd.protection_domain = to_hr_pd(attr->pd); ++ atomic_fetch_add(&pad->pd.protection_domain->refcount, 1); ++ ++ ibv_initialize_parent_domain(&pad->pd.ibv_pd, ++ &pad->pd.protection_domain->ibv_pd); ++ ++ return &pad->pd.ibv_pd; ++} ++ ++static void hns_roce_free_pad(struct hns_roce_pad *pad) ++{ ++ atomic_fetch_sub(&pad->pd.protection_domain->refcount, 1); ++ ++ if (pad->td) ++ atomic_fetch_sub(&pad->td->refcount, 1); ++ ++ free(pad); ++} ++ ++static int hns_roce_free_pd(struct hns_roce_pd *pd) + { + int ret; + +- ret = ibv_cmd_dealloc_pd(pd); ++ if (atomic_load(&pd->refcount) > 1) { ++ ret = -EBUSY; ++ goto err; ++ } ++ ++ ret = ibv_cmd_dealloc_pd(&pd->ibv_pd); + if (ret) +- return ret; ++ goto err; + +- free(to_hr_pd(pd)); ++ free(pd); ++ ++err: ++ errno = abs(ret); + + return ret; + } + ++int hns_roce_u_dealloc_pd(struct ibv_pd *ibv_pd) ++{ ++ struct hns_roce_pad *pad = to_hr_pad(ibv_pd); ++ struct hns_roce_pd *pd = to_hr_pd(ibv_pd); ++ ++ if (pad) { ++ hns_roce_free_pad(pad); ++ return 0; ++ } ++ ++ return hns_roce_free_pd(pd); ++} ++ + struct ibv_xrcd *hns_roce_u_open_xrcd(struct ibv_context *context, + struct ibv_xrcd_init_attr *xrcd_init_attr) + { +@@ -275,6 +421,11 @@ int hns_roce_u_dealloc_mw(struct ibv_mw *mw) + return 0; + } + ++enum { ++ CREATE_CQ_SUPPORTED_COMP_MASK = IBV_CQ_INIT_ATTR_MASK_FLAGS | ++ IBV_CQ_INIT_ATTR_MASK_PD, ++}; ++ + enum { + CREATE_CQ_SUPPORTED_WC_FLAGS = IBV_WC_STANDARD_FLAGS | + IBV_WC_EX_WITH_CVLAN, +@@ -286,12 +437,22 @@ static int verify_cq_create_attr(struct ibv_cq_init_attr_ex *attr, + if (!attr->cqe || attr->cqe > context->max_cqe) + return -EINVAL; + +- if (attr->comp_mask) +- return -EOPNOTSUPP; ++ if (!check_comp_mask(attr->comp_mask, CREATE_CQ_SUPPORTED_COMP_MASK)) { ++ verbs_err(&context->ibv_ctx, "unsupported cq comps 0x%x\n", ++ attr->comp_mask); ++ return EOPNOTSUPP; ++ } + + if (!check_comp_mask(attr->wc_flags, CREATE_CQ_SUPPORTED_WC_FLAGS)) + return -EOPNOTSUPP; + ++ if (attr->comp_mask & IBV_CQ_INIT_ATTR_MASK_PD) { ++ if (!to_hr_pad(attr->parent_domain)) { ++ verbs_err(&context->ibv_ctx, "failed to check the pad of cq.\n"); ++ return EINVAL; ++ } ++ } ++ + attr->cqe = max_t(uint32_t, HNS_ROCE_MIN_CQE_NUM, + roundup_pow_of_two(attr->cqe)); + +@@ -341,7 +502,9 @@ static struct ibv_cq_ex *create_cq(struct ibv_context *context, + struct ibv_cq_init_attr_ex *attr) + { + struct hns_roce_context *hr_ctx = to_hr_ctx(context); ++ struct hns_roce_pad *pad = NULL; + struct hns_roce_cq *cq; ++ int need_lock; + int ret; + + ret = verify_cq_create_attr(attr, hr_ctx); +@@ -354,7 +517,14 @@ static struct ibv_cq_ex *create_cq(struct ibv_context *context, + goto err; + } + +- ret = pthread_spin_init(&cq->lock, PTHREAD_PROCESS_PRIVATE); ++ if (attr->comp_mask & IBV_CQ_INIT_ATTR_MASK_PD) ++ pad = to_hr_pad(attr->parent_domain); ++ ++ need_lock = hns_roce_whether_need_lock(pad ? &pad->pd.ibv_pd : NULL); ++ if (!need_lock) ++ verbs_info(verbs_get_ctx(context), "configure cq as no lock.\n"); ++ ++ ret = hns_roce_spinlock_init(&cq->hr_lock, need_lock); + if (ret) + goto err_lock; + +@@ -385,14 +555,12 @@ err_cmd: + hns_roce_free_db(hr_ctx, cq->db, HNS_ROCE_CQ_TYPE_DB); + err_db: + hns_roce_free_buf(&cq->buf); +-err_lock: + err_buf: ++ hns_roce_spinlock_destroy(&cq->hr_lock); ++err_lock: + free(cq); + err: +- if (ret < 0) +- ret = -ret; +- +- errno = ret; ++ errno = abs(ret); + return NULL; + } + +@@ -655,6 +823,7 @@ static struct ibv_srq *create_srq(struct ibv_context *context, + { + struct hns_roce_context *hr_ctx = to_hr_ctx(context); + struct hns_roce_srq *srq; ++ int need_lock; + int ret; + + ret = verify_srq_create_attr(hr_ctx, init_attr); +@@ -667,7 +836,11 @@ static struct ibv_srq *create_srq(struct ibv_context *context, + goto err; + } + +- if (pthread_spin_init(&srq->lock, PTHREAD_PROCESS_PRIVATE)) ++ need_lock = hns_roce_whether_need_lock(init_attr->pd); ++ if (!need_lock) ++ verbs_info(verbs_get_ctx(context), "configure srq as no lock.\n"); ++ ++ if (hns_roce_spinlock_init(&srq->hr_lock, need_lock)) + goto err_free_srq; + + set_srq_param(context, srq, init_attr); +@@ -875,6 +1048,48 @@ static int verify_qp_create_attr(struct hns_roce_context *ctx, + return verify_qp_create_cap(ctx, attr); + } + ++static int hns_roce_qp_spinlock_init(struct hns_roce_context *ctx, ++ struct ibv_qp_init_attr_ex *attr, ++ struct hns_roce_qp *qp) ++{ ++ int sq_need_lock; ++ int rq_need_lock; ++ int ret; ++ ++ sq_need_lock = hns_roce_whether_need_lock(attr->pd); ++ if (!sq_need_lock) ++ verbs_warn(&ctx->ibv_ctx, "configure sq as no lock.\n"); ++ ++ rq_need_lock = hns_roce_whether_need_lock(attr->pd); ++ if (!rq_need_lock) ++ verbs_warn(&ctx->ibv_ctx, "configure rq as no lock.\n"); ++ ++ ret = hns_roce_spinlock_init(&qp->sq.hr_lock, sq_need_lock); ++ if (ret) { ++ verbs_err(&ctx->ibv_ctx, "failed to init sq spinlock.\n"); ++ return ret; ++ } ++ ++ ret = hns_roce_spinlock_init(&qp->rq.hr_lock, rq_need_lock); ++ if (ret) { ++ verbs_err(&ctx->ibv_ctx, "failed to init rq spinlock.\n"); ++ goto err_rq_lock; ++ } ++ ++ return 0; ++ ++err_rq_lock: ++ hns_roce_spinlock_destroy(&qp->sq.hr_lock); ++ ++ return ret; ++} ++ ++void hns_roce_qp_spinlock_destroy(struct hns_roce_qp *qp) ++{ ++ hns_roce_spinlock_destroy(&qp->rq.hr_lock); ++ hns_roce_spinlock_destroy(&qp->sq.hr_lock); ++} ++ + static int alloc_recv_rinl_buf(uint32_t max_sge, + struct hns_roce_rinl_buf *rinl_buf) + { +@@ -1248,8 +1463,8 @@ static int hns_roce_alloc_qp_buf(struct ibv_qp_init_attr_ex *attr, + { + int ret; + +- if (pthread_spin_init(&qp->sq.lock, PTHREAD_PROCESS_PRIVATE) || +- pthread_spin_init(&qp->rq.lock, PTHREAD_PROCESS_PRIVATE)) ++ if (pthread_spin_init(&qp->sq.hr_lock.lock, PTHREAD_PROCESS_PRIVATE) || ++ pthread_spin_init(&qp->rq.hr_lock.lock, PTHREAD_PROCESS_PRIVATE)) + return -ENOMEM; + + ret = qp_alloc_wqe(&attr->cap, qp, ctx); +@@ -1294,6 +1509,10 @@ static struct ibv_qp *create_qp(struct ibv_context *ibv_ctx, + + hns_roce_set_qp_params(attr, qp, context); + ++ ret = hns_roce_qp_spinlock_init(context, attr, qp); ++ if (ret) ++ goto err_spinlock; ++ + ret = hns_roce_alloc_qp_buf(attr, qp, context); + if (ret) + goto err_buf; +@@ -1327,6 +1546,8 @@ err_ops: + err_cmd: + hns_roce_free_qp_buf(qp, context); + err_buf: ++ hns_roce_qp_spinlock_destroy(qp); ++err_spinlock: + free(qp); + err: + if (ret < 0) +-- +2.30.0 + diff --git a/0031-Update-kernel-headers.patch b/0031-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..311287c0d227b5b0989bb528e7dccd8ef2688888 --- /dev/null +++ b/0031-Update-kernel-headers.patch @@ -0,0 +1,152 @@ +From 7d72b40d311875677135289874d4a69e4891b0de Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Mon, 28 Nov 2022 21:52:20 +0800 +Subject: Update kernel headers + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I63L1M + +---------------------------------------------------------- + +To commit ?? ("RDMA/hns: Fixes concurrent ressetting and post_recv in DCA +mode"). + +Signed-off-by: Chengchang Tang +Reviewed-by: Yangyang Li +--- + kernel-headers/rdma/hns-abi.h | 84 ++++++++++++++++++++++++++++++++--- + 1 file changed, 78 insertions(+), 6 deletions(-) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index 9866c51..6950841 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -77,7 +77,9 @@ enum hns_roce_qp_cap_flags { + HNS_ROCE_QP_CAP_RQ_RECORD_DB = 1 << 0, + HNS_ROCE_QP_CAP_SQ_RECORD_DB = 1 << 1, + HNS_ROCE_QP_CAP_OWNER_DB = 1 << 2, ++ HNS_ROCE_QP_CAP_DYNAMIC_CTX_ATTACH = 1 << 4, + HNS_ROCE_QP_CAP_DIRECT_WQE = 1 << 5, ++ HNS_ROCE_QP_CAP_DYNAMIC_CTX_DETACH = 1 << 6, + }; + + struct hns_roce_ib_create_qp_resp { +@@ -95,33 +97,46 @@ struct hns_roce_ib_modify_qp_resp { + __u8 tc_mode; + __u8 priority; + __u8 reserved[6]; ++ __u32 dcan; ++ __u32 rsv2; + }; + + enum { + HNS_ROCE_EXSGE_FLAGS = 1 << 0, + HNS_ROCE_RQ_INLINE_FLAGS = 1 << 1, + HNS_ROCE_CQE_INLINE_FLAGS = 1 << 2, ++ HNS_ROCE_UCTX_CONFIG_DCA = 1 << 3, + }; + + enum { + HNS_ROCE_RSP_EXSGE_FLAGS = 1 << 0, + HNS_ROCE_RSP_RQ_INLINE_FLAGS = 1 << 1, + HNS_ROCE_RSP_CQE_INLINE_FLAGS = 1 << 2, ++ HNS_ROCE_UCTX_RSP_DCA_FLAGS = HNS_ROCE_UCTX_CONFIG_DCA, + }; + + struct hns_roce_ib_alloc_ucontext_resp { + __u32 qp_tab_size; + __u32 cqe_size; +- __u32 srq_tab_size; +- __u32 reserved; +- __u32 config; +- __u32 max_inline_data; +- __u8 mac_type; +- __u8 rsv1[7]; ++ __u32 srq_tab_size; ++ __u32 reserved; ++ __u32 config; ++ __u32 max_inline_data; ++ __u8 mac_type; ++ __u8 rsv1[7]; ++ __u32 dca_qps; ++ __u32 dca_mmap_size; ++ __aligned_u64 dca_mmap_key; ++}; ++ ++enum hns_roce_uctx_comp_mask { ++ HNS_ROCE_ALLOC_UCTX_COMP_DCA_MAX_QPS = 1 << 0, + }; + + struct hns_roce_ib_alloc_ucontext { + __u32 config; ++ __u32 comp; /* use hns_roce_uctx_comp_mask */ ++ __u32 dca_max_qps; + __u32 reserved; + }; + +@@ -129,4 +144,61 @@ struct hns_roce_ib_alloc_pd_resp { + __u32 pdn; + }; + ++#define UVERBS_ID_NS_MASK 0xF000 ++#define UVERBS_ID_NS_SHIFT 12 ++ ++enum hns_ib_objects { ++ HNS_IB_OBJECT_DCA_MEM = (1U << UVERBS_ID_NS_SHIFT), ++}; ++ ++enum hns_ib_dca_mem_methods { ++ HNS_IB_METHOD_DCA_MEM_REG = (1U << UVERBS_ID_NS_SHIFT), ++ HNS_IB_METHOD_DCA_MEM_DEREG, ++ HNS_IB_METHOD_DCA_MEM_SHRINK, ++ HNS_IB_METHOD_DCA_MEM_ATTACH, ++ HNS_IB_METHOD_DCA_MEM_DETACH, ++ HNS_IB_METHOD_DCA_MEM_QUERY, ++}; ++ ++enum hns_ib_dca_mem_reg_attrs { ++ HNS_IB_ATTR_DCA_MEM_REG_HANDLE = (1U << UVERBS_ID_NS_SHIFT), ++ HNS_IB_ATTR_DCA_MEM_REG_FLAGS, ++ HNS_IB_ATTR_DCA_MEM_REG_LEN, ++ HNS_IB_ATTR_DCA_MEM_REG_ADDR, ++ HNS_IB_ATTR_DCA_MEM_REG_KEY, ++}; ++ ++enum hns_ib_dca_mem_dereg_attrs { ++ HNS_IB_ATTR_DCA_MEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT), ++}; ++ ++enum hns_ib_dca_mem_shrink_attrs { ++ HNS_IB_ATTR_DCA_MEM_SHRINK_HANDLE = (1U << UVERBS_ID_NS_SHIFT), ++ HNS_IB_ATTR_DCA_MEM_SHRINK_RESERVED_SIZE, ++ HNS_IB_ATTR_DCA_MEM_SHRINK_OUT_FREE_KEY, ++ HNS_IB_ATTR_DCA_MEM_SHRINK_OUT_FREE_MEMS, ++}; ++ ++enum hns_ib_dca_mem_attach_attrs { ++ HNS_IB_ATTR_DCA_MEM_ATTACH_HANDLE = (1U << UVERBS_ID_NS_SHIFT), ++ HNS_IB_ATTR_DCA_MEM_ATTACH_SQ_OFFSET, ++ HNS_IB_ATTR_DCA_MEM_ATTACH_SGE_OFFSET, ++ HNS_IB_ATTR_DCA_MEM_ATTACH_RQ_OFFSET, ++ HNS_IB_ATTR_DCA_MEM_ATTACH_OUT_ALLOC_FLAGS, ++ HNS_IB_ATTR_DCA_MEM_ATTACH_OUT_ALLOC_PAGES, ++}; ++ ++enum hns_ib_dca_mem_detach_attrs { ++ HNS_IB_ATTR_DCA_MEM_DETACH_HANDLE = (1U << UVERBS_ID_NS_SHIFT), ++ HNS_IB_ATTR_DCA_MEM_DETACH_SQ_INDEX, ++}; ++ ++enum hns_ib_dca_mem_query_attrs { ++ HNS_IB_ATTR_DCA_MEM_QUERY_HANDLE = (1U << UVERBS_ID_NS_SHIFT), ++ HNS_IB_ATTR_DCA_MEM_QUERY_PAGE_INDEX, ++ HNS_IB_ATTR_DCA_MEM_QUERY_OUT_KEY, ++ HNS_IB_ATTR_DCA_MEM_QUERY_OUT_OFFSET, ++ HNS_IB_ATTR_DCA_MEM_QUERY_OUT_PAGE_COUNT, ++}; ++ + #endif /* HNS_ABI_USER_H */ +-- +2.30.0 + diff --git a/0032-libhns-Introduce-DCA-for-RC-QP.patch b/0032-libhns-Introduce-DCA-for-RC-QP.patch new file mode 100644 index 0000000000000000000000000000000000000000..4799e1989c8d7d02157addf2d387ad8db4d23d22 --- /dev/null +++ b/0032-libhns-Introduce-DCA-for-RC-QP.patch @@ -0,0 +1,342 @@ +From 58de0f69573e8b76affe401a261f17f1a5cedc01 Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Mon, 10 May 2021 17:13:09 +0800 +Subject: libhns: Introduce DCA for RC QP + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I63L1M + +---------------------------------------------------------- + +The HIP09 introduces the DCA(Dynamic context attachment) feature which +supports many RC QPs to share the WQE buffer in a memory pool, this will +reduce the memory consumption when there are too many QPs inactive. + +Two functions are defined for adding buffers to memory pool and removing +buffers from memory pool by calling ib cmd implemented in hns kernelspace +driver. + +If a QP enables DCA feature, the WQE's buffer will be attached to the +memory pool when the users start to post WRs and be detached when all CQEs +has been polled. + +Signed-off-by: Chengchang Tang +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.c | 59 ++++++++++++- + providers/hns/hns_roce_u.h | 21 +++++ + providers/hns/hns_roce_u_buf.c | 147 +++++++++++++++++++++++++++++++++ + 3 files changed, 223 insertions(+), 4 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 3428bda..bd2b251 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -95,6 +95,53 @@ static const struct verbs_context_ops hns_common_ops = { + .alloc_parent_domain = hns_roce_u_alloc_pad, + }; + ++static int init_dca_context(struct hns_roce_context *ctx, int page_size) ++{ ++ struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ int ret; ++ ++ if (!(ctx->config & HNS_ROCE_UCTX_RSP_DCA_FLAGS)) ++ return 0; ++ ++ list_head_init(&dca_ctx->mem_list); ++ ret = pthread_spin_init(&dca_ctx->lock, PTHREAD_PROCESS_PRIVATE); ++ if (ret) ++ return ret; ++ ++ dca_ctx->unit_size = page_size * HNS_DCA_DEFAULT_UNIT_PAGES; ++ dca_ctx->max_size = HNS_DCA_MAX_MEM_SIZE; ++ dca_ctx->mem_cnt = 0; ++ ++ return 0; ++} ++ ++static void uninit_dca_context(struct hns_roce_context *ctx) ++{ ++ struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ ++ if (!(ctx->config & HNS_ROCE_UCTX_RSP_DCA_FLAGS)) ++ return; ++ ++ pthread_spin_lock(&dca_ctx->lock); ++ hns_roce_cleanup_dca_mem(ctx); ++ pthread_spin_unlock(&dca_ctx->lock); ++ ++ pthread_spin_destroy(&dca_ctx->lock); ++} ++ ++static int hns_roce_mmap(struct hns_roce_device *hr_dev, ++ struct hns_roce_context *context, int cmd_fd) ++{ ++ int page_size = hr_dev->page_size; ++ ++ context->uar = mmap(NULL, page_size, PROT_READ | PROT_WRITE, ++ MAP_SHARED, cmd_fd, 0); ++ if (context->uar == MAP_FAILED) ++ return -ENOMEM; ++ ++ return 0; ++} ++ + static uint32_t calc_table_shift(uint32_t entry_count, uint32_t size_shift) + { + uint32_t count_shift = hr_ilog32(entry_count); +@@ -119,7 +166,7 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + return NULL; + + cmd.config |= HNS_ROCE_EXSGE_FLAGS | HNS_ROCE_RQ_INLINE_FLAGS | +- HNS_ROCE_CQE_INLINE_FLAGS; ++ HNS_ROCE_CQE_INLINE_FLAGS | HNS_ROCE_UCTX_CONFIG_DCA; + if (ibv_cmd_get_context(&context->ibv_ctx, &cmd.ibv_cmd, sizeof(cmd), + &resp.ibv_resp, sizeof(resp))) + goto err_free; +@@ -165,11 +212,12 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + context->max_srq_wr = dev_attrs.max_srq_wr; + context->max_srq_sge = dev_attrs.max_srq_sge; + +- context->uar = mmap(NULL, hr_dev->page_size, PROT_READ | PROT_WRITE, +- MAP_SHARED, cmd_fd, 0); +- if (context->uar == MAP_FAILED) ++ if (init_dca_context(context, hr_dev->page_size)) + goto err_free; + ++ if (hns_roce_mmap(hr_dev, context, cmd_fd)) ++ goto dca_free; ++ + pthread_spin_init(&context->uar_lock, PTHREAD_PROCESS_PRIVATE); + + verbs_set_ops(&context->ibv_ctx, &hns_common_ops); +@@ -177,6 +225,8 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + + return &context->ibv_ctx; + ++dca_free: ++ uninit_dca_context(context); + err_free: + verbs_uninit_context(&context->ibv_ctx); + free(context); +@@ -189,6 +239,7 @@ static void hns_roce_free_context(struct ibv_context *ibctx) + struct hns_roce_context *context = to_hr_ctx(ibctx); + + munmap(context->uar, hr_dev->page_size); ++ uninit_dca_context(context); + verbs_uninit_context(&context->ibv_ctx); + free(context); + } +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 2edb07e..0e25ce5 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -147,6 +147,10 @@ + + #define hr_reg_read(ptr, field) _hr_reg_read(ptr, field) + ++enum { ++ HNS_ROCE_CAP_FLAG_DCA_MODE = BIT(15), ++}; ++ + #define HNS_ROCE_QP_TABLE_BITS 8 + #define HNS_ROCE_QP_TABLE_SIZE BIT(HNS_ROCE_QP_TABLE_BITS) + +@@ -199,6 +203,18 @@ struct hns_roce_spinlock { + int need_lock; + }; + ++#define HNS_DCA_MAX_MEM_SIZE ~0UL ++#define HNS_DCA_DEFAULT_UNIT_PAGES 16 ++ ++struct hns_roce_dca_ctx { ++ struct list_head mem_list; ++ pthread_spinlock_t lock; ++ int mem_cnt; ++ unsigned int unit_size; ++ uint64_t max_size; ++ uint64_t curr_size; ++}; ++ + struct hns_roce_context { + struct verbs_context ibv_ctx; + void *uar; +@@ -231,6 +247,8 @@ struct hns_roce_context { + unsigned int cqe_size; + uint32_t config; + unsigned int max_inline_data; ++ ++ struct hns_roce_dca_ctx dca_ctx; + }; + + struct hns_roce_td { +@@ -562,6 +580,9 @@ void hns_roce_qp_spinlock_destroy(struct hns_roce_qp *qp); + + void hns_roce_free_qp_buf(struct hns_roce_qp *qp, struct hns_roce_context *ctx); + ++void hns_roce_cleanup_dca_mem(struct hns_roce_context *ctx); ++int hns_roce_add_dca_mem(struct hns_roce_context *ctx, uint32_t size); ++ + void hns_roce_init_qp_indices(struct hns_roce_qp *qp); + + extern const struct hns_roce_u_hw hns_roce_u_hw_v2; +diff --git a/providers/hns/hns_roce_u_buf.c b/providers/hns/hns_roce_u_buf.c +index 471dd9c..02c43ae 100644 +--- a/providers/hns/hns_roce_u_buf.c ++++ b/providers/hns/hns_roce_u_buf.c +@@ -60,3 +60,150 @@ void hns_roce_free_buf(struct hns_roce_buf *buf) + + munmap(buf->buf, buf->length); + } ++ ++struct hns_roce_dca_mem { ++ uint32_t handle; ++ struct list_node entry; ++ struct hns_roce_buf buf; ++ struct hns_roce_context *ctx; ++}; ++ ++static void free_dca_mem(struct hns_roce_context *ctx, ++ struct hns_roce_dca_mem *mem) ++{ ++ hns_roce_free_buf(&mem->buf); ++ free(mem); ++} ++ ++static struct hns_roce_dca_mem *alloc_dca_mem(uint32_t size) ++{ ++ struct hns_roce_dca_mem *mem = NULL; ++ int ret; ++ ++ mem = malloc(sizeof(struct hns_roce_dca_mem)); ++ if (!mem) { ++ errno = ENOMEM; ++ return NULL; ++ } ++ ++ ret = hns_roce_alloc_buf(&mem->buf, size, HNS_HW_PAGE_SIZE); ++ if (ret) { ++ errno = ENOMEM; ++ free(mem); ++ return NULL; ++ } ++ ++ return mem; ++} ++ ++static inline uint64_t dca_mem_to_key(struct hns_roce_dca_mem *dca_mem) ++{ ++ return (uintptr_t)dca_mem; ++} ++ ++static inline void *dca_mem_addr(struct hns_roce_dca_mem *dca_mem, int offset) ++{ ++ return dca_mem->buf.buf + offset; ++} ++ ++static int register_dca_mem(struct hns_roce_context *ctx, uint64_t key, ++ void *addr, uint32_t size, uint32_t *handle) ++{ ++ struct ib_uverbs_attr *attr; ++ int ret; ++ ++ DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, ++ HNS_IB_METHOD_DCA_MEM_REG, 4); ++ fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_REG_LEN, size); ++ fill_attr_in_uint64(cmd, HNS_IB_ATTR_DCA_MEM_REG_ADDR, ++ ioctl_ptr_to_u64(addr)); ++ fill_attr_in_uint64(cmd, HNS_IB_ATTR_DCA_MEM_REG_KEY, key); ++ attr = fill_attr_out_obj(cmd, HNS_IB_ATTR_DCA_MEM_REG_HANDLE); ++ ++ ret = execute_ioctl(&ctx->ibv_ctx.context, cmd); ++ if (ret) { ++ verbs_err(&ctx->ibv_ctx, "failed to reg DCA mem, ret = %d.\n", ++ ret); ++ return ret; ++ } ++ ++ *handle = read_attr_obj(HNS_IB_ATTR_DCA_MEM_REG_HANDLE, attr); ++ ++ return 0; ++} ++ ++static void deregister_dca_mem(struct hns_roce_context *ctx, uint32_t handle) ++{ ++ int ret; ++ ++ DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, ++ HNS_IB_METHOD_DCA_MEM_DEREG, 1); ++ fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_DEREG_HANDLE, handle); ++ ret = execute_ioctl(&ctx->ibv_ctx.context, cmd); ++ if (ret) ++ verbs_warn(&ctx->ibv_ctx, ++ "failed to dereg DCA mem-%u, ret = %d.\n", ++ handle, ret); ++} ++ ++void hns_roce_cleanup_dca_mem(struct hns_roce_context *ctx) ++{ ++ struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ struct hns_roce_dca_mem *mem; ++ struct hns_roce_dca_mem *tmp; ++ ++ list_for_each_safe(&dca_ctx->mem_list, mem, tmp, entry) ++ deregister_dca_mem(ctx, mem->handle); ++} ++ ++static bool add_dca_mem_enabled(struct hns_roce_dca_ctx *ctx, ++ uint32_t alloc_size) ++{ ++ bool enable; ++ ++ pthread_spin_lock(&ctx->lock); ++ ++ if (ctx->unit_size == 0) /* Pool size can't be increased */ ++ enable = false; ++ else if (ctx->max_size == HNS_DCA_MAX_MEM_SIZE) /* Pool size no limit */ ++ enable = true; ++ else /* Pool size doesn't exceed max size */ ++ enable = (ctx->curr_size + alloc_size) < ctx->max_size; ++ ++ pthread_spin_unlock(&ctx->lock); ++ ++ return enable; ++} ++ ++int hns_roce_add_dca_mem(struct hns_roce_context *ctx, uint32_t size) ++{ ++ struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ struct hns_roce_dca_mem *mem; ++ int ret; ++ ++ if (!add_dca_mem_enabled(&ctx->dca_ctx, size)) ++ return -ENOMEM; ++ ++ /* Step 1: Alloc DCA mem address */ ++ mem = alloc_dca_mem( ++ DIV_ROUND_UP(size, dca_ctx->unit_size) * dca_ctx->unit_size); ++ if (!mem) ++ return -ENOMEM; ++ ++ /* Step 2: Register DCA mem uobject to pin user address */ ++ ret = register_dca_mem(ctx, dca_mem_to_key(mem), dca_mem_addr(mem, 0), ++ mem->buf.length, &mem->handle); ++ if (ret) { ++ free_dca_mem(ctx, mem); ++ return ret; ++ } ++ ++ /* Step 3: Add DCA mem node to pool */ ++ pthread_spin_lock(&dca_ctx->lock); ++ list_add_tail(&dca_ctx->mem_list, &mem->entry); ++ dca_ctx->mem_cnt++; ++ dca_ctx->curr_size += mem->buf.length; ++ pthread_spin_unlock(&dca_ctx->lock); ++ ++ return 0; ++} +-- +2.30.0 + diff --git a/0033-libhns-Add-support-for-shrinking-DCA-memory-pool.patch b/0033-libhns-Add-support-for-shrinking-DCA-memory-pool.patch new file mode 100644 index 0000000000000000000000000000000000000000..b2da30b1f16c4e99e5ad1121e46eea7676544a2a --- /dev/null +++ b/0033-libhns-Add-support-for-shrinking-DCA-memory-pool.patch @@ -0,0 +1,204 @@ +From c8d7a2dc811a18ffd314b8764c961234e5f2ec77 Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Mon, 10 May 2021 17:13:13 +0800 +Subject: libhns: Add support for shrinking DCA memory pool + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I63L1M + +---------------------------------------------------------- + +The QP's WQE buffer may be detached after QP is modified or CQE is polled, +and the state of DCA mem object may be changed as clean for no QP is using +it. So shrink the clean DCA mem from the memory pool and destroy the DCA +mem's buffer to reduce the memory consumption. + +Signed-off-by: Chengchang Tang +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.h | 2 + + providers/hns/hns_roce_u_buf.c | 103 +++++++++++++++++++++++++++++++ + providers/hns/hns_roce_u_hw_v2.c | 7 +++ + 3 files changed, 112 insertions(+) + +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 0e25ce5..7b5c5c9 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -212,6 +212,7 @@ struct hns_roce_dca_ctx { + int mem_cnt; + unsigned int unit_size; + uint64_t max_size; ++ uint64_t min_size; + uint64_t curr_size; + }; + +@@ -580,6 +581,7 @@ void hns_roce_qp_spinlock_destroy(struct hns_roce_qp *qp); + + void hns_roce_free_qp_buf(struct hns_roce_qp *qp, struct hns_roce_context *ctx); + ++void hns_roce_shrink_dca_mem(struct hns_roce_context *ctx); + void hns_roce_cleanup_dca_mem(struct hns_roce_context *ctx); + int hns_roce_add_dca_mem(struct hns_roce_context *ctx, uint32_t size); + +diff --git a/providers/hns/hns_roce_u_buf.c b/providers/hns/hns_roce_u_buf.c +index 02c43ae..c0f86e9 100644 +--- a/providers/hns/hns_roce_u_buf.c ++++ b/providers/hns/hns_roce_u_buf.c +@@ -101,6 +101,20 @@ static inline uint64_t dca_mem_to_key(struct hns_roce_dca_mem *dca_mem) + return (uintptr_t)dca_mem; + } + ++static struct hns_roce_dca_mem *key_to_dca_mem(struct hns_roce_dca_ctx *ctx, ++ uint64_t key) ++{ ++ struct hns_roce_dca_mem *mem; ++ struct hns_roce_dca_mem *tmp; ++ ++ list_for_each_safe(&ctx->mem_list, mem, tmp, entry) { ++ if (dca_mem_to_key(mem) == key) ++ return mem; ++ } ++ ++ return NULL; ++} ++ + static inline void *dca_mem_addr(struct hns_roce_dca_mem *dca_mem, int offset) + { + return dca_mem->buf.buf + offset; +@@ -156,6 +170,32 @@ void hns_roce_cleanup_dca_mem(struct hns_roce_context *ctx) + deregister_dca_mem(ctx, mem->handle); + } + ++struct hns_dca_mem_shrink_resp { ++ uint32_t free_mems; ++ uint64_t free_key; ++}; ++ ++static int shrink_dca_mem(struct hns_roce_context *ctx, uint32_t handle, ++ uint64_t size, struct hns_dca_mem_shrink_resp *resp) ++{ ++ int ret; ++ ++ DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, ++ HNS_IB_METHOD_DCA_MEM_SHRINK, 4); ++ fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_SHRINK_HANDLE, handle); ++ fill_attr_in_uint64(cmd, HNS_IB_ATTR_DCA_MEM_SHRINK_RESERVED_SIZE, size); ++ fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_SHRINK_OUT_FREE_KEY, ++ &resp->free_key, sizeof(resp->free_key)); ++ fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_SHRINK_OUT_FREE_MEMS, ++ &resp->free_mems, sizeof(resp->free_mems)); ++ ++ ret = execute_ioctl(&ctx->ibv_ctx.context, cmd); ++ if (ret) ++ verbs_err(&ctx->ibv_ctx, "failed to shrink DCA mem, ret = %d.\n", ++ ret); ++ ++ return ret; ++} + static bool add_dca_mem_enabled(struct hns_roce_dca_ctx *ctx, + uint32_t alloc_size) + { +@@ -175,6 +215,17 @@ static bool add_dca_mem_enabled(struct hns_roce_dca_ctx *ctx, + return enable; + } + ++static bool shrink_dca_mem_enabled(struct hns_roce_dca_ctx *ctx) ++{ ++ bool enable; ++ ++ pthread_spin_lock(&ctx->lock); ++ enable = ctx->mem_cnt > 0 && ctx->min_size < ctx->max_size; ++ pthread_spin_unlock(&ctx->lock); ++ ++ return enable; ++} ++ + int hns_roce_add_dca_mem(struct hns_roce_context *ctx, uint32_t size) + { + struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; +@@ -207,3 +258,55 @@ int hns_roce_add_dca_mem(struct hns_roce_context *ctx, uint32_t size) + + return 0; + } ++ ++void hns_roce_shrink_dca_mem(struct hns_roce_context *ctx) ++{ ++ struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ struct hns_dca_mem_shrink_resp resp = {}; ++ struct hns_roce_dca_mem *mem; ++ int dca_mem_cnt; ++ uint32_t handle; ++ int ret; ++ ++ pthread_spin_lock(&dca_ctx->lock); ++ dca_mem_cnt = ctx->dca_ctx.mem_cnt; ++ pthread_spin_unlock(&dca_ctx->lock); ++ while (dca_mem_cnt > 0 && shrink_dca_mem_enabled(dca_ctx)) { ++ resp.free_mems = 0; ++ /* Step 1: Use any DCA mem uobject to shrink pool */ ++ pthread_spin_lock(&dca_ctx->lock); ++ mem = list_tail(&dca_ctx->mem_list, ++ struct hns_roce_dca_mem, entry); ++ handle = mem ? mem->handle : 0; ++ pthread_spin_unlock(&dca_ctx->lock); ++ if (!mem) ++ break; ++ ++ ret = shrink_dca_mem(ctx, handle, dca_ctx->min_size, &resp); ++ if (ret || likely(resp.free_mems < 1)) ++ break; ++ ++ /* Step 2: Remove shrunk DCA mem node from pool */ ++ pthread_spin_lock(&dca_ctx->lock); ++ mem = key_to_dca_mem(dca_ctx, resp.free_key); ++ if (mem) { ++ list_del(&mem->entry); ++ dca_ctx->mem_cnt--; ++ dca_ctx->curr_size -= mem->buf.length; ++ } ++ ++ handle = mem ? mem->handle : 0; ++ pthread_spin_unlock(&dca_ctx->lock); ++ if (!mem) ++ break; ++ ++ /* Step 3: Destroy DCA mem uobject */ ++ deregister_dca_mem(ctx, handle); ++ free_dca_mem(ctx, mem); ++ /* No any free memory after deregister 1 DCA mem */ ++ if (resp.free_mems <= 1) ++ break; ++ ++ dca_mem_cnt--; ++ } ++} +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 7b2f2d1..f3a7e6b 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -738,6 +738,10 @@ static int hns_roce_u_v2_poll_cq(struct ibv_cq *ibvcq, int ne, + + hns_roce_spin_unlock(&cq->hr_lock); + ++ /* Try to shrink the DCA mem */ ++ if (ctx->dca_ctx.mem_cnt > 0) ++ hns_roce_shrink_dca_mem(ctx); ++ + return err == V2_CQ_POLL_ERR ? err : npolled; + } + +@@ -1674,6 +1678,9 @@ static int hns_roce_u_v2_destroy_qp(struct ibv_qp *ibqp) + + free(qp); + ++ if (ctx->dca_ctx.mem_cnt > 0) ++ hns_roce_shrink_dca_mem(ctx); ++ + return ret; + } + +-- +2.30.0 + diff --git a/0034-libhns-Add-support-for-attaching-QP-s-WQE-buffer.patch b/0034-libhns-Add-support-for-attaching-QP-s-WQE-buffer.patch new file mode 100644 index 0000000000000000000000000000000000000000..65aa2b237acd7ce9b1e6c687b78f26762f63611a --- /dev/null +++ b/0034-libhns-Add-support-for-attaching-QP-s-WQE-buffer.patch @@ -0,0 +1,618 @@ +From 835bc1a62dfc3398ef9da23de07348a353f67214 Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Mon, 10 May 2021 17:13:17 +0800 +Subject: libhns: Add support for attaching QP's WQE buffer + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I63L1M + +---------------------------------------------------------- + +If a uQP works in DCA mode, the WQE's buffer will be split as many blocks +and be stored into a list. The blocks are allocated from the DCA's memory +pool before posting WRs and are dropped when the QP's CI is equal to PI +after polling CQ. + +Signed-off-by: Chengchang Tang +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.h | 26 ++++- + providers/hns/hns_roce_u_buf.c | 173 ++++++++++++++++++++++++++++++- + providers/hns/hns_roce_u_hw_v2.c | 151 ++++++++++++++++++++++++--- + providers/hns/hns_roce_u_hw_v2.h | 2 + + providers/hns/hns_roce_u_verbs.c | 32 ++++-- + 5 files changed, 358 insertions(+), 26 deletions(-) + +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 7b5c5c9..44a733f 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -348,11 +348,18 @@ struct hns_roce_sge_ex { + unsigned int sge_shift; + }; + ++struct hns_roce_dca_buf { ++ void **bufs; ++ unsigned int max_cnt; ++ unsigned int shift; ++}; ++ + struct hns_roce_qp { + struct verbs_qp verbs_qp; + struct hns_roce_buf buf; ++ struct hns_roce_dca_buf dca_wqe; + int max_inline_data; +- int buf_size; ++ unsigned int buf_size; + unsigned int sq_signal_bits; + struct hns_roce_wq sq; + struct hns_roce_wq rq; +@@ -401,11 +408,22 @@ struct hns_roce_u_hw { + struct verbs_context_ops hw_ops; + }; + ++struct hns_roce_dca_attach_attr { ++ uint32_t sq_offset; ++ uint32_t sge_offset; ++ uint32_t rq_offset; ++}; ++ ++struct hns_roce_dca_detach_attr { ++ uint32_t sq_index; ++}; ++ + /* + * The entries's buffer should be aligned to a multiple of the hardware's + * minimum page size. + */ + #define hr_hw_page_align(x) align(x, HNS_HW_PAGE_SIZE) ++#define hr_hw_page_count(x) (hr_hw_page_align(x) / HNS_HW_PAGE_SIZE) + + static inline unsigned int to_hr_hem_entries_size(int count, int buf_shift) + { +@@ -581,9 +599,13 @@ void hns_roce_qp_spinlock_destroy(struct hns_roce_qp *qp); + + void hns_roce_free_qp_buf(struct hns_roce_qp *qp, struct hns_roce_context *ctx); + ++int hns_roce_attach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, ++ struct hns_roce_dca_attach_attr *attr, ++ uint32_t size, struct hns_roce_dca_buf *buf); ++void hns_roce_detach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, ++ struct hns_roce_dca_detach_attr *attr); + void hns_roce_shrink_dca_mem(struct hns_roce_context *ctx); + void hns_roce_cleanup_dca_mem(struct hns_roce_context *ctx); +-int hns_roce_add_dca_mem(struct hns_roce_context *ctx, uint32_t size); + + void hns_roce_init_qp_indices(struct hns_roce_qp *qp); + +diff --git a/providers/hns/hns_roce_u_buf.c b/providers/hns/hns_roce_u_buf.c +index c0f86e9..3d41b89 100644 +--- a/providers/hns/hns_roce_u_buf.c ++++ b/providers/hns/hns_roce_u_buf.c +@@ -196,6 +196,88 @@ static int shrink_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + + return ret; + } ++ ++struct hns_dca_mem_query_resp { ++ uint64_t key; ++ uint32_t offset; ++ uint32_t page_count; ++}; ++ ++static int query_dca_mem(struct hns_roce_context *ctx, uint32_t handle, ++ uint32_t index, struct hns_dca_mem_query_resp *resp) ++{ ++ int ret; ++ ++ DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, ++ HNS_IB_METHOD_DCA_MEM_QUERY, 5); ++ fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_QUERY_HANDLE, handle); ++ fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_QUERY_PAGE_INDEX, index); ++ fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_QUERY_OUT_KEY, ++ &resp->key, sizeof(resp->key)); ++ fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_QUERY_OUT_OFFSET, ++ &resp->offset, sizeof(resp->offset)); ++ fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_QUERY_OUT_PAGE_COUNT, ++ &resp->page_count, sizeof(resp->page_count)); ++ ret = execute_ioctl(&ctx->ibv_ctx.context, cmd); ++ if (ret) ++ verbs_err(&ctx->ibv_ctx, ++ "failed to query DCA mem-%u, ret = %d.\n", ++ handle, ret); ++ ++ return ret; ++} ++ ++void hns_roce_detach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, ++ struct hns_roce_dca_detach_attr *attr) ++{ ++ int ret; ++ ++ DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, ++ HNS_IB_METHOD_DCA_MEM_DETACH, 4); ++ fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_DETACH_HANDLE, handle); ++ fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_DETACH_SQ_INDEX, ++ attr->sq_index); ++ ret = execute_ioctl(&ctx->ibv_ctx.context, cmd); ++ if (ret) ++ verbs_warn(&ctx->ibv_ctx, ++ "failed to detach DCA mem-%u, ret = %d.\n", ++ handle, ret); ++} ++ ++struct hns_dca_mem_attach_resp { ++#define HNS_DCA_ATTACH_OUT_FLAGS_NEW_BUFFER BIT(0) ++ uint32_t alloc_flags; ++ uint32_t alloc_pages; ++}; ++ ++static int attach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, ++ struct hns_roce_dca_attach_attr *attr, ++ struct hns_dca_mem_attach_resp *resp) ++{ ++ int ret; ++ ++ DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, ++ HNS_IB_METHOD_DCA_MEM_ATTACH, 6); ++ fill_attr_in_obj(cmd, HNS_IB_ATTR_DCA_MEM_ATTACH_HANDLE, handle); ++ fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_ATTACH_SQ_OFFSET, ++ attr->sq_offset); ++ fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_ATTACH_SGE_OFFSET, ++ attr->sge_offset); ++ fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_ATTACH_RQ_OFFSET, ++ attr->rq_offset); ++ fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_ATTACH_OUT_ALLOC_FLAGS, ++ &resp->alloc_flags, sizeof(resp->alloc_flags)); ++ fill_attr_out(cmd, HNS_IB_ATTR_DCA_MEM_ATTACH_OUT_ALLOC_PAGES, ++ &resp->alloc_pages, sizeof(resp->alloc_pages)); ++ ret = execute_ioctl(&ctx->ibv_ctx.context, cmd); ++ if (ret) ++ verbs_err(&ctx->ibv_ctx, ++ "failed to attach DCA mem-%u, ret = %d.\n", ++ handle, ret); ++ ++ return ret; ++} ++ + static bool add_dca_mem_enabled(struct hns_roce_dca_ctx *ctx, + uint32_t alloc_size) + { +@@ -226,7 +308,7 @@ static bool shrink_dca_mem_enabled(struct hns_roce_dca_ctx *ctx) + return enable; + } + +-int hns_roce_add_dca_mem(struct hns_roce_context *ctx, uint32_t size) ++static int add_dca_mem(struct hns_roce_context *ctx, uint32_t size) + { + struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; + struct hns_roce_dca_mem *mem; +@@ -310,3 +392,92 @@ void hns_roce_shrink_dca_mem(struct hns_roce_context *ctx) + dca_mem_cnt--; + } + } ++ ++static void config_dca_pages(void *addr, struct hns_roce_dca_buf *buf, ++ uint32_t page_index, int page_count) ++{ ++ void **pages = &buf->bufs[page_index]; ++ int page_size = 1 << buf->shift; ++ int i; ++ ++ for (i = 0; i < page_count; i++) { ++ pages[i] = addr; ++ addr += page_size; ++ } ++} ++ ++static int setup_dca_buf(struct hns_roce_context *ctx, uint32_t handle, ++ struct hns_roce_dca_buf *buf, uint32_t page_count) ++{ ++ struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ struct hns_dca_mem_query_resp resp = {}; ++ struct hns_roce_dca_mem *mem; ++ uint32_t idx = 0; ++ int ret; ++ ++ while (idx < page_count && idx < buf->max_cnt) { ++ resp.page_count = 0; ++ ret = query_dca_mem(ctx, handle, idx, &resp); ++ if (ret) ++ return -ENOMEM; ++ if (resp.page_count < 1) ++ break; ++ ++ pthread_spin_lock(&dca_ctx->lock); ++ mem = key_to_dca_mem(dca_ctx, resp.key); ++ if (mem && resp.offset < mem->buf.length) { ++ config_dca_pages(dca_mem_addr(mem, resp.offset), ++ buf, idx, resp.page_count); ++ } else { ++ pthread_spin_unlock(&dca_ctx->lock); ++ break; ++ } ++ pthread_spin_unlock(&dca_ctx->lock); ++ ++ idx += resp.page_count; ++ } ++ ++ return (idx >= page_count) ? 0 : -ENOMEM; ++} ++ ++#define DCA_EXPAND_MEM_TRY_TIMES 3 ++int hns_roce_attach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, ++ struct hns_roce_dca_attach_attr *attr, ++ uint32_t size, struct hns_roce_dca_buf *buf) ++{ ++ uint32_t buf_pages = size >> buf->shift; ++ struct hns_dca_mem_attach_resp resp = {}; ++ bool is_new_buf = true; ++ int try_times = 0; ++ int ret = 0; ++ ++ do { ++ resp.alloc_pages = 0; ++ ret = attach_dca_mem(ctx, handle, attr, &resp); ++ if (ret) ++ break; ++ ++ if (resp.alloc_pages >= buf_pages) { ++ is_new_buf = !!(resp.alloc_flags & ++ HNS_DCA_ATTACH_OUT_FLAGS_NEW_BUFFER); ++ break; ++ } ++ ++ ret = add_dca_mem(ctx, size); ++ if (ret) ++ break; ++ } while (try_times++ < DCA_EXPAND_MEM_TRY_TIMES); ++ ++ if (ret || resp.alloc_pages < buf_pages) { ++ verbs_err(&ctx->ibv_ctx, ++ "failed to attach, size %u count %u != %u, ret = %d.\n", ++ size, buf_pages, resp.alloc_pages, ret); ++ return -ENOMEM; ++ } ++ ++ /* No need config user address if DCA config not changed */ ++ if (!is_new_buf && buf->bufs[0]) ++ return 0; ++ ++ return setup_dca_buf(ctx, handle, buf, buf_pages); ++} +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index f3a7e6b..7e3ad92 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -197,19 +197,35 @@ static struct hns_roce_v2_cqe *next_cqe_sw_v2(struct hns_roce_cq *cq) + return get_sw_cqe_v2(cq, cq->cons_index); + } + ++static inline bool check_qp_dca_enable(struct hns_roce_qp *qp) ++{ ++ return !!qp->dca_wqe.bufs; ++} ++ ++static inline void *get_wqe(struct hns_roce_qp *qp, unsigned int offset) ++{ ++ if (likely(qp->buf.buf)) ++ return qp->buf.buf + offset; ++ else if (unlikely(check_qp_dca_enable(qp))) ++ return qp->dca_wqe.bufs[offset >> qp->dca_wqe.shift] + ++ (offset & ((1 << qp->dca_wqe.shift) - 1)); ++ else ++ return NULL; ++} ++ + static void *get_recv_wqe_v2(struct hns_roce_qp *qp, unsigned int n) + { +- return qp->buf.buf + qp->rq.offset + (n << qp->rq.wqe_shift); ++ return get_wqe(qp, qp->rq.offset + (n << qp->rq.wqe_shift)); + } + + static void *get_send_wqe(struct hns_roce_qp *qp, unsigned int n) + { +- return qp->buf.buf + qp->sq.offset + (n << qp->sq.wqe_shift); ++ return get_wqe(qp, qp->sq.offset + (n << qp->sq.wqe_shift)); + } + + static void *get_send_sge_ex(struct hns_roce_qp *qp, unsigned int n) + { +- return qp->buf.buf + qp->ex_sge.offset + (n << qp->ex_sge.sge_shift); ++ return get_wqe(qp, qp->ex_sge.offset + (n << qp->ex_sge.sge_shift)); + } + + static void *get_srq_wqe(struct hns_roce_srq *srq, unsigned int n) +@@ -569,6 +585,73 @@ static void parse_cqe_for_req(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, + wc->opcode = wc_send_op_map[opcode]; + } + ++static bool check_dca_attach_enable(struct hns_roce_qp *qp) ++{ ++ return check_qp_dca_enable(qp) && ++ (qp->flags & HNS_ROCE_QP_CAP_DYNAMIC_CTX_ATTACH); ++} ++ ++static bool check_dca_detach_enable(struct hns_roce_qp *qp) ++{ ++ return check_qp_dca_enable(qp) && ++ (qp->flags & HNS_ROCE_QP_CAP_DYNAMIC_CTX_DETACH); ++} ++ ++static int dca_attach_qp_buf(struct hns_roce_context *ctx, ++ struct hns_roce_qp *qp) ++{ ++ struct hns_roce_dca_attach_attr attr = {}; ++ uint32_t idx; ++ int ret; ++ ++ hns_roce_spin_lock(&qp->sq.hr_lock); ++ hns_roce_spin_lock(&qp->rq.hr_lock); ++ ++ if (qp->sq.wqe_cnt > 0) { ++ idx = qp->sq.head & (qp->sq.wqe_cnt - 1); ++ attr.sq_offset = idx << qp->sq.wqe_shift; ++ } ++ ++ if (qp->ex_sge.sge_cnt > 0) { ++ idx = qp->next_sge & (qp->ex_sge.sge_cnt - 1); ++ attr.sge_offset = idx << qp->ex_sge.sge_shift; ++ } ++ ++ if (qp->rq.wqe_cnt > 0) { ++ idx = qp->rq.head & (qp->rq.wqe_cnt - 1); ++ attr.rq_offset = idx << qp->rq.wqe_shift; ++ } ++ ++ ++ ret = hns_roce_attach_dca_mem(ctx, qp->verbs_qp.qp.handle, &attr, ++ qp->buf_size, &qp->dca_wqe); ++ ++ hns_roce_spin_unlock(&qp->rq.hr_lock); ++ hns_roce_spin_unlock(&qp->sq.hr_lock); ++ ++ return ret; ++} ++ ++static void dca_detach_qp_buf(struct hns_roce_context *ctx, ++ struct hns_roce_qp *qp) ++{ ++ struct hns_roce_dca_detach_attr attr; ++ bool is_empty; ++ ++ hns_roce_spin_lock(&qp->sq.hr_lock); ++ hns_roce_spin_lock(&qp->rq.hr_lock); ++ ++ is_empty = qp->sq.head == qp->sq.tail && qp->rq.head == qp->rq.tail; ++ if (is_empty && qp->sq.wqe_cnt > 0) ++ attr.sq_index = qp->sq.head & (qp->sq.wqe_cnt - 1); ++ ++ hns_roce_spin_unlock(&qp->rq.hr_lock); ++ hns_roce_spin_unlock(&qp->sq.hr_lock); ++ ++ if (is_empty) ++ hns_roce_detach_dca_mem(ctx, qp->verbs_qp.qp.handle, &attr); ++} ++ + static void cqe_proc_sq(struct hns_roce_qp *hr_qp, uint32_t wqe_idx, + struct hns_roce_cq *cq) + { +@@ -725,6 +808,9 @@ static int hns_roce_u_v2_poll_cq(struct ibv_cq *ibvcq, int ne, + + for (npolled = 0; npolled < ne; ++npolled) { + err = hns_roce_poll_one(ctx, &qp, cq, wc + npolled); ++ if (qp && check_dca_detach_enable(qp)) ++ dca_detach_qp_buf(ctx, qp); ++ + if (err != V2_CQ_OK) + break; + } +@@ -768,19 +854,30 @@ static int hns_roce_u_v2_arm_cq(struct ibv_cq *ibvcq, int solicited) + return 0; + } + +-static int check_qp_send(struct ibv_qp *qp, struct hns_roce_context *ctx) ++static int check_qp_send(struct hns_roce_qp *qp, struct hns_roce_context *ctx) + { +- if (unlikely(qp->qp_type != IBV_QPT_RC && +- qp->qp_type != IBV_QPT_UD) && +- qp->qp_type != IBV_QPT_XRC_SEND) ++ struct ibv_qp *ibvqp = &qp->verbs_qp.qp; ++ int ret = 0; ++ ++ if (unlikely(ibvqp->qp_type != IBV_QPT_RC && ++ ibvqp->qp_type != IBV_QPT_UD) && ++ ibvqp->qp_type != IBV_QPT_XRC_SEND) + return -EINVAL; + +- if (unlikely(qp->state == IBV_QPS_RESET || +- qp->state == IBV_QPS_INIT || +- qp->state == IBV_QPS_RTR)) ++ if (unlikely(ibvqp->state == IBV_QPS_RESET || ++ ibvqp->state == IBV_QPS_INIT || ++ ibvqp->state == IBV_QPS_RTR)) + return -EINVAL; + +- return 0; ++ if (check_dca_attach_enable(qp)) { ++ ret = dca_attach_qp_buf(ctx, qp); ++ if (ret) ++ verbs_err_datapath(&ctx->ibv_ctx, ++ "failed to attach QP-%u send, ret = %d.\n", ++ qp->verbs_qp.qp.qp_num, ret); ++ } ++ ++ return ret; + } + + static void set_rc_sge(struct hns_roce_v2_wqe_data_seg *dseg, +@@ -1148,6 +1245,13 @@ static int set_rc_inl(struct hns_roce_qp *qp, const struct ibv_send_wr *wr, + return 0; + } + ++static inline void fill_rc_dca_fields(uint32_t qp_num, ++ struct hns_roce_rc_sq_wqe *wqe) ++{ ++ hr_reg_write(wqe, RCWQE_SQPN_L, qp_num); ++ hr_reg_write(wqe, RCWQE_SQPN_H, qp_num >> RCWQE_SQPN_L_WIDTH); ++} ++ + static void set_bind_mw_seg(struct hns_roce_rc_sq_wqe *wqe, + const struct ibv_send_wr *wr) + { +@@ -1259,6 +1363,9 @@ static int set_rc_wqe(void *wqe, struct hns_roce_qp *qp, struct ibv_send_wr *wr, + return ret; + + wqe_valid: ++ if (check_qp_dca_enable(qp)) ++ fill_rc_dca_fields(qp->verbs_qp.qp.qp_num, rc_sq_wqe); ++ + enable_wqe(qp, rc_sq_wqe, qp->sq.head + nreq); + + return 0; +@@ -1275,7 +1382,7 @@ int hns_roce_u_v2_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr, + struct ibv_qp_attr attr; + int ret; + +- ret = check_qp_send(ibvqp, ctx); ++ ret = check_qp_send(qp, ctx); + if (unlikely(ret)) { + *bad_wr = wr; + return ret; +@@ -1352,15 +1459,20 @@ out: + return ret; + } + +-static int check_qp_recv(struct ibv_qp *qp, struct hns_roce_context *ctx) ++static int check_qp_recv(struct hns_roce_qp *qp, struct hns_roce_context *ctx) + { +- if (unlikely(qp->qp_type != IBV_QPT_RC && +- qp->qp_type != IBV_QPT_UD)) ++ struct ibv_qp *ibvqp = &qp->verbs_qp.qp; ++ ++ if (unlikely(ibvqp->qp_type != IBV_QPT_RC && ++ ibvqp->qp_type != IBV_QPT_UD)) + return -EINVAL; + +- if (qp->state == IBV_QPS_RESET || qp->srq) ++ if (ibvqp->state == IBV_QPS_RESET || ibvqp->srq) + return -EINVAL; + ++ if (check_dca_attach_enable(qp)) ++ return dca_attach_qp_buf(ctx, qp); ++ + return 0; + } + +@@ -1428,7 +1540,7 @@ static int hns_roce_u_v2_post_recv(struct ibv_qp *ibvqp, struct ibv_recv_wr *wr, + struct ibv_qp_attr attr; + int ret; + +- ret = check_qp_recv(ibvqp, ctx); ++ ret = check_qp_recv(qp, ctx); + if (unlikely(ret)) { + *bad_wr = wr; + return ret; +@@ -1551,6 +1663,7 @@ static void record_qp_attr(struct ibv_qp *qp, struct ibv_qp_attr *attr, + static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + int attr_mask) + { ++ struct hns_roce_context *ctx = to_hr_ctx(qp->context); + struct hns_roce_modify_qp_ex_resp resp_ex = {}; + struct hns_roce_modify_qp_ex cmd_ex = {}; + struct hns_roce_qp *hr_qp = to_hr_qp(qp); +@@ -1598,6 +1711,10 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + if (hr_qp->tc_mode == HNS_ROCE_TC_MAP_MODE_DSCP) + hr_qp->sl = hr_qp->priority; + ++ /* Try to shrink the DCA mem */ ++ if (ctx->dca_ctx.mem_cnt > 0) ++ hns_roce_shrink_dca_mem(ctx); ++ + record_qp_attr(qp, attr, attr_mask); + + return ret; +diff --git a/providers/hns/hns_roce_u_hw_v2.h b/providers/hns/hns_roce_u_hw_v2.h +index d71c695..a22995d 100644 +--- a/providers/hns/hns_roce_u_hw_v2.h ++++ b/providers/hns/hns_roce_u_hw_v2.h +@@ -239,6 +239,8 @@ struct hns_roce_rc_sq_wqe { + #define RCWQE_MW_RR_EN RCWQE_FIELD_LOC(259, 259) + #define RCWQE_MW_RW_EN RCWQE_FIELD_LOC(260, 260) + ++#define RCWQE_SQPN_L_WIDTH 2 ++ + struct hns_roce_v2_wqe_data_seg { + __le32 len; + __le32 lkey; +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index f6c7423..749b01b 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -1165,6 +1165,14 @@ static int calc_qp_buff_size(struct hns_roce_device *hr_dev, + return 0; + } + ++static inline bool check_qp_support_dca(bool pool_en, enum ibv_qp_type qp_type) ++{ ++ if (pool_en && (qp_type == IBV_QPT_RC || qp_type == IBV_QPT_XRC_SEND)) ++ return true; ++ ++ return false; ++} ++ + static void qp_free_wqe(struct hns_roce_qp *qp) + { + free_recv_rinl_buf(&qp->rq_rinl_buf); +@@ -1176,8 +1184,8 @@ static void qp_free_wqe(struct hns_roce_qp *qp) + hns_roce_free_buf(&qp->buf); + } + +-static int qp_alloc_wqe(struct ibv_qp_cap *cap, struct hns_roce_qp *qp, +- struct hns_roce_context *ctx) ++static int qp_alloc_wqe(struct ibv_qp_init_attr_ex *attr, ++ struct hns_roce_qp *qp, struct hns_roce_context *ctx) + { + struct hns_roce_device *hr_dev = to_hr_dev(ctx->ibv_ctx.context.device); + +@@ -1195,12 +1203,24 @@ static int qp_alloc_wqe(struct ibv_qp_cap *cap, struct hns_roce_qp *qp, + } + + if (qp->rq_rinl_buf.wqe_cnt) { +- if (alloc_recv_rinl_buf(cap->max_recv_sge, &qp->rq_rinl_buf)) ++ if (alloc_recv_rinl_buf(attr->cap.max_recv_sge, ++ &qp->rq_rinl_buf)) + goto err_alloc; + } + +- if (hns_roce_alloc_buf(&qp->buf, qp->buf_size, HNS_HW_PAGE_SIZE)) +- goto err_alloc; ++ if (check_qp_support_dca(ctx->dca_ctx.max_size != 0, attr->qp_type)) { ++ /* when DCA is enabled, use a buffer list to store page addr */ ++ qp->buf.buf = NULL; ++ qp->dca_wqe.max_cnt = hr_hw_page_count(qp->buf_size); ++ qp->dca_wqe.shift = HNS_HW_PAGE_SHIFT; ++ qp->dca_wqe.bufs = calloc(qp->dca_wqe.max_cnt, sizeof(void *)); ++ if (!qp->dca_wqe.bufs) ++ goto err_alloc; ++ } else { ++ if (hns_roce_alloc_buf(&qp->buf, qp->buf_size, ++ HNS_HW_PAGE_SIZE)) ++ goto err_alloc; ++ } + + return 0; + +@@ -1467,7 +1487,7 @@ static int hns_roce_alloc_qp_buf(struct ibv_qp_init_attr_ex *attr, + pthread_spin_init(&qp->rq.hr_lock.lock, PTHREAD_PROCESS_PRIVATE)) + return -ENOMEM; + +- ret = qp_alloc_wqe(&attr->cap, qp, ctx); ++ ret = qp_alloc_wqe(attr, qp, ctx); + if (ret) + return ret; + +-- +2.30.0 + diff --git a/0035-libhns-Use-shared-memory-to-sync-DCA-status.patch b/0035-libhns-Use-shared-memory-to-sync-DCA-status.patch new file mode 100644 index 0000000000000000000000000000000000000000..635c0807ee0242800cb9cc6079425bcc64dff91b --- /dev/null +++ b/0035-libhns-Use-shared-memory-to-sync-DCA-status.patch @@ -0,0 +1,167 @@ +From a5e62921afc2fcc152e8b0584f2d04d1a4db4f10 Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Tue, 29 Jun 2021 20:06:47 +0800 +Subject: libhns: Use shared memory to sync DCA status + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I63L1M + +---------------------------------------------------------- + +The user DCA needs to check the QP attaching state before filling wqe +buffer by the response from uverbs 'HNS_IB_METHOD_DCA_MEM_ATTACH', but +this will result in too much time being wasted on system calls, so use a +shared table between user driver and kernel driver to sync DCA status. + +Signed-off-by: Chengchang Tang +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.c | 51 +++++++++++++++++++++++++++++++++++--- + providers/hns/hns_roce_u.h | 10 ++++++++ + 2 files changed, 57 insertions(+), 4 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index bd2b251..fe30cda 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -95,9 +95,33 @@ static const struct verbs_context_ops hns_common_ops = { + .alloc_parent_domain = hns_roce_u_alloc_pad, + }; + +-static int init_dca_context(struct hns_roce_context *ctx, int page_size) ++static int mmap_dca(struct hns_roce_context *ctx, int cmd_fd, ++ int page_size, size_t size, uint64_t mmap_key) + { + struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ void *addr; ++ ++ addr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, cmd_fd, ++ mmap_key); ++ if (addr == MAP_FAILED) { ++ verbs_err(&ctx->ibv_ctx, "failed to mmap() dca prime qp.\n"); ++ return -EINVAL; ++ } ++ ++ dca_ctx->buf_status = addr; ++ dca_ctx->sync_status = addr + size / 2; ++ ++ return 0; ++} ++ ++static int init_dca_context(struct hns_roce_context *ctx, int cmd_fd, ++ struct hns_roce_alloc_ucontext_resp *resp, ++ int page_size) ++{ ++ struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ uint64_t mmap_key = resp->dca_mmap_key; ++ int mmap_size = resp->dca_mmap_size; ++ int max_qps = resp->dca_qps; + int ret; + + if (!(ctx->config & HNS_ROCE_UCTX_RSP_DCA_FLAGS)) +@@ -112,6 +136,16 @@ static int init_dca_context(struct hns_roce_context *ctx, int page_size) + dca_ctx->max_size = HNS_DCA_MAX_MEM_SIZE; + dca_ctx->mem_cnt = 0; + ++ if (mmap_key) { ++ const unsigned int bits_per_qp = 2 * HNS_DCA_BITS_PER_STATUS; ++ ++ if (!mmap_dca(ctx, cmd_fd, page_size, mmap_size, mmap_key)) { ++ dca_ctx->status_size = mmap_size; ++ dca_ctx->max_qps = min_t(int, max_qps, ++ mmap_size * 8 / bits_per_qp); ++ } ++ } ++ + return 0; + } + +@@ -125,6 +159,8 @@ static void uninit_dca_context(struct hns_roce_context *ctx) + pthread_spin_lock(&dca_ctx->lock); + hns_roce_cleanup_dca_mem(ctx); + pthread_spin_unlock(&dca_ctx->lock); ++ if (dca_ctx->buf_status) ++ munmap(dca_ctx->buf_status, dca_ctx->status_size); + + pthread_spin_destroy(&dca_ctx->lock); + } +@@ -149,6 +185,14 @@ static uint32_t calc_table_shift(uint32_t entry_count, uint32_t size_shift) + return count_shift > size_shift ? count_shift - size_shift : 0; + } + ++static void ucontext_set_cmd(struct hns_roce_alloc_ucontext *cmd, int page_size) ++{ ++ cmd->config |= HNS_ROCE_EXSGE_FLAGS | HNS_ROCE_RQ_INLINE_FLAGS | ++ HNS_ROCE_CQE_INLINE_FLAGS | HNS_ROCE_UCTX_CONFIG_DCA; ++ cmd->comp = HNS_ROCE_ALLOC_UCTX_COMP_DCA_MAX_QPS; ++ cmd->dca_max_qps = page_size * 8 / 2 * HNS_DCA_BITS_PER_STATUS; ++} ++ + static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + int cmd_fd, + void *private_data) +@@ -165,8 +209,7 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + if (!context) + return NULL; + +- cmd.config |= HNS_ROCE_EXSGE_FLAGS | HNS_ROCE_RQ_INLINE_FLAGS | +- HNS_ROCE_CQE_INLINE_FLAGS | HNS_ROCE_UCTX_CONFIG_DCA; ++ ucontext_set_cmd(&cmd, hr_dev->page_size); + if (ibv_cmd_get_context(&context->ibv_ctx, &cmd.ibv_cmd, sizeof(cmd), + &resp.ibv_resp, sizeof(resp))) + goto err_free; +@@ -212,7 +255,7 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + context->max_srq_wr = dev_attrs.max_srq_wr; + context->max_srq_sge = dev_attrs.max_srq_sge; + +- if (init_dca_context(context, hr_dev->page_size)) ++ if (init_dca_context(context, cmd_fd, &resp, hr_dev->page_size)) + goto err_free; + + if (hns_roce_mmap(hr_dev, context, cmd_fd)) +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 44a733f..a8f811e 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -35,6 +35,7 @@ + + #include + #include ++#include + #include + + #include +@@ -44,6 +45,7 @@ + #include + #include + #include ++#include + #include + #include "hns_roce_u_abi.h" + +@@ -52,6 +54,8 @@ + + #define PFX "hns: " + ++typedef _Atomic(uint64_t) atomic_bitmap_t; ++ + /* The minimum page size is 4K for hardware */ + #define HNS_HW_PAGE_SHIFT 12 + #define HNS_HW_PAGE_SIZE (1 << HNS_HW_PAGE_SHIFT) +@@ -214,6 +218,12 @@ struct hns_roce_dca_ctx { + uint64_t max_size; + uint64_t min_size; + uint64_t curr_size; ++ ++#define HNS_DCA_BITS_PER_STATUS 1 ++ unsigned int max_qps; ++ unsigned int status_size; ++ atomic_bitmap_t *buf_status; ++ atomic_bitmap_t *sync_status; + }; + + struct hns_roce_context { +-- +2.30.0 + diff --git a/0036-libhns-Sync-DCA-status-by-shared-memory.patch b/0036-libhns-Sync-DCA-status-by-shared-memory.patch new file mode 100644 index 0000000000000000000000000000000000000000..e9108f8811707b0cd926b3a84a0127873a24d476 --- /dev/null +++ b/0036-libhns-Sync-DCA-status-by-shared-memory.patch @@ -0,0 +1,222 @@ +From 13d4b60fcd0880fae54b1af627eeb7297d7b086d Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Tue, 29 Jun 2021 21:01:27 +0800 +Subject: libhns: Sync DCA status by shared memory + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I63L1M + +---------------------------------------------------------- + +Use DCA num from the resp of modify_qp() and indicate the DCA status bit in +the shared memory, if the num is valid, the user DCA can get the DCA status +by testing the bit in the shared memory for each QP, othewise invoke the +verbs 'HNS_IB_METHOD_DCA_MEM_ATTACH' to check the DCA status. + +Each QP has 2 bits in shared memory, 1 bit is used to lock the DCA status +changing by kernel driver or user driver, another bit is used to indicate +the DCA attaching status. + +Signed-off-by: Chengchang Tang +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.h | 31 +++++++++++++++++++++++ + providers/hns/hns_roce_u_buf.c | 42 ++++++++++++++++++++++++++++++++ + providers/hns/hns_roce_u_hw_v2.c | 20 ++++++++++++++- + 3 files changed, 92 insertions(+), 1 deletion(-) + +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index a8f811e..91b0c8f 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -362,6 +362,7 @@ struct hns_roce_dca_buf { + void **bufs; + unsigned int max_cnt; + unsigned int shift; ++ unsigned int dcan; + }; + + struct hns_roce_qp { +@@ -422,6 +423,7 @@ struct hns_roce_dca_attach_attr { + uint32_t sq_offset; + uint32_t sge_offset; + uint32_t rq_offset; ++ bool force; + }; + + struct hns_roce_dca_detach_attr { +@@ -534,6 +536,32 @@ static inline int hns_roce_spin_unlock(struct hns_roce_spinlock *hr_lock) + return 0; + } + ++#define HNS_ROCE_BIT_MASK(nr) (1UL << ((nr) % 64)) ++#define HNS_ROCE_BIT_WORD(nr) ((nr) / 64) ++ ++static inline bool atomic_test_bit(atomic_bitmap_t *p, uint32_t nr) ++{ ++ p += HNS_ROCE_BIT_WORD(nr); ++ return !!(atomic_load(p) & HNS_ROCE_BIT_MASK(nr)); ++} ++ ++static inline bool test_and_set_bit_lock(atomic_bitmap_t *p, uint32_t nr) ++{ ++ uint64_t mask = HNS_ROCE_BIT_MASK(nr); ++ ++ p += HNS_ROCE_BIT_WORD(nr); ++ if (atomic_load(p) & mask) ++ return true; ++ ++ return (atomic_fetch_or(p, mask) & mask) != 0; ++} ++ ++static inline void clear_bit_unlock(atomic_bitmap_t *p, uint32_t nr) ++{ ++ p += HNS_ROCE_BIT_WORD(nr); ++ atomic_fetch_and(p, ~HNS_ROCE_BIT_MASK(nr)); ++} ++ + int hns_roce_u_query_device(struct ibv_context *context, + const struct ibv_query_device_ex_input *input, + struct ibv_device_attr_ex *attr, size_t attr_size); +@@ -614,6 +642,9 @@ int hns_roce_attach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + uint32_t size, struct hns_roce_dca_buf *buf); + void hns_roce_detach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + struct hns_roce_dca_detach_attr *attr); ++bool hns_roce_dca_start_post(struct hns_roce_dca_ctx *ctx, uint32_t dcan); ++void hns_roce_dca_stop_post(struct hns_roce_dca_ctx *ctx, uint32_t dcan); ++ + void hns_roce_shrink_dca_mem(struct hns_roce_context *ctx); + void hns_roce_cleanup_dca_mem(struct hns_roce_context *ctx); + +diff --git a/providers/hns/hns_roce_u_buf.c b/providers/hns/hns_roce_u_buf.c +index 3d41b89..08c0fbc 100644 +--- a/providers/hns/hns_roce_u_buf.c ++++ b/providers/hns/hns_roce_u_buf.c +@@ -440,6 +440,45 @@ static int setup_dca_buf(struct hns_roce_context *ctx, uint32_t handle, + return (idx >= page_count) ? 0 : -ENOMEM; + } + ++#define DCAN_TO_SYNC_BIT(n) ((n) * HNS_DCA_BITS_PER_STATUS) ++#define DCAN_TO_STAT_BIT(n) DCAN_TO_SYNC_BIT(n) ++ ++#define MAX_DCA_TRY_LOCK_TIMES 10 ++bool hns_roce_dca_start_post(struct hns_roce_dca_ctx *ctx, uint32_t dcan) ++{ ++ atomic_bitmap_t *st = ctx->sync_status; ++ int try_times = 0; ++ ++ if (!st || dcan >= ctx->max_qps) ++ return true; ++ ++ while (test_and_set_bit_lock(st, DCAN_TO_SYNC_BIT(dcan))) ++ if (try_times++ > MAX_DCA_TRY_LOCK_TIMES) ++ return false; ++ ++ return true; ++} ++ ++void hns_roce_dca_stop_post(struct hns_roce_dca_ctx *ctx, uint32_t dcan) ++{ ++ atomic_bitmap_t *st = ctx->sync_status; ++ ++ if (!st || dcan >= ctx->max_qps) ++ return; ++ ++ clear_bit_unlock(st, DCAN_TO_SYNC_BIT(dcan)); ++} ++ ++static bool check_dca_is_attached(struct hns_roce_dca_ctx *ctx, uint32_t dcan) ++{ ++ atomic_bitmap_t *st = ctx->buf_status; ++ ++ if (!st || dcan >= ctx->max_qps) ++ return false; ++ ++ return atomic_test_bit(st, DCAN_TO_STAT_BIT(dcan)); ++} ++ + #define DCA_EXPAND_MEM_TRY_TIMES 3 + int hns_roce_attach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + struct hns_roce_dca_attach_attr *attr, +@@ -451,6 +490,9 @@ int hns_roce_attach_dca_mem(struct hns_roce_context *ctx, uint32_t handle, + int try_times = 0; + int ret = 0; + ++ if (!attr->force && check_dca_is_attached(&ctx->dca_ctx, buf->dcan)) ++ return 0; ++ + do { + resp.alloc_pages = 0; + ret = attach_dca_mem(ctx, handle, attr, &resp); +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 7e3ad92..028d20c 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -601,6 +601,7 @@ static int dca_attach_qp_buf(struct hns_roce_context *ctx, + struct hns_roce_qp *qp) + { + struct hns_roce_dca_attach_attr attr = {}; ++ bool enable_detach; + uint32_t idx; + int ret; + +@@ -622,9 +623,16 @@ static int dca_attach_qp_buf(struct hns_roce_context *ctx, + attr.rq_offset = idx << qp->rq.wqe_shift; + } + ++ enable_detach = check_dca_detach_enable(qp); ++ if (enable_detach && ++ !hns_roce_dca_start_post(&ctx->dca_ctx, qp->dca_wqe.dcan)) ++ /* Force attach if failed to sync dca status */ ++ attr.force = true; + + ret = hns_roce_attach_dca_mem(ctx, qp->verbs_qp.qp.handle, &attr, +- qp->buf_size, &qp->dca_wqe); ++ qp->buf_size, &qp->dca_wqe); ++ if (ret && enable_detach) ++ hns_roce_dca_stop_post(&ctx->dca_ctx, qp->dca_wqe.dcan); + + hns_roce_spin_unlock(&qp->rq.hr_lock); + hns_roce_spin_unlock(&qp->sq.hr_lock); +@@ -1450,6 +1458,9 @@ out: + + hns_roce_spin_unlock(&qp->sq.hr_lock); + ++ if (check_dca_detach_enable(qp)) ++ hns_roce_dca_stop_post(&ctx->dca_ctx, qp->dca_wqe.dcan); ++ + if (ibvqp->state == IBV_QPS_ERR) { + attr.qp_state = IBV_QPS_ERR; + +@@ -1582,6 +1593,9 @@ out: + + hns_roce_spin_unlock(&qp->rq.hr_lock); + ++ if (check_dca_detach_enable(qp)) ++ hns_roce_dca_stop_post(&ctx->dca_ctx, qp->dca_wqe.dcan); ++ + if (ibvqp->state == IBV_QPS_ERR) { + attr.qp_state = IBV_QPS_ERR; + hns_roce_u_v2_modify_qp(ibvqp, &attr, IBV_QP_STATE); +@@ -1693,6 +1707,7 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + if (attr->qp_state == IBV_QPS_RTR) { + hr_qp->tc_mode = resp_ex.drv_payload.tc_mode; + hr_qp->priority = resp_ex.drv_payload.priority; ++ hr_qp->dca_wqe.dcan = resp_ex.drv_payload.dcan; + } + } + +@@ -2721,6 +2736,9 @@ static int wr_complete(struct ibv_qp_ex *ibv_qp) + out: + hns_roce_spin_unlock(&qp->sq.hr_lock); + ++ if (check_dca_detach_enable(qp)) ++ hns_roce_dca_stop_post(&ctx->dca_ctx, qp->dca_wqe.dcan); ++ + if (ibv_qp->qp_base.state == IBV_QPS_ERR) { + attr.qp_state = IBV_QPS_ERR; + hns_roce_u_v2_modify_qp(&ibv_qp->qp_base, &attr, IBV_QP_STATE); +-- +2.30.0 + diff --git a/0037-libhns-Add-direct-verbs-support-to-config-DCA.patch b/0037-libhns-Add-direct-verbs-support-to-config-DCA.patch new file mode 100644 index 0000000000000000000000000000000000000000..87e9ddf2583bafa9cbfb72820d71dcf734132124 --- /dev/null +++ b/0037-libhns-Add-direct-verbs-support-to-config-DCA.patch @@ -0,0 +1,766 @@ +From 6aa5efb3059c66d3d0f49804551b38c5ed827ec1 Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Mon, 10 May 2021 17:13:49 +0800 +Subject: libhns: Add direct verbs support to config DCA + +driver inclusion +category: feature +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I63L1M + +---------------------------------------------------------- + +Add two direct verbs to config DCA: +1. hnsdv_open_device() is used to config DCA memory pool. +2. hnsdv_create_qp() is used to create a DCA QP. + +Signed-off-by: Chengchang Tang +Reviewed-by: Yangyang Li +--- + debian/control | 2 +- + debian/ibverbs-providers.install | 1 + + debian/ibverbs-providers.lintian-overrides | 4 +- + debian/ibverbs-providers.symbols | 6 ++ + debian/libibverbs-dev.install | 4 + + providers/hns/CMakeLists.txt | 9 ++- + providers/hns/hns_roce_u.c | 92 +++++++++++++++++++--- + providers/hns/hns_roce_u.h | 2 + + providers/hns/hns_roce_u_abi.h | 1 + + providers/hns/hns_roce_u_buf.c | 3 + + providers/hns/hns_roce_u_hw_v2.c | 33 +++++++- + providers/hns/hns_roce_u_verbs.c | 58 ++++++++++++-- + providers/hns/hnsdv.h | 65 +++++++++++++++ + providers/hns/libhns.map | 9 +++ + redhat/rdma-core.spec | 5 +- + suse/rdma-core.spec | 21 ++++- + 16 files changed, 289 insertions(+), 26 deletions(-) + create mode 100644 providers/hns/hnsdv.h + create mode 100644 providers/hns/libhns.map + +diff --git a/debian/control b/debian/control +index 7485ad3..22eb6cd 100644 +--- a/debian/control ++++ b/debian/control +@@ -94,7 +94,7 @@ Description: User space provider drivers for libibverbs + - cxgb4: Chelsio T4 iWARP HCAs + - efa: Amazon Elastic Fabric Adapter + - hfi1verbs: Intel Omni-Path HFI +- - hns: HiSilicon Hip06 SoC ++ - hns: HiSilicon Hip08+ SoC + - ipathverbs: QLogic InfiniPath HCAs + - irdma: Intel Ethernet Connection RDMA + - mlx4: Mellanox ConnectX-3 InfiniBand HCAs +diff --git a/debian/ibverbs-providers.install b/debian/ibverbs-providers.install +index 4f971fb..c6ecbbc 100644 +--- a/debian/ibverbs-providers.install ++++ b/debian/ibverbs-providers.install +@@ -1,5 +1,6 @@ + etc/libibverbs.d/ + usr/lib/*/libefa.so.* + usr/lib/*/libibverbs/lib*-rdmav*.so ++usr/lib/*/libhns.so.* + usr/lib/*/libmlx4.so.* + usr/lib/*/libmlx5.so.* +diff --git a/debian/ibverbs-providers.lintian-overrides b/debian/ibverbs-providers.lintian-overrides +index 8a44d54..f6afb70 100644 +--- a/debian/ibverbs-providers.lintian-overrides ++++ b/debian/ibverbs-providers.lintian-overrides +@@ -1,2 +1,2 @@ +-# libefa, libmlx4 and libmlx5 are ibverbs provider that provides more functions. +-ibverbs-providers: package-name-doesnt-match-sonames libefa1 libmlx4-1 libmlx5-1 ++# libefa, libhns, libmlx4 and libmlx5 are ibverbs provider that provides more functions. ++ibverbs-providers: package-name-doesnt-match-sonames libefa1 libhns-1 libmlx4-1 libmlx5-1 +diff --git a/debian/ibverbs-providers.symbols b/debian/ibverbs-providers.symbols +index 2c6b330..1844369 100644 +--- a/debian/ibverbs-providers.symbols ++++ b/debian/ibverbs-providers.symbols +@@ -162,3 +162,9 @@ libefa.so.1 ibverbs-providers #MINVER# + efadv_create_qp_ex@EFA_1.1 26 + efadv_query_device@EFA_1.1 26 + efadv_query_ah@EFA_1.1 26 ++libhns.so.1 ibverbs-providers #MINVER# ++* Build-Depends-Package: libibverbs-dev ++ HNS_1.0@HNS_1.0 36 ++ hnsdv_is_supported@HNS_1.0 36 ++ hnsdv_open_device@HNS_1.0 36 ++ hnsdv_create_qp@HNS_1.0 36 +diff --git a/debian/libibverbs-dev.install b/debian/libibverbs-dev.install +index bc8caa5..7d6e6a2 100644 +--- a/debian/libibverbs-dev.install ++++ b/debian/libibverbs-dev.install +@@ -1,5 +1,6 @@ + usr/include/infiniband/arch.h + usr/include/infiniband/efadv.h ++usr/include/infiniband/hnsdv.h + usr/include/infiniband/ib_user_ioctl_verbs.h + usr/include/infiniband/mlx4dv.h + usr/include/infiniband/mlx5_api.h +@@ -14,6 +15,8 @@ usr/include/infiniband/verbs_api.h + usr/lib/*/lib*-rdmav*.a + usr/lib/*/libefa.a + usr/lib/*/libefa.so ++usr/lib/*/libhns.a ++usr/lib/*/libhns.so + usr/lib/*/libibverbs*.so + usr/lib/*/libibverbs.a + usr/lib/*/libmlx4.a +@@ -21,6 +24,7 @@ usr/lib/*/libmlx4.so + usr/lib/*/libmlx5.a + usr/lib/*/libmlx5.so + usr/lib/*/pkgconfig/libefa.pc ++usr/lib/*/pkgconfig/libhns.pc + usr/lib/*/pkgconfig/libibverbs.pc + usr/lib/*/pkgconfig/libmlx4.pc + usr/lib/*/pkgconfig/libmlx5.pc +diff --git a/providers/hns/CMakeLists.txt b/providers/hns/CMakeLists.txt +index 7aaca75..160e1ff 100644 +--- a/providers/hns/CMakeLists.txt ++++ b/providers/hns/CMakeLists.txt +@@ -1,7 +1,14 @@ +-rdma_provider(hns ++rdma_shared_provider(hns libhns.map ++ 1 1.0.${PACKAGE_VERSION} + hns_roce_u.c + hns_roce_u_buf.c + hns_roce_u_db.c + hns_roce_u_hw_v2.c + hns_roce_u_verbs.c + ) ++ ++publish_headers(infiniband ++ hnsdv.h ++) ++ ++rdma_pkg_config("hns" "libibverbs" "${CMAKE_THREAD_LIBS_INIT}") +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index fe30cda..0cf6d4b 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -114,8 +114,60 @@ static int mmap_dca(struct hns_roce_context *ctx, int cmd_fd, + return 0; + } + ++bool hnsdv_is_supported(struct ibv_device *device) ++{ ++ return is_hns_dev(device); ++} ++ ++struct ibv_context *hnsdv_open_device(struct ibv_device *device, ++ struct hnsdv_context_attr *attr) ++{ ++ if (!is_hns_dev(device)) { ++ errno = EOPNOTSUPP; ++ return NULL; ++ } ++ ++ return verbs_open_device(device, attr); ++} ++ ++static void set_dca_pool_param(struct hns_roce_context *ctx, ++ struct hnsdv_context_attr *attr, int page_size) ++{ ++ struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; ++ ++ if (attr->comp_mask & HNSDV_CONTEXT_MASK_DCA_UNIT_SIZE) ++ dca_ctx->unit_size = align(attr->dca_unit_size, page_size); ++ else ++ dca_ctx->unit_size = page_size * HNS_DCA_DEFAULT_UNIT_PAGES; ++ ++ /* The memory pool cannot be expanded, only init the DCA context. */ ++ if (dca_ctx->unit_size == 0) ++ return; ++ ++ /* If not set, the memory pool can be expanded unlimitedly. */ ++ if (attr->comp_mask & HNSDV_CONTEXT_MASK_DCA_MAX_SIZE) ++ dca_ctx->max_size = DIV_ROUND_UP(attr->dca_max_size, ++ dca_ctx->unit_size) * ++ dca_ctx->unit_size; ++ else ++ dca_ctx->max_size = HNS_DCA_MAX_MEM_SIZE; ++ ++ /* If not set, the memory pool cannot be shrunk. */ ++ if (attr->comp_mask & HNSDV_CONTEXT_MASK_DCA_MIN_SIZE) ++ dca_ctx->min_size = DIV_ROUND_UP(attr->dca_min_size, ++ dca_ctx->unit_size) * ++ dca_ctx->unit_size; ++ else ++ dca_ctx->min_size = HNS_DCA_MAX_MEM_SIZE; ++ ++ verbs_debug(&ctx->ibv_ctx, ++ "Support DCA, unit %d, max %ld, min %ld Bytes.\n", ++ dca_ctx->unit_size, dca_ctx->max_size, dca_ctx->min_size); ++} ++ + static int init_dca_context(struct hns_roce_context *ctx, int cmd_fd, + struct hns_roce_alloc_ucontext_resp *resp, ++ struct hnsdv_context_attr *attr, + int page_size) + { + struct hns_roce_dca_ctx *dca_ctx = &ctx->dca_ctx; +@@ -127,14 +179,18 @@ static int init_dca_context(struct hns_roce_context *ctx, int cmd_fd, + if (!(ctx->config & HNS_ROCE_UCTX_RSP_DCA_FLAGS)) + return 0; + ++ dca_ctx->unit_size = 0; ++ dca_ctx->mem_cnt = 0; ++ + list_head_init(&dca_ctx->mem_list); + ret = pthread_spin_init(&dca_ctx->lock, PTHREAD_PROCESS_PRIVATE); + if (ret) + return ret; + +- dca_ctx->unit_size = page_size * HNS_DCA_DEFAULT_UNIT_PAGES; +- dca_ctx->max_size = HNS_DCA_MAX_MEM_SIZE; +- dca_ctx->mem_cnt = 0; ++ if (!attr || !(attr->flags & HNSDV_CONTEXT_FLAGS_DCA)) ++ return 0; ++ ++ set_dca_pool_param(ctx, attr, page_size); + + if (mmap_key) { + const unsigned int bits_per_qp = 2 * HNS_DCA_BITS_PER_STATUS; +@@ -185,18 +241,28 @@ static uint32_t calc_table_shift(uint32_t entry_count, uint32_t size_shift) + return count_shift > size_shift ? count_shift - size_shift : 0; + } + +-static void ucontext_set_cmd(struct hns_roce_alloc_ucontext *cmd, int page_size) ++static void ucontext_set_cmd(struct hns_roce_alloc_ucontext *cmd, ++ struct hnsdv_context_attr *attr) + { + cmd->config |= HNS_ROCE_EXSGE_FLAGS | HNS_ROCE_RQ_INLINE_FLAGS | +- HNS_ROCE_CQE_INLINE_FLAGS | HNS_ROCE_UCTX_CONFIG_DCA; +- cmd->comp = HNS_ROCE_ALLOC_UCTX_COMP_DCA_MAX_QPS; +- cmd->dca_max_qps = page_size * 8 / 2 * HNS_DCA_BITS_PER_STATUS; ++ HNS_ROCE_CQE_INLINE_FLAGS; ++ ++ if (!attr || !(attr->flags & HNSDV_CONTEXT_FLAGS_DCA)) ++ return; ++ ++ cmd->config |= HNS_ROCE_UCTX_CONFIG_DCA; ++ ++ if (attr->comp_mask & HNSDV_CONTEXT_MASK_DCA_PRIME_QPS) { ++ cmd->comp |= HNS_ROCE_ALLOC_UCTX_COMP_DCA_MAX_QPS; ++ cmd->dca_max_qps = attr->dca_prime_qps; ++ } + } + + static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + int cmd_fd, + void *private_data) + { ++ struct hnsdv_context_attr *ctx_attr = private_data; + struct hns_roce_device *hr_dev = to_hr_dev(ibdev); + struct hns_roce_alloc_ucontext_resp resp = {}; + struct hns_roce_alloc_ucontext cmd = {}; +@@ -209,7 +275,7 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + if (!context) + return NULL; + +- ucontext_set_cmd(&cmd, hr_dev->page_size); ++ ucontext_set_cmd(&cmd, ctx_attr); + if (ibv_cmd_get_context(&context->ibv_ctx, &cmd.ibv_cmd, sizeof(cmd), + &resp.ibv_resp, sizeof(resp))) + goto err_free; +@@ -255,7 +321,8 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + context->max_srq_wr = dev_attrs.max_srq_wr; + context->max_srq_sge = dev_attrs.max_srq_sge; + +- if (init_dca_context(context, cmd_fd, &resp, hr_dev->page_size)) ++ if (init_dca_context(context, cmd_fd, ++ &resp, ctx_attr, hr_dev->page_size)) + goto err_free; + + if (hns_roce_mmap(hr_dev, context, cmd_fd)) +@@ -317,4 +384,11 @@ static const struct verbs_device_ops hns_roce_dev_ops = { + .uninit_device = hns_uninit_device, + .alloc_context = hns_roce_alloc_context, + }; ++ ++bool is_hns_dev(struct ibv_device *device) ++{ ++ struct verbs_device *verbs_device = verbs_get_device(device); ++ ++ return verbs_device->ops == &hns_roce_dev_ops; ++} + PROVIDER_DRIVER(hns, hns_roce_dev_ops); +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 91b0c8f..71c35c5 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -562,6 +562,8 @@ static inline void clear_bit_unlock(atomic_bitmap_t *p, uint32_t nr) + atomic_fetch_and(p, ~HNS_ROCE_BIT_MASK(nr)); + } + ++bool is_hns_dev(struct ibv_device *device); ++ + int hns_roce_u_query_device(struct ibv_context *context, + const struct ibv_query_device_ex_input *input, + struct ibv_device_attr_ex *attr, size_t attr_size); +diff --git a/providers/hns/hns_roce_u_abi.h b/providers/hns/hns_roce_u_abi.h +index 0519ac7..1eaf62d 100644 +--- a/providers/hns/hns_roce_u_abi.h ++++ b/providers/hns/hns_roce_u_abi.h +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include "hnsdv.h" + + DECLARE_DRV_CMD(hns_roce_alloc_pd, IB_USER_VERBS_CMD_ALLOC_PD, + empty, hns_roce_ib_alloc_pd_resp); +diff --git a/providers/hns/hns_roce_u_buf.c b/providers/hns/hns_roce_u_buf.c +index 08c0fbc..780683e 100644 +--- a/providers/hns/hns_roce_u_buf.c ++++ b/providers/hns/hns_roce_u_buf.c +@@ -56,6 +56,9 @@ int hns_roce_alloc_buf(struct hns_roce_buf *buf, unsigned int size, + + void hns_roce_free_buf(struct hns_roce_buf *buf) + { ++ if (!buf->buf) ++ return; ++ + ibv_dofork_range(buf->buf, buf->length); + + munmap(buf->buf, buf->length); +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 028d20c..7661863 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -1473,6 +1473,7 @@ out: + static int check_qp_recv(struct hns_roce_qp *qp, struct hns_roce_context *ctx) + { + struct ibv_qp *ibvqp = &qp->verbs_qp.qp; ++ int ret = 0; + + if (unlikely(ibvqp->qp_type != IBV_QPT_RC && + ibvqp->qp_type != IBV_QPT_UD)) +@@ -1481,10 +1482,15 @@ static int check_qp_recv(struct hns_roce_qp *qp, struct hns_roce_context *ctx) + if (ibvqp->state == IBV_QPS_RESET || ibvqp->srq) + return -EINVAL; + +- if (check_dca_attach_enable(qp)) +- return dca_attach_qp_buf(ctx, qp); ++ if (check_dca_attach_enable(qp)) { ++ ret = dca_attach_qp_buf(ctx, qp); ++ if (ret) ++ verbs_err_datapath(&ctx->ibv_ctx, ++ "failed to attach QP-%u recv, ret = %d.\n", ++ qp->verbs_qp.qp.qp_num, ret); ++ } + +- return 0; ++ return ret; + } + + static void fill_recv_sge_to_wqe(struct ibv_recv_wr *wr, void *wqe, +@@ -1951,6 +1957,9 @@ static int wc_start_poll_cq(struct ibv_cq_ex *current, + hns_roce_spin_lock(&cq->hr_lock); + + err = hns_roce_poll_one(ctx, &qp, cq, NULL); ++ if (qp && check_dca_detach_enable(qp)) ++ dca_detach_qp_buf(ctx, qp); ++ + if (err != V2_CQ_OK) + hns_roce_spin_unlock(&cq->hr_lock); + +@@ -1965,6 +1974,8 @@ static int wc_next_poll_cq(struct ibv_cq_ex *current) + int err; + + err = hns_roce_poll_one(ctx, &qp, cq, NULL); ++ if (qp && check_dca_detach_enable(qp)) ++ dca_detach_qp_buf(ctx, qp); + if (err != V2_CQ_OK) + return err; + +@@ -2159,6 +2170,9 @@ init_rc_wqe(struct hns_roce_qp *qp, uint64_t wr_id, unsigned int opcode) + hr_reg_clear(wqe, RCWQE_INLINE); + hr_reg_clear(wqe, RCWQE_SO); + ++ if (check_qp_dca_enable(qp)) ++ fill_rc_dca_fields(qp->verbs_qp.qp.qp_num, wqe); ++ + qp->sq.wrid[wqe_idx] = wr_id; + qp->cur_wqe = wqe; + qp->sq.head++; +@@ -2691,8 +2705,10 @@ static void wr_set_inline_data_list_ud(struct ibv_qp_ex *ibv_qp, size_t num_buf, + + static void wr_start(struct ibv_qp_ex *ibv_qp) + { ++ struct hns_roce_context *ctx = to_hr_ctx(ibv_qp->qp_base.context); + struct hns_roce_qp *qp = to_hr_qp(&ibv_qp->qp_base); + enum ibv_qp_state state = ibv_qp->qp_base.state; ++ int ret; + + if (state == IBV_QPS_RESET || + state == IBV_QPS_INIT || +@@ -2701,6 +2717,17 @@ static void wr_start(struct ibv_qp_ex *ibv_qp) + return; + } + ++ if (check_qp_dca_enable(qp)) { ++ ret = dca_attach_qp_buf(ctx, qp); ++ if (ret) { ++ verbs_err_datapath(&ctx->ibv_ctx, ++ "failed to attach QP-%u send, ret = %d.\n", ++ qp->verbs_qp.qp.qp_num, ret); ++ qp->err = ret; ++ return; ++ } ++ } ++ + hns_roce_spin_lock(&qp->sq.hr_lock); + qp->sge_info.start_idx = qp->next_sge; + qp->rb_sq_head = qp->sq.head; +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index 749b01b..282ab74 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -961,6 +961,15 @@ enum { + IBV_QP_INIT_ATTR_SEND_OPS_FLAGS, + }; + ++enum { ++ SEND_OPS_FLAG_MASK = ++ IBV_QP_EX_WITH_RDMA_WRITE | IBV_QP_EX_WITH_RDMA_WRITE_WITH_IMM | ++ IBV_QP_EX_WITH_SEND | IBV_QP_EX_WITH_SEND_WITH_IMM | ++ IBV_QP_EX_WITH_RDMA_READ | IBV_QP_EX_WITH_ATOMIC_CMP_AND_SWP | ++ IBV_QP_EX_WITH_ATOMIC_FETCH_AND_ADD | IBV_QP_EX_WITH_LOCAL_INV | ++ IBV_QP_EX_WITH_SEND_WITH_INV, ++}; ++ + static int check_qp_create_mask(struct hns_roce_context *ctx, + struct ibv_qp_init_attr_ex *attr) + { +@@ -969,6 +978,10 @@ static int check_qp_create_mask(struct hns_roce_context *ctx, + if (!check_comp_mask(attr->comp_mask, CREATE_QP_SUP_COMP_MASK)) + return -EOPNOTSUPP; + ++ if (attr->comp_mask & IBV_QP_INIT_ATTR_SEND_OPS_FLAGS && ++ !check_comp_mask(attr->send_ops_flags, SEND_OPS_FLAG_MASK)) ++ return -EOPNOTSUPP; ++ + switch (attr->qp_type) { + case IBV_QPT_UD: + if (hr_dev->hw_version == HNS_ROCE_HW_VER2) +@@ -1165,9 +1178,21 @@ static int calc_qp_buff_size(struct hns_roce_device *hr_dev, + return 0; + } + +-static inline bool check_qp_support_dca(bool pool_en, enum ibv_qp_type qp_type) ++static inline bool check_qp_support_dca(struct hns_roce_dca_ctx *dca_ctx, ++ struct ibv_qp_init_attr_ex *attr, ++ struct hnsdv_qp_init_attr *hns_attr) + { +- if (pool_en && (qp_type == IBV_QPT_RC || qp_type == IBV_QPT_XRC_SEND)) ++ /* DCA pool disable */ ++ if (!dca_ctx->unit_size) ++ return false; ++ ++ /* Unsupport type */ ++ if (attr->qp_type != IBV_QPT_RC && attr->qp_type != IBV_QPT_XRC_SEND) ++ return false; ++ ++ if (hns_attr && ++ (hns_attr->comp_mask & HNSDV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS) && ++ (hns_attr->create_flags & HNSDV_QP_CREATE_ENABLE_DCA_MODE)) + return true; + + return false; +@@ -1185,6 +1210,7 @@ static void qp_free_wqe(struct hns_roce_qp *qp) + } + + static int qp_alloc_wqe(struct ibv_qp_init_attr_ex *attr, ++ struct hnsdv_qp_init_attr *hns_attr, + struct hns_roce_qp *qp, struct hns_roce_context *ctx) + { + struct hns_roce_device *hr_dev = to_hr_dev(ctx->ibv_ctx.context.device); +@@ -1208,7 +1234,8 @@ static int qp_alloc_wqe(struct ibv_qp_init_attr_ex *attr, + goto err_alloc; + } + +- if (check_qp_support_dca(ctx->dca_ctx.max_size != 0, attr->qp_type)) { ++ if (check_qp_support_dca(&ctx->dca_ctx, attr, hns_attr) && ++ ctx->dca_ctx.max_size > 0) { + /* when DCA is enabled, use a buffer list to store page addr */ + qp->buf.buf = NULL; + qp->dca_wqe.max_cnt = hr_hw_page_count(qp->buf_size); +@@ -1216,6 +1243,7 @@ static int qp_alloc_wqe(struct ibv_qp_init_attr_ex *attr, + qp->dca_wqe.bufs = calloc(qp->dca_wqe.max_cnt, sizeof(void *)); + if (!qp->dca_wqe.bufs) + goto err_alloc; ++ verbs_debug(&ctx->ibv_ctx, "alloc DCA buf.\n"); + } else { + if (hns_roce_alloc_buf(&qp->buf, qp->buf_size, + HNS_HW_PAGE_SIZE)) +@@ -1478,6 +1506,7 @@ void hns_roce_free_qp_buf(struct hns_roce_qp *qp, struct hns_roce_context *ctx) + } + + static int hns_roce_alloc_qp_buf(struct ibv_qp_init_attr_ex *attr, ++ struct hnsdv_qp_init_attr *hns_attr, + struct hns_roce_qp *qp, + struct hns_roce_context *ctx) + { +@@ -1487,7 +1516,7 @@ static int hns_roce_alloc_qp_buf(struct ibv_qp_init_attr_ex *attr, + pthread_spin_init(&qp->rq.hr_lock.lock, PTHREAD_PROCESS_PRIVATE)) + return -ENOMEM; + +- ret = qp_alloc_wqe(attr, qp, ctx); ++ ret = qp_alloc_wqe(attr, hns_attr, qp, ctx); + if (ret) + return ret; + +@@ -1510,7 +1539,8 @@ static int mmap_dwqe(struct ibv_context *ibv_ctx, struct hns_roce_qp *qp, + } + + static struct ibv_qp *create_qp(struct ibv_context *ibv_ctx, +- struct ibv_qp_init_attr_ex *attr) ++ struct ibv_qp_init_attr_ex *attr, ++ struct hnsdv_qp_init_attr *hns_attr) + { + struct hns_roce_context *context = to_hr_ctx(ibv_ctx); + struct hns_roce_qp *qp; +@@ -1533,7 +1563,7 @@ static struct ibv_qp *create_qp(struct ibv_context *ibv_ctx, + if (ret) + goto err_spinlock; + +- ret = hns_roce_alloc_qp_buf(attr, qp, context); ++ ret = hns_roce_alloc_qp_buf(attr, hns_attr, qp, context); + if (ret) + goto err_buf; + +@@ -1587,7 +1617,7 @@ struct ibv_qp *hns_roce_u_create_qp(struct ibv_pd *pd, + attrx.comp_mask = IBV_QP_INIT_ATTR_PD; + attrx.pd = pd; + +- qp = create_qp(pd->context, &attrx); ++ qp = create_qp(pd->context, &attrx, NULL); + if (qp) + memcpy(attr, &attrx, sizeof(*attr)); + +@@ -1597,7 +1627,19 @@ struct ibv_qp *hns_roce_u_create_qp(struct ibv_pd *pd, + struct ibv_qp *hns_roce_u_create_qp_ex(struct ibv_context *context, + struct ibv_qp_init_attr_ex *attr) + { +- return create_qp(context, attr); ++ return create_qp(context, attr, NULL); ++} ++ ++struct ibv_qp *hnsdv_create_qp(struct ibv_context *context, ++ struct ibv_qp_init_attr_ex *qp_attr, ++ struct hnsdv_qp_init_attr *hns_attr) ++{ ++ if (!is_hns_dev(context->device)) { ++ errno = EOPNOTSUPP; ++ return NULL; ++ } ++ ++ return create_qp(context, qp_attr, hns_attr); + } + + struct ibv_qp *hns_roce_u_open_qp(struct ibv_context *context, +diff --git a/providers/hns/hnsdv.h b/providers/hns/hnsdv.h +new file mode 100644 +index 0000000..cfe1611 +--- /dev/null ++++ b/providers/hns/hnsdv.h +@@ -0,0 +1,65 @@ ++/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */ ++/* ++ * Copyright (c) 2021 HiSilicon Limited. ++ */ ++ ++#ifndef __HNSDV_H__ ++#define __HNSDV_H__ ++ ++#include ++#include ++ ++#include ++ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++enum hnsdv_context_attr_flags { ++ HNSDV_CONTEXT_FLAGS_DCA = 1 << 0, ++}; ++ ++enum hnsdv_context_comp_mask { ++ HNSDV_CONTEXT_MASK_DCA_PRIME_QPS = 1 << 0, ++ HNSDV_CONTEXT_MASK_DCA_UNIT_SIZE = 1 << 1, ++ HNSDV_CONTEXT_MASK_DCA_MAX_SIZE = 1 << 2, ++ HNSDV_CONTEXT_MASK_DCA_MIN_SIZE = 1 << 3, ++}; ++ ++struct hnsdv_context_attr { ++ uint64_t flags; /* Use enum hnsdv_context_attr_flags */ ++ uint64_t comp_mask; /* Use enum hnsdv_context_comp_mask */ ++ uint32_t dca_prime_qps; ++ uint32_t dca_unit_size; ++ uint64_t dca_max_size; ++ uint64_t dca_min_size; ++}; ++ ++bool hnsdv_is_supported(struct ibv_device *device); ++struct ibv_context *hnsdv_open_device(struct ibv_device *device, ++ struct hnsdv_context_attr *attr); ++ ++enum hnsdv_qp_create_flags { ++ HNSDV_QP_CREATE_ENABLE_DCA_MODE = 1 << 0, ++}; ++ ++enum hnsdv_qp_init_attr_mask { ++ HNSDV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS = 1 << 0, ++}; ++ ++struct hnsdv_qp_init_attr { ++ uint64_t comp_mask; /* Use enum hnsdv_qp_init_attr_mask */ ++ uint32_t create_flags; /* Use enum hnsdv_qp_create_flags */ ++}; ++ ++struct ibv_qp *hnsdv_create_qp(struct ibv_context *context, ++ struct ibv_qp_init_attr_ex *qp_attr, ++ struct hnsdv_qp_init_attr *hns_qp_attr); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __HNSDV_H__ */ +diff --git a/providers/hns/libhns.map b/providers/hns/libhns.map +new file mode 100644 +index 0000000..aed491c +--- /dev/null ++++ b/providers/hns/libhns.map +@@ -0,0 +1,9 @@ ++/* Export symbols should be added below according to ++ Documentation/versioning.md document. */ ++HNS_1.0 { ++ global: ++ hnsdv_is_supported; ++ hnsdv_open_device; ++ hnsdv_create_qp; ++ local: *; ++}; +diff --git a/redhat/rdma-core.spec b/redhat/rdma-core.spec +index f1b196a..321578c 100644 +--- a/redhat/rdma-core.spec ++++ b/redhat/rdma-core.spec +@@ -150,6 +150,8 @@ Provides: libefa = %{version}-%{release} + Obsoletes: libefa < %{version}-%{release} + Provides: libhfi1 = %{version}-%{release} + Obsoletes: libhfi1 < %{version}-%{release} ++Provides: libhns = %{version}-%{release} ++Obsoletes: libhns < %{version}-%{release} + Provides: libipathverbs = %{version}-%{release} + Obsoletes: libipathverbs < %{version}-%{release} + Provides: libirdma = %{version}-%{release} +@@ -177,7 +179,7 @@ Device-specific plug-in ibverbs userspace drivers are included: + - libcxgb4: Chelsio T4 iWARP HCA + - libefa: Amazon Elastic Fabric Adapter + - libhfi1: Intel Omni-Path HFI +-- libhns: HiSilicon Hip06 SoC ++- libhns: HiSilicon Hip08+ SoC + - libipathverbs: QLogic InfiniPath HCA + - libirdma: Intel Ethernet Connection RDMA + - libmlx4: Mellanox ConnectX-3 InfiniBand HCA +@@ -562,6 +564,7 @@ fi + %dir %{_sysconfdir}/libibverbs.d + %dir %{_libdir}/libibverbs + %{_libdir}/libefa.so.* ++%{_libdir}/libhns.so.* + %{_libdir}/libibverbs*.so.* + %{_libdir}/libibverbs/*.so + %{_libdir}/libmlx5.so.* +diff --git a/suse/rdma-core.spec b/suse/rdma-core.spec +index bd1faec..ce19db1 100644 +--- a/suse/rdma-core.spec ++++ b/suse/rdma-core.spec +@@ -35,6 +35,7 @@ License: BSD-2-Clause OR GPL-2.0-only + Group: Productivity/Networking/Other + + %define efa_so_major 1 ++%define hns_so_major 1 + %define verbs_so_major 1 + %define rdmacm_so_major 1 + %define umad_so_major 3 +@@ -44,6 +45,7 @@ Group: Productivity/Networking/Other + %define mad_major 5 + + %define efa_lname libefa%{efa_so_major} ++%define hns_lname libhns%{hns_so_major} + %define verbs_lname libibverbs%{verbs_so_major} + %define rdmacm_lname librdmacm%{rdmacm_so_major} + %define umad_lname libibumad%{umad_so_major} +@@ -157,6 +159,7 @@ Requires: %{umad_lname} = %{version}-%{release} + Requires: %{verbs_lname} = %{version}-%{release} + %if 0%{?dma_coherent} + Requires: %{efa_lname} = %{version}-%{release} ++Requires: %{hns_lname} = %{version}-%{release} + Requires: %{mlx4_lname} = %{version}-%{release} + Requires: %{mlx5_lname} = %{version}-%{release} + %endif +@@ -197,6 +200,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release} + Obsoletes: libcxgb4-rdmav2 < %{version}-%{release} + Obsoletes: libefa-rdmav2 < %{version}-%{release} + Obsoletes: libhfi1verbs-rdmav2 < %{version}-%{release} ++Obsoletes: libhns-rdmav2 < %{version}-%{release} + Obsoletes: libipathverbs-rdmav2 < %{version}-%{release} + Obsoletes: libmlx4-rdmav2 < %{version}-%{release} + Obsoletes: libmlx5-rdmav2 < %{version}-%{release} +@@ -205,6 +209,7 @@ Obsoletes: libocrdma-rdmav2 < %{version}-%{release} + Obsoletes: librxe-rdmav2 < %{version}-%{release} + %if 0%{?dma_coherent} + Requires: %{efa_lname} = %{version}-%{release} ++Requires: %{hns_lname} = %{version}-%{release} + Requires: %{mlx4_lname} = %{version}-%{release} + Requires: %{mlx5_lname} = %{version}-%{release} + %endif +@@ -223,7 +228,7 @@ Device-specific plug-in ibverbs userspace drivers are included: + - libcxgb4: Chelsio T4 iWARP HCA + - libefa: Amazon Elastic Fabric Adapter + - libhfi1: Intel Omni-Path HFI +-- libhns: HiSilicon Hip06 SoC ++- libhns: HiSilicon Hip08+ SoC + - libipathverbs: QLogic InfiniPath HCA + - libirdma: Intel Ethernet Connection RDMA + - libmlx4: Mellanox ConnectX-3 InfiniBand HCA +@@ -250,6 +255,13 @@ Group: System/Libraries + %description -n %efa_lname + This package contains the efa runtime library. + ++%package -n %hns_lname ++Summary: HNS runtime library ++Group: System/Libraries ++ ++%description -n %hns_lname ++This package contains the hns runtime library. ++ + %package -n %mlx4_lname + Summary: MLX4 runtime library + Group: System/Libraries +@@ -493,6 +505,9 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh + %post -n %efa_lname -p /sbin/ldconfig + %postun -n %efa_lname -p /sbin/ldconfig + ++%post -n %hns_lname -p /sbin/ldconfig ++%postun -n %hns_lname -p /sbin/ldconfig ++ + %post -n %mlx4_lname -p /sbin/ldconfig + %postun -n %mlx4_lname -p /sbin/ldconfig + +@@ -689,6 +704,10 @@ done + %defattr(-,root,root) + %{_libdir}/libefa*.so.* + ++%files -n %hns_lname ++%defattr(-,root,root) ++%{_libdir}/libhns*.so.* ++ + %files -n %mlx4_lname + %defattr(-,root,root) + %{_libdir}/libmlx4*.so.* +-- +2.30.0 + diff --git a/0038-Update-kernel-headers.patch b/0038-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..ba59cbdb863a319e4ff28e75ce5fe67f35e32cd6 --- /dev/null +++ b/0038-Update-kernel-headers.patch @@ -0,0 +1,28 @@ +From 8a5429161e6932d4031ec705b695973d67729c71 Mon Sep 17 00:00:00 2001 +From: Yixing Liu +Date: Wed, 14 Dec 2022 16:37:26 +0800 +Subject: [PATCH rdma-core 1/2] Update kernel headers + + To commit ?? ("RDMA/hns: Kernel notify usr space to stop ring db"). + +Signed-off-by: Yixing Liu +Reviewed-by: Yangyang Li +--- + kernel-headers/rdma/hns-abi.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index 6950841..5988a62 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -127,6 +127,7 @@ struct hns_roce_ib_alloc_ucontext_resp { + __u32 dca_qps; + __u32 dca_mmap_size; + __aligned_u64 dca_mmap_key; ++ __aligned_u64 reset_mmap_key; + }; + + enum hns_roce_uctx_comp_mask { +-- +2.30.0 + diff --git a/0039-libhns-Add-reset-stop-flow-mechanism.patch b/0039-libhns-Add-reset-stop-flow-mechanism.patch new file mode 100644 index 0000000000000000000000000000000000000000..4178c393ee57f5a341986600372cf17fa648680b --- /dev/null +++ b/0039-libhns-Add-reset-stop-flow-mechanism.patch @@ -0,0 +1,195 @@ +From c3ee7375c80c7a8f0a943679566c87f17f87aa17 Mon Sep 17 00:00:00 2001 +From: Guofeng Yue +Date: Mon, 9 May 2022 16:03:38 +0800 +Subject: [PATCH rdma-core 2/2] libhns: Add reset stop flow mechanism + +driver inclusion +category: bugfix +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I65WI7 + +------------------------------------------------------------------ + +Add an interface to the user space, which is used to receive +the kernel reset state. After receiving the reset flag, the +user space stops sending db. + +Signed-off-by: Yixing Liu +Signed-off-by: Guofeng Yue +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.c | 30 ++++++++++++++++++++++++++++-- + providers/hns/hns_roce_u.h | 5 +++++ + providers/hns/hns_roce_u_db.h | 8 +++++++- + providers/hns/hns_roce_u_hw_v2.c | 19 ++++++++++++++----- + 4 files changed, 54 insertions(+), 8 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 0cf6d4b..3d29838 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -221,6 +221,24 @@ static void uninit_dca_context(struct hns_roce_context *ctx) + pthread_spin_destroy(&dca_ctx->lock); + } + ++static int init_reset_context(struct hns_roce_context *ctx, int cmd_fd, ++ struct hns_roce_alloc_ucontext_resp *resp, ++ int page_size) ++{ ++ uint64_t reset_mmap_key = resp->reset_mmap_key; ++ ++ /* The reset mmap key is 0, which means it is not supported. */ ++ if (reset_mmap_key == 0) ++ return 0; ++ ++ ctx->reset_state = mmap(NULL, page_size, PROT_READ, MAP_SHARED, ++ cmd_fd, reset_mmap_key); ++ if (ctx->reset_state == MAP_FAILED) ++ return -ENOMEM; ++ ++ return 0; ++} ++ + static int hns_roce_mmap(struct hns_roce_device *hr_dev, + struct hns_roce_context *context, int cmd_fd) + { +@@ -325,8 +343,11 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + &resp, ctx_attr, hr_dev->page_size)) + goto err_free; + ++ if (init_reset_context(context, cmd_fd, &resp, hr_dev->page_size)) ++ goto reset_free; ++ + if (hns_roce_mmap(hr_dev, context, cmd_fd)) +- goto dca_free; ++ goto uar_free; + + pthread_spin_init(&context->uar_lock, PTHREAD_PROCESS_PRIVATE); + +@@ -335,7 +356,10 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + + return &context->ibv_ctx; + +-dca_free: ++uar_free: ++ if (context->reset_state) ++ munmap(context->reset_state, hr_dev->page_size); ++reset_free: + uninit_dca_context(context); + err_free: + verbs_uninit_context(&context->ibv_ctx); +@@ -349,6 +373,8 @@ static void hns_roce_free_context(struct ibv_context *ibctx) + struct hns_roce_context *context = to_hr_ctx(ibctx); + + munmap(context->uar, hr_dev->page_size); ++ if (context->reset_state) ++ munmap(context->reset_state, hr_dev->page_size); + uninit_dca_context(context); + verbs_uninit_context(&context->ibv_ctx); + free(context); +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 71c35c5..76c7adb 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -226,9 +226,14 @@ struct hns_roce_dca_ctx { + atomic_bitmap_t *sync_status; + }; + ++struct hns_roce_v2_reset_state { ++ uint32_t is_reset; ++}; ++ + struct hns_roce_context { + struct verbs_context ibv_ctx; + void *uar; ++ void *reset_state; + pthread_spinlock_t uar_lock; + + struct { +diff --git a/providers/hns/hns_roce_u_db.h b/providers/hns/hns_roce_u_db.h +index 8c47a53..de288de 100644 +--- a/providers/hns/hns_roce_u_db.h ++++ b/providers/hns/hns_roce_u_db.h +@@ -40,8 +40,14 @@ + + #define HNS_ROCE_WORD_NUM 2 + +-static inline void hns_roce_write64(void *dest, __le32 val[HNS_ROCE_WORD_NUM]) ++static inline void hns_roce_write64(struct hns_roce_context *ctx, void *dest, ++ __le32 val[HNS_ROCE_WORD_NUM]) + { ++ struct hns_roce_v2_reset_state *state = ctx->reset_state; ++ ++ if (state && state->is_reset) ++ return; ++ + mmio_write64_le(dest, *(__le64 *)val); + } + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 7661863..d0067d3 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -298,7 +298,8 @@ static void hns_roce_update_rq_db(struct hns_roce_context *ctx, + hr_reg_write(&rq_db, DB_CMD, HNS_ROCE_V2_RQ_DB); + hr_reg_write(&rq_db, DB_PI, rq_head); + +- hns_roce_write64(ctx->uar + ROCEE_VF_DB_CFG0_OFFSET, (__le32 *)&rq_db); ++ hns_roce_write64(ctx, ctx->uar + ROCEE_VF_DB_CFG0_OFFSET, ++ (__le32 *)&rq_db); + } + + static void hns_roce_update_sq_db(struct hns_roce_context *ctx, +@@ -312,7 +313,7 @@ static void hns_roce_update_sq_db(struct hns_roce_context *ctx, + hr_reg_write(&sq_db, DB_PI, qp->sq.head); + hr_reg_write(&sq_db, DB_SL, qp->sl); + +- hns_roce_write64(qp->sq.db_reg, (__le32 *)&sq_db); ++ hns_roce_write64(ctx, qp->sq.db_reg, (__le32 *)&sq_db); + } + + static void hns_roce_write512(uint64_t *dest, uint64_t *val) +@@ -323,6 +324,12 @@ static void hns_roce_write512(uint64_t *dest, uint64_t *val) + static void hns_roce_write_dwqe(struct hns_roce_qp *qp, void *wqe) + { + struct hns_roce_rc_sq_wqe *rc_sq_wqe = wqe; ++ struct ibv_qp *ibvqp = &qp->verbs_qp.qp; ++ struct hns_roce_context *ctx = to_hr_ctx(ibvqp->context); ++ struct hns_roce_v2_reset_state *state = ctx->reset_state; ++ ++ if (state && state->is_reset) ++ return; + + /* All kinds of DirectWQE have the same header field layout */ + hr_reg_enable(rc_sq_wqe, RCWQE_FLAG); +@@ -342,7 +349,8 @@ static void update_cq_db(struct hns_roce_context *ctx, struct hns_roce_cq *cq) + hr_reg_write(&cq_db, DB_CQ_CI, cq->cons_index); + hr_reg_write(&cq_db, DB_CQ_CMD_SN, 1); + +- hns_roce_write64(ctx->uar + ROCEE_VF_DB_CFG0_OFFSET, (__le32 *)&cq_db); ++ hns_roce_write64(ctx, ctx->uar + ROCEE_VF_DB_CFG0_OFFSET, ++ (__le32 *)&cq_db); + } + + static struct hns_roce_qp *hns_roce_v2_find_qp(struct hns_roce_context *ctx, +@@ -857,7 +865,8 @@ static int hns_roce_u_v2_arm_cq(struct ibv_cq *ibvcq, int solicited) + hr_reg_write(&cq_db, DB_CQ_CMD_SN, cq->arm_sn); + hr_reg_write(&cq_db, DB_CQ_NOTIFY, solicited_flag); + +- hns_roce_write64(ctx->uar + ROCEE_VF_DB_CFG0_OFFSET, (__le32 *)&cq_db); ++ hns_roce_write64(ctx, ctx->uar + ROCEE_VF_DB_CFG0_OFFSET, ++ (__le32 *)&cq_db); + + return 0; + } +@@ -1934,7 +1943,7 @@ static int hns_roce_u_v2_post_srq_recv(struct ibv_srq *ib_srq, + + update_srq_db(&srq_db, srq); + +- hns_roce_write64(ctx->uar + ROCEE_VF_DB_CFG0_OFFSET, ++ hns_roce_write64(ctx, ctx->uar + ROCEE_VF_DB_CFG0_OFFSET, + (__le32 *)&srq_db); + } + +-- +2.30.0 + diff --git a/0040-Update-kernel-headers.patch b/0040-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..3580a3581d0015244e9a5d9c1b023d60e8cf9918 --- /dev/null +++ b/0040-Update-kernel-headers.patch @@ -0,0 +1,60 @@ +From 39c7b8eaeb3a6c855a49885b6b6de877268d36a7 Mon Sep 17 00:00:00 2001 +From: Yixing Liu +Date: Wed, 12 Apr 2023 17:01:08 +0800 +Subject: [PATCH 1/2] Update kernel headers + + To commit ?? ("RDMA/hns: Support congestion control algorithm + configuration at QP granularity"). + +Signed-off-by: Yixing Liu +Reviewed-by: Yangyang Li +--- + kernel-headers/rdma/hns-abi.h | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index 5988a62..bd19927 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -63,6 +63,18 @@ struct hns_roce_ib_create_srq_resp { + __u32 reserved; + }; + ++enum hns_roce_create_qp_comp_mask { ++ HNS_ROCE_CREATE_QP_MASK_CREATE_FLAGS = 1 << 0, ++ HNS_ROCE_CREATE_QP_MASK_CONGEST_TYPE = 1 << 1, ++}; ++ ++enum hns_roce_congest_type_flags { ++ HNS_ROCE_CREATE_QP_FLAGS_DCQCN = 1 << 0, ++ HNS_ROCE_CREATE_QP_FLAGS_LDCP = 1 << 1, ++ HNS_ROCE_CREATE_QP_FLAGS_HC3 = 1 << 2, ++ HNS_ROCE_CREATE_QP_FLAGS_DIP = 1 << 3, ++}; ++ + struct hns_roce_ib_create_qp { + __aligned_u64 buf_addr; + __aligned_u64 db_addr; +@@ -71,6 +83,9 @@ struct hns_roce_ib_create_qp { + __u8 sq_no_prefetch; + __u8 reserved[5]; + __aligned_u64 sdb_addr; ++ __aligned_u64 comp_mask; ++ __aligned_u64 create_flags; ++ __aligned_u64 congest_type_flags; + }; + + enum hns_roce_qp_cap_flags { +@@ -123,7 +138,8 @@ struct hns_roce_ib_alloc_ucontext_resp { + __u32 config; + __u32 max_inline_data; + __u8 mac_type; +- __u8 rsv1[7]; ++ __u8 congest_type; ++ __u8 rsv1[6]; + __u32 dca_qps; + __u32 dca_mmap_size; + __aligned_u64 dca_mmap_key; +-- +2.25.1 + diff --git a/0041-libhns-Support-congestion-control-algorithm-configur.patch b/0041-libhns-Support-congestion-control-algorithm-configur.patch new file mode 100644 index 0000000000000000000000000000000000000000..da3e6bbce692550e47ba1d49ce4239bbab9837ec --- /dev/null +++ b/0041-libhns-Support-congestion-control-algorithm-configur.patch @@ -0,0 +1,308 @@ +From 1b3ec79e4d617555c0e12a3fe12db7925d385ef6 Mon Sep 17 00:00:00 2001 +From: Yixing Liu +Date: Wed, 12 Apr 2023 17:01:09 +0800 +Subject: [PATCH 2/2] libhns: Support congestion control algorithm + configuration + +driver inclusion +category: feature +bugzilla: https://gitee.com/openeuler/kernel/issues/I6N1G4 + +--------------------------------------------------------------- + +Added the use of direct verbs to implement QP-level +user-configurable congestion control algorithms. Among them, +the user mode driver mainly provides interfaces for users to +choose, and the kernel mode driver is responsible for filling +the resources of different algorithms and providing the +supported algorithm types for user mode. + +At the same time, provide a direct verbs interface for users to +query the type of congestion control algorithm. + +Signed-off-by: Yixing Liu +Reviewed-by: Yangyang Li +--- + providers/hns/hns_roce_u.c | 1 + + providers/hns/hns_roce_u.h | 6 ++ + providers/hns/hns_roce_u_verbs.c | 107 +++++++++++++++++++++++++++++-- + providers/hns/hnsdv.h | 22 +++++++ + providers/hns/libhns.map | 1 + + 5 files changed, 131 insertions(+), 6 deletions(-) + +diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c +index 3d29838..87f9ed8 100644 +--- a/providers/hns/hns_roce_u.c ++++ b/providers/hns/hns_roce_u.c +@@ -299,6 +299,7 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev, + goto err_free; + + hr_dev->mac_type = resp.mac_type; ++ hr_dev->congest_type = resp.congest_type; + + if (!resp.cqe_size) + context->cqe_size = HNS_ROCE_CQE_SIZE; +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 76c7adb..41e9599 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -172,6 +172,7 @@ struct hns_roce_device { + const struct hns_roce_u_hw *u_hw; + int hw_version; + uint8_t mac_type; ++ uint8_t congest_type; + }; + + struct hns_roce_buf { +@@ -230,6 +231,11 @@ struct hns_roce_v2_reset_state { + uint32_t is_reset; + }; + ++struct hns_roce_cmd_flag { ++ uint32_t create_flags; ++ uint32_t congest_type_flags; ++}; ++ + struct hns_roce_context { + struct verbs_context ibv_ctx; + void *uar; +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index 282ab74..6c6120c 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -89,10 +89,10 @@ int hns_roce_u_query_device(struct ibv_context *context, + struct ibv_device_attr_ex *attr, size_t attr_size) + { + struct ib_uverbs_ex_query_device_resp resp; ++ unsigned int major, minor, sub_minor; + size_t resp_size = sizeof(resp); +- int ret; + uint64_t raw_fw_ver; +- unsigned int major, minor, sub_minor; ++ int ret; + + ret = ibv_cmd_query_device_any(context, input, attr, attr_size, &resp, + &resp_size); +@@ -110,6 +110,27 @@ int hns_roce_u_query_device(struct ibv_context *context, + return 0; + } + ++int hnsdv_query_device(struct ibv_context *context, ++ struct hnsdv_context *attrs_out) ++{ ++ struct hns_roce_device *hr_dev = to_hr_dev(context->device); ++ ++ if (!hr_dev) { ++ verbs_err(verbs_get_ctx(context), "not a HNS RoCE device!\n"); ++ return EOPNOTSUPP; ++ } ++ ++ if (!attrs_out) ++ return EINVAL; ++ ++ memset(attrs_out, 0, sizeof(*attrs_out)); ++ ++ attrs_out->comp_mask |= HNSDV_CONTEXT_MASK_CONGEST_TYPE; ++ attrs_out->congest_type = hr_dev->congest_type; ++ ++ return 0; ++} ++ + int hns_roce_u_query_port(struct ibv_context *context, uint8_t port, + struct ibv_port_attr *attr) + { +@@ -956,6 +977,67 @@ int hns_roce_u_destroy_srq(struct ibv_srq *ibv_srq) + return 0; + } + ++enum { ++ HNSDV_QP_SUP_COMP_MASK = HNSDV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS | ++ HNSDV_QP_INIT_ATTR_MASK_QP_CONGEST_TYPE, ++}; ++ ++static int check_qp_congest_type(struct hns_roce_context *ctx, ++ struct hnsdv_qp_init_attr *hns_attr, ++ struct hns_roce_cmd_flag *cmd_flag) ++{ ++ struct hns_roce_device *hr_dev = to_hr_dev(ctx->ibv_ctx.context.device); ++ ++ if (!check_comp_mask(hns_attr->congest_type, hr_dev->congest_type)) { ++ verbs_err(&ctx->ibv_ctx, "unsupported congest type 0x%x.\n", ++ hns_attr->congest_type); ++ return -EOPNOTSUPP; ++ } ++ ++ switch (hns_attr->congest_type) { ++ case HNSDV_QP_CREATE_ENABLE_DCQCN: ++ cmd_flag->congest_type_flags |= HNS_ROCE_CREATE_QP_FLAGS_DCQCN; ++ break; ++ case HNSDV_QP_CREATE_ENABLE_LDCP: ++ cmd_flag->congest_type_flags |= HNS_ROCE_CREATE_QP_FLAGS_LDCP; ++ break; ++ case HNSDV_QP_CREATE_ENABLE_HC3: ++ cmd_flag->congest_type_flags |= HNS_ROCE_CREATE_QP_FLAGS_LDCP; ++ break; ++ case HNSDV_QP_CREATE_ENABLE_DIP: ++ cmd_flag->congest_type_flags |= HNS_ROCE_CREATE_QP_FLAGS_DIP; ++ break; ++ default: ++ verbs_err(&ctx->ibv_ctx, ++ "unsupported congestion control algorithm configuration.\n"); ++ return -EOPNOTSUPP; ++ } ++ ++ return 0; ++} ++ ++static int check_hnsdv_qp_attr(struct hns_roce_context *ctx, ++ struct hnsdv_qp_init_attr *hns_attr, ++ struct hns_roce_cmd_flag *cmd_flag) ++{ ++ int ret; ++ ++ if (!hns_attr) ++ return 0; ++ ++ if (!check_comp_mask(hns_attr->comp_mask, HNSDV_QP_SUP_COMP_MASK)) { ++ verbs_err(&ctx->ibv_ctx, "invalid hnsdv comp_mask 0x%x.\n", ++ hns_attr->comp_mask); ++ return -EINVAL; ++ } ++ ++ ret = check_qp_congest_type(ctx, hns_attr, cmd_flag); ++ if (ret) ++ return ret; ++ ++ return 0; ++} ++ + enum { + CREATE_QP_SUP_COMP_MASK = IBV_QP_INIT_ATTR_PD | IBV_QP_INIT_ATTR_XRCD | + IBV_QP_INIT_ATTR_SEND_OPS_FLAGS, +@@ -1050,7 +1132,9 @@ static int verify_qp_create_cap(struct hns_roce_context *ctx, + } + + static int verify_qp_create_attr(struct hns_roce_context *ctx, +- struct ibv_qp_init_attr_ex *attr) ++ struct ibv_qp_init_attr_ex *attr, ++ struct hnsdv_qp_init_attr *hns_attr, ++ struct hns_roce_cmd_flag *cmd_flag) + { + int ret; + +@@ -1058,6 +1142,10 @@ static int verify_qp_create_attr(struct hns_roce_context *ctx, + if (ret) + return ret; + ++ ret = check_hnsdv_qp_attr(ctx, hns_attr, cmd_flag); ++ if (ret) ++ return ret; ++ + return verify_qp_create_cap(ctx, attr); + } + +@@ -1452,7 +1540,8 @@ static int hns_roce_store_qp(struct hns_roce_context *ctx, + static int qp_exec_create_cmd(struct ibv_qp_init_attr_ex *attr, + struct hns_roce_qp *qp, + struct hns_roce_context *ctx, +- uint64_t *dwqe_mmap_key) ++ uint64_t *dwqe_mmap_key, ++ struct hns_roce_cmd_flag *cmd_flag) + { + struct hns_roce_create_qp_ex_resp resp_ex = {}; + struct hns_roce_create_qp_ex cmd_ex = {}; +@@ -1464,6 +1553,11 @@ static int qp_exec_create_cmd(struct ibv_qp_init_attr_ex *attr, + cmd_ex.log_sq_stride = qp->sq.wqe_shift; + cmd_ex.log_sq_bb_count = hr_ilog32(qp->sq.wqe_cnt); + ++ if (cmd_flag->congest_type_flags) { ++ cmd_ex.comp_mask |= HNS_ROCE_CREATE_QP_MASK_CONGEST_TYPE; ++ cmd_ex.congest_type_flags = cmd_flag->congest_type_flags; ++ } ++ + ret = ibv_cmd_create_qp_ex2(&ctx->ibv_ctx.context, &qp->verbs_qp, attr, + &cmd_ex.ibv_cmd, sizeof(cmd_ex), + &resp_ex.ibv_resp, sizeof(resp_ex)); +@@ -1543,11 +1637,12 @@ static struct ibv_qp *create_qp(struct ibv_context *ibv_ctx, + struct hnsdv_qp_init_attr *hns_attr) + { + struct hns_roce_context *context = to_hr_ctx(ibv_ctx); ++ struct hns_roce_cmd_flag cmd_flag = {}; + struct hns_roce_qp *qp; + uint64_t dwqe_mmap_key; + int ret; + +- ret = verify_qp_create_attr(context, attr); ++ ret = verify_qp_create_attr(context, attr, hns_attr, &cmd_flag); + if (ret) + goto err; + +@@ -1567,7 +1662,7 @@ static struct ibv_qp *create_qp(struct ibv_context *ibv_ctx, + if (ret) + goto err_buf; + +- ret = qp_exec_create_cmd(attr, qp, context, &dwqe_mmap_key); ++ ret = qp_exec_create_cmd(attr, qp, context, &dwqe_mmap_key, &cmd_flag); + if (ret) + goto err_cmd; + +diff --git a/providers/hns/hnsdv.h b/providers/hns/hnsdv.h +index cfe1611..e15b428 100644 +--- a/providers/hns/hnsdv.h ++++ b/providers/hns/hnsdv.h +@@ -45,19 +45,41 @@ enum hnsdv_qp_create_flags { + HNSDV_QP_CREATE_ENABLE_DCA_MODE = 1 << 0, + }; + ++enum hnsdv_qp_congest_ctrl_type { ++ HNSDV_QP_CREATE_ENABLE_DCQCN = 1 << 0, ++ HNSDV_QP_CREATE_ENABLE_LDCP = 1 << 1, ++ HNSDV_QP_CREATE_ENABLE_HC3 = 1 << 2, ++ HNSDV_QP_CREATE_ENABLE_DIP = 1 << 3, ++}; ++ + enum hnsdv_qp_init_attr_mask { + HNSDV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS = 1 << 0, ++ HNSDV_QP_INIT_ATTR_MASK_QP_CONGEST_TYPE = 1 << 1, + }; + + struct hnsdv_qp_init_attr { + uint64_t comp_mask; /* Use enum hnsdv_qp_init_attr_mask */ + uint32_t create_flags; /* Use enum hnsdv_qp_create_flags */ ++ uint8_t congest_type; /* Use enum hnsdv_qp_congest_ctrl_type */ + }; + + struct ibv_qp *hnsdv_create_qp(struct ibv_context *context, + struct ibv_qp_init_attr_ex *qp_attr, + struct hnsdv_qp_init_attr *hns_qp_attr); + ++enum hnsdv_query_context_comp_mask { ++ HNSDV_CONTEXT_MASK_CONGEST_TYPE = 1 << 0, ++}; ++ ++struct hnsdv_context { ++ uint64_t comp_mask; /* use enum hnsdv_query_context_comp_mask */ ++ uint64_t flags; ++ uint8_t congest_type; /* Use enum hnsdv_qp_congest_ctrl_type */ ++}; ++ ++int hnsdv_query_device(struct ibv_context *ctx_in, ++ struct hnsdv_context *attrs_out); ++ + #ifdef __cplusplus + } + #endif +diff --git a/providers/hns/libhns.map b/providers/hns/libhns.map +index aed491c..ebf28eb 100644 +--- a/providers/hns/libhns.map ++++ b/providers/hns/libhns.map +@@ -5,5 +5,6 @@ HNS_1.0 { + hnsdv_is_supported; + hnsdv_open_device; + hnsdv_create_qp; ++ hnsdv_query_device; + local: *; + }; +-- +2.25.1 + diff --git a/0042-Update-kernel-headers.patch b/0042-Update-kernel-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..8b8a363101c5564dd71c0feec94f901207b6779d --- /dev/null +++ b/0042-Update-kernel-headers.patch @@ -0,0 +1,28 @@ +From 0c132b9216282269974bf5d21f877413cc222950 Mon Sep 17 00:00:00 2001 +From: Yixing Liu +Date: Mon, 17 Apr 2023 09:48:09 +0800 +Subject: [PATCH 1/2] Update kernel headers + + To commit ?? ("RDMA/hns: Add SVE DIRECT WQE flag to support libhns"). + +Signed-off-by: Yixing Liu +Reviewed-by: Yangyang Li +--- + kernel-headers/rdma/hns-abi.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kernel-headers/rdma/hns-abi.h b/kernel-headers/rdma/hns-abi.h +index bd19927..cab941f 100644 +--- a/kernel-headers/rdma/hns-abi.h ++++ b/kernel-headers/rdma/hns-abi.h +@@ -92,6 +92,7 @@ enum hns_roce_qp_cap_flags { + HNS_ROCE_QP_CAP_RQ_RECORD_DB = 1 << 0, + HNS_ROCE_QP_CAP_SQ_RECORD_DB = 1 << 1, + HNS_ROCE_QP_CAP_OWNER_DB = 1 << 2, ++ HNS_ROCE_QP_CAP_SVE_DIRECT_WQE = 1 << 3, + HNS_ROCE_QP_CAP_DYNAMIC_CTX_ATTACH = 1 << 4, + HNS_ROCE_QP_CAP_DIRECT_WQE = 1 << 5, + HNS_ROCE_QP_CAP_DYNAMIC_CTX_DETACH = 1 << 6, +-- +2.25.1 + diff --git a/0043-libhns-Add-support-for-SVE-Direct-WQE.patch b/0043-libhns-Add-support-for-SVE-Direct-WQE.patch new file mode 100644 index 0000000000000000000000000000000000000000..93c27457391d2c9d3c17d30f5eb770bc0f5532e1 --- /dev/null +++ b/0043-libhns-Add-support-for-SVE-Direct-WQE.patch @@ -0,0 +1,125 @@ +From 6f08530cae5de66fabfae4cb29729a18b0e86365 Mon Sep 17 00:00:00 2001 +From: Yixing Liu +Date: Mon, 17 Apr 2023 09:48:10 +0800 +Subject: [PATCH 2/2] libhns: Add support for SVE Direct WQE + +driver inclusion +category: bugfix +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I6VLLM + +--------------------------------------------------------------- + +Some Kunpeng SoCs do not support the DWQE through NEON +instructions. In this case, the IO path works normally, +but the performance will deteriorate. + +For these SoCs that do not support NEON DWQE, they support +DWQE through SVE instructions. This patch supports SVE DWQE +to guarantee the performance of these SoCs. In addition, in +this scenario, DWQE only supports acceleration through SVE's +ldr and str instructions. Other load and store instructions +also cause performance degradation. + +Signed-off-by: Yixing Liu +Reviewed-by: Yangyang Li +--- + CMakeLists.txt | 1 + + buildlib/RDMA_EnableCStd.cmake | 17 +++++++++++++++++ + providers/hns/CMakeLists.txt | 5 +++++ + providers/hns/hns_roce_u_hw_v2.c | 21 ++++++++++++++++++++- + 4 files changed, 43 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 787c8be..bc4437b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -399,6 +399,7 @@ if (NOT HAVE_SPARSE) + endif() + + RDMA_Check_SSE(HAVE_TARGET_SSE) ++RDMA_Check_SVE(HAVE_TARGET_SVE) + + # Enable development support features + # Prune unneeded shared libraries during linking +diff --git a/buildlib/RDMA_EnableCStd.cmake b/buildlib/RDMA_EnableCStd.cmake +index 3c42824..2b56f42 100644 +--- a/buildlib/RDMA_EnableCStd.cmake ++++ b/buildlib/RDMA_EnableCStd.cmake +@@ -127,3 +127,20 @@ int main(int argc, char *argv[]) + endif() + set(${TO_VAR} "${HAVE_TARGET_SSE}" PARENT_SCOPE) + endFunction() ++ ++function(RDMA_Check_SVE TO_VAR) ++ set(SVE_CHECK_PROGRAM " ++int main(int argc, char *argv[]) ++{ ++ return 0; ++} ++") ++ ++ RDMA_Check_C_Compiles(HAVE_TARGET_SVE "${SVE_CHECK_PROGRAM}" "-march=armv8.2-a+sve") ++ if(NOT HAVE_TARGET_SVE) ++ message("SVE is not supported") ++ else() ++ set(SVE_FLAGS "-march=armv8.2-a+sve" PARENT_SCOPE) ++ endif() ++ set(${TO_VAR} "${HAVE_TARGET_SVE}" PARENT_SCOPE) ++endFunction() +\ No newline at end of file +diff --git a/providers/hns/CMakeLists.txt b/providers/hns/CMakeLists.txt +index 160e1ff..ef031a8 100644 +--- a/providers/hns/CMakeLists.txt ++++ b/providers/hns/CMakeLists.txt +@@ -11,4 +11,9 @@ publish_headers(infiniband + hnsdv.h + ) + ++if (HAVE_TARGET_SVE) ++ add_definitions("-DHNS_SVE") ++ set_source_files_properties(hns_roce_u_hw_v2.c PROPERTIES COMPILE_FLAGS "${SVE_FLAGS}") ++endif() ++ + rdma_pkg_config("hns" "libibverbs" "${CMAKE_THREAD_LIBS_INIT}") +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index d0067d3..a49b50d 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -321,6 +321,22 @@ static void hns_roce_write512(uint64_t *dest, uint64_t *val) + mmio_memcpy_x64(dest, val, sizeof(struct hns_roce_rc_sq_wqe)); + } + ++#if defined(HNS_SVE) ++static void hns_roce_sve_write512(uint64_t *dest, uint64_t *val) ++{ ++ asm volatile( ++ "ldr z0, [%0]\n" ++ "str z0, [%1]\n" ++ ::"r" (val), "r"(dest):"cc", "memory" ++ ); ++} ++#else ++static void hns_roce_sve_write512(uint64_t *dest, uint64_t *val) ++{ ++ return; ++} ++#endif ++ + static void hns_roce_write_dwqe(struct hns_roce_qp *qp, void *wqe) + { + struct hns_roce_rc_sq_wqe *rc_sq_wqe = wqe; +@@ -337,7 +353,10 @@ static void hns_roce_write_dwqe(struct hns_roce_qp *qp, void *wqe) + hr_reg_write(rc_sq_wqe, RCWQE_DB_SL_H, qp->sl >> HNS_ROCE_SL_SHIFT); + hr_reg_write(rc_sq_wqe, RCWQE_WQE_IDX, qp->sq.head); + +- hns_roce_write512(qp->sq.db_reg, wqe); ++ if (qp->flags & HNS_ROCE_QP_CAP_SVE_DIRECT_WQE) ++ hns_roce_sve_write512(qp->sq.db_reg, wqe); ++ else ++ hns_roce_write512(qp->sq.db_reg, wqe); + } + + static void update_cq_db(struct hns_roce_context *ctx, struct hns_roce_cq *cq) +-- +2.25.1 + diff --git a/0044-libhns-Fix-the-sge-num-problem-of-atomic-op.patch b/0044-libhns-Fix-the-sge-num-problem-of-atomic-op.patch new file mode 100644 index 0000000000000000000000000000000000000000..a28b2b71dc6a746862f955f348b0e31c3b1cf01c --- /dev/null +++ b/0044-libhns-Fix-the-sge-num-problem-of-atomic-op.patch @@ -0,0 +1,91 @@ +From b5127a009336e0e6947433148c6c7422c277bce7 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Sat, 6 May 2023 18:06:38 +0800 +Subject: [PATCH 1/3] libhns: Fix the sge num problem of atomic op + +mainline inclusion +commit b4793235 +category: bugfix +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I72EWP +CVE: NA + +---------------------------------------------------------------------- + +The hns hardware logic requires wr->num_sge to be 1 when +performing atomic operations. The code does not judge this +condition, and the current patch adds this constraint. + +Fixes: 3507f87f7760 ("libhns: Optimize set_sge process") +Fixes: 36446a56eea5 ("libhns: Extended QP supports the new post send mechanism") +Signed-off-by: Luoyouming +Signed-off-by: Zhou Juan +--- + providers/hns/hns_roce_u_hw_v2.c | 23 ++++++++++++++++++----- + 1 file changed, 18 insertions(+), 5 deletions(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index a49b50d..5533cdb 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -106,6 +106,9 @@ static int set_atomic_seg(struct hns_roce_qp *qp, struct ibv_send_wr *wr, + void *buf[ATOMIC_BUF_NUM_MAX]; + unsigned int buf_sge_num; + ++ /* There is only one sge in atomic wr, and data_len is the data length ++ * in the first sge ++ */ + if (is_std_atomic(data_len)) { + if (wr->opcode == IBV_WR_ATOMIC_CMP_AND_SWP) { + aseg->fetchadd_swap_data = htole64(wr->wr.atomic.swap); +@@ -923,16 +926,19 @@ static void set_rc_sge(struct hns_roce_v2_wqe_data_seg *dseg, + uint32_t mask = qp->ex_sge.sge_cnt - 1; + uint32_t index = sge_info->start_idx; + struct ibv_sge *sge = wr->sg_list; ++ int total_sge = wr->num_sge; ++ bool flag = false; + uint32_t len = 0; + uint32_t cnt = 0; +- int flag; + int i; + +- flag = (wr->send_flags & IBV_SEND_INLINE && +- wr->opcode != IBV_WR_ATOMIC_FETCH_AND_ADD && +- wr->opcode != IBV_WR_ATOMIC_CMP_AND_SWP); ++ if (wr->opcode == IBV_WR_ATOMIC_FETCH_AND_ADD || ++ wr->opcode == IBV_WR_ATOMIC_CMP_AND_SWP) ++ total_sge = 1; ++ else ++ flag = !!(wr->send_flags & IBV_SEND_INLINE); + +- for (i = 0; i < wr->num_sge; i++, sge++) { ++ for (i = 0; i < total_sge; i++, sge++) { + if (unlikely(!sge->length)) + continue; + +@@ -2267,6 +2273,7 @@ static void wr_set_sge_list_rc(struct ibv_qp_ex *ibv_qp, size_t num_sge, + struct hns_roce_qp *qp = to_hr_qp(&ibv_qp->qp_base); + struct hns_roce_rc_sq_wqe *wqe = qp->cur_wqe; + struct hns_roce_v2_wqe_data_seg *dseg; ++ uint32_t opcode; + + if (!wqe) + return; +@@ -2276,9 +2283,15 @@ static void wr_set_sge_list_rc(struct ibv_qp_ex *ibv_qp, size_t num_sge, + return; + } + ++ + hr_reg_write(wqe, RCWQE_MSG_START_SGE_IDX, + qp->sge_info.start_idx & (qp->ex_sge.sge_cnt - 1)); + ++ opcode = hr_reg_read(wqe, RCWQE_OPCODE); ++ if (opcode == HNS_ROCE_WQE_OP_ATOMIC_COM_AND_SWAP || ++ opcode == HNS_ROCE_WQE_OP_ATOMIC_FETCH_AND_ADD) ++ num_sge = 1; ++ + dseg = (void *)(wqe + 1); + set_sgl_rc(dseg, qp, sg_list, num_sge); + +-- +2.25.1 + diff --git a/0045-libhns-Fix-sge-tail_len-overflow.patch b/0045-libhns-Fix-sge-tail_len-overflow.patch new file mode 100644 index 0000000000000000000000000000000000000000..de3d9dad944d4c841c130999bdfda935b509a21c --- /dev/null +++ b/0045-libhns-Fix-sge-tail_len-overflow.patch @@ -0,0 +1,55 @@ +From 2653621c332c79ba591d76a442061bd13ad23030 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Sat, 6 May 2023 18:06:39 +0800 +Subject: [PATCH 2/3] libhns: Fix sge tail_len overflow + +mainline inclusion +commit cd9c9ea5 +category: bugfix +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I72F0C +CVE: NA + +---------------------------------------------------------------------- + +In the sq inline scenario, when num_sge in post_send is not 1, sge +array appears in the for loop without rotation and directly copy +out of bounds. + +The fill_ext_sge_inl_data() calculates the remaining length of the +array by subtracting the current address from the tail address. If +the length is not sufficient, redundant data will be copied after +rotating the array. However, in the code, sge_cnt & sge_mask always +equals to 0, which causes the tail address of the array to be +mistakenly taken as the first address. Additionally, tail_len will +be either 0 or may overflow when calculating this value. After +overflowing to a very large number, the driver makes an incorrect +judgment and copies all the data directly. When the data length +exceeds the remaining length, an out-of-bounds problem with the +array will occur. + +This patch modifies tail_bound_addr(tail pointer) to the actual sge +array tail address. + +Fixes: 2ced2bc4d1d4 ("libhns: Fix out-of-bounds write when filling inline data into extended sge space") +Signed-off-by: Luoyouming +Signed-off-by: Zhou Juan +--- + providers/hns/hns_roce_u_hw_v2.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 5533cdb..3d46f35 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -1028,7 +1028,7 @@ static int fill_ext_sge_inl_data(struct hns_roce_qp *qp, + return EINVAL; + + dst_addr = get_send_sge_ex(qp, sge_info->start_idx & sge_mask); +- tail_bound_addr = get_send_sge_ex(qp, qp->ex_sge.sge_cnt & sge_mask); ++ tail_bound_addr = get_send_sge_ex(qp, qp->ex_sge.sge_cnt); + + for (i = 0; i < num_buf; i++) { + tail_len = (uintptr_t)tail_bound_addr - (uintptr_t)dst_addr; +-- +2.25.1 + diff --git a/0046-libhns-Disable-local-invalidate-operation.patch b/0046-libhns-Disable-local-invalidate-operation.patch new file mode 100644 index 0000000000000000000000000000000000000000..b8a66680d1222ed1a2202b70a7244b38641d01ec --- /dev/null +++ b/0046-libhns-Disable-local-invalidate-operation.patch @@ -0,0 +1,153 @@ +From b3cea3522d575fdb60b6f426e43d45cec3deb847 Mon Sep 17 00:00:00 2001 +From: Yangyang Li +Date: Sat, 6 May 2023 18:06:40 +0800 +Subject: [PATCH 3/3] libhns: Disable local invalidate operation + +mainline inclusion +commit d8eec872 +category: bugfix +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I72F0U +CVE: NA + +---------------------------------------------------------------------- + +Currently local invalidate operation don't work properly. +Disable it for the time being. +HIP08 and HIP09 hardware does not support this feature, so +delete the associated code. + +Fixes: a9ae7e9bfb5d ("libhns: Add local invalidate MR support for hip08") +Signed-off-by: Yangyang Li +Signed-off-by: Zhou Juan +--- + providers/hns/hns_roce_u_hw_v2.c | 30 +----------------------------- + providers/hns/hns_roce_u_hw_v2.h | 2 -- + 2 files changed, 1 insertion(+), 31 deletions(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 3d46f35..b929bbf 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -50,7 +50,6 @@ static const uint32_t hns_roce_opcode[] = { + HR_IBV_OPC_MAP(RDMA_READ, RDMA_READ), + HR_IBV_OPC_MAP(ATOMIC_CMP_AND_SWP, ATOMIC_COM_AND_SWAP), + HR_IBV_OPC_MAP(ATOMIC_FETCH_AND_ADD, ATOMIC_FETCH_AND_ADD), +- HR_IBV_OPC_MAP(LOCAL_INV, LOCAL_INV), + HR_IBV_OPC_MAP(BIND_MW, BIND_MW_TYPE), + HR_IBV_OPC_MAP(SEND_WITH_INV, SEND_WITH_INV), + }; +@@ -429,7 +428,6 @@ static const unsigned int wc_send_op_map[] = { + [HNS_ROCE_SQ_OP_RDMA_READ] = IBV_WC_RDMA_READ, + [HNS_ROCE_SQ_OP_ATOMIC_COMP_AND_SWAP] = IBV_WC_COMP_SWAP, + [HNS_ROCE_SQ_OP_ATOMIC_FETCH_AND_ADD] = IBV_WC_FETCH_ADD, +- [HNS_ROCE_SQ_OP_LOCAL_INV] = IBV_WC_LOCAL_INV, + [HNS_ROCE_SQ_OP_BIND_MW] = IBV_WC_BIND_MW, + }; + +@@ -597,9 +595,6 @@ static void parse_cqe_for_req(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, + case HNS_ROCE_SQ_OP_RDMA_WRITE_WITH_IMM: + wc->wc_flags = IBV_WC_WITH_IMM; + break; +- case HNS_ROCE_SQ_OP_LOCAL_INV: +- wc->wc_flags = IBV_WC_WITH_INV; +- break; + case HNS_ROCE_SQ_OP_RDMA_READ: + case HNS_ROCE_SQ_OP_ATOMIC_COMP_AND_SWAP: + case HNS_ROCE_SQ_OP_ATOMIC_FETCH_AND_ADD: +@@ -1338,9 +1333,6 @@ static int check_rc_opcode(struct hns_roce_rc_sq_wqe *wqe, + wqe->rkey = htole32(wr->wr.atomic.rkey); + wqe->va = htole64(wr->wr.atomic.remote_addr); + break; +- case IBV_WR_LOCAL_INV: +- hr_reg_enable(wqe, RCWQE_SO); +- /* fallthrough */ + case IBV_WR_SEND_WITH_INV: + wqe->inv_key = htole32(wr->invalidate_rkey); + break; +@@ -1372,7 +1364,6 @@ static int set_rc_wqe(void *wqe, struct hns_roce_qp *qp, struct ibv_send_wr *wr, + !!(wr->send_flags & IBV_SEND_SOLICITED)); + hr_reg_write_bool(wqe, RCWQE_INLINE, + !!(wr->send_flags & IBV_SEND_INLINE)); +- hr_reg_clear(wqe, RCWQE_SO); + + ret = check_rc_opcode(rc_sq_wqe, wr); + if (ret) +@@ -2092,8 +2083,6 @@ static unsigned int get_wc_flags_for_sq(uint8_t opcode) + case HNS_ROCE_SQ_OP_SEND_WITH_IMM: + case HNS_ROCE_SQ_OP_RDMA_WRITE_WITH_IMM: + return IBV_WC_WITH_IMM; +- case HNS_ROCE_SQ_OP_LOCAL_INV: +- return IBV_WC_WITH_INV; + default: + return 0; + } +@@ -2202,7 +2191,6 @@ init_rc_wqe(struct hns_roce_qp *qp, uint64_t wr_id, unsigned int opcode) + hr_reg_write_bool(wqe, RCWQE_FENCE, send_flags & IBV_SEND_FENCE); + hr_reg_write_bool(wqe, RCWQE_SE, send_flags & IBV_SEND_SOLICITED); + hr_reg_clear(wqe, RCWQE_INLINE); +- hr_reg_clear(wqe, RCWQE_SO); + + if (check_qp_dca_enable(qp)) + fill_rc_dca_fields(qp->verbs_qp.qp.qp_num, wqe); +@@ -2332,20 +2320,6 @@ static void wr_send_inv_rc(struct ibv_qp_ex *ibv_qp, uint32_t invalidate_rkey) + wqe->inv_key = htole32(invalidate_rkey); + } + +-static void wr_local_inv_rc(struct ibv_qp_ex *ibv_qp, uint32_t invalidate_rkey) +-{ +- struct hns_roce_qp *qp = to_hr_qp(&ibv_qp->qp_base); +- struct hns_roce_rc_sq_wqe *wqe; +- +- wqe = init_rc_wqe(qp, ibv_qp->wr_id, HNS_ROCE_WQE_OP_LOCAL_INV); +- if (!wqe) +- return; +- +- hr_reg_enable(wqe, RCWQE_SO); +- wqe->inv_key = htole32(invalidate_rkey); +- enable_wqe(qp, wqe, qp->sq.head); +-} +- + static void wr_set_xrc_srqn(struct ibv_qp_ex *ibv_qp, uint32_t remote_srqn) + { + struct hns_roce_qp *qp = to_hr_qp(&ibv_qp->qp_base); +@@ -2833,8 +2807,7 @@ enum { + IBV_QP_EX_WITH_RDMA_WRITE_WITH_IMM | + IBV_QP_EX_WITH_RDMA_READ | + IBV_QP_EX_WITH_ATOMIC_CMP_AND_SWP | +- IBV_QP_EX_WITH_ATOMIC_FETCH_AND_ADD | +- IBV_QP_EX_WITH_LOCAL_INV, ++ IBV_QP_EX_WITH_ATOMIC_FETCH_AND_ADD, + HNS_SUPPORTED_SEND_OPS_FLAGS_UD = + IBV_QP_EX_WITH_SEND | + IBV_QP_EX_WITH_SEND_WITH_IMM, +@@ -2850,7 +2823,6 @@ static void fill_send_wr_ops_rc_xrc(struct ibv_qp_ex *qp_ex) + qp_ex->wr_rdma_write_imm = wr_rdma_write_imm; + qp_ex->wr_set_inline_data = wr_set_inline_data_rc; + qp_ex->wr_set_inline_data_list = wr_set_inline_data_list_rc; +- qp_ex->wr_local_inv = wr_local_inv_rc; + qp_ex->wr_atomic_cmp_swp = wr_atomic_cmp_swp; + qp_ex->wr_atomic_fetch_add = wr_atomic_fetch_add; + qp_ex->wr_set_sge = wr_set_sge_rc; +diff --git a/providers/hns/hns_roce_u_hw_v2.h b/providers/hns/hns_roce_u_hw_v2.h +index a22995d..d628d76 100644 +--- a/providers/hns/hns_roce_u_hw_v2.h ++++ b/providers/hns/hns_roce_u_hw_v2.h +@@ -60,7 +60,6 @@ enum { + HNS_ROCE_WQE_OP_ATOMIC_MASK_COMP_AND_SWAP = 0x8, + HNS_ROCE_WQE_OP_ATOMIC_MASK_FETCH_AND_ADD = 0x9, + HNS_ROCE_WQE_OP_FAST_REG_PMR = 0xa, +- HNS_ROCE_WQE_OP_LOCAL_INV = 0xb, + HNS_ROCE_WQE_OP_BIND_MW_TYPE = 0xc, + HNS_ROCE_WQE_OP_MASK = 0x1f + }; +@@ -85,7 +84,6 @@ enum { + HNS_ROCE_SQ_OP_ATOMIC_MASK_COMP_AND_SWAP = 0x8, + HNS_ROCE_SQ_OP_ATOMIC_MASK_FETCH_AND_ADD = 0x9, + HNS_ROCE_SQ_OP_FAST_REG_PMR = 0xa, +- HNS_ROCE_SQ_OP_LOCAL_INV = 0xb, + HNS_ROCE_SQ_OP_BIND_MW = 0xc, + }; + +-- +2.25.1 + diff --git a/0047-libhns-Fix-the-owner-bit-error-of-sq-in-new-io.patch b/0047-libhns-Fix-the-owner-bit-error-of-sq-in-new-io.patch new file mode 100644 index 0000000000000000000000000000000000000000..e0b7b38d70c5d260eca9d8342f3a26879dd42101 --- /dev/null +++ b/0047-libhns-Fix-the-owner-bit-error-of-sq-in-new-io.patch @@ -0,0 +1,69 @@ +From a86a120c35b1112bcef6c3821c2e5e1910e615e9 Mon Sep 17 00:00:00 2001 +From: Luoyouming +Date: Fri, 2 Jun 2023 10:33:14 +0800 +Subject: [PATCH 2/4] libhns: Fix the owner bit error of sq in new io + +driver inclusion +category: bugfix +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I7A5Y5 + +--------------------------------------------------------------- + +The code does not use the head position of sq to set the owner bit, +but uses the head after adding 1 to cause an owner bit error. When +the wqe queue has not been flipped, the hardware has flipped based +on the owner bit judgment, resulting in failure to obtain wqe, +unable to send, and unable to generate cqe. This patch will set the +onwer bit ahead of time before the head value increases. + +Fixes: 36446a56eea5 ("libhns: Extended QP supports the new post send mechanism") +Signed-off-by: Luoyouming +--- + providers/hns/hns_roce_u_hw_v2.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 616d1ea..cde4801 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -2215,6 +2215,9 @@ init_rc_wqe(struct hns_roce_qp *qp, uint64_t wr_id, unsigned int opcode) + + qp->sq.wrid[wqe_idx] = wr_id; + qp->cur_wqe = wqe; ++ ++ enable_wqe(qp, wqe, qp->sq.head); ++ + qp->sq.head++; + + return wqe; +@@ -2236,9 +2239,6 @@ static void wr_set_sge_rc(struct ibv_qp_ex *ibv_qp, uint32_t lkey, + wqe->msg_len = htole32(length); + hr_reg_write(wqe, RCWQE_LEN0, length); + hr_reg_write(wqe, RCWQE_SGE_NUM, !!length); +- /* ignore ex sge start index */ +- +- enable_wqe(qp, wqe, qp->sq.head); + } + + static void set_sgl_rc(struct hns_roce_v2_wqe_data_seg *dseg, +@@ -2541,6 +2541,9 @@ init_ud_wqe(struct hns_roce_qp *qp, uint64_t wr_id, unsigned int opcode) + + qp->sq.wrid[wqe_idx] = wr_id; + qp->cur_wqe = wqe; ++ ++ enable_wqe(qp, wqe, qp->sq.head); ++ + qp->sq.head++; + + return wqe; +@@ -2610,7 +2613,6 @@ static void wr_set_sge_ud(struct ibv_qp_ex *ibv_qp, uint32_t lkey, + dseg->len = htole32(length); + + qp->sge_info.start_idx++; +- enable_wqe(qp, wqe, qp->sq.head); + } + + static void wr_set_sge_list_ud(struct ibv_qp_ex *ibv_qp, size_t num_sge, +-- +2.25.1 + diff --git a/0048-libhns-Fix-incorrect-post-send-with-direct-wqe-of-wr.patch b/0048-libhns-Fix-incorrect-post-send-with-direct-wqe-of-wr.patch new file mode 100644 index 0000000000000000000000000000000000000000..680c583e309a9b3bcaaecb55b28d2d56beb6d331 --- /dev/null +++ b/0048-libhns-Fix-incorrect-post-send-with-direct-wqe-of-wr.patch @@ -0,0 +1,49 @@ +From cfea6efe6decfa8c209ad9a85e1290674370725e Mon Sep 17 00:00:00 2001 +From: Junxian Huang +Date: Fri, 2 Jun 2023 10:33:15 +0800 +Subject: [PATCH 3/4] libhns: Fix incorrect post-send with direct wqe of + wr-list in user space + +driver inclusion +category: bugfix +bugzilla: https://gitee.com/openeuler/kernel/issues/I7A2SA + +--------------------------------------------------------------- + +Currently, direct wqe is not supported for wr-list. RoCE driver excludes +direct wqe for wr-list by judging whether the number of wr is 1. + +For a wr-list where the second wr is a length-error atomic wr, the +post-send driver handles the first wr and adds 1 to the wr number counter +firstly. While handling the second wr, the driver finds out a length error +and terminates the wr handle process, remaining the counter at 1. This +causes the driver mistakenly judges there is only 1 wr and thus enters +the direct wqe process, carrying the current length-error atomic wqe. + +This patch fixes the error by adding a judgement whether the current wr +is a bad wr. If so, use the normal doorbell process but not direct wqe +despite the wr number is 1. + +Fixes: 159933c37450 ("libhns: Add support for direct wqe") +Signed-off-by: Junxian Huang +--- + providers/hns/hns_roce_u_hw_v2.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index cde4801..bb26c59 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -1480,7 +1480,8 @@ out: + + udma_to_device_barrier(); + +- if (nreq == 1 && (qp->flags & HNS_ROCE_QP_CAP_DIRECT_WQE)) ++ if (nreq == 1 && !ret && ++ (qp->flags & HNS_ROCE_QP_CAP_DIRECT_WQE)) + hns_roce_write_dwqe(qp, wqe); + else + hns_roce_update_sq_db(ctx, qp); +-- +2.25.1 + diff --git a/0049-libhns-Add-a-judgment-to-the-congestion-control-algo.patch b/0049-libhns-Add-a-judgment-to-the-congestion-control-algo.patch new file mode 100644 index 0000000000000000000000000000000000000000..027b3932d9922e3022bc1b4c4cc2b6a8c021abe4 --- /dev/null +++ b/0049-libhns-Add-a-judgment-to-the-congestion-control-algo.patch @@ -0,0 +1,41 @@ +From 8fbf781e3b3630c25a361f7c5e3642350dcd21c9 Mon Sep 17 00:00:00 2001 +From: Chengchang Tang +Date: Fri, 2 Jun 2023 10:33:16 +0800 +Subject: [PATCH 4/4] libhns: Add a judgment to the congestion control + algorithm + +driver inclusion +category: bugfix +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I7A7HI + +--------------------------------------------------------------- + +The congestion control algorithm is used only when the comp_mask flag +HNSDV_QP_INIT_ATTR_MASK_QP_CONGEST_TYPE is seted. + +A check on comp_mask is added to prevent invalid parameter errors caused +by unconfigured congestion control algorithm types. + +Fixes: 7623f24781f1 ("libhns: Support congestion control algorithm configuration") +Signed-off-by: Chengchang Tang +--- + providers/hns/hns_roce_u_verbs.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index 6c6120c..fa27fc1 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -988,6 +988,9 @@ static int check_qp_congest_type(struct hns_roce_context *ctx, + { + struct hns_roce_device *hr_dev = to_hr_dev(ctx->ibv_ctx.context.device); + ++ if (!(hns_attr->comp_mask & HNSDV_QP_INIT_ATTR_MASK_QP_CONGEST_TYPE)) ++ return 0; ++ + if (!check_comp_mask(hns_attr->congest_type, hr_dev->congest_type)) { + verbs_err(&ctx->ibv_ctx, "unsupported congest type 0x%x.\n", + hns_attr->congest_type); +-- +2.25.1 + diff --git a/0050-libhns-Support-user-to-choose-using-UD-sl-or-pktype-.patch b/0050-libhns-Support-user-to-choose-using-UD-sl-or-pktype-.patch new file mode 100644 index 0000000000000000000000000000000000000000..13b0a9fc4b598ae320af1b30a90ac7ea9fd6b6c5 --- /dev/null +++ b/0050-libhns-Support-user-to-choose-using-UD-sl-or-pktype-.patch @@ -0,0 +1,178 @@ +From fb07638be493fe0667e3fa0554ee434b7d6b3502 Mon Sep 17 00:00:00 2001 +From: Junxian Huang +Date: Fri, 9 Jun 2023 11:04:41 +0800 +Subject: [PATCH] libhns: Support user to choose using UD sl or pktype to adapt + MPI APP + +driver inclusion +category: bugfix +bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I7A5YM + +--------------------------------------------------------------- + +According to Annex17_RoCEv2 (A17.4.5.2), for RoCEv2 UD, a CQE should +carry a flag that indicates if the received frame is an IPv4, IPv6 or +RoCE packet. But currently, the values of the flag corresponding to +these packet types haven't been defined yet in WC. + +In UCX, 'sl' in ibv_wc for UD is used as the packet type flag, and the +packet type values have already been defined in the UCX patch of +https://github.com/openucx/ucx/commit/ed28845b88633e65d64fce8ec880060aa61bd59c + +Therefore, to adapt UCX, add a create flag to hnsdv_create_qp() to allow +users to choose whether they use 'sl' in ibv_wc as service level or +packet type for UD. For the latter, obtain and translate the packet type +from CQE and fill it to 'sl' in ibv_wc. + +Signed-off-by: Junxian Huang +Signed-off-by: Haoyue Xu +--- + providers/hns/hns_roce_u.h | 11 +++++++++++ + providers/hns/hns_roce_u_hw_v2.c | 32 +++++++++++++++++++++++++++++--- + providers/hns/hns_roce_u_verbs.c | 16 ++++++++++++++++ + providers/hns/hnsdv.h | 1 + + 4 files changed, 57 insertions(+), 3 deletions(-) + +diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h +index 41e9599..e3012e1 100644 +--- a/providers/hns/hns_roce_u.h ++++ b/providers/hns/hns_roce_u.h +@@ -195,6 +195,12 @@ enum hns_roce_tc_map_mode { + HNS_ROCE_TC_MAP_MODE_DSCP, + }; + ++enum hns_roce_pktype { ++ HNS_ROCE_PKTYPE_ROCE_V1, ++ HNS_ROCE_PKTYPE_ROCE_V2_IPV6, ++ HNS_ROCE_PKTYPE_ROCE_V2_IPV4, ++}; ++ + struct hns_roce_db_page { + struct hns_roce_db_page *prev, *next; + struct hns_roce_buf buf; +@@ -406,6 +412,11 @@ struct hns_roce_qp { + void *cur_wqe; + unsigned int rb_sq_head; /* roll back sq head */ + struct hns_roce_sge_info sge_info; ++ ++ /* Just for UD. If not enabled, 'sl' in ibv_wc ++ * will be filled with 'port_type' in cqe. ++ */ ++ bool enable_ud_sl; + }; + + struct hns_roce_av { +diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c +index 4b0ec5c..ee2fffe 100644 +--- a/providers/hns/hns_roce_u_hw_v2.c ++++ b/providers/hns/hns_roce_u_hw_v2.c +@@ -522,9 +522,24 @@ static void handle_recv_rq_inl(struct hns_roce_v2_cqe *cqe, + handle_recv_inl_data(cqe, &(cur_qp->rq_rinl_buf), wr_num, wqe_buf); + } + +-static void parse_for_ud_qp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc) ++static const uint8_t pktype_for_ud[] = { ++ HNS_ROCE_PKTYPE_ROCE_V1, ++ HNS_ROCE_PKTYPE_ROCE_V2_IPV4, ++ HNS_ROCE_PKTYPE_ROCE_V2_IPV6 ++}; ++ ++static void parse_for_ud_qp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, ++ bool enable_ud_sl) + { +- wc->sl = hr_reg_read(cqe, CQE_SL); ++ uint8_t port_type; ++ ++ if (enable_ud_sl) { ++ wc->sl = hr_reg_read(cqe, CQE_SL); ++ } else { ++ port_type = hr_reg_read(cqe, CQE_PORT_TYPE); ++ wc->sl = pktype_for_ud[port_type]; ++ } ++ + wc->src_qp = hr_reg_read(cqe, CQE_RMT_QPN); + wc->slid = 0; + wc->wc_flags |= hr_reg_read(cqe, CQE_GRH) ? IBV_WC_GRH : 0; +@@ -554,7 +569,7 @@ static int parse_cqe_for_resp(struct hns_roce_v2_cqe *cqe, struct ibv_wc *wc, + ++wq->tail; + + if (hr_qp->verbs_qp.qp.qp_type == IBV_QPT_UD) +- parse_for_ud_qp(cqe, wc); ++ parse_for_ud_qp(cqe, wc, hr_qp->enable_ud_sl); + + if (hr_reg_read(cqe, CQE_CQE_INLINE)) + handle_recv_cqe_inl_from_rq(cqe, hr_qp); +@@ -2126,6 +2141,17 @@ static uint32_t wc_read_slid(struct ibv_cq_ex *current) + static uint8_t wc_read_sl(struct ibv_cq_ex *current) + { + struct hns_roce_cq *cq = to_hr_cq(ibv_cq_ex_to_cq(current)); ++ struct hns_roce_context *ctx = to_hr_ctx(current->context); ++ struct hns_roce_qp *hr_qp; ++ uint8_t port_type; ++ uint32_t qpn; ++ ++ qpn = hr_reg_read(cq->cqe, CQE_LCL_QPN); ++ hr_qp = hns_roce_v2_find_qp(ctx, qpn); ++ if (hr_qp->verbs_qp.qp.qp_type == IBV_QPT_UD && !hr_qp->enable_ud_sl) { ++ port_type = hr_reg_read(cq->cqe, CQE_PORT_TYPE); ++ return pktype_for_ud[port_type]; ++ } + + return (uint8_t)hr_reg_read(cq->cqe, CQE_SL); + } +diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c +index fa27fc1..4b641ea 100644 +--- a/providers/hns/hns_roce_u_verbs.c ++++ b/providers/hns/hns_roce_u_verbs.c +@@ -1019,6 +1019,11 @@ static int check_qp_congest_type(struct hns_roce_context *ctx, + return 0; + } + ++enum { ++ HNSDV_QP_SUP_CREATE_FLAGS = HNSDV_QP_CREATE_ENABLE_DCA_MODE | ++ HNSDV_QP_CREATE_ENABLE_UD_SL, ++}; ++ + static int check_hnsdv_qp_attr(struct hns_roce_context *ctx, + struct hnsdv_qp_init_attr *hns_attr, + struct hns_roce_cmd_flag *cmd_flag) +@@ -1034,6 +1039,14 @@ static int check_hnsdv_qp_attr(struct hns_roce_context *ctx, + return -EINVAL; + } + ++ if (hns_attr->comp_mask & HNSDV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS && ++ !check_comp_mask(hns_attr->create_flags, ++ HNSDV_QP_SUP_CREATE_FLAGS)) { ++ verbs_err(&ctx->ibv_ctx, "invalid create_flags 0x%x.\n", ++ hns_attr->create_flags); ++ return -EOPNOTSUPP; ++ } ++ + ret = check_qp_congest_type(ctx, hns_attr, cmd_flag); + if (ret) + return ret; +@@ -1685,6 +1698,9 @@ static struct ibv_qp *create_qp(struct ibv_context *ibv_ctx, + + qp_setup_config(attr, qp, context); + ++ if (hns_attr && hns_attr->create_flags & HNSDV_QP_CREATE_ENABLE_UD_SL) ++ qp->enable_ud_sl = true; ++ + return &qp->verbs_qp.qp; + + err_dwqe: +diff --git a/providers/hns/hnsdv.h b/providers/hns/hnsdv.h +index e15b428..365c314 100644 +--- a/providers/hns/hnsdv.h ++++ b/providers/hns/hnsdv.h +@@ -43,6 +43,7 @@ struct ibv_context *hnsdv_open_device(struct ibv_device *device, + + enum hnsdv_qp_create_flags { + HNSDV_QP_CREATE_ENABLE_DCA_MODE = 1 << 0, ++ HNSDV_QP_CREATE_ENABLE_UD_SL = 1 << 1, + }; + + enum hnsdv_qp_congest_ctrl_type { +-- +2.25.1 + diff --git a/rdma-core-35.0.tar.gz b/rdma-core-35.0.tar.gz deleted file mode 100644 index 226137c258a735e7bb0b8812543f08cfc423d3f6..0000000000000000000000000000000000000000 Binary files a/rdma-core-35.0.tar.gz and /dev/null differ diff --git a/rdma-core-41.0.tar.gz b/rdma-core-41.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..19fbd78398613efd77dfd570feb6c558a04666dc Binary files /dev/null and b/rdma-core-41.0.tar.gz differ diff --git a/rdma-core.spec b/rdma-core.spec index 89484aa3b852a22daebc07b2211f9a009aaedf3c..c3b39a808cb79a818deb82018015a4d31058aa9f 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -1,17 +1,68 @@ Name: rdma-core -Version: 35.0 -Release: 5 +Version: 41.0 +Release: 1 Summary: RDMA core userspace libraries and daemons License: GPLv2 or BSD Url: https://github.com/linux-rdma/rdma-core Source: https://github.com/linux-rdma/rdma-core/releases/download/v%{version}/%{name}-%{version}.tar.gz +Patch0: 0001-libhns-Use-a-constant-instead-of-sizeof-operation.patch +Patch1: 0002-libhns-Fix-ext_sge-num-error-when-post-send.patch +Patch2: 0003-Update-kernel-headers.patch +Patch3: 0004-libhns-Fix-the-problem-of-sge-nums.patch +Patch4: 0005-Update-kernel-headers.patch +Patch5: 0006-libhns-Add-compatibility-handling-for-rq-inline.patch +Patch6: 0007-libhns-Refactor-rq-inline.patch +Patch7: 0008-libhns-RQ-inline-support-wc_x_poll_cq-interface.patch +Patch8: 0009-Update-kernel-headers.patch +Patch9: 0010-libhns-Support-cqe-inline.patch +Patch10: 0011-Update-kernel-headers.patch +Patch11: 0012-libhns-Support-DSCP.patch +Patch12: 0013-cma-Release-allocated-port-array.patch +Patch13: 0014-rsockets-Fix-allocation-size-There-is-memory-allocat.patch +Patch14: 0015-tests-test_mr.py-Change-the-argument-of-DmaBufMR-to-.patch +Patch15: 0016-ABI-Files.patch +Patch16: 0017-mlx5-Adjust-Crypto-BSF-size-if-signature-is-used.patch +Patch17: 0018-mlx5-DR-Fix-missing-comma-in-matcher-builder-dump-li.patch +Patch18: 0019-Install-xprtrdma-svcrdma-kmods-in-redhat-suse-dracut.patch +Patch19: 0020-providers-irdma-Explicitly-set-QP-modify-attributes-.patch +Patch20: 0021-providers-irdma-Use-s-g-array-in-post-send-only-when.patch +Patch21: 0022-providers-irdma-Report-correct-WC-errors.patch +Patch22: 0023-pyverbs-Increment-the-correct-rkey-in-test_qpex.patch +Patch23: 0024-mckey-Use-rdma_create_qp_ex-only-for-loopback-preven.patch +Patch24: 0025-Fix-spelling-mistake-of-underlying.patch +Patch25: 0026-rdma-ndd-disable-systemd-ProtectHostName-feature.patch +Patch26: 0027-libhns-Add-RoH-device-IDs.patch +Patch27: 0028-Update-kernel-headers.patch +Patch28: 0029-libhns-Add-the-parsing-of-mac-type-in-RoH-mode.patch +Patch29: 0030-libhns-Add-support-for-the-thread-domain-and-the-par.patch +Patch30: 0031-Update-kernel-headers.patch +Patch31: 0032-libhns-Introduce-DCA-for-RC-QP.patch +Patch32: 0033-libhns-Add-support-for-shrinking-DCA-memory-pool.patch +Patch33: 0034-libhns-Add-support-for-attaching-QP-s-WQE-buffer.patch +Patch34: 0035-libhns-Use-shared-memory-to-sync-DCA-status.patch +Patch35: 0036-libhns-Sync-DCA-status-by-shared-memory.patch +Patch36: 0037-libhns-Add-direct-verbs-support-to-config-DCA.patch +Patch37: 0038-Update-kernel-headers.patch +Patch38: 0039-libhns-Add-reset-stop-flow-mechanism.patch +Patch39: 0040-Update-kernel-headers.patch +Patch40: 0041-libhns-Support-congestion-control-algorithm-configur.patch +Patch41: 0042-Update-kernel-headers.patch +Patch42: 0043-libhns-Add-support-for-SVE-Direct-WQE.patch +Patch43: 0044-libhns-Fix-the-sge-num-problem-of-atomic-op.patch +Patch44: 0045-libhns-Fix-sge-tail_len-overflow.patch +Patch45: 0046-libhns-Disable-local-invalidate-operation.patch +Patch46: 0047-libhns-Fix-the-owner-bit-error-of-sq-in-new-io.patch +Patch47: 0048-libhns-Fix-incorrect-post-send-with-direct-wqe-of-wr.patch +Patch48: 0049-libhns-Add-a-judgment-to-the-congestion-control-algo.patch +Patch49: 0050-libhns-Support-user-to-choose-using-UD-sl-or-pktype-.patch + BuildRequires: binutils cmake >= 2.8.11 gcc libudev-devel pkgconfig pkgconfig(libnl-3.0) BuildRequires: pkgconfig(libnl-route-3.0) valgrind-devel systemd systemd-devel BuildRequires: python3-devel python3-Cython python3 python3-docutils perl-generators BuildRequires: ninja-build -Requires: dracut kmod systemd pciutils %{name}-help +Requires: systemd pciutils Provides: ibacm infiniband-diags-compat infiniband-diags libibverbs libibverbs-utils iwpmd libibumad librdmacm librdmacm-utils srp_daemon Obsoletes: ibacm infiniband-diags-compat infiniband-diags libibverbs libibverbs-utils iwpmd libibumad librdmacm librdmacm-utils srp_daemon @@ -28,6 +79,8 @@ Provides: libefa = %{version}-%{release} Obsoletes: libefa < %{version}-%{release} Provides: libhfi1 = %{version}-%{release} Obsoletes: libhfi1 < %{version}-%{release} +Provides: libhns = %{version}-%{release} +Obsoletes: libhns < %{version}-%{release} Provides: libi40iw = %{version}-%{release} Obsoletes: libi40iw < %{version}-%{release} Provides: libipathverbs = %{version}-%{release} @@ -48,9 +101,6 @@ Obsoletes: openib-srptools <= 0.0.6 Conflicts: infiniband-diags <= 1.6.7 -Patch0: 0000-use-e-para-to-make-transferred-meaning-take-effect.patch -Patch1: 0001-libhns-Bugfix-for-calculation-of-extended-sge.patch - %{?systemd_requires} %define CMAKE_FLAGS -GNinja @@ -170,9 +220,11 @@ rm -f %{buildroot}/%{_sbindir}/srp_daemon.sh %ldconfig_scriptlets %post +if [ -x /sbin/udevadm ];then /sbin/udevadm trigger --subsystem-match=infiniband --action=change || true /sbin/udevadm trigger --subsystem-match=net --action=change || true /sbin/udevadm trigger --subsystem-match=infiniband_mad --action=change || true +fi %systemd_post ibacm.service %systemd_post srp_daemon.service %systemd_post iwpmd.service @@ -213,6 +265,7 @@ rm -f %{buildroot}/%{_sbindir}/srp_daemon.sh %{_libdir}/libibmad*.so.* %{_libdir}/libibnetdisc*.so.* %{_libdir}/libefa.so.* +%{_libdir}/libhns.so.* %{_libdir}/libibverbs*.so.* %{_libdir}/libibverbs/*.so %{_libdir}/libmlx5.so.* @@ -250,6 +303,9 @@ rm -f %{buildroot}/%{_sbindir}/srp_daemon.sh %{_mandir}/* %changelog +* Tue Oct 17 2023 chenyaqiang - 41.0-1 +- update to 41.0 + * Thu Feb 17 2022 tangchengchang - 35.0-5 - Type: bugfix - ID: NA diff --git a/rdma-core.yaml b/rdma-core.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0b09a8635215594612e49e31ce21bc8b88c7f6c1 --- /dev/null +++ b/rdma-core.yaml @@ -0,0 +1,4 @@ +version_control: github +src_repo: linux-rdma/rdma-core +tag_prefix: ^v +seperator: .