[RDMA_NLDEV_ATTR_DRIVER_U32]            = { .type = NLA_U32 },
        [RDMA_NLDEV_ATTR_DRIVER_S64]            = { .type = NLA_S64 },
        [RDMA_NLDEV_ATTR_DRIVER_U64]            = { .type = NLA_U64 },
+       [RDMA_NLDEV_ATTR_RES_PDN]               = { .type = NLA_U32 },
+       [RDMA_NLDEV_ATTR_RES_CQN]               = { .type = NLA_U32 },
+       [RDMA_NLDEV_ATTR_RES_MRN]               = { .type = NLA_U32 },
+       [RDMA_NLDEV_ATTR_RES_CM_IDN]            = { .type = NLA_U32 },
 };
 
 static int put_driver_name_print_type(struct sk_buff *msg, const char *name,
                    &cm_id->route.addr.dst_addr))
                goto err;
 
+       if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CM_IDN, res->id))
+               goto err;
+
        if (fill_res_name_pid(msg, res))
                goto err;
 
            nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_POLL_CTX, cq->poll_ctx))
                goto err;
 
+       if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CQN, res->id))
+               goto err;
+
        if (fill_res_name_pid(msg, res))
                goto err;
 
                              RDMA_NLDEV_ATTR_PAD))
                goto err;
 
+       if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_MRN, res->id))
+               goto err;
+
        if (fill_res_name_pid(msg, res))
                goto err;
 
                              atomic_read(&pd->usecnt), RDMA_NLDEV_ATTR_PAD))
                goto err;
 
+       if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PDN, res->id))
+               goto err;
+
        if (fill_res_name_pid(msg, res))
                goto err;
 
                .nldev_cmd = RDMA_NLDEV_CMD_RES_CM_ID_GET,
                .nldev_attr = RDMA_NLDEV_ATTR_RES_CM_ID,
                .entry = RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY,
+               .id = RDMA_NLDEV_ATTR_RES_CM_IDN,
        },
        [RDMA_RESTRACK_CQ] = {
                .fill_res_func = fill_res_cq_entry,
                .nldev_attr = RDMA_NLDEV_ATTR_RES_CQ,
                .flags = NLDEV_PER_DEV,
                .entry = RDMA_NLDEV_ATTR_RES_CQ_ENTRY,
+               .id = RDMA_NLDEV_ATTR_RES_CQN,
        },
        [RDMA_RESTRACK_MR] = {
                .fill_res_func = fill_res_mr_entry,
                .nldev_attr = RDMA_NLDEV_ATTR_RES_MR,
                .flags = NLDEV_PER_DEV,
                .entry = RDMA_NLDEV_ATTR_RES_MR_ENTRY,
+               .id = RDMA_NLDEV_ATTR_RES_MRN,
        },
        [RDMA_RESTRACK_PD] = {
                .fill_res_func = fill_res_pd_entry,
                .nldev_attr = RDMA_NLDEV_ATTR_RES_PD,
                .flags = NLDEV_PER_DEV,
                .entry = RDMA_NLDEV_ATTR_RES_PD_ENTRY,
+               .id = RDMA_NLDEV_ATTR_RES_PDN,
        },
 };
 
 
        RDMA_NLDEV_ATTR_DRIVER_S64,             /* s64 */
        RDMA_NLDEV_ATTR_DRIVER_U64,             /* u64 */
 
+       /*
+        * Indexes to get/set secific entry,
+        * for QP use RDMA_NLDEV_ATTR_RES_LQPN
+        */
+       RDMA_NLDEV_ATTR_RES_PDN,               /* u32 */
+       RDMA_NLDEV_ATTR_RES_CQN,               /* u32 */
+       RDMA_NLDEV_ATTR_RES_MRN,               /* u32 */
+       RDMA_NLDEV_ATTR_RES_CM_IDN,            /* u32 */
+
        /*
         * Always the end
         */