diff mbox series

[v2] rdma-core/libibverbs: display gid type in ibv_devinfo

Message ID 1580493621-31006-1-git-send-email-devesh.sharma@broadcom.com (mailing list archive)
State Superseded
Headers show
Series [v2] rdma-core/libibverbs: display gid type in ibv_devinfo | expand

Commit Message

Devesh Sharma Jan. 31, 2020, 6 p.m. UTC
It becomes difficult to make out from the output of ibv_devinfo
if a particular gid index is RoCE v2 or not.

Adding a string to the output of ibv_devinfo -v to display the
gid type at the end of gid.

Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
---
 libibverbs/examples/devinfo.c | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

Comments

Devesh Sharma Feb. 3, 2020, 5:34 a.m. UTC | #1
On Fri, Jan 31, 2020 at 11:30 PM Devesh Sharma
<devesh.sharma@broadcom.com> wrote:
>
> It becomes difficult to make out from the output of ibv_devinfo
> if a particular gid index is RoCE v2 or not.
>
> Adding a string to the output of ibv_devinfo -v to display the
> gid type at the end of gid.
>
> Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
> ---
>  libibverbs/examples/devinfo.c | 24 ++++++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/libibverbs/examples/devinfo.c b/libibverbs/examples/devinfo.c
> index bf53eac..4094ea0 100644
> --- a/libibverbs/examples/devinfo.c
> +++ b/libibverbs/examples/devinfo.c
> @@ -162,8 +162,18 @@ static const char *vl_str(uint8_t vl_num)
>         }
>  }
>
> +static const char *gid_type_str(enum ibv_gid_type type)
> +{
> +       switch (type) {
> +       case 0: return "IB/RoCE v1";
> +       case 1: return "RoCE v2";
> +       default: return "invalid value";
> +       }
> +}
> +
>  static int print_all_port_gids(struct ibv_context *ctx, uint8_t port_num, int tbl_len)
>  {
> +       enum ibv_gid_type type;
>         union ibv_gid gid;
>         int rc = 0;
>         int i;
> @@ -175,8 +185,17 @@ static int print_all_port_gids(struct ibv_context *ctx, uint8_t port_num, int tb
>                                port_num, i);
>                         return rc;
>                 }
> +
> +               rc = ibv_query_gid_type(ctx, port_num, i, &type);
> +               if (rc) {
> +                       rc = 0;
> +                       type = 0x2;
> +                       fprintf(stderr, "Failed to query gid type to port %d, index %d\n",
> +                               port_num, i);
> +               }
> +
>                 if (!null_gid(&gid))
> -                       printf("\t\t\tGID[%3d]:\t\t%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x\n",
> +                       printf("\t\t\tGID[%3d]:\t\t%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x, %s\n",
>                                i,
>                                gid.raw[ 0], gid.raw[ 1],
>                                gid.raw[ 2], gid.raw[ 3],
> @@ -185,7 +204,8 @@ static int print_all_port_gids(struct ibv_context *ctx, uint8_t port_num, int tb
>                                gid.raw[ 8], gid.raw[ 9],
>                                gid.raw[10], gid.raw[11],
>                                gid.raw[12], gid.raw[13],
> -                              gid.raw[14], gid.raw[15]);
> +                              gid.raw[14], gid.raw[15],
> +                              gid_type_str(type));
>         }
>         return rc;
>  }
> --
> 1.8.3.1
I will send out v3 as one more change is requested by Parav.
>
diff mbox series

Patch

diff --git a/libibverbs/examples/devinfo.c b/libibverbs/examples/devinfo.c
index bf53eac..4094ea0 100644
--- a/libibverbs/examples/devinfo.c
+++ b/libibverbs/examples/devinfo.c
@@ -162,8 +162,18 @@  static const char *vl_str(uint8_t vl_num)
 	}
 }
 
+static const char *gid_type_str(enum ibv_gid_type type)
+{
+	switch (type) {
+	case 0: return "IB/RoCE v1";
+	case 1: return "RoCE v2";
+	default: return "invalid value";
+	}
+}
+
 static int print_all_port_gids(struct ibv_context *ctx, uint8_t port_num, int tbl_len)
 {
+	enum ibv_gid_type type;
 	union ibv_gid gid;
 	int rc = 0;
 	int i;
@@ -175,8 +185,17 @@  static int print_all_port_gids(struct ibv_context *ctx, uint8_t port_num, int tb
 			       port_num, i);
 			return rc;
 		}
+
+		rc = ibv_query_gid_type(ctx, port_num, i, &type);
+		if (rc) {
+			rc = 0;
+			type = 0x2;
+			fprintf(stderr, "Failed to query gid type to port %d, index %d\n",
+				port_num, i);
+		}
+
 		if (!null_gid(&gid))
-			printf("\t\t\tGID[%3d]:\t\t%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x\n",
+			printf("\t\t\tGID[%3d]:\t\t%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x, %s\n",
 			       i,
 			       gid.raw[ 0], gid.raw[ 1],
 			       gid.raw[ 2], gid.raw[ 3],
@@ -185,7 +204,8 @@  static int print_all_port_gids(struct ibv_context *ctx, uint8_t port_num, int tb
 			       gid.raw[ 8], gid.raw[ 9],
 			       gid.raw[10], gid.raw[11],
 			       gid.raw[12], gid.raw[13],
-			       gid.raw[14], gid.raw[15]);
+			       gid.raw[14], gid.raw[15],
+			       gid_type_str(type));
 	}
 	return rc;
 }