diff options
Diffstat (limited to 'examples/bond')
-rw-r--r-- | examples/bond/Makefile | 3 | ||||
-rw-r--r-- | examples/bond/main.c | 25 | ||||
-rw-r--r-- | examples/bond/meson.build | 1 |
3 files changed, 21 insertions, 8 deletions
diff --git a/examples/bond/Makefile b/examples/bond/Makefile index 44d10d4f..d6e500aa 100644 --- a/examples/bond/Makefile +++ b/examples/bond/Makefile @@ -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) @@ -59,6 +61,7 @@ CFLAGS_main.o += -Wno-return-type endif CFLAGS += -O3 +CFLAGS += -DALLOW_EXPERIMENTAL_API ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) LDLIBS += -lrte_pmd_bond diff --git a/examples/bond/main.c b/examples/bond/main.c index 455f108e..23d0981a 100644 --- a/examples/bond/main.c +++ b/examples/bond/main.c @@ -122,7 +122,6 @@ static struct rte_eth_conf port_conf = { .mq_mode = ETH_MQ_RX_NONE, .max_rx_pkt_len = ETHER_MAX_LEN, .split_hdr_size = 0, - .ignore_offload_bitfield = 1, .offloads = DEV_RX_OFFLOAD_CRC_STRIP, }, .rx_adv_conf = { @@ -147,13 +146,25 @@ slave_port_init(uint16_t portid, struct rte_mempool *mbuf_pool) struct rte_eth_txconf txq_conf; struct rte_eth_conf local_port_conf = port_conf; - if (portid >= rte_eth_dev_count()) + if (!rte_eth_dev_is_valid_port(portid)) rte_exit(EXIT_FAILURE, "Invalid port\n"); rte_eth_dev_info_get(portid, &dev_info); if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE) local_port_conf.txmode.offloads |= DEV_TX_OFFLOAD_MBUF_FAST_FREE; + + local_port_conf.rx_adv_conf.rss_conf.rss_hf &= + dev_info.flow_type_rss_offloads; + if (local_port_conf.rx_adv_conf.rss_conf.rss_hf != + port_conf.rx_adv_conf.rss_conf.rss_hf) { + printf("Port %u modified RSS hash function based on hardware support," + "requested:%#"PRIx64" configured:%#"PRIx64"\n", + portid, + port_conf.rx_adv_conf.rss_conf.rss_hf, + local_port_conf.rx_adv_conf.rss_conf.rss_hf); + } + retval = rte_eth_dev_configure(portid, 1, 1, &local_port_conf); if (retval != 0) rte_exit(EXIT_FAILURE, "port %u: configuration failed (res=%d)\n", @@ -177,7 +188,6 @@ slave_port_init(uint16_t portid, struct rte_mempool *mbuf_pool) /* TX setup */ txq_conf = dev_info.default_txconf; - txq_conf.txq_flags = ETH_TXQ_FLAGS_IGNORE; txq_conf.offloads = local_port_conf.txmode.offloads; retval = rte_eth_tx_queue_setup(portid, 0, nb_txd, rte_eth_dev_socket_id(portid), &txq_conf); @@ -246,7 +256,6 @@ bond_port_init(struct rte_mempool *mbuf_pool) /* TX setup */ txq_conf = dev_info.default_txconf; - txq_conf.txq_flags = ETH_TXQ_FLAGS_IGNORE; txq_conf.offloads = local_port_conf.txmode.offloads; retval = rte_eth_tx_queue_setup(BOND_PORT, 0, nb_txd, rte_eth_dev_socket_id(BOND_PORT), &txq_conf); @@ -738,17 +747,17 @@ 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); - rte_eal_devargs_dump(stdout); + rte_devargs_dump(stdout); if (ret < 0) rte_exit(EXIT_FAILURE, "Error with EAL initialization\n"); argc -= ret; argv += ret; - nb_ports = rte_eth_dev_count(); + nb_ports = rte_eth_dev_count_avail(); if (nb_ports == 0) rte_exit(EXIT_FAILURE, "Give at least one port\n"); else if (nb_ports > MAX_PORTS) @@ -761,7 +770,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; } diff --git a/examples/bond/meson.build b/examples/bond/meson.build index 8f65e4a8..82e355a4 100644 --- a/examples/bond/meson.build +++ b/examples/bond/meson.build @@ -7,6 +7,7 @@ # DPDK instance, use 'make' deps += 'pmd_bond' +allow_experimental_apis = true sources = files( 'main.c' ) |