All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH iproute2-next 0/2] Print netdevice names and indexes for relevant RDMA devices
@ 2018-03-26  8:28 Leon Romanovsky
  2018-03-26  8:28 ` [PATCH iproute2-next 1/2] rdma: Update RDMA header file Leon Romanovsky
  2018-03-26  8:28 ` [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device Leon Romanovsky
  0 siblings, 2 replies; 9+ messages in thread
From: Leon Romanovsky @ 2018-03-26  8:28 UTC (permalink / raw)
  To: David Ahern; +Cc: Leon Romanovsky, netdev, RDMA mailing list, Stephen Hemminger

From: Leon Romanovsky <leonro@mellanox.com>

Hi,

This is user space part of the kernel patch [1], which exposed net
device name and index through RDMA netlink interface.

First patch is actually updates rdma_netlink.h to the latest kernel
variant, while second patch implements the print.

[1] https://patchwork.kernel.org/patch/10307339/

Leon Romanovsky (2):
  rdma: Update RDMA header file
  rdma: Print net device name and index for RDMA device

 rdma/include/uapi/rdma/rdma_netlink.h | 42 +++++++++++++++++++++++++++++++++++
 rdma/link.c                           | 21 ++++++++++++++++++
 rdma/utils.c                          |  2 ++
 3 files changed, 65 insertions(+)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH iproute2-next 1/2] rdma: Update RDMA header file
  2018-03-26  8:28 [PATCH iproute2-next 0/2] Print netdevice names and indexes for relevant RDMA devices Leon Romanovsky
@ 2018-03-26  8:28 ` Leon Romanovsky
  2018-03-26  8:28 ` [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device Leon Romanovsky
  1 sibling, 0 replies; 9+ messages in thread
From: Leon Romanovsky @ 2018-03-26  8:28 UTC (permalink / raw)
  To: David Ahern; +Cc: Leon Romanovsky, netdev, RDMA mailing list, Stephen Hemminger

From: Leon Romanovsky <leonro@mellanox.com>

Update RDMA netlink header file to kernel commit 29cf1351d450
("RDMA/nldev: provide detailed PD information")

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
---
 rdma/include/uapi/rdma/rdma_netlink.h | 38 +++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
index dbac3b82..9446a721 100644
--- a/rdma/include/uapi/rdma/rdma_netlink.h
+++ b/rdma/include/uapi/rdma/rdma_netlink.h
@@ -238,6 +238,14 @@ enum rdma_nldev_command {

 	RDMA_NLDEV_CMD_RES_QP_GET, /* can dump */

+	RDMA_NLDEV_CMD_RES_CM_ID_GET, /* can dump */
+
+	RDMA_NLDEV_CMD_RES_CQ_GET, /* can dump */
+
+	RDMA_NLDEV_CMD_RES_MR_GET, /* can dump */
+
+	RDMA_NLDEV_CMD_RES_PD_GET, /* can dump */
+
 	RDMA_NLDEV_NUM_OPS
 };

@@ -350,6 +358,36 @@ enum rdma_nldev_attr {
 	 */
 	RDMA_NLDEV_ATTR_RES_KERN_NAME,		/* string */

+	RDMA_NLDEV_ATTR_RES_CM_ID,		/* nested table */
+	RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY,	/* nested table */
+	/*
+	 * rdma_cm_id port space.
+	 */
+	RDMA_NLDEV_ATTR_RES_PS,			/* u32 */
+	/*
+	 * Source and destination socket addresses
+	 */
+	RDMA_NLDEV_ATTR_RES_SRC_ADDR,		/* __kernel_sockaddr_storage */
+	RDMA_NLDEV_ATTR_RES_DST_ADDR,		/* __kernel_sockaddr_storage */
+
+	RDMA_NLDEV_ATTR_RES_CQ,			/* nested table */
+	RDMA_NLDEV_ATTR_RES_CQ_ENTRY,		/* nested table */
+	RDMA_NLDEV_ATTR_RES_CQE,		/* u32 */
+	RDMA_NLDEV_ATTR_RES_USECNT,		/* u64 */
+	RDMA_NLDEV_ATTR_RES_POLL_CTX,		/* u8 */
+
+	RDMA_NLDEV_ATTR_RES_MR,			/* nested table */
+	RDMA_NLDEV_ATTR_RES_MR_ENTRY,		/* nested table */
+	RDMA_NLDEV_ATTR_RES_RKEY,		/* u32 */
+	RDMA_NLDEV_ATTR_RES_LKEY,		/* u32 */
+	RDMA_NLDEV_ATTR_RES_IOVA,		/* u64 */
+	RDMA_NLDEV_ATTR_RES_MRLEN,		/* u64 */
+
+	RDMA_NLDEV_ATTR_RES_PD,			/* nested table */
+	RDMA_NLDEV_ATTR_RES_PD_ENTRY,		/* nested table */
+	RDMA_NLDEV_ATTR_RES_LOCAL_DMA_LKEY,	/* u32 */
+	RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY,	/* u32 */
+
 	RDMA_NLDEV_ATTR_MAX
 };
 #endif /* _RDMA_NETLINK_H */

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device
  2018-03-26  8:28 [PATCH iproute2-next 0/2] Print netdevice names and indexes for relevant RDMA devices Leon Romanovsky
  2018-03-26  8:28 ` [PATCH iproute2-next 1/2] rdma: Update RDMA header file Leon Romanovsky
@ 2018-03-26  8:28 ` Leon Romanovsky
  2018-03-26 14:06   ` David Ahern
  2018-03-26 15:17   ` Steve Wise
  1 sibling, 2 replies; 9+ messages in thread
From: Leon Romanovsky @ 2018-03-26  8:28 UTC (permalink / raw)
  To: David Ahern; +Cc: Leon Romanovsky, netdev, RDMA mailing list, Stephen Hemminger

From: Leon Romanovsky <leonro@mellanox.com>

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>
---
 rdma/include/uapi/rdma/rdma_netlink.h |  4 ++++
 rdma/link.c                           | 21 +++++++++++++++++++++
 rdma/utils.c                          |  2 ++
 3 files changed, 27 insertions(+)

diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
index 9446a721..45474f13 100644
--- a/rdma/include/uapi/rdma/rdma_netlink.h
+++ b/rdma/include/uapi/rdma/rdma_netlink.h
@@ -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 */
diff --git a/rdma/link.c b/rdma/link.c
index 66bcd50e..7e914c87 100644
--- a/rdma/link.c
+++ b/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);

diff --git a/rdma/utils.c b/rdma/utils.c
index f9460162..4fed80ab 100644
--- a/rdma/utils.c
+++ b/rdma/utils.c
@@ -375,6 +375,8 @@ static const enum mnl_attr_data_type nldev_policy[RDMA_NLDEV_ATTR_MAX] = {
 	[RDMA_NLDEV_ATTR_RES_STATE]		= MNL_TYPE_U8,
 	[RDMA_NLDEV_ATTR_RES_PID]		= MNL_TYPE_U32,
 	[RDMA_NLDEV_ATTR_RES_KERN_NAME]	= MNL_TYPE_NUL_STRING,
+	[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)

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device
  2018-03-26  8:28 ` [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device Leon Romanovsky
@ 2018-03-26 14:06   ` David Ahern
  2018-03-26 15:09     ` Leon Romanovsky
  2018-03-26 15:17   ` Steve Wise
  1 sibling, 1 reply; 9+ messages in thread
From: David Ahern @ 2018-03-26 14:06 UTC (permalink / raw)
  To: Leon Romanovsky, David Ahern
  Cc: Leon Romanovsky, netdev, RDMA mailing list, Stephen Hemminger

On 3/26/18 2:28 AM, Leon Romanovsky wrote:
> diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
> index 9446a721..45474f13 100644
> --- a/rdma/include/uapi/rdma/rdma_netlink.h
> +++ b/rdma/include/uapi/rdma/rdma_netlink.h
> @@ -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 */

Why wasn't the above included in patch 1 as part of the header file update?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device
  2018-03-26 14:06   ` David Ahern
@ 2018-03-26 15:09     ` Leon Romanovsky
  2018-03-26 15:44       ` David Ahern
  0 siblings, 1 reply; 9+ messages in thread
From: Leon Romanovsky @ 2018-03-26 15:09 UTC (permalink / raw)
  To: David Ahern; +Cc: netdev, RDMA mailing list, Stephen Hemminger

[-- Attachment #1: Type: text/plain, Size: 890 bytes --]

On Mon, Mar 26, 2018 at 08:06:52AM -0600, David Ahern wrote:
> On 3/26/18 2:28 AM, Leon Romanovsky wrote:
> > diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
> > index 9446a721..45474f13 100644
> > --- a/rdma/include/uapi/rdma/rdma_netlink.h
> > +++ b/rdma/include/uapi/rdma/rdma_netlink.h
> > @@ -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 */
>
> Why wasn't the above included in patch 1 as part of the header file update?
>
>

Kernel part is not accepted yet, this is why I separated them.

Thanks

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device
  2018-03-26  8:28 ` [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device Leon Romanovsky
  2018-03-26 14:06   ` David Ahern
@ 2018-03-26 15:17   ` Steve Wise
  2018-03-26 17:00     ` Leon Romanovsky
  1 sibling, 1 reply; 9+ messages in thread
From: Steve Wise @ 2018-03-26 15:17 UTC (permalink / raw)
  To: Leon Romanovsky, David Ahern
  Cc: Leon Romanovsky, netdev, RDMA mailing list, Stephen Hemminger



On 3/26/2018 3:28 AM, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@mellanox.com>
>
> 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>
> ---
>  rdma/include/uapi/rdma/rdma_netlink.h |  4 ++++
>  rdma/link.c                           | 21 +++++++++++++++++++++
>  rdma/utils.c                          |  2 ++
>  3 files changed, 27 insertions(+)
>
> diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
> index 9446a721..45474f13 100644
> --- a/rdma/include/uapi/rdma/rdma_netlink.h
> +++ b/rdma/include/uapi/rdma/rdma_netlink.h
> @@ -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 */
> diff --git a/rdma/link.c b/rdma/link.c
> index 66bcd50e..7e914c87 100644
> --- a/rdma/link.c
> +++ b/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);
> +	}
> +}
> +

Why is the netdev_index under 'show_details'?

Reviewed-by: Steve Wise <swise@opengridcomputing.com>

>  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);
>
> diff --git a/rdma/utils.c b/rdma/utils.c
> index f9460162..4fed80ab 100644
> --- a/rdma/utils.c
> +++ b/rdma/utils.c
> @@ -375,6 +375,8 @@ static const enum mnl_attr_data_type nldev_policy[RDMA_NLDEV_ATTR_MAX] = {
>  	[RDMA_NLDEV_ATTR_RES_STATE]		= MNL_TYPE_U8,
>  	[RDMA_NLDEV_ATTR_RES_PID]		= MNL_TYPE_U32,
>  	[RDMA_NLDEV_ATTR_RES_KERN_NAME]	= MNL_TYPE_NUL_STRING,
> +	[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)
> --
> 2.14.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device
  2018-03-26 15:09     ` Leon Romanovsky
@ 2018-03-26 15:44       ` David Ahern
  2018-03-26 16:57         ` Leon Romanovsky
  0 siblings, 1 reply; 9+ messages in thread
From: David Ahern @ 2018-03-26 15:44 UTC (permalink / raw)
  To: Leon Romanovsky; +Cc: netdev, RDMA mailing list, Stephen Hemminger

On 3/26/18 9:09 AM, Leon Romanovsky wrote:
> On Mon, Mar 26, 2018 at 08:06:52AM -0600, David Ahern wrote:
>> On 3/26/18 2:28 AM, Leon Romanovsky wrote:
>>> diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
>>> index 9446a721..45474f13 100644
>>> --- a/rdma/include/uapi/rdma/rdma_netlink.h
>>> +++ b/rdma/include/uapi/rdma/rdma_netlink.h
>>> @@ -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 */
>>
>> Why wasn't the above included in patch 1 as part of the header file update?
>>
>>
> 
> Kernel part is not accepted yet, this is why I separated them.
>
Please don't mix patches in a set like this. The entire set should be
consistent -- either all of them are in the kernel or all of them are
waiting to be committed.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device
  2018-03-26 15:44       ` David Ahern
@ 2018-03-26 16:57         ` Leon Romanovsky
  0 siblings, 0 replies; 9+ messages in thread
From: Leon Romanovsky @ 2018-03-26 16:57 UTC (permalink / raw)
  To: David Ahern; +Cc: netdev, RDMA mailing list, Stephen Hemminger

[-- Attachment #1: Type: text/plain, Size: 1233 bytes --]

On Mon, Mar 26, 2018 at 09:44:32AM -0600, David Ahern wrote:
> On 3/26/18 9:09 AM, Leon Romanovsky wrote:
> > On Mon, Mar 26, 2018 at 08:06:52AM -0600, David Ahern wrote:
> >> On 3/26/18 2:28 AM, Leon Romanovsky wrote:
> >>> diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
> >>> index 9446a721..45474f13 100644
> >>> --- a/rdma/include/uapi/rdma/rdma_netlink.h
> >>> +++ b/rdma/include/uapi/rdma/rdma_netlink.h
> >>> @@ -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 */
> >>
> >> Why wasn't the above included in patch 1 as part of the header file update?
> >>
> >>
> >
> > Kernel part is not accepted yet, this is why I separated them.
> >
> Please don't mix patches in a set like this. The entire set should be
> consistent -- either all of them are in the kernel or all of them are
> waiting to be committed.

Ok, I'll do.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device
  2018-03-26 15:17   ` Steve Wise
@ 2018-03-26 17:00     ` Leon Romanovsky
  0 siblings, 0 replies; 9+ messages in thread
From: Leon Romanovsky @ 2018-03-26 17:00 UTC (permalink / raw)
  To: Steve Wise; +Cc: David Ahern, netdev, RDMA mailing list, Stephen Hemminger

[-- Attachment #1: Type: text/plain, Size: 4023 bytes --]

On Mon, Mar 26, 2018 at 10:17:12AM -0500, Steve Wise wrote:
>
>
> On 3/26/2018 3:28 AM, Leon Romanovsky wrote:
> > From: Leon Romanovsky <leonro@mellanox.com>
> >
> > 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>
> > ---
> >  rdma/include/uapi/rdma/rdma_netlink.h |  4 ++++
> >  rdma/link.c                           | 21 +++++++++++++++++++++
> >  rdma/utils.c                          |  2 ++
> >  3 files changed, 27 insertions(+)
> >
> > diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
> > index 9446a721..45474f13 100644
> > --- a/rdma/include/uapi/rdma/rdma_netlink.h
> > +++ b/rdma/include/uapi/rdma/rdma_netlink.h
> > @@ -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 */
> > diff --git a/rdma/link.c b/rdma/link.c
> > index 66bcd50e..7e914c87 100644
> > --- a/rdma/link.c
> > +++ b/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);
> > +	}
> > +}
> > +
>
> Why is the netdev_index under 'show_details'?

Because I think that it is useless for day-to-day usage of average
rdmatool user and mostly will be used as pipe to other scripts, if JSON
doesn't good fit for any reasons. So I decided do not clutter "general
output".

>
> Reviewed-by: Steve Wise <swise@opengridcomputing.com>

Thanks

>
> >  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);
> >
> > diff --git a/rdma/utils.c b/rdma/utils.c
> > index f9460162..4fed80ab 100644
> > --- a/rdma/utils.c
> > +++ b/rdma/utils.c
> > @@ -375,6 +375,8 @@ static const enum mnl_attr_data_type nldev_policy[RDMA_NLDEV_ATTR_MAX] = {
> >  	[RDMA_NLDEV_ATTR_RES_STATE]		= MNL_TYPE_U8,
> >  	[RDMA_NLDEV_ATTR_RES_PID]		= MNL_TYPE_U32,
> >  	[RDMA_NLDEV_ATTR_RES_KERN_NAME]	= MNL_TYPE_NUL_STRING,
> > +	[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)
> > --
> > 2.14.3
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-03-26 17:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-26  8:28 [PATCH iproute2-next 0/2] Print netdevice names and indexes for relevant RDMA devices Leon Romanovsky
2018-03-26  8:28 ` [PATCH iproute2-next 1/2] rdma: Update RDMA header file Leon Romanovsky
2018-03-26  8:28 ` [PATCH iproute2-next 2/2] rdma: Print net device name and index for RDMA device Leon Romanovsky
2018-03-26 14:06   ` David Ahern
2018-03-26 15:09     ` Leon Romanovsky
2018-03-26 15:44       ` David Ahern
2018-03-26 16:57         ` Leon Romanovsky
2018-03-26 15:17   ` Steve Wise
2018-03-26 17:00     ` Leon Romanovsky

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.