app/testpmd: use ethdev iterator to list devices
authorGaetan Rivet <gaetan.rivet@6wind.com>
Fri, 31 Mar 2017 12:04:39 +0000 (14:04 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 5 Apr 2017 20:47:57 +0000 (22:47 +0200)
This commit replaces redundant code with public ethdev layer calls.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
app/test-pmd/cmdline.c
app/test-pmd/cmdline_flow.c
app/test-pmd/config.c
app/test-pmd/parameters.c
app/test-pmd/testpmd.c
app/test-pmd/testpmd.h

index 2500d85..e0d54d4 100644 (file)
@@ -1169,7 +1169,7 @@ cmd_config_speed_all_parsed(void *parsed_result,
                        &link_speed) < 0)
                return;
 
-       FOREACH_PORT(pid, ports) {
+       RTE_ETH_FOREACH_DEV(pid) {
                ports[pid].dev_conf.link_speeds = link_speed;
        }
 
@@ -4673,7 +4673,6 @@ static void cmd_create_bonded_device_parsed(void *parsed_result,
                nb_ports = rte_eth_dev_count();
                reconfig(port_id, res->socket);
                rte_eth_promiscuous_enable(port_id);
-               ports[port_id].enabled = 1;
        }
 
 }
@@ -5032,7 +5031,7 @@ static void cmd_set_promisc_mode_parsed(void *parsed_result,
 
        /* all ports */
        if (allports) {
-               FOREACH_PORT(i, ports) {
+               RTE_ETH_FOREACH_DEV(i) {
                        if (enable)
                                rte_eth_promiscuous_enable(i);
                        else
@@ -5112,7 +5111,7 @@ static void cmd_set_allmulti_mode_parsed(void *parsed_result,
 
        /* all ports */
        if (allports) {
-               FOREACH_PORT(i, ports) {
+               RTE_ETH_FOREACH_DEV(i) {
                        if (enable)
                                rte_eth_allmulticast_enable(i);
                        else
@@ -5846,31 +5845,31 @@ static void cmd_showportall_parsed(void *parsed_result,
        struct cmd_showportall_result *res = parsed_result;
        if (!strcmp(res->show, "clear")) {
                if (!strcmp(res->what, "stats"))
-                       FOREACH_PORT(i, ports)
+                       RTE_ETH_FOREACH_DEV(i)
                                nic_stats_clear(i);
                else if (!strcmp(res->what, "xstats"))
-                       FOREACH_PORT(i, ports)
+                       RTE_ETH_FOREACH_DEV(i)
                                nic_xstats_clear(i);
        } else if (!strcmp(res->what, "info"))
-               FOREACH_PORT(i, ports)
+               RTE_ETH_FOREACH_DEV(i)
                        port_infos_display(i);
        else if (!strcmp(res->what, "stats"))
-               FOREACH_PORT(i, ports)
+               RTE_ETH_FOREACH_DEV(i)
                        nic_stats_display(i);
        else if (!strcmp(res->what, "xstats"))
-               FOREACH_PORT(i, ports)
+               RTE_ETH_FOREACH_DEV(i)
                        nic_xstats_display(i);
        else if (!strcmp(res->what, "fdir"))
-               FOREACH_PORT(i, ports)
+               RTE_ETH_FOREACH_DEV(i)
                        fdir_get_infos(i);
        else if (!strcmp(res->what, "stat_qmap"))
-               FOREACH_PORT(i, ports)
+               RTE_ETH_FOREACH_DEV(i)
                        nic_stats_mapping_display(i);
        else if (!strcmp(res->what, "dcb_tc"))
-               FOREACH_PORT(i, ports)
+               RTE_ETH_FOREACH_DEV(i)
                        port_dcb_info_display(i);
        else if (!strcmp(res->what, "cap"))
-               FOREACH_PORT(i, ports)
+               RTE_ETH_FOREACH_DEV(i)
                        port_offload_cap_display(i);
 }
 
@@ -10353,7 +10352,7 @@ cmd_config_l2_tunnel_eth_type_all_parsed
        entry.l2_tunnel_type = str2fdir_l2_tunnel_type(res->l2_tunnel_type);
        entry.ether_type = res->eth_type_val;
 
-       FOREACH_PORT(pid, ports) {
+       RTE_ETH_FOREACH_DEV(pid) {
                rte_eth_dev_l2_tunnel_eth_type_conf(pid, &entry);
        }
 }
@@ -10469,7 +10468,7 @@ cmd_config_l2_tunnel_en_dis_all_parsed(
        else
                en = 0;
 
-       FOREACH_PORT(pid, ports) {
+       RTE_ETH_FOREACH_DEV(pid) {
                rte_eth_dev_l2_tunnel_offload_set(pid,
                                                  &entry,
                                                  ETH_L2_TUNNEL_ENABLE_MASK,
@@ -13377,7 +13376,7 @@ cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue)
        if (id == (portid_t)RTE_PORT_ALL) {
                portid_t pid;
 
-               FOREACH_PORT(pid, ports) {
+               RTE_ETH_FOREACH_DEV(pid) {
                        /* check if need_reconfig has been set to 1 */
                        if (ports[pid].need_reconfig == 0)
                                ports[pid].need_reconfig = dev;
index 2149df4..4e99f0f 100644 (file)
@@ -2416,7 +2416,7 @@ comp_port(struct context *ctx, const struct token *token,
 
        (void)ctx;
        (void)token;
-       FOREACH_PORT(p, ports) {
+       RTE_ETH_FOREACH_DEV(p) {
                if (buf && i == ent)
                        return snprintf(buf, size, "%u", p);
                ++i;
index c694578..4d873cd 100644 (file)
@@ -174,7 +174,7 @@ nic_stats_display(portid_t port_id)
 
        if (port_id_is_invalid(port_id, ENABLED_WARN)) {
                printf("Valid port range is [0");
-               FOREACH_PORT(pid, ports)
+               RTE_ETH_FOREACH_DEV(pid)
                        printf(", %d", pid);
                printf("]\n");
                return;
@@ -252,7 +252,7 @@ nic_stats_clear(portid_t port_id)
 
        if (port_id_is_invalid(port_id, ENABLED_WARN)) {
                printf("Valid port range is [0");
-               FOREACH_PORT(pid, ports)
+               RTE_ETH_FOREACH_DEV(pid)
                        printf(", %d", pid);
                printf("]\n");
                return;
@@ -334,7 +334,7 @@ nic_stats_mapping_display(portid_t port_id)
 
        if (port_id_is_invalid(port_id, ENABLED_WARN)) {
                printf("Valid port range is [0");
-               FOREACH_PORT(pid, ports)
+               RTE_ETH_FOREACH_DEV(pid)
                        printf(", %d", pid);
                printf("]\n");
                return;
@@ -453,7 +453,7 @@ port_infos_display(portid_t port_id)
 
        if (port_id_is_invalid(port_id, ENABLED_WARN)) {
                printf("Valid port range is [0");
-               FOREACH_PORT(pid, ports)
+               RTE_ETH_FOREACH_DEV(pid)
                        printf(", %d", pid);
                printf("]\n");
                return;
@@ -730,7 +730,7 @@ port_id_is_invalid(portid_t port_id, enum print_warning warning)
        if (port_id == (portid_t)RTE_PORT_ALL)
                return 0;
 
-       if (port_id < RTE_MAX_ETHPORTS && ports[port_id].enabled)
+       if (rte_eth_dev_is_valid_port(port_id))
                return 0;
 
        if (warning == ENABLED_WARN)
@@ -2286,7 +2286,7 @@ set_fwd_ports_mask(uint64_t portmask)
                return;
        }
        nb_pt = 0;
-       for (i = 0; i < (unsigned)RTE_MIN(64, RTE_MAX_ETHPORTS); i++) {
+       RTE_ETH_FOREACH_DEV(i) {
                if (! ((uint64_t)(1ULL << i) & portmask))
                        continue;
                portlist[nb_pt++] = i;
index f92fb4a..c36bcf8 100644 (file)
@@ -398,7 +398,7 @@ parse_portnuma_config(const char *q_arg)
                port_id = (uint8_t)int_fld[FLD_PORT];
                if (port_id_is_invalid(port_id, ENABLED_WARN)) {
                        printf("Valid port range is [0");
-                       FOREACH_PORT(pid, ports)
+                       RTE_ETH_FOREACH_DEV(pid)
                                printf(", %d", pid);
                        printf("]\n");
                        return -1;
@@ -458,7 +458,7 @@ parse_ringnuma_config(const char *q_arg)
                port_id = (uint8_t)int_fld[FLD_PORT];
                if (port_id_is_invalid(port_id, ENABLED_WARN)) {
                        printf("Valid port range is [0");
-                       FOREACH_PORT(pid, ports)
+                       RTE_ETH_FOREACH_DEV(pid)
                                printf(", %d", pid);
                        printf("]\n");
                        return -1;
index 8068254..d6bd2b2 100644 (file)
@@ -358,20 +358,6 @@ static void check_all_ports_link_status(uint32_t port_mask);
  */
 static int all_ports_started(void);
 
-/*
- * Find next enabled port
- */
-portid_t
-find_next_port(portid_t p, struct rte_port *ports, int size)
-{
-       if (ports == NULL)
-               rte_exit(-EINVAL, "failed to find a next port id\n");
-
-       while ((p < size) && (ports[p].enabled == 0))
-               p++;
-       return p;
-}
-
 /*
  * Setup default configuration.
  */
@@ -572,7 +558,7 @@ init_config(void)
                                                 socket_num);
        }
 
-       FOREACH_PORT(pid, ports) {
+       RTE_ETH_FOREACH_DEV(pid) {
                port = &ports[pid];
                rte_eth_dev_info_get(pid, &port->dev_info);
 
@@ -657,7 +643,7 @@ init_fwd_streams(void)
        queueid_t q;
 
        /* set socket id according to numa or not */
-       FOREACH_PORT(pid, ports) {
+       RTE_ETH_FOREACH_DEV(pid) {
                port = &ports[pid];
                if (nb_rxq > port->dev_info.max_rx_queues) {
                        printf("Fail: nb_rxq(%d) is greater than "
@@ -1301,7 +1287,7 @@ all_ports_started(void)
        portid_t pi;
        struct rte_port *port;
 
-       FOREACH_PORT(pi, ports) {
+       RTE_ETH_FOREACH_DEV(pi) {
                port = &ports[pi];
                /* Check if there is a port which is not started */
                if ((port->port_status != RTE_PORT_STARTED) &&
@@ -1319,7 +1305,7 @@ all_ports_stopped(void)
        portid_t pi;
        struct rte_port *port;
 
-       FOREACH_PORT(pi, ports) {
+       RTE_ETH_FOREACH_DEV(pi) {
                port = &ports[pi];
                if ((port->port_status != RTE_PORT_STOPPED) &&
                        (port->slave_flag == 0))
@@ -1367,7 +1353,7 @@ start_port(portid_t pid)
 
        if(dcb_config)
                dcb_test = 1;
-       FOREACH_PORT(pi, ports) {
+       RTE_ETH_FOREACH_DEV(pi) {
                if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
                        continue;
 
@@ -1524,7 +1510,7 @@ stop_port(portid_t pid)
 
        printf("Stopping ports...\n");
 
-       FOREACH_PORT(pi, ports) {
+       RTE_ETH_FOREACH_DEV(pi) {
                if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
                        continue;
 
@@ -1567,7 +1553,7 @@ close_port(portid_t pid)
 
        printf("Closing ports...\n");
 
-       FOREACH_PORT(pi, ports) {
+       RTE_ETH_FOREACH_DEV(pi) {
                if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
                        continue;
 
@@ -1622,7 +1608,6 @@ attach_port(char *identifier)
        if (rte_eth_dev_attach(identifier, &pi))
                return;
 
-       ports[pi].enabled = 1;
        socket_id = (unsigned)rte_eth_dev_socket_id(pi);
        /* if socket_id is invalid, set to 0 */
        if (check_socket_id(socket_id) < 0)
@@ -1656,7 +1641,6 @@ detach_port(uint8_t port_id)
        if (rte_eth_dev_detach(port_id, name))
                return;
 
-       ports[port_id].enabled = 0;
        nb_ports = rte_eth_dev_count();
 
        printf("Port '%s' is detached. Now total ports is %d\n",
@@ -1675,7 +1659,7 @@ pmd_test_exit(void)
 
        if (ports != NULL) {
                no_link_check = 1;
-               FOREACH_PORT(pt_id, ports) {
+               RTE_ETH_FOREACH_DEV(pt_id) {
                        printf("\nShutting down port %d...\n", pt_id);
                        fflush(stdout);
                        stop_port(pt_id);
@@ -1706,7 +1690,7 @@ check_all_ports_link_status(uint32_t port_mask)
        fflush(stdout);
        for (count = 0; count <= MAX_CHECK_TIME; count++) {
                all_ports_up = 1;
-               FOREACH_PORT(portid, ports) {
+               RTE_ETH_FOREACH_DEV(portid) {
                        if ((port_mask & (1 << portid)) == 0)
                                continue;
                        memset(&link, 0, sizeof(link));
@@ -1871,7 +1855,7 @@ init_port_config(void)
        portid_t pid;
        struct rte_port *port;
 
-       FOREACH_PORT(pid, ports) {
+       RTE_ETH_FOREACH_DEV(pid) {
                port = &ports[pid];
                port->dev_conf.rxmode = rx_mode;
                port->dev_conf.fdir_conf = fdir_conf;
@@ -2084,8 +2068,6 @@ init_port_dcb_config(portid_t pid,
 static void
 init_port(void)
 {
-       portid_t pid;
-
        /* Configuration of Ethernet ports. */
        ports = rte_zmalloc("testpmd: ports",
                            sizeof(struct rte_port) * RTE_MAX_ETHPORTS,
@@ -2095,10 +2077,6 @@ init_port(void)
                                "rte_zmalloc(%d struct rte_port) failed\n",
                                RTE_MAX_ETHPORTS);
        }
-
-       /* enabled allocated ports */
-       for (pid = 0; pid < nb_ports; pid++)
-               ports[pid].enabled = 1;
 }
 
 static void
@@ -2176,7 +2154,7 @@ main(int argc, char** argv)
                rte_exit(EXIT_FAILURE, "Start ports failed\n");
 
        /* set all ports to promiscuous mode by default */
-       FOREACH_PORT(port_id, ports)
+       RTE_ETH_FOREACH_DEV(port_id)
                rte_eth_promiscuous_enable(port_id);
 
        /* Init metrics library */
index d541790..642796e 100644 (file)
@@ -163,7 +163,6 @@ struct port_flow {
  * The data structure associated with each port.
  */
 struct rte_port {
-       uint8_t                 enabled;    /**< Port enabled or not */
        struct rte_eth_dev_info dev_info;   /**< PCI info + driver name */
        struct rte_eth_conf     dev_conf;   /**< Port configuration. */
        struct ether_addr       eth_addr;   /**< Port ethernet address */
@@ -195,14 +194,6 @@ struct rte_port {
        struct port_flow        *flow_list; /**< Associated flows. */
 };
 
-extern portid_t __rte_unused
-find_next_port(portid_t p, struct rte_port *ports, int size);
-
-#define FOREACH_PORT(p, ports) \
-       for (p = find_next_port(0, ports, RTE_MAX_ETHPORTS); \
-           p < RTE_MAX_ETHPORTS; \
-           p = find_next_port(p + 1, ports, RTE_MAX_ETHPORTS))
-
 /**
  * The data structure associated with each forwarding logical core.
  * The logical cores are internally numbered by a core index from 0 to