]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - rdma/res.c
Merge 'iproute2-master' into iproute2-next
[mirror_iproute2.git] / rdma / res.c
index 1a0aab60cf36916d872852b81cbb848225586448..6b0f5fe35f74063af758241a8069829292bc5cca 100644 (file)
@@ -16,13 +16,17 @@ static int res_help(struct rd *rd)
 {
        pr_out("Usage: %s resource\n", rd->filename);
        pr_out("          resource show [DEV]\n");
-       pr_out("          resource show [qp|cm_id]\n");
+       pr_out("          resource show [qp|cm_id|pd|mr|cq]\n");
        pr_out("          resource show qp link [DEV/PORT]\n");
        pr_out("          resource show qp link [DEV/PORT] [FILTER-NAME FILTER-VALUE]\n");
        pr_out("          resource show cm_id link [DEV/PORT]\n");
        pr_out("          resource show cm_id link [DEV/PORT] [FILTER-NAME FILTER-VALUE]\n");
        pr_out("          resource show cq link [DEV/PORT]\n");
        pr_out("          resource show cq link [DEV/PORT] [FILTER-NAME FILTER-VALUE]\n");
+       pr_out("          resource show pd dev [DEV]\n");
+       pr_out("          resource show pd dev [DEV] [FILTER-NAME FILTER-VALUE]\n");
+       pr_out("          resource show mr dev [DEV]\n");
+       pr_out("          resource show mr dev [DEV] [FILTER-NAME FILTER-VALUE]\n");
        return 0;
 }
 
@@ -439,10 +443,8 @@ static int res_qp_parse_cb(const struct nlmsghdr *nlh, void *data)
                if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
                        free(comm);
 
-               if (rd->json_output)
-                       jsonw_end_array(rd->jw);
-               else
-                       pr_out("\n");
+               print_driver_table(rd, nla_line[RDMA_NLDEV_ATTR_DRIVER]);
+               newline(rd);
        }
        return MNL_CB_OK;
 }
@@ -623,6 +625,8 @@ static int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
                        if (rd_check_is_string_filtered(rd, "src-addr",
                                                        src_addr_str))
                                continue;
+                       if (rd_check_is_filtered(rd, "src-port", src_port))
+                               continue;
                }
 
                if (nla_line[RDMA_NLDEV_ATTR_RES_DST_ADDR]) {
@@ -632,14 +636,10 @@ static int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
                        if (rd_check_is_string_filtered(rd, "dst-addr",
                                                        dst_addr_str))
                                continue;
+                       if (rd_check_is_filtered(rd, "dst-port", dst_port))
+                               continue;
                }
 
-               if (rd_check_is_filtered(rd, "src-port", src_port))
-                       continue;
-
-               if (rd_check_is_filtered(rd, "dst-port", dst_port))
-                       continue;
-
                if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
                        pid = mnl_attr_get_u32(
                                        nla_line[RDMA_NLDEV_ATTR_RES_PID]);
@@ -678,10 +678,8 @@ static int res_cm_id_parse_cb(const struct nlmsghdr *nlh, void *data)
                if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
                        free(comm);
 
-               if (rd->json_output)
-                       jsonw_end_array(rd->jw);
-               else
-                       pr_out("\n");
+               print_driver_table(rd, nla_line[RDMA_NLDEV_ATTR_DRIVER]);
+               newline(rd);
        }
        return MNL_CB_OK;
 }
@@ -705,7 +703,7 @@ static void print_users(struct rd *rd, uint64_t val)
 static const char *poll_ctx_to_str(uint8_t idx)
 {
        static const char * const cm_id_states_str[] = {
-               "DIRECT", "SOFTIRQ", "WORKQUEUE"};
+               "DIRECT", "SOFTIRQ", "WORKQUEUE", "UNBOUND_WORKQUEUE"};
 
        if (idx < ARRAY_SIZE(cm_id_states_str))
                return cm_id_states_str[idx];
@@ -804,10 +802,8 @@ static int res_cq_parse_cb(const struct nlmsghdr *nlh, void *data)
                if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
                        free(comm);
 
-               if (rd->json_output)
-                       jsonw_end_array(rd->jw);
-               else
-                       pr_out("\n");
+               print_driver_table(rd, nla_line[RDMA_NLDEV_ATTR_DRIVER]);
+               newline(rd);
        }
        return MNL_CB_OK;
 }
@@ -919,10 +915,8 @@ static int res_mr_parse_cb(const struct nlmsghdr *nlh, void *data)
                if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
                        free(comm);
 
-               if (rd->json_output)
-                       jsonw_end_array(rd->jw);
-               else
-                       pr_out("\n");
+               print_driver_table(rd, nla_line[RDMA_NLDEV_ATTR_DRIVER]);
+               newline(rd);
        }
        return MNL_CB_OK;
 }
@@ -1004,10 +998,8 @@ static int res_pd_parse_cb(const struct nlmsghdr *nlh, void *data)
                if (nla_line[RDMA_NLDEV_ATTR_RES_PID])
                        free(comm);
 
-               if (rd->json_output)
-                       jsonw_end_array(rd->jw);
-               else
-                       pr_out("\n");
+               print_driver_table(rd, nla_line[RDMA_NLDEV_ATTR_DRIVER]);
+               newline(rd);
        }
        return MNL_CB_OK;
 }