rdma: Print net device name and index for RDMA device
The RDMA devices are operated in RoCE and iWARP modes have net device
underneath. Present their names in regular output and their net index
in detailed mode.
[root@nps ~]# rdma link show mlx5_3/1
4/1: mlx5_3/1: state ACTIVE physical_state LINK_UP netdev ens7
[root@nps ~]# rdma link show mlx5_3/1 -d
4/1: mlx5_3/1: state ACTIVE physical_state LINK_UP netdev ens7 netdev_index 7
caps: <CM, IP_BASED_GIDS>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
parent
09e3802b9a
commit
1525942736
|
|
@ -388,6 +388,10 @@ enum rdma_nldev_attr {
|
|||
RDMA_NLDEV_ATTR_RES_LOCAL_DMA_LKEY, /* u32 */
|
||||
RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY, /* u32 */
|
||||
|
||||
/* Netdev information for relevant protocols, like RoCE and iWARP */
|
||||
RDMA_NLDEV_ATTR_NDEV_INDEX, /* u32 */
|
||||
RDMA_NLDEV_ATTR_NDEV_NAME, /* string */
|
||||
|
||||
RDMA_NLDEV_ATTR_MAX
|
||||
};
|
||||
#endif /* _RDMA_NETLINK_H */
|
||||
|
|
|
|||
21
rdma/link.c
21
rdma/link.c
|
|
@ -205,6 +205,26 @@ static void link_print_phys_state(struct rd *rd, struct nlattr **tb)
|
|||
pr_out("physical_state %s ", phys_state_to_str(phys_state));
|
||||
}
|
||||
|
||||
static void link_print_netdev(struct rd *rd, struct nlattr **tb)
|
||||
{
|
||||
const char *netdev_name;
|
||||
uint32_t idx;
|
||||
|
||||
if (!tb[RDMA_NLDEV_ATTR_NDEV_NAME] || !tb[RDMA_NLDEV_ATTR_NDEV_INDEX])
|
||||
return;
|
||||
|
||||
netdev_name = mnl_attr_get_str(tb[RDMA_NLDEV_ATTR_NDEV_NAME]);
|
||||
idx = mnl_attr_get_u32(tb[RDMA_NLDEV_ATTR_NDEV_INDEX]);
|
||||
if (rd->json_output) {
|
||||
jsonw_string_field(rd->jw, "netdev", netdev_name);
|
||||
jsonw_uint_field(rd->jw, "netdev_index", idx);
|
||||
} else {
|
||||
pr_out("netdev %s ", netdev_name);
|
||||
if (rd->show_details)
|
||||
pr_out("netdev_index %u ", idx);
|
||||
}
|
||||
}
|
||||
|
||||
static int link_parse_cb(const struct nlmsghdr *nlh, void *data)
|
||||
{
|
||||
struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {};
|
||||
|
|
@ -241,6 +261,7 @@ static int link_parse_cb(const struct nlmsghdr *nlh, void *data)
|
|||
link_print_lmc(rd, tb);
|
||||
link_print_state(rd, tb);
|
||||
link_print_phys_state(rd, tb);
|
||||
link_print_netdev(rd, tb);
|
||||
if (rd->show_details)
|
||||
link_print_caps(rd, tb);
|
||||
|
||||
|
|
|
|||
|
|
@ -391,6 +391,8 @@ static const enum mnl_attr_data_type nldev_policy[RDMA_NLDEV_ATTR_MAX] = {
|
|||
[RDMA_NLDEV_ATTR_RES_LKEY] = MNL_TYPE_U32,
|
||||
[RDMA_NLDEV_ATTR_RES_IOVA] = MNL_TYPE_U64,
|
||||
[RDMA_NLDEV_ATTR_RES_MRLEN] = MNL_TYPE_U64,
|
||||
[RDMA_NLDEV_ATTR_NDEV_INDEX] = MNL_TYPE_U32,
|
||||
[RDMA_NLDEV_ATTR_NDEV_NAME] = MNL_TYPE_NUL_STRING,
|
||||
};
|
||||
|
||||
int rd_attr_cb(const struct nlattr *attr, void *data)
|
||||
|
|
|
|||
Loading…
Reference in New Issue