From: Gaetan Rivet <gaetan.rivet@6wind.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH 4/4] app/testpmd: use ethdev iterator to list devices
Date: Fri, 3 Mar 2017 16:40:13 +0100 [thread overview]
Message-ID: <efe4c5cb9e52149c3f1dc0e8ce470bca1937e690.1488550937.git.gaetan.rivet@6wind.com> (raw)
In-Reply-To: <cover.1488550937.git.gaetan.rivet@6wind.com>
This commit replaces redundant code with public ethdev layer calls.
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---
app/test-pmd/cmdline.c | 31 +++++++++++++++----------------
app/test-pmd/cmdline_flow.c | 2 +-
app/test-pmd/config.c | 12 ++++++------
app/test-pmd/parameters.c | 4 ++--
app/test-pmd/testpmd.c | 44 +++++++++++---------------------------------
app/test-pmd/testpmd.h | 9 ---------
6 files changed, 35 insertions(+), 67 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 43fc636..871ab19 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -1139,7 +1139,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;
}
@@ -4641,7 +4641,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;
}
}
@@ -5000,7 +4999,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
@@ -5080,7 +5079,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
@@ -5814,31 +5813,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);
}
@@ -10315,7 +10314,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);
}
}
@@ -10431,7 +10430,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,
@@ -12601,7 +12600,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;
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index ff98690..b7d2c41 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -2369,7 +2369,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;
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 80491fc..54e38c4 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -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;
@@ -452,7 +452,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;
@@ -725,7 +725,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)
@@ -2279,7 +2279,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;
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 28db8cd..67d8bf2 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -394,7 +394,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;
@@ -454,7 +454,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;
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index bfb2f8e..b8ec1fe 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -334,20 +334,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.
*/
static void
@@ -547,7 +533,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);
@@ -632,7 +618,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 "
@@ -1253,7 +1239,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) &&
@@ -1271,7 +1257,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))
@@ -1319,7 +1305,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;
@@ -1476,7 +1462,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;
@@ -1519,7 +1505,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;
@@ -1574,7 +1560,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)
@@ -1608,7 +1593,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",
@@ -1627,7 +1611,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);
@@ -1658,7 +1642,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));
@@ -1823,7 +1807,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;
@@ -2047,8 +2031,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,
@@ -2058,10 +2040,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
@@ -2136,7 +2114,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);
#ifdef RTE_LIBRTE_CMDLINE
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 8cf2860..e1e4939 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -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
--
2.1.4
next prev parent reply other threads:[~2017-03-03 15:40 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-03 15:40 [dpdk-dev] [PATCH 0/4] clarify eth_dev state management Gaetan Rivet
2017-03-03 15:40 ` [dpdk-dev] [PATCH 1/4] ethdev: expose device states Gaetan Rivet
2017-03-03 15:40 ` [dpdk-dev] [PATCH 2/4] ethdev: add device iterator Gaetan Rivet
2017-03-03 15:40 ` [dpdk-dev] [PATCH 3/4] ethdev: count devices consistently Gaetan Rivet
2017-03-30 19:26 ` Thomas Monjalon
2017-03-31 9:13 ` Gaëtan Rivet
2017-03-03 15:40 ` Gaetan Rivet [this message]
2017-03-31 12:04 ` [dpdk-dev] [PATCH v2 0/3] clarify eth_dev state management Gaetan Rivet
2017-03-31 12:04 ` [dpdk-dev] [PATCH v2 1/3] ethdev: expose device states Gaetan Rivet
2017-03-31 12:04 ` [dpdk-dev] [PATCH v2 2/3] ethdev: add device iterator Gaetan Rivet
2017-04-05 20:42 ` Thomas Monjalon
2017-03-31 12:04 ` [dpdk-dev] [PATCH v2 3/3] app/testpmd: use ethdev iterator to list devices Gaetan Rivet
2017-04-05 20:46 ` [dpdk-dev] [PATCH v2 0/3] clarify eth_dev state management Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=efe4c5cb9e52149c3f1dc0e8ce470bca1937e690.1488550937.git.gaetan.rivet@6wind.com \
--to=gaetan.rivet@6wind.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).