]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
rdma: Fix SRQ resource tracking information json
authorNeta Ostrovsky <netao@nvidia.com>
Mon, 25 Oct 2021 10:37:07 +0000 (13:37 +0300)
committerStephen Hemminger <stephen@networkplumber.org>
Fri, 29 Oct 2021 22:04:45 +0000 (15:04 -0700)
Fix the json output for the QPs that are associated with the SRQ -
The qpn are now displayed in a json array.

Sample output before the fix:
$ rdma res show srq lqpn 126-141 -j -p
[ {
        "ifindex":0,
"ifname":"ibp8s0f0",
"srqn":4,
"type":"BASIC",
"lqpn":["126-128,130-140"],
"pdn":9,
"pid":3581,
"comm":"ibv_srq_pingpon"
    },{
"ifindex":0,
"ifname":"ibp8s0f0",
"srqn":5,
"type":"BASIC",
"lqpn":["141"],
"pdn":10,
"pid":3584,
"comm":"ibv_srq_pingpon"
    } ]

Sample output after the fix:
$ rdma res show srq lqpn 126-141 -j -p
[ {
        "ifindex":0,
"ifname":"ibp8s0f0",
"srqn":4,
"type":"BASIC",
"lqpn":["126-128","130-140"],
"pdn":9,
"pid":3581,
"comm":"ibv_srq_pingpon"
    },{
"ifindex":0,
"ifname":"ibp8s0f0",
"srqn":5,
"type":"BASIC",
"lqpn":["141"],
"pdn":10,
"pid":3584,
"comm":"ibv_srq_pingpon"
    } ]

Fixes: 9b272e138d23 ("rdma: Add SRQ resource tracking information")
Signed-off-by: Neta Ostrovsky <netao@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
rdma/res-srq.c

index c14ac5d8cb942217b6a7b6cfb2005b3c006cff7e..5d8f384298b3e2b6123d3e1ff7e964448c17ded3 100644 (file)
@@ -26,11 +26,24 @@ static void print_type(struct rd *rd, uint32_t val)
                           srq_types_to_str(val));
 }
 
-static void print_qps(const char *str)
+static void print_qps(char *qp_str)
 {
-       if (!strlen(str))
+       char *qpn;
+
+       if (!strlen(qp_str))
                return;
-       print_color_string(PRINT_ANY, COLOR_NONE, "lqpn", "lqpn %s ", str);
+
+       open_json_array(PRINT_ANY, "lqpn");
+       print_color_string(PRINT_FP, COLOR_NONE, NULL, " ", NULL);
+       qpn = strtok(qp_str, ",");
+       while (qpn) {
+               print_color_string(PRINT_ANY, COLOR_NONE, NULL, "%s", qpn);
+               qpn = strtok(NULL, ",");
+               if (qpn)
+                       print_color_string(PRINT_FP, COLOR_NONE, NULL, ",", NULL);
+       }
+       print_color_string(PRINT_FP, COLOR_NONE, NULL, " ", NULL);
+       close_json_array(PRINT_JSON, NULL);
 }
 
 static int filter_srq_range_qps(struct rd *rd, struct nlattr **qp_line,