static int link_show(struct rd *rd)
{
- struct dev_map *dev_map;
- uint32_t port;
- int ret = 0;
-
- if (rd->json_output)
- jsonw_start_array(rd->jw);
- if (rd_no_arg(rd)) {
- list_for_each_entry(dev_map, &rd->dev_map_list, list) {
- rd->dev_idx = dev_map->idx;
- for (port = 1; port < dev_map->num_ports + 1; port++) {
- rd->port_idx = port;
- ret = link_one_show(rd);
- if (ret)
- goto out;
- }
- }
-
- } else {
- dev_map = dev_map_lookup(rd, true);
- port = get_port_from_argv(rd);
- if (!dev_map || port > dev_map->num_ports) {
- pr_err("Wrong device name\n");
- ret = -ENOENT;
- goto out;
- }
- rd_arg_inc(rd);
- rd->dev_idx = dev_map->idx;
- rd->port_idx = port ? : 1;
- for (; rd->port_idx < dev_map->num_ports + 1; rd->port_idx++) {
- ret = link_one_show(rd);
- if (ret)
- goto out;
- if (port)
- /*
- * We got request to show link for devname
- * with port index.
- */
- break;
- }
- }
-
-out:
- if (rd->json_output)
- jsonw_end_array(rd->jw);
- return ret;
+ return rd_exec_link(rd, link_one_show);
}
int cmd_link(struct rd *rd)