On Mon, Feb 26, 2018 at 03:22:25PM -0800, Steve Wise wrote: > +static int fill_res_cm_id_entry(struct sk_buff *msg, > + struct netlink_callback *cb, > + struct rdma_restrack_entry *res, uint32_t port) > +{ > + struct rdma_id_private *id_priv = > + container_of(res, struct rdma_id_private, res); > + struct rdma_cm_id *cm_id = &id_priv->id; > + struct nlattr *entry_attr; > + > + if (port && port != cm_id->port_num) > + return 0; > + > + entry_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY); > + if (!entry_attr) > + goto out; > + > + if (cm_id->port_num && > + nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, cm_id->port_num)) > + goto err; > + > + if (id_priv->qp_num && > + nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, id_priv->qp_num)) > + goto err; > + > + if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PS, cm_id->ps)) > + goto err; > + > + if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_TYPE, cm_id->qp_type)) > + goto err; > + if (nla_put_u8(msg, RDMA_NLDEV_ATTR_RES_STATE, id_priv->state)) > + goto err; > + > + if (nla_put(msg, RDMA_NLDEV_ATTR_RES_SRC_ADDR, > + sizeof(cm_id->route.addr.src_addr), > + &cm_id->route.addr.src_addr)) > + goto err; > + if (nla_put(msg, RDMA_NLDEV_ATTR_RES_DST_ADDR, > + sizeof(cm_id->route.addr.dst_addr), > + &cm_id->route.addr.dst_addr)) > + goto err; > + > + if (id_priv->caller) { > + if (nla_put_string(msg, RDMA_NLDEV_ATTR_RES_KERN_NAME, > + id_priv->caller)) > + goto err; > + } else { > + /* CMA keeps the owning pid. */ > + if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PID, id_priv->owner)) > + goto err; > + } > + > + nla_nest_end(msg, entry_attr); > + return 0; > + > +err: > + nla_nest_cancel(msg, entry_attr); > +out: > + return -EMSGSIZE; > +} That is alot nicer with the helper.. > static int nldev_get_doit(struct sk_buff *skb, struct nlmsghdr *nlh, > struct netlink_ext_ack *extack) > { > @@ -583,7 +653,7 @@ static int res_get_common_dumpit(struct sk_buff *skb, > err = nlmsg_parse(cb->nlh, 0, tb, RDMA_NLDEV_ATTR_MAX - 1, > nldev_policy, NULL); > /* > - * Right now, we are expecting the device index to get QP information, > + * Right now, we are expecting the device index to get res information, > * but it is possible to extend this code to return all devices in This hunk looks like it should be in another patch Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html