app/testpmd: use ethdev iterator to list devices
This commit replaces redundant code with public ethdev layer calls. Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
This commit is contained in:
parent
5588909af2
commit
7d89b26103
@ -1169,7 +1169,7 @@ cmd_config_speed_all_parsed(void *parsed_result,
|
|||||||
&link_speed) < 0)
|
&link_speed) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
FOREACH_PORT(pid, ports) {
|
RTE_ETH_FOREACH_DEV(pid) {
|
||||||
ports[pid].dev_conf.link_speeds = link_speed;
|
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();
|
nb_ports = rte_eth_dev_count();
|
||||||
reconfig(port_id, res->socket);
|
reconfig(port_id, res->socket);
|
||||||
rte_eth_promiscuous_enable(port_id);
|
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 */
|
/* all ports */
|
||||||
if (allports) {
|
if (allports) {
|
||||||
FOREACH_PORT(i, ports) {
|
RTE_ETH_FOREACH_DEV(i) {
|
||||||
if (enable)
|
if (enable)
|
||||||
rte_eth_promiscuous_enable(i);
|
rte_eth_promiscuous_enable(i);
|
||||||
else
|
else
|
||||||
@ -5112,7 +5111,7 @@ static void cmd_set_allmulti_mode_parsed(void *parsed_result,
|
|||||||
|
|
||||||
/* all ports */
|
/* all ports */
|
||||||
if (allports) {
|
if (allports) {
|
||||||
FOREACH_PORT(i, ports) {
|
RTE_ETH_FOREACH_DEV(i) {
|
||||||
if (enable)
|
if (enable)
|
||||||
rte_eth_allmulticast_enable(i);
|
rte_eth_allmulticast_enable(i);
|
||||||
else
|
else
|
||||||
@ -5846,31 +5845,31 @@ static void cmd_showportall_parsed(void *parsed_result,
|
|||||||
struct cmd_showportall_result *res = parsed_result;
|
struct cmd_showportall_result *res = parsed_result;
|
||||||
if (!strcmp(res->show, "clear")) {
|
if (!strcmp(res->show, "clear")) {
|
||||||
if (!strcmp(res->what, "stats"))
|
if (!strcmp(res->what, "stats"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
nic_stats_clear(i);
|
nic_stats_clear(i);
|
||||||
else if (!strcmp(res->what, "xstats"))
|
else if (!strcmp(res->what, "xstats"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
nic_xstats_clear(i);
|
nic_xstats_clear(i);
|
||||||
} else if (!strcmp(res->what, "info"))
|
} else if (!strcmp(res->what, "info"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
port_infos_display(i);
|
port_infos_display(i);
|
||||||
else if (!strcmp(res->what, "stats"))
|
else if (!strcmp(res->what, "stats"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
nic_stats_display(i);
|
nic_stats_display(i);
|
||||||
else if (!strcmp(res->what, "xstats"))
|
else if (!strcmp(res->what, "xstats"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
nic_xstats_display(i);
|
nic_xstats_display(i);
|
||||||
else if (!strcmp(res->what, "fdir"))
|
else if (!strcmp(res->what, "fdir"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
fdir_get_infos(i);
|
fdir_get_infos(i);
|
||||||
else if (!strcmp(res->what, "stat_qmap"))
|
else if (!strcmp(res->what, "stat_qmap"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
nic_stats_mapping_display(i);
|
nic_stats_mapping_display(i);
|
||||||
else if (!strcmp(res->what, "dcb_tc"))
|
else if (!strcmp(res->what, "dcb_tc"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
port_dcb_info_display(i);
|
port_dcb_info_display(i);
|
||||||
else if (!strcmp(res->what, "cap"))
|
else if (!strcmp(res->what, "cap"))
|
||||||
FOREACH_PORT(i, ports)
|
RTE_ETH_FOREACH_DEV(i)
|
||||||
port_offload_cap_display(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.l2_tunnel_type = str2fdir_l2_tunnel_type(res->l2_tunnel_type);
|
||||||
entry.ether_type = res->eth_type_val;
|
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);
|
rte_eth_dev_l2_tunnel_eth_type_conf(pid, &entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -10469,7 +10468,7 @@ cmd_config_l2_tunnel_en_dis_all_parsed(
|
|||||||
else
|
else
|
||||||
en = 0;
|
en = 0;
|
||||||
|
|
||||||
FOREACH_PORT(pid, ports) {
|
RTE_ETH_FOREACH_DEV(pid) {
|
||||||
rte_eth_dev_l2_tunnel_offload_set(pid,
|
rte_eth_dev_l2_tunnel_offload_set(pid,
|
||||||
&entry,
|
&entry,
|
||||||
ETH_L2_TUNNEL_ENABLE_MASK,
|
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) {
|
if (id == (portid_t)RTE_PORT_ALL) {
|
||||||
portid_t pid;
|
portid_t pid;
|
||||||
|
|
||||||
FOREACH_PORT(pid, ports) {
|
RTE_ETH_FOREACH_DEV(pid) {
|
||||||
/* check if need_reconfig has been set to 1 */
|
/* check if need_reconfig has been set to 1 */
|
||||||
if (ports[pid].need_reconfig == 0)
|
if (ports[pid].need_reconfig == 0)
|
||||||
ports[pid].need_reconfig = dev;
|
ports[pid].need_reconfig = dev;
|
||||||
|
@ -2416,7 +2416,7 @@ comp_port(struct context *ctx, const struct token *token,
|
|||||||
|
|
||||||
(void)ctx;
|
(void)ctx;
|
||||||
(void)token;
|
(void)token;
|
||||||
FOREACH_PORT(p, ports) {
|
RTE_ETH_FOREACH_DEV(p) {
|
||||||
if (buf && i == ent)
|
if (buf && i == ent)
|
||||||
return snprintf(buf, size, "%u", p);
|
return snprintf(buf, size, "%u", p);
|
||||||
++i;
|
++i;
|
||||||
|
@ -174,7 +174,7 @@ nic_stats_display(portid_t port_id)
|
|||||||
|
|
||||||
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
||||||
printf("Valid port range is [0");
|
printf("Valid port range is [0");
|
||||||
FOREACH_PORT(pid, ports)
|
RTE_ETH_FOREACH_DEV(pid)
|
||||||
printf(", %d", pid);
|
printf(", %d", pid);
|
||||||
printf("]\n");
|
printf("]\n");
|
||||||
return;
|
return;
|
||||||
@ -252,7 +252,7 @@ nic_stats_clear(portid_t port_id)
|
|||||||
|
|
||||||
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
||||||
printf("Valid port range is [0");
|
printf("Valid port range is [0");
|
||||||
FOREACH_PORT(pid, ports)
|
RTE_ETH_FOREACH_DEV(pid)
|
||||||
printf(", %d", pid);
|
printf(", %d", pid);
|
||||||
printf("]\n");
|
printf("]\n");
|
||||||
return;
|
return;
|
||||||
@ -334,7 +334,7 @@ nic_stats_mapping_display(portid_t port_id)
|
|||||||
|
|
||||||
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
||||||
printf("Valid port range is [0");
|
printf("Valid port range is [0");
|
||||||
FOREACH_PORT(pid, ports)
|
RTE_ETH_FOREACH_DEV(pid)
|
||||||
printf(", %d", pid);
|
printf(", %d", pid);
|
||||||
printf("]\n");
|
printf("]\n");
|
||||||
return;
|
return;
|
||||||
@ -453,7 +453,7 @@ port_infos_display(portid_t port_id)
|
|||||||
|
|
||||||
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
||||||
printf("Valid port range is [0");
|
printf("Valid port range is [0");
|
||||||
FOREACH_PORT(pid, ports)
|
RTE_ETH_FOREACH_DEV(pid)
|
||||||
printf(", %d", pid);
|
printf(", %d", pid);
|
||||||
printf("]\n");
|
printf("]\n");
|
||||||
return;
|
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)
|
if (port_id == (portid_t)RTE_PORT_ALL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (port_id < RTE_MAX_ETHPORTS && ports[port_id].enabled)
|
if (rte_eth_dev_is_valid_port(port_id))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (warning == ENABLED_WARN)
|
if (warning == ENABLED_WARN)
|
||||||
@ -2286,7 +2286,7 @@ set_fwd_ports_mask(uint64_t portmask)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
nb_pt = 0;
|
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))
|
if (! ((uint64_t)(1ULL << i) & portmask))
|
||||||
continue;
|
continue;
|
||||||
portlist[nb_pt++] = i;
|
portlist[nb_pt++] = i;
|
||||||
|
@ -398,7 +398,7 @@ parse_portnuma_config(const char *q_arg)
|
|||||||
port_id = (uint8_t)int_fld[FLD_PORT];
|
port_id = (uint8_t)int_fld[FLD_PORT];
|
||||||
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
||||||
printf("Valid port range is [0");
|
printf("Valid port range is [0");
|
||||||
FOREACH_PORT(pid, ports)
|
RTE_ETH_FOREACH_DEV(pid)
|
||||||
printf(", %d", pid);
|
printf(", %d", pid);
|
||||||
printf("]\n");
|
printf("]\n");
|
||||||
return -1;
|
return -1;
|
||||||
@ -458,7 +458,7 @@ parse_ringnuma_config(const char *q_arg)
|
|||||||
port_id = (uint8_t)int_fld[FLD_PORT];
|
port_id = (uint8_t)int_fld[FLD_PORT];
|
||||||
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
|
||||||
printf("Valid port range is [0");
|
printf("Valid port range is [0");
|
||||||
FOREACH_PORT(pid, ports)
|
RTE_ETH_FOREACH_DEV(pid)
|
||||||
printf(", %d", pid);
|
printf(", %d", pid);
|
||||||
printf("]\n");
|
printf("]\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -358,20 +358,6 @@ static void check_all_ports_link_status(uint32_t port_mask);
|
|||||||
*/
|
*/
|
||||||
static int all_ports_started(void);
|
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.
|
* Setup default configuration.
|
||||||
*/
|
*/
|
||||||
@ -572,7 +558,7 @@ init_config(void)
|
|||||||
socket_num);
|
socket_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
FOREACH_PORT(pid, ports) {
|
RTE_ETH_FOREACH_DEV(pid) {
|
||||||
port = &ports[pid];
|
port = &ports[pid];
|
||||||
rte_eth_dev_info_get(pid, &port->dev_info);
|
rte_eth_dev_info_get(pid, &port->dev_info);
|
||||||
|
|
||||||
@ -657,7 +643,7 @@ init_fwd_streams(void)
|
|||||||
queueid_t q;
|
queueid_t q;
|
||||||
|
|
||||||
/* set socket id according to numa or not */
|
/* set socket id according to numa or not */
|
||||||
FOREACH_PORT(pid, ports) {
|
RTE_ETH_FOREACH_DEV(pid) {
|
||||||
port = &ports[pid];
|
port = &ports[pid];
|
||||||
if (nb_rxq > port->dev_info.max_rx_queues) {
|
if (nb_rxq > port->dev_info.max_rx_queues) {
|
||||||
printf("Fail: nb_rxq(%d) is greater than "
|
printf("Fail: nb_rxq(%d) is greater than "
|
||||||
@ -1301,7 +1287,7 @@ all_ports_started(void)
|
|||||||
portid_t pi;
|
portid_t pi;
|
||||||
struct rte_port *port;
|
struct rte_port *port;
|
||||||
|
|
||||||
FOREACH_PORT(pi, ports) {
|
RTE_ETH_FOREACH_DEV(pi) {
|
||||||
port = &ports[pi];
|
port = &ports[pi];
|
||||||
/* Check if there is a port which is not started */
|
/* Check if there is a port which is not started */
|
||||||
if ((port->port_status != RTE_PORT_STARTED) &&
|
if ((port->port_status != RTE_PORT_STARTED) &&
|
||||||
@ -1319,7 +1305,7 @@ all_ports_stopped(void)
|
|||||||
portid_t pi;
|
portid_t pi;
|
||||||
struct rte_port *port;
|
struct rte_port *port;
|
||||||
|
|
||||||
FOREACH_PORT(pi, ports) {
|
RTE_ETH_FOREACH_DEV(pi) {
|
||||||
port = &ports[pi];
|
port = &ports[pi];
|
||||||
if ((port->port_status != RTE_PORT_STOPPED) &&
|
if ((port->port_status != RTE_PORT_STOPPED) &&
|
||||||
(port->slave_flag == 0))
|
(port->slave_flag == 0))
|
||||||
@ -1367,7 +1353,7 @@ start_port(portid_t pid)
|
|||||||
|
|
||||||
if(dcb_config)
|
if(dcb_config)
|
||||||
dcb_test = 1;
|
dcb_test = 1;
|
||||||
FOREACH_PORT(pi, ports) {
|
RTE_ETH_FOREACH_DEV(pi) {
|
||||||
if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
|
if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1524,7 +1510,7 @@ stop_port(portid_t pid)
|
|||||||
|
|
||||||
printf("Stopping ports...\n");
|
printf("Stopping ports...\n");
|
||||||
|
|
||||||
FOREACH_PORT(pi, ports) {
|
RTE_ETH_FOREACH_DEV(pi) {
|
||||||
if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
|
if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1567,7 +1553,7 @@ close_port(portid_t pid)
|
|||||||
|
|
||||||
printf("Closing ports...\n");
|
printf("Closing ports...\n");
|
||||||
|
|
||||||
FOREACH_PORT(pi, ports) {
|
RTE_ETH_FOREACH_DEV(pi) {
|
||||||
if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
|
if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1622,7 +1608,6 @@ attach_port(char *identifier)
|
|||||||
if (rte_eth_dev_attach(identifier, &pi))
|
if (rte_eth_dev_attach(identifier, &pi))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ports[pi].enabled = 1;
|
|
||||||
socket_id = (unsigned)rte_eth_dev_socket_id(pi);
|
socket_id = (unsigned)rte_eth_dev_socket_id(pi);
|
||||||
/* if socket_id is invalid, set to 0 */
|
/* if socket_id is invalid, set to 0 */
|
||||||
if (check_socket_id(socket_id) < 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))
|
if (rte_eth_dev_detach(port_id, name))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ports[port_id].enabled = 0;
|
|
||||||
nb_ports = rte_eth_dev_count();
|
nb_ports = rte_eth_dev_count();
|
||||||
|
|
||||||
printf("Port '%s' is detached. Now total ports is %d\n",
|
printf("Port '%s' is detached. Now total ports is %d\n",
|
||||||
@ -1675,7 +1659,7 @@ pmd_test_exit(void)
|
|||||||
|
|
||||||
if (ports != NULL) {
|
if (ports != NULL) {
|
||||||
no_link_check = 1;
|
no_link_check = 1;
|
||||||
FOREACH_PORT(pt_id, ports) {
|
RTE_ETH_FOREACH_DEV(pt_id) {
|
||||||
printf("\nShutting down port %d...\n", pt_id);
|
printf("\nShutting down port %d...\n", pt_id);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
stop_port(pt_id);
|
stop_port(pt_id);
|
||||||
@ -1706,7 +1690,7 @@ check_all_ports_link_status(uint32_t port_mask)
|
|||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||||
all_ports_up = 1;
|
all_ports_up = 1;
|
||||||
FOREACH_PORT(portid, ports) {
|
RTE_ETH_FOREACH_DEV(portid) {
|
||||||
if ((port_mask & (1 << portid)) == 0)
|
if ((port_mask & (1 << portid)) == 0)
|
||||||
continue;
|
continue;
|
||||||
memset(&link, 0, sizeof(link));
|
memset(&link, 0, sizeof(link));
|
||||||
@ -1871,7 +1855,7 @@ init_port_config(void)
|
|||||||
portid_t pid;
|
portid_t pid;
|
||||||
struct rte_port *port;
|
struct rte_port *port;
|
||||||
|
|
||||||
FOREACH_PORT(pid, ports) {
|
RTE_ETH_FOREACH_DEV(pid) {
|
||||||
port = &ports[pid];
|
port = &ports[pid];
|
||||||
port->dev_conf.rxmode = rx_mode;
|
port->dev_conf.rxmode = rx_mode;
|
||||||
port->dev_conf.fdir_conf = fdir_conf;
|
port->dev_conf.fdir_conf = fdir_conf;
|
||||||
@ -2084,8 +2068,6 @@ init_port_dcb_config(portid_t pid,
|
|||||||
static void
|
static void
|
||||||
init_port(void)
|
init_port(void)
|
||||||
{
|
{
|
||||||
portid_t pid;
|
|
||||||
|
|
||||||
/* Configuration of Ethernet ports. */
|
/* Configuration of Ethernet ports. */
|
||||||
ports = rte_zmalloc("testpmd: ports",
|
ports = rte_zmalloc("testpmd: ports",
|
||||||
sizeof(struct rte_port) * RTE_MAX_ETHPORTS,
|
sizeof(struct rte_port) * RTE_MAX_ETHPORTS,
|
||||||
@ -2095,10 +2077,6 @@ init_port(void)
|
|||||||
"rte_zmalloc(%d struct rte_port) failed\n",
|
"rte_zmalloc(%d struct rte_port) failed\n",
|
||||||
RTE_MAX_ETHPORTS);
|
RTE_MAX_ETHPORTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* enabled allocated ports */
|
|
||||||
for (pid = 0; pid < nb_ports; pid++)
|
|
||||||
ports[pid].enabled = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2176,7 +2154,7 @@ main(int argc, char** argv)
|
|||||||
rte_exit(EXIT_FAILURE, "Start ports failed\n");
|
rte_exit(EXIT_FAILURE, "Start ports failed\n");
|
||||||
|
|
||||||
/* set all ports to promiscuous mode by default */
|
/* 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);
|
rte_eth_promiscuous_enable(port_id);
|
||||||
|
|
||||||
/* Init metrics library */
|
/* Init metrics library */
|
||||||
|
@ -163,7 +163,6 @@ struct port_flow {
|
|||||||
* The data structure associated with each port.
|
* The data structure associated with each port.
|
||||||
*/
|
*/
|
||||||
struct rte_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_dev_info dev_info; /**< PCI info + driver name */
|
||||||
struct rte_eth_conf dev_conf; /**< Port configuration. */
|
struct rte_eth_conf dev_conf; /**< Port configuration. */
|
||||||
struct ether_addr eth_addr; /**< Port ethernet address */
|
struct ether_addr eth_addr; /**< Port ethernet address */
|
||||||
@ -195,14 +194,6 @@ struct rte_port {
|
|||||||
struct port_flow *flow_list; /**< Associated flows. */
|
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 data structure associated with each forwarding logical core.
|
||||||
* The logical cores are internally numbered by a core index from 0 to
|
* The logical cores are internally numbered by a core index from 0 to
|
||||||
|
Loading…
x
Reference in New Issue
Block a user