fix ethdev ports enumeration
Some DPDK applications wrongly assume these requirements: - no hotplug, i.e. ports are never detached - all allocated ports are available to the application Such application iterates over ports by its own mean. The most common pattern is to request the port count and assume ports with index in the range [0..count[ can be used. There are three consequences when using such wrong design: - new ports having an index higher than the port count won't be seen - old ports being detached (RTE_ETH_DEV_UNUSED) can be seen as ghosts - failsafe sub-devices (RTE_ETH_DEV_DEFERRED) will be seen by the application Such mistake will be less common with growing hotplug awareness. All applications and examples inside this repository - except testpmd - must be fixed to use the iterator RTE_ETH_FOREACH_DEV. Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
This commit is contained in:
parent
a3d6026711
commit
8728ccf376
@ -636,7 +636,7 @@ main(int argc, char **argv)
|
||||
if (enabled_port_mask == 0)
|
||||
enabled_port_mask = 0xffff;
|
||||
|
||||
for (i = 0; i < nb_ports; i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
if (enabled_port_mask & (1 << i)) {
|
||||
if (enable_stats)
|
||||
nic_stats_display(i);
|
||||
|
@ -355,7 +355,7 @@ perf_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
|
||||
memset(&queue_conf, 0,
|
||||
sizeof(struct rte_event_eth_rx_adapter_queue_conf));
|
||||
queue_conf.ev.sched_type = opt->sched_type_list[0];
|
||||
for (prod = 0; prod < rte_eth_dev_count(); prod++) {
|
||||
RTE_ETH_FOREACH_DEV(prod) {
|
||||
uint32_t cap;
|
||||
|
||||
ret = rte_event_eth_rx_adapter_caps_get(opt->dev_id,
|
||||
@ -673,7 +673,7 @@ perf_elt_init(struct rte_mempool *mp, void *arg __rte_unused,
|
||||
int
|
||||
perf_ethdev_setup(struct evt_test *test, struct evt_options *opt)
|
||||
{
|
||||
int i;
|
||||
uint16_t i;
|
||||
struct test_perf *t = evt_test_priv(test);
|
||||
struct rte_eth_conf port_conf = {
|
||||
.rxmode = {
|
||||
@ -705,7 +705,7 @@ perf_ethdev_setup(struct evt_test *test, struct evt_options *opt)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
|
||||
if (rte_eth_dev_configure(i, 1, 1,
|
||||
&port_conf)
|
||||
@ -736,11 +736,11 @@ perf_ethdev_setup(struct evt_test *test, struct evt_options *opt)
|
||||
|
||||
void perf_ethdev_destroy(struct evt_test *test, struct evt_options *opt)
|
||||
{
|
||||
int i;
|
||||
uint16_t i;
|
||||
RTE_SET_USED(test);
|
||||
|
||||
if (opt->prod_type == EVT_PROD_TYPE_ETH_RX_ADPTR) {
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
rte_event_eth_rx_adapter_stop(i);
|
||||
rte_eth_dev_stop(i);
|
||||
rte_eth_dev_close(i);
|
||||
|
@ -213,7 +213,7 @@ pipeline_opt_check(struct evt_options *opt, uint64_t nb_queues)
|
||||
int
|
||||
pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
|
||||
{
|
||||
int i;
|
||||
uint16_t i;
|
||||
uint8_t nb_queues = 1;
|
||||
uint8_t mt_state = 0;
|
||||
struct test_pipeline *t = evt_test_priv(test);
|
||||
@ -239,7 +239,7 @@ pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
struct rte_eth_dev_info dev_info;
|
||||
|
||||
memset(&dev_info, 0, sizeof(struct rte_eth_dev_info));
|
||||
@ -337,7 +337,7 @@ pipeline_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
|
||||
memset(&queue_conf, 0,
|
||||
sizeof(struct rte_event_eth_rx_adapter_queue_conf));
|
||||
queue_conf.ev.sched_type = opt->sched_type_list[0];
|
||||
for (prod = 0; prod < rte_eth_dev_count(); prod++) {
|
||||
RTE_ETH_FOREACH_DEV(prod) {
|
||||
uint32_t cap;
|
||||
|
||||
ret = rte_event_eth_rx_adapter_caps_get(opt->dev_id,
|
||||
@ -453,7 +453,7 @@ pipeline_event_tx_service_setup(struct evt_test *test, struct evt_options *opt,
|
||||
void
|
||||
pipeline_ethdev_destroy(struct evt_test *test, struct evt_options *opt)
|
||||
{
|
||||
int i;
|
||||
uint16_t i;
|
||||
RTE_SET_USED(test);
|
||||
RTE_SET_USED(opt);
|
||||
struct test_pipeline *t = evt_test_priv(test);
|
||||
@ -464,7 +464,7 @@ pipeline_ethdev_destroy(struct evt_test *test, struct evt_options *opt)
|
||||
rte_service_component_unregister(t->tx_service.service_id);
|
||||
}
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
rte_event_eth_rx_adapter_stop(i);
|
||||
rte_eth_dev_stop(i);
|
||||
rte_eth_dev_close(i);
|
||||
|
@ -1999,7 +1999,7 @@ cmd_config_rss_parsed(void *parsed_result,
|
||||
struct cmd_config_rss *res = parsed_result;
|
||||
struct rte_eth_rss_conf rss_conf = { .rss_key_len = 0, };
|
||||
int diag;
|
||||
uint8_t i;
|
||||
uint16_t i;
|
||||
|
||||
if (!strcmp(res->value, "all"))
|
||||
rss_conf.rss_hf = ETH_RSS_IP | ETH_RSS_TCP |
|
||||
@ -2033,7 +2033,7 @@ cmd_config_rss_parsed(void *parsed_result,
|
||||
return;
|
||||
}
|
||||
rss_conf.rss_key = NULL;
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
diag = rte_eth_dev_rss_hash_update(i, &rss_conf);
|
||||
if (diag < 0)
|
||||
printf("Configuration of RSS hash at ethernet port %d "
|
||||
|
@ -1120,9 +1120,8 @@ run_pkt_fwd_on_lcore(struct fwd_lcore *fc, packet_fwd_t pkt_fwd)
|
||||
uint64_t tics_per_1sec;
|
||||
uint64_t tics_datum;
|
||||
uint64_t tics_current;
|
||||
uint8_t idx_port, cnt_ports;
|
||||
uint16_t idx_port;
|
||||
|
||||
cnt_ports = rte_eth_dev_count();
|
||||
tics_datum = rte_rdtsc();
|
||||
tics_per_1sec = rte_get_timer_hz();
|
||||
#endif
|
||||
@ -1137,9 +1136,7 @@ run_pkt_fwd_on_lcore(struct fwd_lcore *fc, packet_fwd_t pkt_fwd)
|
||||
tics_current = rte_rdtsc();
|
||||
if (tics_current - tics_datum >= tics_per_1sec) {
|
||||
/* Periodic bitrate calculation */
|
||||
for (idx_port = 0;
|
||||
idx_port < cnt_ports;
|
||||
idx_port++)
|
||||
RTE_ETH_FOREACH_DEV(idx_port)
|
||||
rte_stats_bitrate_calc(bitrate_data,
|
||||
idx_port);
|
||||
tics_datum = tics_current;
|
||||
|
@ -187,7 +187,7 @@ The ``main()`` function also initializes all the ports using the user defined
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if (port_init(portid, mbuf_pool) != 0) {
|
||||
rte_exit(EXIT_FAILURE,
|
||||
"Cannot init port %" PRIu8 "\n", portid);
|
||||
@ -424,14 +424,13 @@ following:
|
||||
static __attribute__((noreturn)) void
|
||||
lcore_main(cls_app)
|
||||
{
|
||||
const uint8_t nb_ports = rte_eth_dev_count();
|
||||
uint8_t port;
|
||||
uint16_t port;
|
||||
|
||||
/*
|
||||
* Check that the port is on the same NUMA node as the polling thread
|
||||
* for best performance.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++)
|
||||
RTE_ETH_FOREACH_DEV(port)
|
||||
if (rte_eth_dev_socket_id(port) > 0 &&
|
||||
rte_eth_dev_socket_id(port) != (int)rte_socket_id()) {
|
||||
printf("\n\n");
|
||||
@ -451,7 +450,7 @@ following:
|
||||
* Receive packets on a port and forward them on the paired
|
||||
* port. The mapping is 0 -> 1, 1 -> 0, 2 -> 3, 3 -> 2, etc.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
|
||||
/* Get burst of RX packets, from first port of pair. */
|
||||
struct rte_mbuf *bufs[BURST_SIZE];
|
||||
@ -501,7 +500,7 @@ The main work of the application is done within the loop:
|
||||
.. code-block:: c
|
||||
|
||||
for (;;) {
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
|
||||
/* Get burst of RX packets, from first port of pair. */
|
||||
struct rte_mbuf *bufs[BURST_SIZE];
|
||||
|
@ -193,7 +193,7 @@ in the *DPDK Programmer's Guide* and the *DPDK API Reference*.
|
||||
/*
|
||||
* Each logical core is assigned a dedicated TX queue on each port.
|
||||
*/
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
|
@ -213,7 +213,7 @@ in the *DPDK Programmer's Guide* - Rel 1.4 EAR and the *DPDK API Reference*.
|
||||
* Each logical core is assigned a dedicated TX queue on each port.
|
||||
*/
|
||||
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
|
@ -99,7 +99,7 @@ To fully understand this code, it is recommended to study the chapters that rela
|
||||
* Each logical core is assigned a dedicated TX queue on each port.
|
||||
*/
|
||||
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
|
||||
if ((lsi_enabled_port_mask & (1 << portid)) == 0)
|
||||
|
@ -81,7 +81,7 @@ The ``main()`` function also initializes all the ports using the user defined
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if (port_init(portid, mbuf_pool) != 0) {
|
||||
rte_exit(EXIT_FAILURE,
|
||||
"Cannot init port %" PRIu8 "\n", portid);
|
||||
@ -199,7 +199,7 @@ looks like the following:
|
||||
* Check that the port is on the same NUMA node as the polling thread
|
||||
* for best performance.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++)
|
||||
RTE_ETH_FOREACH_DEV(port)
|
||||
if (rte_eth_dev_socket_id(port) > 0 &&
|
||||
rte_eth_dev_socket_id(port) !=
|
||||
(int)rte_socket_id())
|
||||
@ -216,7 +216,7 @@ looks like the following:
|
||||
* Receive packets on a port and forward them on the paired
|
||||
* port. The mapping is 0 -> 1, 1 -> 0, 2 -> 3, 3 -> 2, etc.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
|
||||
/* Get burst of RX packets, from first port of pair. */
|
||||
struct rte_mbuf *bufs[BURST_SIZE];
|
||||
@ -246,7 +246,7 @@ The main work of the application is done within the loop:
|
||||
.. code-block:: c
|
||||
|
||||
for (;;) {
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
|
||||
/* Get burst of RX packets, from first port of pair. */
|
||||
struct rte_mbuf *bufs[BURST_SIZE];
|
||||
|
@ -8,6 +8,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
|
||||
#
|
||||
LIB = librte_pmd_bond.a
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
|
||||
|
@ -9,4 +9,6 @@ sources = files('rte_eth_bond_api.c', 'rte_eth_bond_pmd.c',
|
||||
deps += 'sched' # needed for rte_bitmap.h
|
||||
deps += ['ip_frag', 'cmdline']
|
||||
|
||||
allow_experimental_apis = true
|
||||
|
||||
install_headers('rte_eth_bond.h', 'rte_eth_bond_8023ad.h')
|
||||
|
@ -32,7 +32,7 @@ find_port_id_by_pci_addr(const struct rte_pci_addr *pci_addr)
|
||||
struct rte_pci_addr *eth_pci_addr;
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
pci_dev = RTE_ETH_DEV_TO_PCI(&rte_eth_devices[i]);
|
||||
eth_pci_addr = &pci_dev->addr;
|
||||
|
||||
@ -50,7 +50,7 @@ find_port_id_by_dev_name(const char *name)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
if (rte_eth_devices[i].data == NULL)
|
||||
continue;
|
||||
|
||||
|
@ -2810,7 +2810,7 @@ rte_pmd_mrvl_remove(struct rte_vdev_device *vdev)
|
||||
|
||||
RTE_LOG(INFO, PMD, "Removing %s\n", name);
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) { /* FIXME: removing all devices! */
|
||||
char ifname[RTE_ETH_NAME_MAX_LEN];
|
||||
|
||||
rte_eth_dev_get_name_by_port(i, ifname);
|
||||
|
@ -25,6 +25,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -58,6 +60,7 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
|
||||
CFLAGS_main.o += -Wno-return-type
|
||||
endif
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
|
||||
ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
|
||||
|
@ -738,7 +738,7 @@ int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int ret;
|
||||
uint8_t nb_ports, i;
|
||||
uint16_t nb_ports, i;
|
||||
|
||||
/* init EAL */
|
||||
ret = rte_eal_init(argc, argv);
|
||||
@ -761,7 +761,7 @@ main(int argc, char *argv[])
|
||||
|
||||
/* initialize all ports */
|
||||
slaves_count = nb_ports;
|
||||
for (i = 0; i < nb_ports; i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
slave_port_init(i, mbuf_pool);
|
||||
slaves[i] = i;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += 'pmd_bond'
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
# workaround for a gcc bug with noreturn attribute
|
||||
|
@ -198,7 +198,7 @@ lcore_rx(struct lcore_params *p)
|
||||
uint16_t port;
|
||||
struct rte_mbuf *bufs[BURST_SIZE*2];
|
||||
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << port)) == 0)
|
||||
continue;
|
||||
@ -295,11 +295,11 @@ flush_one_port(struct output_buffer *outbuf, uint8_t outp)
|
||||
}
|
||||
|
||||
static inline void
|
||||
flush_all_ports(struct output_buffer *tx_buffers, uint16_t nb_ports)
|
||||
flush_all_ports(struct output_buffer *tx_buffers)
|
||||
{
|
||||
uint16_t outp;
|
||||
|
||||
for (outp = 0; outp < nb_ports; outp++) {
|
||||
RTE_ETH_FOREACH_DEV(outp) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << outp)) == 0)
|
||||
continue;
|
||||
@ -367,11 +367,10 @@ static int
|
||||
lcore_tx(struct rte_ring *in_r)
|
||||
{
|
||||
static struct output_buffer tx_buffers[RTE_MAX_ETHPORTS];
|
||||
const uint16_t nb_ports = rte_eth_dev_count();
|
||||
const int socket_id = rte_socket_id();
|
||||
uint16_t port;
|
||||
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << port)) == 0)
|
||||
continue;
|
||||
@ -386,7 +385,7 @@ lcore_tx(struct rte_ring *in_r)
|
||||
printf("\nCore %u doing packet TX.\n", rte_lcore_id());
|
||||
while (!quit_signal) {
|
||||
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << port)) == 0)
|
||||
continue;
|
||||
@ -398,7 +397,7 @@ lcore_tx(struct rte_ring *in_r)
|
||||
|
||||
/* if we get no traffic, flush anything we have */
|
||||
if (unlikely(nb_rx == 0)) {
|
||||
flush_all_ports(tx_buffers, nb_ports);
|
||||
flush_all_ports(tx_buffers);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -446,14 +445,14 @@ print_stats(void)
|
||||
unsigned int i, j;
|
||||
const unsigned int num_workers = rte_lcore_count() - 4;
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
rte_eth_stats_get(i, ð_stats);
|
||||
app_stats.port_rx_pkts[i] = eth_stats.ipackets;
|
||||
app_stats.port_tx_pkts[i] = eth_stats.opackets;
|
||||
}
|
||||
|
||||
printf("\n\nRX Thread:\n");
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
printf("Port %u Pktsin : %5.2f\n", i,
|
||||
(app_stats.port_rx_pkts[i] -
|
||||
prev_app_stats.port_rx_pkts[i])/1000000.0);
|
||||
@ -492,7 +491,7 @@ print_stats(void)
|
||||
printf(" - Dequeued: %5.2f\n",
|
||||
(app_stats.tx.dequeue_pkts -
|
||||
prev_app_stats.tx.dequeue_pkts)/1000000.0);
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
printf("Port %u Pktsout: %5.2f\n",
|
||||
i, (app_stats.port_tx_pkts[i] -
|
||||
prev_app_stats.port_tx_pkts[i])/1000000.0);
|
||||
@ -694,7 +693,7 @@ main(int argc, char *argv[])
|
||||
nb_ports_available = nb_ports;
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
printf("\nSkipping disabled port %d\n", portid);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += 'distributor'
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -16,6 +16,7 @@ APP = ethtool
|
||||
# all source are stored in SRCS-y
|
||||
SRCS-y := main.c ethapp.c
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3 -D_GNU_SOURCE -pthread -I$(SRCDIR)/../lib
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -145,9 +145,9 @@ pcmd_drvinfo_callback(__rte_unused void *ptr_params,
|
||||
__rte_unused void *ptr_data)
|
||||
{
|
||||
struct ethtool_drvinfo info;
|
||||
int id_port;
|
||||
uint16_t id_port;
|
||||
|
||||
for (id_port = 0; id_port < rte_eth_dev_count(); id_port++) {
|
||||
RTE_ETH_FOREACH_DEV(id_port) {
|
||||
memset(&info, 0, sizeof(info));
|
||||
if (rte_ethtool_get_drvinfo(id_port, &info)) {
|
||||
printf("Error getting info for port %i\n", id_port);
|
||||
@ -167,10 +167,10 @@ pcmd_link_callback(__rte_unused void *ptr_params,
|
||||
__rte_unused struct cmdline *ctx,
|
||||
__rte_unused void *ptr_data)
|
||||
{
|
||||
int num_ports = rte_eth_dev_count();
|
||||
int id_port, stat_port;
|
||||
uint16_t id_port;
|
||||
int stat_port;
|
||||
|
||||
for (id_port = 0; id_port < num_ports; id_port++) {
|
||||
RTE_ETH_FOREACH_DEV(id_port) {
|
||||
if (!rte_eth_dev_is_valid_port(id_port))
|
||||
continue;
|
||||
stat_port = rte_ethtool_get_link(id_port);
|
||||
|
@ -339,10 +339,9 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool)
|
||||
}
|
||||
|
||||
static int
|
||||
init_ports(unsigned int num_ports)
|
||||
init_ports(uint16_t num_ports)
|
||||
{
|
||||
uint8_t portid;
|
||||
unsigned int i;
|
||||
uint16_t portid, i;
|
||||
|
||||
if (!cdata.num_mbuf)
|
||||
cdata.num_mbuf = 16384 * num_ports;
|
||||
@ -354,12 +353,12 @@ init_ports(unsigned int num_ports)
|
||||
/* data_room_size */ RTE_MBUF_DEFAULT_BUF_SIZE,
|
||||
rte_socket_id());
|
||||
|
||||
for (portid = 0; portid < num_ports; portid++)
|
||||
RTE_ETH_FOREACH_DEV(portid)
|
||||
if (port_init(portid, mp) != 0)
|
||||
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu8 "\n",
|
||||
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu16 "\n",
|
||||
portid);
|
||||
|
||||
for (i = 0; i < num_ports; i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
void *userdata = (void *)(uintptr_t) i;
|
||||
fdata->tx_buf[i] =
|
||||
rte_malloc(NULL, RTE_ETH_TX_BUFFER_SIZE(32), 0);
|
||||
@ -375,13 +374,13 @@ init_ports(unsigned int num_ports)
|
||||
}
|
||||
|
||||
static void
|
||||
do_capability_setup(uint16_t nb_ethdev, uint8_t eventdev_id)
|
||||
do_capability_setup(uint8_t eventdev_id)
|
||||
{
|
||||
int i;
|
||||
uint16_t i;
|
||||
uint8_t mt_unsafe = 0;
|
||||
uint8_t burst = 0;
|
||||
|
||||
for (i = 0; i < nb_ethdev; i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
struct rte_eth_dev_info dev_info;
|
||||
memset(&dev_info, 0, sizeof(struct rte_eth_dev_info));
|
||||
|
||||
@ -483,7 +482,7 @@ main(int argc, char **argv)
|
||||
fprintf(stderr, "Warning: More than one eventdev, using idx 0");
|
||||
|
||||
|
||||
do_capability_setup(num_ports, 0);
|
||||
do_capability_setup(0);
|
||||
fdata->cap.check_opt();
|
||||
|
||||
worker_data = rte_calloc(0, cdata.num_workers,
|
||||
|
@ -138,7 +138,7 @@ consumer(void)
|
||||
&packet, 1, 0);
|
||||
|
||||
if (n == 0) {
|
||||
for (i = 0; i < rte_eth_dev_count(); i++)
|
||||
RTE_ETH_FOREACH_DEV(i)
|
||||
rte_eth_tx_buffer_flush(i, 0, fdata->tx_buf[i]);
|
||||
return 0;
|
||||
}
|
||||
@ -196,14 +196,13 @@ consumer_burst(void)
|
||||
unsigned int i, j;
|
||||
uint8_t dev_id = cons_data.dev_id;
|
||||
uint8_t port_id = cons_data.port_id;
|
||||
uint16_t nb_ports = rte_eth_dev_count();
|
||||
|
||||
do {
|
||||
uint16_t n = rte_event_dequeue_burst(dev_id, port_id,
|
||||
packets, RTE_DIM(packets), 0);
|
||||
|
||||
if (n == 0) {
|
||||
for (j = 0; j < nb_ports; j++)
|
||||
RTE_ETH_FOREACH_DEV(j)
|
||||
rte_eth_tx_buffer_flush(j, 0, fdata->tx_buf[j]);
|
||||
return 0;
|
||||
}
|
||||
@ -521,7 +520,7 @@ generic_opt_check(void)
|
||||
rte_exit(EXIT_FAILURE,
|
||||
"Event dev doesn't support all type queues\n");
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
ret = rte_event_eth_rx_adapter_caps_get(0, i, &cap);
|
||||
if (ret)
|
||||
rte_exit(EXIT_FAILURE,
|
||||
|
@ -735,7 +735,7 @@ worker_tx_opt_check(void)
|
||||
rte_exit(EXIT_FAILURE,
|
||||
"Event dev doesn't support all type queues\n");
|
||||
|
||||
for (i = 0; i < rte_eth_dev_count(); i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
ret = rte_event_eth_rx_adapter_caps_get(0, i, &cap);
|
||||
if (ret)
|
||||
rte_exit(EXIT_FAILURE,
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -475,7 +475,7 @@ init_port(uint16_t port)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -487,7 +487,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -571,14 +571,14 @@ main(int argc, char** argv)
|
||||
FATAL_ERROR("Port mask requires more ports than available");
|
||||
|
||||
/* Initialise each port */
|
||||
for (port = 0; port < nb_sys_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
/* Skip ports that are not enabled */
|
||||
if ((ports_mask & (1 << port)) == 0) {
|
||||
continue;
|
||||
}
|
||||
init_port(port);
|
||||
}
|
||||
check_all_ports_link_status(nb_sys_ports, ports_mask);
|
||||
check_all_ports_link_status(ports_mask);
|
||||
|
||||
/* Launch per-lcore function on every lcore */
|
||||
rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER);
|
||||
|
@ -6,6 +6,7 @@
|
||||
# To build this example as a standalone application with an already-installed
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -259,8 +259,7 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool)
|
||||
static __attribute__((noreturn)) void
|
||||
lcore_main(struct flow_classifier *cls_app)
|
||||
{
|
||||
const uint8_t nb_ports = rte_eth_dev_count();
|
||||
uint8_t port;
|
||||
uint16_t port;
|
||||
int ret;
|
||||
int i = 0;
|
||||
|
||||
@ -275,7 +274,7 @@ lcore_main(struct flow_classifier *cls_app)
|
||||
* Check that the port is on the same NUMA node as the polling thread
|
||||
* for best performance.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++)
|
||||
RTE_ETH_FOREACH_DEV(port)
|
||||
if (rte_eth_dev_socket_id(port) > 0 &&
|
||||
rte_eth_dev_socket_id(port) != (int)rte_socket_id()) {
|
||||
printf("\n\n");
|
||||
@ -294,7 +293,7 @@ lcore_main(struct flow_classifier *cls_app)
|
||||
* on the paired port.
|
||||
* The mapping is 0 -> 1, 1 -> 0, 2 -> 3, 3 -> 2, etc.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
/* Get burst of RX packets, from first port of pair. */
|
||||
struct rte_mbuf *bufs[BURST_SIZE];
|
||||
const uint16_t nb_rx = rte_eth_rx_burst(port, 0,
|
||||
@ -754,7 +753,7 @@ main(int argc, char *argv[])
|
||||
{
|
||||
struct rte_mempool *mbuf_pool;
|
||||
uint8_t nb_ports;
|
||||
uint8_t portid;
|
||||
uint16_t portid;
|
||||
int ret;
|
||||
int socket_id;
|
||||
struct rte_table_acl_params table_acl_params;
|
||||
@ -789,7 +788,7 @@ main(int argc, char *argv[])
|
||||
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
|
||||
|
||||
/* Initialize all ports. */
|
||||
for (portid = 0; portid < nb_ports; portid++)
|
||||
RTE_ETH_FOREACH_DEV(portid)
|
||||
if (port_init(portid, mbuf_pool) != 0)
|
||||
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu8 "\n",
|
||||
portid);
|
||||
|
@ -24,6 +24,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -49,6 +51,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -571,7 +571,7 @@ print_ethaddr(const char *name, struct ether_addr *eth_addr)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -583,7 +583,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -876,7 +876,7 @@ main(int argc, char **argv)
|
||||
rte_exit(EXIT_FAILURE, "Non-existent ports in portmask!\n");
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
struct rte_eth_rxconf rxq_conf;
|
||||
|
||||
@ -994,7 +994,7 @@ main(int argc, char **argv)
|
||||
printf("\n");
|
||||
|
||||
/* start ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
continue;
|
||||
}
|
||||
@ -1016,7 +1016,7 @@ main(int argc, char **argv)
|
||||
if (init_routing_table() < 0)
|
||||
rte_exit(EXIT_FAILURE, "Cannot init routing table\n");
|
||||
|
||||
check_all_ports_link_status(nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
|
||||
/* launch per-lcore init on every lcore */
|
||||
rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['ip_frag', 'lpm']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -24,6 +24,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -49,6 +51,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -702,7 +702,7 @@ print_ethaddr(const char *name, const struct ether_addr *eth_addr)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -714,7 +714,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -1023,7 +1023,7 @@ main(int argc, char **argv)
|
||||
rte_exit(EXIT_FAILURE, "Non-existent ports in portmask!\n");
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_rxconf rxq_conf;
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
@ -1141,7 +1141,7 @@ main(int argc, char **argv)
|
||||
printf("\n");
|
||||
|
||||
/* start ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
continue;
|
||||
}
|
||||
@ -1157,7 +1157,7 @@ main(int argc, char **argv)
|
||||
if (init_routing_table() < 0)
|
||||
rte_exit(EXIT_FAILURE, "Cannot init routing table\n");
|
||||
|
||||
check_all_ports_link_status(nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
|
||||
signal(SIGUSR1, signal_handler);
|
||||
signal(SIGTERM, signal_handler);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['lpm', 'ip_frag']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -1173,7 +1173,7 @@ print_ethaddr(const char *name, const struct ether_addr *eth_addr)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -1185,7 +1185,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -1383,7 +1383,7 @@ cryptodevs_init(void)
|
||||
if (sess_sz > max_sess_sz)
|
||||
max_sess_sz = sess_sz;
|
||||
}
|
||||
for (port_id = 0; port_id < rte_eth_dev_count(); port_id++) {
|
||||
RTE_ETH_FOREACH_DEV(port_id) {
|
||||
void *sec_ctx;
|
||||
|
||||
if ((enabled_port_mask & (1 << port_id)) == 0)
|
||||
@ -1470,7 +1470,7 @@ cryptodevs_init(void)
|
||||
}
|
||||
|
||||
/* create session pools for eth devices that implement security */
|
||||
for (port_id = 0; port_id < rte_eth_dev_count(); port_id++) {
|
||||
RTE_ETH_FOREACH_DEV(port_id) {
|
||||
if ((enabled_port_mask & (1 << port_id)) &&
|
||||
rte_eth_dev_get_sec_ctx(port_id)) {
|
||||
int socket_id = rte_eth_dev_socket_id(port_id);
|
||||
@ -1646,7 +1646,7 @@ main(int32_t argc, char **argv)
|
||||
int32_t ret;
|
||||
uint32_t lcore_id;
|
||||
uint8_t socket_id;
|
||||
uint16_t portid, nb_ports;
|
||||
uint16_t portid;
|
||||
|
||||
/* init EAL */
|
||||
ret = rte_eal_init(argc, argv);
|
||||
@ -1665,8 +1665,6 @@ main(int32_t argc, char **argv)
|
||||
rte_exit(EXIT_FAILURE, "Invalid unprotected portmask 0x%x\n",
|
||||
unprotected_port_mask);
|
||||
|
||||
nb_ports = rte_eth_dev_count();
|
||||
|
||||
if (check_params() < 0)
|
||||
rte_exit(EXIT_FAILURE, "check_params failed\n");
|
||||
|
||||
@ -1700,7 +1698,7 @@ main(int32_t argc, char **argv)
|
||||
pool_init(&socket_ctx[socket_id], socket_id, NB_MBUF);
|
||||
}
|
||||
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
|
||||
@ -1710,7 +1708,7 @@ main(int32_t argc, char **argv)
|
||||
cryptodevs_init();
|
||||
|
||||
/* start ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
|
||||
@ -1729,7 +1727,7 @@ main(int32_t argc, char **argv)
|
||||
rte_eth_promiscuous_enable(portid);
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
|
||||
/* launch per-lcore init on every lcore */
|
||||
rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER);
|
||||
|
@ -24,6 +24,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -49,6 +51,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -578,7 +578,7 @@ init_mcast_hash(void)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -590,7 +590,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -683,7 +683,7 @@ main(int argc, char **argv)
|
||||
nb_lcores = rte_lcore_count();
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_rxconf rxq_conf;
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
@ -786,7 +786,7 @@ main(int argc, char **argv)
|
||||
printf("done:\n");
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
|
||||
/* initialize the multicast hash */
|
||||
int retval = init_mcast_hash();
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += 'hash'
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -53,6 +55,7 @@ $(error This application can only operate in a linuxapp environment, \
|
||||
please change the definition of the RTE_TARGET environment variable)
|
||||
endif
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -275,7 +275,7 @@ kni_egress(struct kni_port_params *p)
|
||||
static int
|
||||
main_loop(__rte_unused void *arg)
|
||||
{
|
||||
uint8_t i, nb_ports = rte_eth_dev_count();
|
||||
uint16_t i;
|
||||
int32_t f_stop;
|
||||
const unsigned lcore_id = rte_lcore_id();
|
||||
enum lcore_rxtx {
|
||||
@ -286,7 +286,7 @@ main_loop(__rte_unused void *arg)
|
||||
};
|
||||
enum lcore_rxtx flag = LCORE_NONE;
|
||||
|
||||
for (i = 0; i < nb_ports; i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
if (!kni_port_params_array[i])
|
||||
continue;
|
||||
if (kni_port_params_array[i]->lcore_rx == (uint8_t)lcore_id) {
|
||||
@ -626,7 +626,7 @@ init_port(uint16_t port)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -638,7 +638,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -940,7 +940,7 @@ main(int argc, char** argv)
|
||||
init_kni();
|
||||
|
||||
/* Initialise each port */
|
||||
for (port = 0; port < nb_sys_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
/* Skip ports that are not enabled */
|
||||
if (!(ports_mask & (1 << port)))
|
||||
continue;
|
||||
@ -952,7 +952,7 @@ main(int argc, char** argv)
|
||||
|
||||
kni_alloc(port);
|
||||
}
|
||||
check_all_ports_link_status(nb_sys_ports, ports_mask);
|
||||
check_all_ports_link_status(ports_mask);
|
||||
|
||||
/* Launch per-lcore function on every lcore */
|
||||
rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER);
|
||||
@ -962,7 +962,7 @@ main(int argc, char** argv)
|
||||
}
|
||||
|
||||
/* Release resources */
|
||||
for (port = 0; port < nb_sys_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
if (!(ports_mask & (1 << port)))
|
||||
continue;
|
||||
kni_free_kni(port);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['kni', 'bus_pci']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,7 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -D_GNU_SOURCE
|
||||
LDFLAGS += -lpqos
|
||||
|
||||
@ -55,6 +56,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
# workaround for a gcc bug with noreturn attribute
|
||||
|
@ -95,14 +95,13 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
|
||||
static __attribute__((noreturn)) void
|
||||
lcore_main(void)
|
||||
{
|
||||
const uint16_t nb_ports = rte_eth_dev_count();
|
||||
uint16_t port;
|
||||
|
||||
/*
|
||||
* Check that the port is on the same NUMA node as the polling thread
|
||||
* for best performance.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++)
|
||||
RTE_ETH_FOREACH_DEV(port)
|
||||
if (rte_eth_dev_socket_id(port) > 0 &&
|
||||
rte_eth_dev_socket_id(port) !=
|
||||
(int)rte_socket_id())
|
||||
@ -119,7 +118,7 @@ lcore_main(void)
|
||||
* Receive packets on a port and forward them on the paired
|
||||
* port. The mapping is 0 -> 1, 1 -> 0, 2 -> 3, 3 -> 2, etc.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
|
||||
/* Get burst of RX packets, from first port of pair. */
|
||||
struct rte_mbuf *bufs[BURST_SIZE];
|
||||
@ -186,7 +185,7 @@ main(int argc, char *argv[])
|
||||
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
|
||||
|
||||
/* Initialize all ports. */
|
||||
for (portid = 0; portid < nb_ports; portid++)
|
||||
RTE_ETH_FOREACH_DEV(portid)
|
||||
if (port_init(portid, mbuf_pool) != 0)
|
||||
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu16 "\n",
|
||||
portid);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
ext_deps += cc.find_library('pqos')
|
||||
allow_experimental_apis = true
|
||||
cflags += '-D_GNU_SOURCE'
|
||||
cflags += '-I/usr/local/include' # assume pqos lib installed in /usr/local
|
||||
sources = files(
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -1721,7 +1721,7 @@ l2fwd_crypto_parse_args(struct l2fwd_crypto_options *options,
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -1733,7 +1733,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -2309,7 +2309,7 @@ initialize_cryptodevs(struct l2fwd_crypto_options *options, unsigned nb_ports,
|
||||
static int
|
||||
initialize_ports(struct l2fwd_crypto_options *options)
|
||||
{
|
||||
uint16_t last_portid, portid;
|
||||
uint16_t last_portid = 0, portid;
|
||||
unsigned enabled_portcount = 0;
|
||||
unsigned nb_ports = rte_eth_dev_count();
|
||||
|
||||
@ -2322,7 +2322,7 @@ initialize_ports(struct l2fwd_crypto_options *options)
|
||||
for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++)
|
||||
l2fwd_dst_ports[portid] = 0;
|
||||
|
||||
for (last_portid = 0, portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
int retval;
|
||||
struct rte_eth_dev_info dev_info;
|
||||
struct rte_eth_rxconf rxq_conf;
|
||||
@ -2426,7 +2426,7 @@ initialize_ports(struct l2fwd_crypto_options *options)
|
||||
return -1;
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, l2fwd_enabled_port_mask);
|
||||
check_all_ports_link_status(l2fwd_enabled_port_mask);
|
||||
|
||||
return enabled_portcount;
|
||||
}
|
||||
@ -2470,12 +2470,12 @@ reserve_key_memory(struct l2fwd_crypto_options *options)
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
struct lcore_queue_conf *qconf;
|
||||
struct lcore_queue_conf *qconf = NULL;
|
||||
struct l2fwd_crypto_options options;
|
||||
|
||||
uint8_t nb_cryptodevs, cdev_id;
|
||||
uint16_t nb_ports, portid;
|
||||
unsigned lcore_id, rx_lcore_id;
|
||||
uint16_t portid;
|
||||
unsigned lcore_id, rx_lcore_id = 0;
|
||||
int ret, enabled_cdevcount, enabled_portcount;
|
||||
uint8_t enabled_cdevs[RTE_CRYPTO_MAX_DEVS] = {0};
|
||||
|
||||
@ -2516,10 +2516,8 @@ main(int argc, char **argv)
|
||||
if (enabled_portcount < 1)
|
||||
rte_exit(EXIT_FAILURE, "Failed to initial Ethernet ports\n");
|
||||
|
||||
nb_ports = rte_eth_dev_count();
|
||||
/* Initialize the port/queue configuration of each logical core */
|
||||
for (rx_lcore_id = 0, qconf = NULL, portid = 0;
|
||||
portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
|
||||
/* skip ports that are not enabled */
|
||||
if ((options.portmask & (1 << portid)) == 0)
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += 'cryptodev'
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,7 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -680,7 +680,7 @@ l2fwd_parse_args(int argc, char **argv)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -692,7 +692,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -742,7 +742,7 @@ main(int argc, char **argv)
|
||||
int ret;
|
||||
char name[RTE_JOBSTATS_NAMESIZE];
|
||||
uint16_t nb_ports;
|
||||
uint16_t nb_ports_available;
|
||||
uint16_t nb_ports_available = 0;
|
||||
uint16_t portid, last_port;
|
||||
uint8_t i;
|
||||
|
||||
@ -782,7 +782,7 @@ main(int argc, char **argv)
|
||||
/*
|
||||
* Each logical core is assigned a dedicated TX queue on each port.
|
||||
*/
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -804,7 +804,7 @@ main(int argc, char **argv)
|
||||
qconf = NULL;
|
||||
|
||||
/* Initialize the port/queue configuration of each logical core */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -827,10 +827,8 @@ main(int argc, char **argv)
|
||||
printf("Lcore %u: RX port %u\n", rx_lcore_id, portid);
|
||||
}
|
||||
|
||||
nb_ports_available = nb_ports;
|
||||
|
||||
/* Initialise each port */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_dev_info dev_info;
|
||||
struct rte_eth_rxconf rxq_conf;
|
||||
struct rte_eth_txconf txq_conf;
|
||||
@ -839,9 +837,10 @@ main(int argc, char **argv)
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) {
|
||||
printf("Skipping disabled port %u\n", portid);
|
||||
nb_ports_available--;
|
||||
continue;
|
||||
}
|
||||
nb_ports_available++;
|
||||
|
||||
/* init port */
|
||||
printf("Initializing port %u... ", portid);
|
||||
fflush(stdout);
|
||||
@ -934,7 +933,7 @@ main(int argc, char **argv)
|
||||
"All available ports are disabled. Please set portmask.\n");
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, l2fwd_enabled_port_mask);
|
||||
check_all_ports_link_status(l2fwd_enabled_port_mask);
|
||||
|
||||
drain_tsc = (hz + US_PER_S - 1) / US_PER_S * BURST_TX_DRAIN_US;
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['jobstats', 'timer']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -25,6 +25,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -50,6 +52,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
LDFLAGS += -lrt
|
||||
|
@ -445,7 +445,7 @@ l2fwd_parse_args(int argc, char **argv)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -457,7 +457,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -526,7 +526,7 @@ main(int argc, char **argv)
|
||||
struct lcore_queue_conf *qconf;
|
||||
int ret;
|
||||
uint16_t nb_ports;
|
||||
uint16_t nb_ports_available;
|
||||
uint16_t nb_ports_available = 0;
|
||||
uint16_t portid, last_port;
|
||||
unsigned lcore_id, rx_lcore_id;
|
||||
unsigned nb_ports_in_mask = 0;
|
||||
@ -573,7 +573,7 @@ main(int argc, char **argv)
|
||||
/*
|
||||
* Each logical core is assigned a dedicated TX queue on each port.
|
||||
*/
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -595,7 +595,7 @@ main(int argc, char **argv)
|
||||
qconf = NULL;
|
||||
|
||||
/* Initialize the port/queue configuration of each logical core */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -619,10 +619,8 @@ main(int argc, char **argv)
|
||||
rx_lcore_id, portid);
|
||||
}
|
||||
|
||||
nb_ports_available = nb_ports;
|
||||
|
||||
/* Initialise each port */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_dev_info dev_info;
|
||||
struct rte_eth_rxconf rxq_conf;
|
||||
struct rte_eth_txconf txq_conf;
|
||||
@ -631,9 +629,10 @@ main(int argc, char **argv)
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) {
|
||||
printf("Skipping disabled port %u\n", portid);
|
||||
nb_ports_available--;
|
||||
continue;
|
||||
}
|
||||
nb_ports_available++;
|
||||
|
||||
/* init port */
|
||||
printf("Initializing port %u... ", portid);
|
||||
fflush(stdout);
|
||||
@ -728,7 +727,7 @@ main(int argc, char **argv)
|
||||
"All available ports are disabled. Please set portmask.\n");
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, l2fwd_enabled_port_mask);
|
||||
check_all_ports_link_status(l2fwd_enabled_port_mask);
|
||||
|
||||
struct rte_timer hb_timer, stats_timer;
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
ext_deps += cc.find_library('rt')
|
||||
deps += 'timer'
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c', 'shm.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -444,7 +444,7 @@ l2fwd_parse_args(int argc, char **argv)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -458,7 +458,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
if (force_quit)
|
||||
return;
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if (force_quit)
|
||||
return;
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
@ -517,7 +517,7 @@ main(int argc, char **argv)
|
||||
struct lcore_queue_conf *qconf;
|
||||
int ret;
|
||||
uint16_t nb_ports;
|
||||
uint16_t nb_ports_available;
|
||||
uint16_t nb_ports_available = 0;
|
||||
uint16_t portid, last_port;
|
||||
unsigned lcore_id, rx_lcore_id;
|
||||
unsigned nb_ports_in_mask = 0;
|
||||
@ -562,7 +562,7 @@ main(int argc, char **argv)
|
||||
/*
|
||||
* Each logical core is assigned a dedicated TX queue on each port.
|
||||
*/
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -585,7 +585,7 @@ main(int argc, char **argv)
|
||||
qconf = NULL;
|
||||
|
||||
/* Initialize the port/queue configuration of each logical core */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -610,8 +610,6 @@ main(int argc, char **argv)
|
||||
printf("Lcore %u: RX port %u\n", rx_lcore_id, portid);
|
||||
}
|
||||
|
||||
nb_ports_available = nb_ports;
|
||||
|
||||
nb_mbufs = RTE_MAX(nb_ports * (nb_rxd + nb_txd + MAX_PKT_BURST +
|
||||
nb_lcores * MEMPOOL_CACHE_SIZE), 8192U);
|
||||
|
||||
@ -623,7 +621,7 @@ main(int argc, char **argv)
|
||||
rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n");
|
||||
|
||||
/* Initialise each port */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_rxconf rxq_conf;
|
||||
struct rte_eth_txconf txq_conf;
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
@ -632,9 +630,10 @@ main(int argc, char **argv)
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) {
|
||||
printf("Skipping disabled port %u\n", portid);
|
||||
nb_ports_available--;
|
||||
continue;
|
||||
}
|
||||
nb_ports_available++;
|
||||
|
||||
/* init port */
|
||||
printf("Initializing port %u... ", portid);
|
||||
fflush(stdout);
|
||||
@ -726,7 +725,7 @@ main(int argc, char **argv)
|
||||
"All available ports are disabled. Please set portmask.\n");
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, l2fwd_enabled_port_mask);
|
||||
check_all_ports_link_status(l2fwd_enabled_port_mask);
|
||||
|
||||
ret = 0;
|
||||
/* launch per-lcore init on every lcore */
|
||||
@ -738,7 +737,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
printf("Closing port %d...", portid);
|
||||
|
@ -6,6 +6,7 @@
|
||||
# To build this example as a standalone application with an already-installed
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -1805,7 +1805,7 @@ init_mem(unsigned nb_mbuf)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -1817,7 +1817,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -1903,7 +1903,7 @@ main(int argc, char **argv)
|
||||
nb_lcores = rte_lcore_count();
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
/* skip ports that are not enabled */
|
||||
@ -2043,7 +2043,7 @@ main(int argc, char **argv)
|
||||
printf("\n");
|
||||
|
||||
/* start ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
|
||||
@ -2064,7 +2064,7 @@ main(int argc, char **argv)
|
||||
rte_eth_promiscuous_enable(portid);
|
||||
}
|
||||
|
||||
check_all_ports_link_status((uint8_t)nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
|
||||
/* launch per-lcore init on every lcore */
|
||||
rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['acl', 'lpm', 'hash']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -54,6 +56,7 @@ please change the definition of the RTE_TARGET environment variable)
|
||||
all:
|
||||
else
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -341,7 +341,7 @@ static void
|
||||
signal_exit_now(int sigtype)
|
||||
{
|
||||
unsigned lcore_id;
|
||||
unsigned int portid, nb_ports;
|
||||
unsigned int portid;
|
||||
int ret;
|
||||
|
||||
if (sigtype == SIGINT) {
|
||||
@ -357,8 +357,7 @@ signal_exit_now(int sigtype)
|
||||
"core%u\n", lcore_id);
|
||||
}
|
||||
|
||||
nb_ports = rte_eth_dev_count();
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
|
||||
@ -1512,7 +1511,7 @@ init_mem(unsigned nb_mbuf)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -1524,7 +1523,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -1659,7 +1658,7 @@ main(int argc, char **argv)
|
||||
nb_lcores = rte_lcore_count();
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
/* skip ports that are not enabled */
|
||||
@ -1834,7 +1833,7 @@ main(int argc, char **argv)
|
||||
printf("\n");
|
||||
|
||||
/* start ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
continue;
|
||||
}
|
||||
@ -1855,7 +1854,7 @@ main(int argc, char **argv)
|
||||
rte_spinlock_init(&(locks[portid]));
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
|
||||
/* launch per-lcore init on every lcore */
|
||||
rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['power', 'timer', 'lpm', 'hash']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3 $(USER_FLAGS)
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -648,11 +648,10 @@ static void
|
||||
signal_handler(int signum)
|
||||
{
|
||||
uint16_t portid;
|
||||
uint16_t nb_ports = rte_eth_dev_count();
|
||||
|
||||
/* When we receive a SIGINT signal */
|
||||
if (signum == SIGINT) {
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -958,7 +957,7 @@ main(int argc, char **argv)
|
||||
nb_lcores = rte_lcore_count();
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
/* skip ports that are not enabled */
|
||||
@ -1063,7 +1062,7 @@ main(int argc, char **argv)
|
||||
printf("\n");
|
||||
|
||||
/* start ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
continue;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['lpm', 'hash']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -I$(SRCDIR)
|
||||
CFLAGS += -O3 $(USER_FLAGS)
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
@ -694,7 +694,7 @@ init_mem(unsigned nb_mbuf)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -708,7 +708,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
if (force_quit)
|
||||
return;
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if (force_quit)
|
||||
return;
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
@ -837,7 +837,7 @@ main(int argc, char **argv)
|
||||
setup_l3fwd_lookup_tables();
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
/* skip ports that are not enabled */
|
||||
@ -971,7 +971,7 @@ main(int argc, char **argv)
|
||||
printf("\n");
|
||||
|
||||
/* start ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
continue;
|
||||
}
|
||||
@ -1007,7 +1007,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
|
||||
|
||||
check_all_ports_link_status(nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
|
||||
ret = 0;
|
||||
/* launch per-lcore init on every lcore */
|
||||
@ -1020,7 +1020,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* stop ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
printf("Closing port %d...", portid);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['hash', 'lpm']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'l3fwd_em.c', 'l3fwd_lpm.c', 'main.c'
|
||||
)
|
||||
|
@ -16,6 +16,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -838,7 +838,7 @@ l2fwd_parse_args(int argc, char **argv)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -850,7 +850,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -897,7 +897,7 @@ main(int argc, char **argv)
|
||||
struct lcore_queue_conf *qconf;
|
||||
int ret;
|
||||
uint16_t nb_ports;
|
||||
uint16_t nb_ports_available;
|
||||
uint16_t nb_ports_available = 0;
|
||||
uint16_t portid, last_port;
|
||||
unsigned rx_lcore_id;
|
||||
unsigned nb_ports_in_mask = 0;
|
||||
@ -946,7 +946,7 @@ main(int argc, char **argv)
|
||||
rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n");
|
||||
|
||||
/* create the mbuf pool */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -969,7 +969,7 @@ main(int argc, char **argv)
|
||||
/*
|
||||
* Each logical core is assigned a dedicated TX queue on each port.
|
||||
*/
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
@ -992,7 +992,7 @@ main(int argc, char **argv)
|
||||
qconf = NULL;
|
||||
|
||||
/* Initialize the port/queue configuration of each logical core */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct lcore_resource_struct *res;
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0)
|
||||
@ -1025,10 +1025,8 @@ main(int argc, char **argv)
|
||||
printf("Lcore %u: RX port %u\n", rx_lcore_id, (unsigned) portid);
|
||||
}
|
||||
|
||||
nb_ports_available = nb_ports;
|
||||
|
||||
/* Initialise each port */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_rxconf rxq_conf;
|
||||
struct rte_eth_txconf txq_conf;
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
@ -1036,9 +1034,9 @@ main(int argc, char **argv)
|
||||
/* skip ports that are not enabled */
|
||||
if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) {
|
||||
printf("Skipping disabled port %u\n", (unsigned) portid);
|
||||
nb_ports_available--;
|
||||
continue;
|
||||
}
|
||||
nb_ports_available++;
|
||||
/* init port */
|
||||
printf("Initializing port %u... ", (unsigned) portid);
|
||||
fflush(stdout);
|
||||
@ -1129,7 +1127,7 @@ main(int argc, char **argv)
|
||||
"All available ports are disabled. Please set portmask.\n");
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, l2fwd_enabled_port_mask);
|
||||
check_all_ports_link_status(l2fwd_enabled_port_mask);
|
||||
|
||||
/* Record pair lcore */
|
||||
/**
|
||||
@ -1140,7 +1138,7 @@ main(int argc, char **argv)
|
||||
* procedure completed. So, record the pair relationship for those lcores working
|
||||
* on ports.
|
||||
**/
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
uint32_t pair_port;
|
||||
unsigned lcore = 0, pair_lcore = 0;
|
||||
unsigned j, find_lcore, find_pair_lcore;
|
||||
|
@ -16,6 +16,7 @@ APP = symmetric_mp
|
||||
# all source are stored in SRCS-y
|
||||
SRCS-y := main.c
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -115,7 +115,7 @@ smp_parse_args(int argc, char **argv)
|
||||
int opt, ret;
|
||||
char **argvopt;
|
||||
int option_index;
|
||||
unsigned i, port_mask = 0;
|
||||
uint16_t i, port_mask = 0;
|
||||
char *prgname = argv[0];
|
||||
static struct option lgopts[] = {
|
||||
{PARAM_NUM_PROCS, 1, 0, 0},
|
||||
@ -156,7 +156,7 @@ smp_parse_args(int argc, char **argv)
|
||||
smp_usage(prgname, "Invalid or missing port mask\n");
|
||||
|
||||
/* get the port numbers from the port mask */
|
||||
for(i = 0; i < rte_eth_dev_count(); i++)
|
||||
RTE_ETH_FOREACH_DEV(i)
|
||||
if(port_mask & (1 << i))
|
||||
ports[num_ports++] = (uint8_t)i;
|
||||
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -211,11 +211,10 @@ flush_tx_error_callback(struct rte_mbuf **unsent, uint16_t count,
|
||||
|
||||
static inline int
|
||||
free_tx_buffers(struct rte_eth_dev_tx_buffer *tx_buffer[]) {
|
||||
const uint8_t nb_ports = rte_eth_dev_count();
|
||||
unsigned port_id;
|
||||
uint16_t port_id;
|
||||
|
||||
/* initialize buffers for all ports */
|
||||
for (port_id = 0; port_id < nb_ports; port_id++) {
|
||||
RTE_ETH_FOREACH_DEV(port_id) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((portmask & (1 << port_id)) == 0)
|
||||
continue;
|
||||
@ -228,12 +227,11 @@ free_tx_buffers(struct rte_eth_dev_tx_buffer *tx_buffer[]) {
|
||||
static inline int
|
||||
configure_tx_buffers(struct rte_eth_dev_tx_buffer *tx_buffer[])
|
||||
{
|
||||
const uint8_t nb_ports = rte_eth_dev_count();
|
||||
unsigned port_id;
|
||||
uint16_t port_id;
|
||||
int ret;
|
||||
|
||||
/* initialize buffers for all ports */
|
||||
for (port_id = 0; port_id < nb_ports; port_id++) {
|
||||
RTE_ETH_FOREACH_DEV(port_id) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((portmask & (1 << port_id)) == 0)
|
||||
continue;
|
||||
@ -325,8 +323,7 @@ configure_eth_port(uint16_t port_id)
|
||||
static void
|
||||
print_stats(void)
|
||||
{
|
||||
const uint8_t nb_ports = rte_eth_dev_count();
|
||||
unsigned i;
|
||||
uint16_t i;
|
||||
struct rte_eth_stats eth_stats;
|
||||
|
||||
printf("\nRX thread stats:\n");
|
||||
@ -355,7 +352,7 @@ print_stats(void)
|
||||
printf(" - Pkts tx failed w/o reorder: %"PRIu64"\n",
|
||||
app_stats.tx.early_pkts_tx_failed_woro);
|
||||
|
||||
for (i = 0; i < nb_ports; i++) {
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
rte_eth_stats_get(i, ð_stats);
|
||||
printf("\nPort %u stats:\n", i);
|
||||
printf(" - Pkts in: %"PRIu64"\n", eth_stats.ipackets);
|
||||
@ -383,7 +380,6 @@ int_handler(int sig_num)
|
||||
static int
|
||||
rx_thread(struct rte_ring *ring_out)
|
||||
{
|
||||
const uint8_t nb_ports = rte_eth_dev_count();
|
||||
uint32_t seqn = 0;
|
||||
uint16_t i, ret = 0;
|
||||
uint16_t nb_rx_pkts;
|
||||
@ -395,7 +391,7 @@ rx_thread(struct rte_ring *ring_out)
|
||||
|
||||
while (!quit_signal) {
|
||||
|
||||
for (port_id = 0; port_id < nb_ports; port_id++) {
|
||||
RTE_ETH_FOREACH_DEV(port_id) {
|
||||
if ((portmask & (1 << port_id)) != 0) {
|
||||
|
||||
/* receive packets */
|
||||
@ -665,7 +661,7 @@ main(int argc, char **argv)
|
||||
nb_ports_available = nb_ports;
|
||||
|
||||
/* initialize all ports */
|
||||
for (port_id = 0; port_id < nb_ports; port_id++) {
|
||||
RTE_ETH_FOREACH_DEV(port_id) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((portmask & (1 << port_id)) == 0) {
|
||||
printf("\nSkipping disabled port %d\n", port_id);
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += 'reorder'
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -18,6 +18,7 @@ SRCS-y := main.c
|
||||
|
||||
include $(RTE_SDK)/examples/performance-thread/common/common.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3 -g $(USER_FLAGS) $(INCLUDES) $(WERROR_FLAGS)
|
||||
|
||||
# workaround for a gcc bug with noreturn attribute
|
||||
|
@ -3411,7 +3411,7 @@ init_mem(unsigned nb_mbuf)
|
||||
|
||||
/* Check the link status of all ports in up to 9s, and print them finally */
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -3423,7 +3423,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
fflush(stdout);
|
||||
for (count = 0; count <= MAX_CHECK_TIME; count++) {
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
memset(&link, 0, sizeof(link));
|
||||
@ -3522,7 +3522,7 @@ main(int argc, char **argv)
|
||||
nb_lcores = rte_lcore_count();
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
/* skip ports that are not enabled */
|
||||
@ -3654,7 +3654,7 @@ main(int argc, char **argv)
|
||||
printf("\n");
|
||||
|
||||
/* start ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
|
||||
@ -3699,7 +3699,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
check_all_ports_link_status((uint8_t)nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
|
||||
if (lthreads_on) {
|
||||
printf("Starting L-Threading Model\n");
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
# To build this example as a standalone application with an already-installed
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'ptpclient.c'
|
||||
)
|
||||
|
@ -737,7 +737,7 @@ main(int argc, char *argv[])
|
||||
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
|
||||
|
||||
/* Initialize all ports. */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((ptp_enabled_port_mask & (1 << portid)) != 0) {
|
||||
if (port_init(portid, mbuf_pool) == 0) {
|
||||
ptp_enabled_ports[ptp_enabled_port_nb] = portid;
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
# workaround for a gcc bug with noreturn attribute
|
||||
|
@ -24,8 +24,6 @@ static const struct rte_eth_conf port_conf_default = {
|
||||
},
|
||||
};
|
||||
|
||||
static unsigned nb_ports;
|
||||
|
||||
static struct {
|
||||
uint64_t total_cycles;
|
||||
uint64_t total_pkts;
|
||||
@ -145,7 +143,7 @@ lcore_main(void)
|
||||
{
|
||||
uint16_t port;
|
||||
|
||||
for (port = 0; port < nb_ports; port++)
|
||||
RTE_ETH_FOREACH_DEV(port)
|
||||
if (rte_eth_dev_socket_id(port) > 0 &&
|
||||
rte_eth_dev_socket_id(port) !=
|
||||
(int)rte_socket_id())
|
||||
@ -156,7 +154,7 @@ lcore_main(void)
|
||||
printf("\nCore %u forwarding packets. [Ctrl+C to quit]\n",
|
||||
rte_lcore_id());
|
||||
for (;;) {
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
struct rte_mbuf *bufs[BURST_SIZE];
|
||||
const uint16_t nb_rx = rte_eth_rx_burst(port, 0,
|
||||
bufs, BURST_SIZE);
|
||||
@ -179,6 +177,7 @@ int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct rte_mempool *mbuf_pool;
|
||||
uint16_t nb_ports;
|
||||
uint16_t portid;
|
||||
|
||||
/* init EAL */
|
||||
@ -200,7 +199,7 @@ main(int argc, char *argv[])
|
||||
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++)
|
||||
RTE_ETH_FOREACH_DEV(portid)
|
||||
if (port_init(portid, mbuf_pool) != 0)
|
||||
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu8"\n",
|
||||
portid);
|
||||
|
@ -6,6 +6,7 @@
|
||||
# To build this example as a standalone application with an already-installed
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
# workaround for a gcc bug with noreturn attribute
|
||||
|
@ -106,14 +106,13 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
|
||||
static __attribute__((noreturn)) void
|
||||
lcore_main(void)
|
||||
{
|
||||
const uint16_t nb_ports = rte_eth_dev_count();
|
||||
uint16_t port;
|
||||
|
||||
/*
|
||||
* Check that the port is on the same NUMA node as the polling thread
|
||||
* for best performance.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++)
|
||||
RTE_ETH_FOREACH_DEV(port)
|
||||
if (rte_eth_dev_socket_id(port) > 0 &&
|
||||
rte_eth_dev_socket_id(port) !=
|
||||
(int)rte_socket_id())
|
||||
@ -130,7 +129,7 @@ lcore_main(void)
|
||||
* Receive packets on a port and forward them on the paired
|
||||
* port. The mapping is 0 -> 1, 1 -> 0, 2 -> 3, 3 -> 2, etc.
|
||||
*/
|
||||
for (port = 0; port < nb_ports; port++) {
|
||||
RTE_ETH_FOREACH_DEV(port) {
|
||||
|
||||
/* Get burst of RX packets, from first port of pair. */
|
||||
struct rte_mbuf *bufs[BURST_SIZE];
|
||||
@ -186,7 +185,7 @@ main(int argc, char *argv[])
|
||||
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
|
||||
|
||||
/* Initialize all ports. */
|
||||
for (portid = 0; portid < nb_ports; portid++)
|
||||
RTE_ETH_FOREACH_DEV(portid)
|
||||
if (port_init(portid, mbuf_pool) != 0)
|
||||
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu16 "\n",
|
||||
portid);
|
||||
|
@ -6,6 +6,7 @@
|
||||
# To build this example as a standalone application with an already-installed
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'basicfwd.c'
|
||||
)
|
||||
|
@ -25,6 +25,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -55,6 +57,7 @@ $(error This application can only operate in a linuxapp environment, \
|
||||
please change the definition of the RTE_TARGET environment variable)
|
||||
endif
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
CFLAGS += -D_GNU_SOURCE
|
||||
|
@ -1185,7 +1185,7 @@ main(int argc, char *argv[])
|
||||
vpool_array[queue_id].pool = mbuf_pool;
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
RTE_LOG(INFO, VHOST_PORT,
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += ['hash', 'vhost']
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c', 'vxlan.c', 'vxlan_setup.c'
|
||||
)
|
||||
|
@ -25,6 +25,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -56,6 +58,7 @@ please change the definition of the RTE_TARGET environment variable)
|
||||
all:
|
||||
else
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O2 -D_FILE_OFFSET_BITS=64
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
CFLAGS += -D_GNU_SOURCE
|
||||
|
@ -1477,7 +1477,7 @@ main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
RTE_LOG(INFO, VHOST_PORT,
|
||||
|
@ -7,6 +7,7 @@
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
deps += 'vhost'
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c', 'virtio_net.c'
|
||||
)
|
||||
|
@ -21,6 +21,7 @@ APP = vm_power_mgr
|
||||
SRCS-y := main.c vm_power_cli.c power_manager.c channel_manager.c
|
||||
SRCS-y += channel_monitor.c
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += -O3 -I$(RTE_SDK)/lib/librte_power/
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -110,12 +110,11 @@ static int
|
||||
get_pfid(struct policy *pol)
|
||||
{
|
||||
|
||||
int i, x, ret = 0, nb_ports;
|
||||
int i, x, ret = 0;
|
||||
|
||||
nb_ports = rte_eth_dev_count();
|
||||
for (i = 0; i < pol->pkt.nb_mac_to_monitor; i++) {
|
||||
|
||||
for (x = 0; x < nb_ports; x++) {
|
||||
RTE_ETH_FOREACH_DEV(x) {
|
||||
ret = rte_pmd_i40e_query_vfid_by_mac(x,
|
||||
(struct ether_addr *)&(pol->pkt.vfid[i]));
|
||||
if (ret != -EINVAL) {
|
||||
|
@ -176,7 +176,7 @@ parse_args(int argc, char **argv)
|
||||
}
|
||||
|
||||
static void
|
||||
check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
check_all_ports_link_status(uint32_t port_mask)
|
||||
{
|
||||
#define CHECK_INTERVAL 100 /* 100ms */
|
||||
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
|
||||
@ -189,7 +189,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
|
||||
if (force_quit)
|
||||
return;
|
||||
all_ports_up = 1;
|
||||
for (portid = 0; portid < port_num; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if (force_quit)
|
||||
return;
|
||||
if ((port_mask & (1 << portid)) == 0)
|
||||
@ -287,7 +287,7 @@ main(int argc, char **argv)
|
||||
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
|
||||
|
||||
/* Initialize ports. */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
struct ether_addr eth;
|
||||
int w, j;
|
||||
int ret;
|
||||
@ -339,7 +339,7 @@ main(int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
check_all_ports_link_status(nb_ports, enabled_port_mask);
|
||||
check_all_ports_link_status(enabled_port_mask);
|
||||
rte_eal_remote_launch(run_monitor, NULL, lcore_id);
|
||||
|
||||
if (power_manager_init() < 0) {
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
EXTRA_CFLAGS += -O3
|
||||
|
@ -600,7 +600,7 @@ main(int argc, char *argv[])
|
||||
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
|
||||
|
||||
/* initialize all ports */
|
||||
for (portid = 0; portid < nb_ports; portid++) {
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
/* skip ports that are not enabled */
|
||||
if ((enabled_port_mask & (1 << portid)) == 0) {
|
||||
printf("\nSkipping disabled port %d\n", portid);
|
||||
|
@ -6,6 +6,7 @@
|
||||
# To build this example as a standalone application with an already-installed
|
||||
# DPDK instance, use 'make'
|
||||
|
||||
allow_experimental_apis = true
|
||||
sources = files(
|
||||
'main.c'
|
||||
)
|
||||
|
@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
|
||||
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
|
||||
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
|
||||
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
|
||||
|
||||
@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
# workaround for a gcc bug with noreturn attribute
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user