Lines Matching full:msg

177 static int put_driver_name_print_type(struct sk_buff *msg, const char *name,  in put_driver_name_print_type()  argument
180 if (nla_put_string(msg, RDMA_NLDEV_ATTR_DRIVER_STRING, name)) in put_driver_name_print_type()
183 nla_put_u8(msg, RDMA_NLDEV_ATTR_DRIVER_PRINT_TYPE, print_type)) in put_driver_name_print_type()
189 static int _rdma_nl_put_driver_u32(struct sk_buff *msg, const char *name, in _rdma_nl_put_driver_u32() argument
193 if (put_driver_name_print_type(msg, name, print_type)) in _rdma_nl_put_driver_u32()
195 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_DRIVER_U32, value)) in _rdma_nl_put_driver_u32()
201 static int _rdma_nl_put_driver_u64(struct sk_buff *msg, const char *name, in _rdma_nl_put_driver_u64() argument
205 if (put_driver_name_print_type(msg, name, print_type)) in _rdma_nl_put_driver_u64()
207 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_DRIVER_U64, value, in _rdma_nl_put_driver_u64()
214 int rdma_nl_put_driver_string(struct sk_buff *msg, const char *name, in rdma_nl_put_driver_string() argument
217 if (put_driver_name_print_type(msg, name, in rdma_nl_put_driver_string()
220 if (nla_put_string(msg, RDMA_NLDEV_ATTR_DRIVER_STRING, str)) in rdma_nl_put_driver_string()
227 int rdma_nl_put_driver_u32(struct sk_buff *msg, const char *name, u32 value) in rdma_nl_put_driver_u32() argument
229 return _rdma_nl_put_driver_u32(msg, name, RDMA_NLDEV_PRINT_TYPE_UNSPEC, in rdma_nl_put_driver_u32()
234 int rdma_nl_put_driver_u32_hex(struct sk_buff *msg, const char *name, in rdma_nl_put_driver_u32_hex() argument
237 return _rdma_nl_put_driver_u32(msg, name, RDMA_NLDEV_PRINT_TYPE_HEX, in rdma_nl_put_driver_u32_hex()
242 int rdma_nl_put_driver_u64(struct sk_buff *msg, const char *name, u64 value) in rdma_nl_put_driver_u64() argument
244 return _rdma_nl_put_driver_u64(msg, name, RDMA_NLDEV_PRINT_TYPE_UNSPEC, in rdma_nl_put_driver_u64()
249 int rdma_nl_put_driver_u64_hex(struct sk_buff *msg, const char *name, u64 value) in rdma_nl_put_driver_u64_hex() argument
251 return _rdma_nl_put_driver_u64(msg, name, RDMA_NLDEV_PRINT_TYPE_HEX, in rdma_nl_put_driver_u64_hex()
262 static int fill_nldev_handle(struct sk_buff *msg, struct ib_device *device) in fill_nldev_handle() argument
264 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_DEV_INDEX, device->index)) in fill_nldev_handle()
266 if (nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_NAME, in fill_nldev_handle()
273 static int fill_dev_info(struct sk_buff *msg, struct ib_device *device) in fill_dev_info() argument
279 if (fill_nldev_handle(msg, device)) in fill_dev_info()
282 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, rdma_end_port(device))) in fill_dev_info()
286 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_CAP_FLAGS, in fill_dev_info()
293 if (strlen(fw) && nla_put_string(msg, RDMA_NLDEV_ATTR_FW_VERSION, fw)) in fill_dev_info()
296 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_NODE_GUID, in fill_dev_info()
300 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_SYS_IMAGE_GUID, in fill_dev_info()
304 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_DEV_NODE_TYPE, device->node_type)) in fill_dev_info()
306 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_DEV_DIM, device->use_cq_dim)) in fill_dev_info()
310 nla_put_u8(msg, RDMA_NLDEV_ATTR_DEV_TYPE, device->type)) in fill_dev_info()
314 nla_put_string(msg, RDMA_NLDEV_ATTR_PARENT_NAME, in fill_dev_info()
318 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_NAME_ASSIGN_TYPE, in fill_dev_info()
329 ret = nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_PROTOCOL, "opa"); in fill_dev_info()
331 ret = nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_PROTOCOL, "ib"); in fill_dev_info()
333 ret = nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_PROTOCOL, "iw"); in fill_dev_info()
335 ret = nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_PROTOCOL, "roce"); in fill_dev_info()
337 ret = nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_PROTOCOL, in fill_dev_info()
342 static int fill_port_info(struct sk_buff *msg, in fill_port_info() argument
351 if (fill_nldev_handle(msg, device)) in fill_port_info()
354 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port)) in fill_port_info()
366 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_CAP_FLAGS, in fill_port_info()
369 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_SUBNET_PREFIX, in fill_port_info()
372 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_LID, attr.lid)) in fill_port_info()
374 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_SM_LID, attr.sm_lid)) in fill_port_info()
376 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_LMC, attr.lmc)) in fill_port_info()
379 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_PORT_STATE, attr.state)) in fill_port_info()
381 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_PORT_PHYS_STATE, attr.phys_state)) in fill_port_info()
386 ret = nla_put_u32(msg, in fill_port_info()
390 ret = nla_put_string(msg, in fill_port_info()
399 static int fill_res_info_entry(struct sk_buff *msg, in fill_res_info_entry() argument
404 entry_attr = nla_nest_start_noflag(msg, in fill_res_info_entry()
409 if (nla_put_string(msg, RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_NAME, name)) in fill_res_info_entry()
411 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_CURR, curr, in fill_res_info_entry()
415 nla_nest_end(msg, entry_attr); in fill_res_info_entry()
419 nla_nest_cancel(msg, entry_attr); in fill_res_info_entry()
423 static int fill_res_info(struct sk_buff *msg, struct ib_device *device, in fill_res_info() argument
439 if (fill_nldev_handle(msg, device)) in fill_res_info()
442 table_attr = nla_nest_start_noflag(msg, RDMA_NLDEV_ATTR_RES_SUMMARY); in fill_res_info()
450 ret = fill_res_info_entry(msg, names[i], curr); in fill_res_info()
455 nla_nest_end(msg, table_attr); in fill_res_info()
459 nla_nest_cancel(msg, table_attr); in fill_res_info()
463 static int fill_res_name_pid(struct sk_buff *msg, in fill_res_name_pid() argument
473 err = nla_put_string(msg, RDMA_NLDEV_ATTR_RES_KERN_NAME, in fill_res_name_pid()
490 err = nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PID, pid); in fill_res_name_pid()
496 static int fill_res_qp_entry_query(struct sk_buff *msg, in fill_res_qp_entry_query() argument
510 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_RQPN, in fill_res_qp_entry_query()
513 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_RQ_PSN, in fill_res_qp_entry_query()
518 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_SQ_PSN, qp_attr.sq_psn)) in fill_res_qp_entry_query()
523 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_PATH_MIG_STATE, in fill_res_qp_entry_query()
527 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_TYPE, qp->qp_type)) in fill_res_qp_entry_query()
529 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_STATE, qp_attr.qp_state)) in fill_res_qp_entry_query()
533 return dev->ops.fill_res_qp_entry(msg, qp); in fill_res_qp_entry_query()
539 static int fill_res_qp_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_qp_entry() argument
550 if (qp->port && nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, qp->port)) in fill_res_qp_entry()
553 ret = nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, qp->qp_num); in fill_res_qp_entry()
558 nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PDN, qp->pd->res.id)) in fill_res_qp_entry()
561 ret = fill_res_name_pid(msg, res); in fill_res_qp_entry()
565 return fill_res_qp_entry_query(msg, res, dev, qp); in fill_res_qp_entry()
568 static int fill_res_qp_raw_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_qp_raw_entry() argument
578 return dev->ops.fill_res_qp_entry_raw(msg, qp); in fill_res_qp_raw_entry()
581 static int fill_res_cm_id_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_cm_id_entry() argument
593 nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, cm_id->port_num)) in fill_res_cm_id_entry()
597 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, id_priv->qp_num)) in fill_res_cm_id_entry()
599 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_TYPE, cm_id->qp_type)) in fill_res_cm_id_entry()
603 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PS, cm_id->ps)) in fill_res_cm_id_entry()
606 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_STATE, id_priv->state)) in fill_res_cm_id_entry()
610 nla_put(msg, RDMA_NLDEV_ATTR_RES_SRC_ADDR, in fill_res_cm_id_entry()
615 nla_put(msg, RDMA_NLDEV_ATTR_RES_DST_ADDR, in fill_res_cm_id_entry()
620 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CM_IDN, res->id)) in fill_res_cm_id_entry()
623 if (fill_res_name_pid(msg, res)) in fill_res_cm_id_entry()
627 return dev->ops.fill_res_cm_id_entry(msg, cm_id); in fill_res_cm_id_entry()
633 static int fill_res_cq_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_cq_entry() argument
639 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CQE, cq->cqe)) in fill_res_cq_entry()
641 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_RES_USECNT, in fill_res_cq_entry()
647 nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_POLL_CTX, cq->poll_ctx)) in fill_res_cq_entry()
650 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_DEV_DIM, (cq->dim != NULL))) in fill_res_cq_entry()
653 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CQN, res->id)) in fill_res_cq_entry()
656 nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CTXN, in fill_res_cq_entry()
660 if (fill_res_name_pid(msg, res)) in fill_res_cq_entry()
664 dev->ops.fill_res_cq_entry(msg, cq) : 0; in fill_res_cq_entry()
667 static int fill_res_cq_raw_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_cq_raw_entry() argument
675 return dev->ops.fill_res_cq_entry_raw(msg, cq); in fill_res_cq_raw_entry()
678 static int fill_res_mr_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_mr_entry() argument
685 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_RKEY, mr->rkey)) in fill_res_mr_entry()
687 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LKEY, mr->lkey)) in fill_res_mr_entry()
691 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_RES_MRLEN, mr->length, in fill_res_mr_entry()
695 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_MRN, res->id)) in fill_res_mr_entry()
699 nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PDN, mr->pd->res.id)) in fill_res_mr_entry()
702 if (fill_res_name_pid(msg, res)) in fill_res_mr_entry()
706 dev->ops.fill_res_mr_entry(msg, mr) : in fill_res_mr_entry()
710 static int fill_res_mr_raw_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_mr_raw_entry() argument
718 return dev->ops.fill_res_mr_entry_raw(msg, mr); in fill_res_mr_raw_entry()
721 static int fill_res_pd_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_pd_entry() argument
727 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LOCAL_DMA_LKEY, in fill_res_pd_entry()
731 nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY, in fill_res_pd_entry()
735 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_RES_USECNT, in fill_res_pd_entry()
739 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PDN, res->id)) in fill_res_pd_entry()
743 nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CTXN, in fill_res_pd_entry()
747 return fill_res_name_pid(msg, res); in fill_res_pd_entry()
752 static int fill_res_ctx_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_ctx_entry() argument
760 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CTXN, ctx->res.id)) in fill_res_ctx_entry()
763 return fill_res_name_pid(msg, res); in fill_res_ctx_entry()
766 static int fill_res_range_qp_entry(struct sk_buff *msg, uint32_t min_range, in fill_res_range_qp_entry() argument
774 entry_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_RES_QP_ENTRY); in fill_res_range_qp_entry()
779 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, min_range)) in fill_res_range_qp_entry()
782 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_MIN_RANGE, min_range)) in fill_res_range_qp_entry()
784 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_MAX_RANGE, max_range)) in fill_res_range_qp_entry()
787 nla_nest_end(msg, entry_attr); in fill_res_range_qp_entry()
791 nla_nest_cancel(msg, entry_attr); in fill_res_range_qp_entry()
795 static int fill_res_srq_qps(struct sk_buff *msg, struct ib_srq *srq) in fill_res_srq_qps() argument
804 table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_RES_QP); in fill_res_srq_qps()
827 if (fill_res_range_qp_entry(msg, min_range, prev)) in fill_res_srq_qps()
838 if (fill_res_range_qp_entry(msg, min_range, prev)) in fill_res_srq_qps()
841 nla_nest_end(msg, table_attr); in fill_res_srq_qps()
848 nla_nest_cancel(msg, table_attr); in fill_res_srq_qps()
852 static int fill_res_srq_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_srq_entry() argument
858 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_SRQN, srq->res.id)) in fill_res_srq_entry()
861 if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_TYPE, srq->srq_type)) in fill_res_srq_entry()
864 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PDN, srq->pd->res.id)) in fill_res_srq_entry()
868 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_CQN, in fill_res_srq_entry()
873 if (fill_res_srq_qps(msg, srq)) in fill_res_srq_entry()
876 if (fill_res_name_pid(msg, res)) in fill_res_srq_entry()
880 return dev->ops.fill_res_srq_entry(msg, srq); in fill_res_srq_entry()
888 static int fill_res_srq_raw_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_srq_raw_entry() argument
896 return dev->ops.fill_res_srq_entry_raw(msg, srq); in fill_res_srq_raw_entry()
899 static int fill_stat_counter_mode(struct sk_buff *msg, in fill_stat_counter_mode() argument
904 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_STAT_MODE, m->mode)) in fill_stat_counter_mode()
909 nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_TYPE, m->param.qp_type)) in fill_stat_counter_mode()
913 fill_res_name_pid(msg, &counter->res)) in fill_stat_counter_mode()
920 static int fill_stat_counter_qp_entry(struct sk_buff *msg, u32 qpn) in fill_stat_counter_qp_entry() argument
924 entry_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_RES_QP_ENTRY); in fill_stat_counter_qp_entry()
928 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, qpn)) in fill_stat_counter_qp_entry()
931 nla_nest_end(msg, entry_attr); in fill_stat_counter_qp_entry()
935 nla_nest_cancel(msg, entry_attr); in fill_stat_counter_qp_entry()
939 static int fill_stat_counter_qps(struct sk_buff *msg, in fill_stat_counter_qps() argument
949 table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_RES_QP); in fill_stat_counter_qps()
960 ret = fill_stat_counter_qp_entry(msg, qp->qp_num); in fill_stat_counter_qps()
966 nla_nest_end(msg, table_attr); in fill_stat_counter_qps()
971 nla_nest_cancel(msg, table_attr); in fill_stat_counter_qps()
975 int rdma_nl_stat_hwcounter_entry(struct sk_buff *msg, const char *name, in rdma_nl_stat_hwcounter_entry() argument
980 entry_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY); in rdma_nl_stat_hwcounter_entry()
984 if (nla_put_string(msg, RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_NAME, in rdma_nl_stat_hwcounter_entry()
987 if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_VALUE, in rdma_nl_stat_hwcounter_entry()
991 nla_nest_end(msg, entry_attr); in rdma_nl_stat_hwcounter_entry()
995 nla_nest_cancel(msg, entry_attr); in rdma_nl_stat_hwcounter_entry()
1000 static int fill_stat_mr_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_stat_mr_entry() argument
1006 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_MRN, res->id)) in fill_stat_mr_entry()
1010 return dev->ops.fill_stat_mr_entry(msg, mr); in fill_stat_mr_entry()
1017 static int fill_stat_counter_hwcounters(struct sk_buff *msg, in fill_stat_counter_hwcounters() argument
1024 table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_STAT_HWCOUNTERS); in fill_stat_counter_hwcounters()
1032 if (rdma_nl_stat_hwcounter_entry(msg, st->descs[i].name, in fill_stat_counter_hwcounters()
1038 nla_nest_end(msg, table_attr); in fill_stat_counter_hwcounters()
1043 nla_nest_cancel(msg, table_attr); in fill_stat_counter_hwcounters()
1047 static int fill_res_counter_entry(struct sk_buff *msg, bool has_cap_net_admin, in fill_res_counter_entry() argument
1060 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, counter->port) || in fill_res_counter_entry()
1061 nla_put_u32(msg, RDMA_NLDEV_ATTR_STAT_COUNTER_ID, counter->id) || in fill_res_counter_entry()
1062 fill_stat_counter_mode(msg, counter) || in fill_res_counter_entry()
1063 fill_stat_counter_qps(msg, counter) || in fill_res_counter_entry()
1064 fill_stat_counter_hwcounters(msg, counter)) in fill_res_counter_entry()
1075 struct sk_buff *msg; in nldev_get_doit() local
1090 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nldev_get_doit()
1091 if (!msg) { in nldev_get_doit()
1096 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in nldev_get_doit()
1104 err = fill_dev_info(msg, device); in nldev_get_doit()
1108 nlmsg_end(msg, nlh); in nldev_get_doit()
1111 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in nldev_get_doit()
1114 nlmsg_free(msg); in nldev_get_doit()
1215 struct sk_buff *msg; in nldev_port_get_doit() local
1238 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nldev_port_get_doit()
1239 if (!msg) { in nldev_port_get_doit()
1244 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in nldev_port_get_doit()
1252 err = fill_port_info(msg, device, port, sock_net(skb->sk)); in nldev_port_get_doit()
1256 nlmsg_end(msg, nlh); in nldev_port_get_doit()
1259 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in nldev_port_get_doit()
1262 nlmsg_free(msg); in nldev_port_get_doit()
1332 struct sk_buff *msg; in nldev_res_get_doit() local
1349 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nldev_res_get_doit()
1350 if (!msg) { in nldev_res_get_doit()
1355 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in nldev_res_get_doit()
1363 ret = fill_res_info(msg, device, show_details); in nldev_res_get_doit()
1367 nlmsg_end(msg, nlh); in nldev_res_get_doit()
1369 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in nldev_res_get_doit()
1372 nlmsg_free(msg); in nldev_res_get_doit()
1483 struct sk_buff *msg; in res_get_common_doit() local
1517 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in res_get_common_doit()
1518 if (!msg) { in res_get_common_doit()
1523 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in res_get_common_doit()
1528 if (!nlh || fill_nldev_handle(msg, device)) { in res_get_common_doit()
1535 ret = fill_func(msg, has_cap_net_admin, res, port); in res_get_common_doit()
1540 nlmsg_end(msg, nlh); in res_get_common_doit()
1542 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in res_get_common_doit()
1545 nlmsg_free(msg); in res_get_common_doit()
1837 struct sk_buff *msg; in nldev_get_chardev() local
1868 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nldev_get_chardev()
1869 if (!msg) { in nldev_get_chardev()
1873 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in nldev_get_chardev()
1882 data.nl_msg = msg; in nldev_get_chardev()
1887 err = nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_CHARDEV, in nldev_get_chardev()
1892 err = nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_CHARDEV_ABI, data.abi, in nldev_get_chardev()
1896 if (nla_put_string(msg, RDMA_NLDEV_ATTR_CHARDEV_NAME, in nldev_get_chardev()
1902 nlmsg_end(msg, nlh); in nldev_get_chardev()
1906 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in nldev_get_chardev()
1911 nlmsg_free(msg); in nldev_get_chardev()
1922 struct sk_buff *msg; in nldev_sys_get_doit() local
1930 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nldev_sys_get_doit()
1931 if (!msg) in nldev_sys_get_doit()
1934 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in nldev_sys_get_doit()
1939 nlmsg_free(msg); in nldev_sys_get_doit()
1943 err = nla_put_u8(msg, RDMA_NLDEV_SYS_ATTR_NETNS_MODE, in nldev_sys_get_doit()
1946 nlmsg_free(msg); in nldev_sys_get_doit()
1950 err = nla_put_u8(msg, RDMA_NLDEV_SYS_ATTR_PRIVILEGED_QKEY_MODE, in nldev_sys_get_doit()
1953 nlmsg_free(msg); in nldev_sys_get_doit()
1957 err = nla_put_u8(msg, RDMA_NLDEV_SYS_ATTR_MONITOR_MODE, 1); in nldev_sys_get_doit()
1959 nlmsg_free(msg); in nldev_sys_get_doit()
1972 nla_put_u8(msg, RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK, 1); in nldev_sys_get_doit()
1974 nlmsg_end(msg, nlh); in nldev_sys_get_doit()
1975 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in nldev_sys_get_doit()
2026 static int nldev_stat_set_mode_doit(struct sk_buff *msg, in nldev_stat_set_mode_doit() argument
2068 if (nla_put_u32(msg, RDMA_NLDEV_ATTR_STAT_COUNTER_ID, cntn) || in nldev_stat_set_mode_doit()
2069 nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, qpn)) { in nldev_stat_set_mode_doit()
2131 struct sk_buff *msg; in nldev_stat_set_doit() local
2158 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nldev_stat_set_doit()
2159 if (!msg) { in nldev_stat_set_doit()
2163 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in nldev_stat_set_doit()
2167 if (!nlh || fill_nldev_handle(msg, device) || in nldev_stat_set_doit()
2168 nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port)) { in nldev_stat_set_doit()
2174 ret = nldev_stat_set_mode_doit(msg, extack, tb, device, port); in nldev_stat_set_doit()
2185 nlmsg_end(msg, nlh); in nldev_stat_set_doit()
2187 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in nldev_stat_set_doit()
2190 nlmsg_free(msg); in nldev_stat_set_doit()
2201 struct sk_buff *msg; in nldev_stat_del_doit() local
2227 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nldev_stat_del_doit()
2228 if (!msg) { in nldev_stat_del_doit()
2232 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in nldev_stat_del_doit()
2243 if (fill_nldev_handle(msg, device) || in nldev_stat_del_doit()
2244 nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port) || in nldev_stat_del_doit()
2245 nla_put_u32(msg, RDMA_NLDEV_ATTR_STAT_COUNTER_ID, cntn) || in nldev_stat_del_doit()
2246 nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, qpn)) { in nldev_stat_del_doit()
2255 nlmsg_end(msg, nlh); in nldev_stat_del_doit()
2257 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in nldev_stat_del_doit()
2260 nlmsg_free(msg); in nldev_stat_del_doit()
2275 struct sk_buff *msg; in stat_get_doit_default_counter() local
2299 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in stat_get_doit_default_counter()
2300 if (!msg) { in stat_get_doit_default_counter()
2305 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in stat_get_doit_default_counter()
2310 if (!nlh || fill_nldev_handle(msg, device) || in stat_get_doit_default_counter()
2311 nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port)) { in stat_get_doit_default_counter()
2324 table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_STAT_HWCOUNTERS); in stat_get_doit_default_counter()
2335 if (rdma_nl_stat_hwcounter_entry(msg, in stat_get_doit_default_counter()
2341 nla_nest_end(msg, table_attr); in stat_get_doit_default_counter()
2344 nlmsg_end(msg, nlh); in stat_get_doit_default_counter()
2346 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in stat_get_doit_default_counter()
2349 nla_nest_cancel(msg, table_attr); in stat_get_doit_default_counter()
2353 nlmsg_free(msg); in stat_get_doit_default_counter()
2366 struct sk_buff *msg; in stat_get_doit_qp() local
2389 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in stat_get_doit_qp()
2390 if (!msg) { in stat_get_doit_qp()
2395 nlh = nlmsg_put(msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in stat_get_doit_qp()
2408 if (fill_nldev_handle(msg, device) || in stat_get_doit_qp()
2409 nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port) || in stat_get_doit_qp()
2410 nla_put_u32(msg, RDMA_NLDEV_ATTR_STAT_MODE, mode)) { in stat_get_doit_qp()
2416 nla_put_u32(msg, RDMA_NLDEV_ATTR_STAT_AUTO_MODE_MASK, mask)) { in stat_get_doit_qp()
2422 nla_put_u8(msg, RDMA_NLDEV_ATTR_STAT_OPCOUNTER_ENABLED, opcnt)) { in stat_get_doit_qp()
2427 nlmsg_end(msg, nlh); in stat_get_doit_qp()
2429 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in stat_get_doit_qp()
2432 nlmsg_free(msg); in stat_get_doit_qp()
2502 struct sk_buff *msg; in nldev_stat_get_counter_status_doit() local
2529 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nldev_stat_get_counter_status_doit()
2530 if (!msg) { in nldev_stat_get_counter_status_doit()
2536 msg, NETLINK_CB(skb).portid, nlh->nlmsg_seq, in nldev_stat_get_counter_status_doit()
2541 if (!nlh || fill_nldev_handle(msg, device) || in nldev_stat_get_counter_status_doit()
2542 nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port)) in nldev_stat_get_counter_status_doit()
2545 table = nla_nest_start(msg, RDMA_NLDEV_ATTR_STAT_HWCOUNTERS); in nldev_stat_get_counter_status_doit()
2551 entry = nla_nest_start(msg, in nldev_stat_get_counter_status_doit()
2556 if (nla_put_string(msg, in nldev_stat_get_counter_status_doit()
2559 nla_put_u32(msg, RDMA_NLDEV_ATTR_STAT_HWCOUNTER_INDEX, i)) in nldev_stat_get_counter_status_doit()
2563 (nla_put_u8(msg, RDMA_NLDEV_ATTR_STAT_HWCOUNTER_DYNAMIC, in nldev_stat_get_counter_status_doit()
2567 nla_nest_end(msg, entry); in nldev_stat_get_counter_status_doit()
2571 nla_nest_end(msg, table); in nldev_stat_get_counter_status_doit()
2572 nlmsg_end(msg, nlh); in nldev_stat_get_counter_status_doit()
2574 return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); in nldev_stat_get_counter_status_doit()
2577 nla_nest_cancel(msg, entry); in nldev_stat_get_counter_status_doit()
2580 nla_nest_cancel(msg, table); in nldev_stat_get_counter_status_doit()
2582 nlmsg_free(msg); in nldev_stat_get_counter_status_doit()
2746 static int fill_mon_netdev_rename(struct sk_buff *msg, in fill_mon_netdev_rename() argument
2756 ret = nla_put_u32(msg, RDMA_NLDEV_ATTR_NDEV_INDEX, netdev->ifindex); in fill_mon_netdev_rename()
2759 ret = nla_put_string(msg, RDMA_NLDEV_ATTR_NDEV_NAME, netdev->name); in fill_mon_netdev_rename()
2765 static int fill_mon_netdev_association(struct sk_buff *msg, in fill_mon_netdev_association() argument
2775 ret = nla_put_u32(msg, RDMA_NLDEV_ATTR_DEV_INDEX, device->index); in fill_mon_netdev_association()
2779 ret = nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_NAME, in fill_mon_netdev_association()
2784 ret = nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port); in fill_mon_netdev_association()
2789 ret = nla_put_u32(msg, in fill_mon_netdev_association()
2794 ret = nla_put_string(msg, in fill_mon_netdev_association()