examples: fix RSS hash function configuration
ethdev layer introduced checks for application requested RSS hash
functions and returns error for ones unsupported by hardware
This check breaks some sample applications which blindly configures
RSS hash functions without checking underlying hardware support.
Updated examples to mask out unsupported RSS has functions during device
configuration.
Prints a log if configuration values updated by this check.
Fixes: aa1a6d87f1
("ethdev: force RSS offload rules again")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Meijuan Zhao <meijuanx.zhao@intel.com>
Tested-by: Yingya Han <yingyax.han@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
This commit is contained in:
parent
69bce06213
commit
4f5701f28b
@ -700,10 +700,23 @@ perf_ethdev_setup(struct evt_test *test, struct evt_options *opt)
|
||||
}
|
||||
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
struct rte_eth_dev_info dev_info;
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
if (rte_eth_dev_configure(i, 1, 1,
|
||||
&port_conf)
|
||||
< 0) {
|
||||
rte_eth_dev_info_get(i, &dev_info);
|
||||
|
||||
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) {
|
||||
evt_info("Port %u modified RSS hash function based on hardware support,"
|
||||
"requested:%#"PRIx64" configured:%#"PRIx64"\n",
|
||||
i,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf,
|
||||
local_port_conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
if (rte_eth_dev_configure(i, 1, 1, &local_port_conf) < 0) {
|
||||
evt_err("Failed to configure eth port [%d]", i);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -240,16 +240,27 @@ pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
|
||||
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
struct rte_eth_dev_info dev_info;
|
||||
struct rte_eth_conf local_port_conf = port_conf;
|
||||
|
||||
memset(&dev_info, 0, sizeof(struct rte_eth_dev_info));
|
||||
rte_eth_dev_info_get(i, &dev_info);
|
||||
mt_state = !(dev_info.tx_offload_capa &
|
||||
DEV_TX_OFFLOAD_MT_LOCKFREE);
|
||||
rx_conf = dev_info.default_rxconf;
|
||||
rx_conf.offloads = port_conf.rxmode.offloads;
|
||||
|
||||
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) {
|
||||
evt_info("Port %u modified RSS hash function based on hardware support,"
|
||||
"requested:%#"PRIx64" configured:%#"PRIx64"\n",
|
||||
i,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf,
|
||||
local_port_conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
if (rte_eth_dev_configure(i, nb_queues, nb_queues,
|
||||
&port_conf)
|
||||
&local_port_conf)
|
||||
< 0) {
|
||||
evt_err("Failed to configure eth port [%d]\n", i);
|
||||
return -EINVAL;
|
||||
|
@ -2058,11 +2058,21 @@ cmd_config_rss_parsed(void *parsed_result,
|
||||
rss_conf.rss_key = NULL;
|
||||
/* Update global configuration for RSS types. */
|
||||
RTE_ETH_FOREACH_DEV(i) {
|
||||
if (use_default) {
|
||||
rte_eth_dev_info_get(i, &dev_info);
|
||||
struct rte_eth_rss_conf local_rss_conf;
|
||||
|
||||
rte_eth_dev_info_get(i, &dev_info);
|
||||
if (use_default)
|
||||
rss_conf.rss_hf = dev_info.flow_type_rss_offloads;
|
||||
|
||||
local_rss_conf = rss_conf;
|
||||
local_rss_conf.rss_hf = rss_conf.rss_hf &
|
||||
dev_info.flow_type_rss_offloads;
|
||||
if (local_rss_conf.rss_hf != rss_conf.rss_hf) {
|
||||
printf("Port %u modified RSS hash function based on hardware support,"
|
||||
"requested:%#"PRIx64" configured:%#"PRIx64"\n",
|
||||
i, rss_conf.rss_hf, local_rss_conf.rss_hf);
|
||||
}
|
||||
diag = rte_eth_dev_rss_hash_update(i, &rss_conf);
|
||||
diag = rte_eth_dev_rss_hash_update(i, &local_rss_conf);
|
||||
if (diag < 0) {
|
||||
all_updated = 0;
|
||||
printf("Configuration of RSS hash at ethernet port %d "
|
||||
|
@ -153,6 +153,18 @@ slave_port_init(uint16_t portid, struct rte_mempool *mbuf_pool)
|
||||
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",
|
||||
|
@ -123,6 +123,17 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
|
||||
port_conf.txmode.offloads |=
|
||||
DEV_TX_OFFLOAD_MBUF_FAST_FREE;
|
||||
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf &=
|
||||
dev_info.flow_type_rss_offloads;
|
||||
if (port_conf.rx_adv_conf.rss_conf.rss_hf !=
|
||||
port_conf_default.rx_adv_conf.rss_conf.rss_hf) {
|
||||
printf("Port %u modified RSS hash function based on hardware support,"
|
||||
"requested:%#"PRIx64" configured:%#"PRIx64"\n",
|
||||
port,
|
||||
port_conf_default.rx_adv_conf.rss_conf.rss_hf,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
retval = rte_eth_dev_configure(port, rxRings, txRings, &port_conf);
|
||||
if (retval != 0)
|
||||
return retval;
|
||||
|
@ -292,6 +292,17 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool)
|
||||
port_conf.txmode.offloads |=
|
||||
DEV_TX_OFFLOAD_MBUF_FAST_FREE;
|
||||
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf &=
|
||||
dev_info.flow_type_rss_offloads;
|
||||
if (port_conf.rx_adv_conf.rss_conf.rss_hf !=
|
||||
port_conf_default.rx_adv_conf.rss_conf.rss_hf) {
|
||||
printf("Port %u modified RSS hash function based on hardware support,"
|
||||
"requested:%#"PRIx64" configured:%#"PRIx64"\n",
|
||||
port,
|
||||
port_conf_default.rx_adv_conf.rss_conf.rss_hf,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
/* Configure the Ethernet device. */
|
||||
retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf);
|
||||
if (retval != 0)
|
||||
|
@ -152,8 +152,12 @@ link_create(const char *name, struct link_params *params)
|
||||
memcpy(&port_conf, &port_conf_default, sizeof(port_conf));
|
||||
if (rss) {
|
||||
port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf =
|
||||
ETH_RSS_IPV4 | ETH_RSS_IPV6;
|
||||
if (port_info.flow_type_rss_offloads & ETH_RSS_IPV4)
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf |=
|
||||
ETH_RSS_IPV4;
|
||||
if (port_info.flow_type_rss_offloads & ETH_RSS_IPV6)
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf |=
|
||||
ETH_RSS_IPV6;
|
||||
}
|
||||
|
||||
cpu_id = (uint32_t) rte_eth_dev_socket_id(port_id);
|
||||
|
@ -1082,6 +1082,18 @@ main(int argc, char **argv)
|
||||
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);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(portid, 1, (uint16_t)n_tx_queue,
|
||||
&local_port_conf);
|
||||
if (ret < 0) {
|
||||
|
@ -1565,6 +1565,18 @@ port_init(uint16_t portid)
|
||||
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);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(portid, nb_rx_queue, nb_tx_queue,
|
||||
&local_port_conf);
|
||||
if (ret < 0)
|
||||
|
@ -1925,6 +1925,18 @@ main(int argc, char **argv)
|
||||
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);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(portid, nb_rx_queue,
|
||||
(uint16_t)n_tx_queue, &local_port_conf);
|
||||
if (ret < 0)
|
||||
|
@ -1692,6 +1692,18 @@ main(int argc, char **argv)
|
||||
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);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(portid, nb_rx_queue,
|
||||
(uint16_t)n_tx_queue, &local_port_conf);
|
||||
if (ret < 0)
|
||||
|
@ -980,6 +980,18 @@ main(int argc, char **argv)
|
||||
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);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(portid, nb_rx_queue,
|
||||
n_tx_queue, &local_port_conf);
|
||||
if (ret < 0)
|
||||
|
@ -860,6 +860,18 @@ main(int argc, char **argv)
|
||||
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);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(portid, nb_rx_queue,
|
||||
(uint16_t)n_tx_queue, &local_port_conf);
|
||||
if (ret < 0)
|
||||
|
@ -416,6 +416,18 @@ app_init_nics(void)
|
||||
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",
|
||||
port,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf,
|
||||
local_port_conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(
|
||||
port,
|
||||
(uint8_t) n_rx_queues,
|
||||
|
@ -199,6 +199,7 @@ smp_port_init(uint16_t port, struct rte_mempool *mbuf_pool,
|
||||
uint16_t q;
|
||||
uint16_t nb_rxd = RX_RING_SIZE;
|
||||
uint16_t nb_txd = TX_RING_SIZE;
|
||||
uint64_t rss_hf_tmp;
|
||||
|
||||
if (rte_eal_process_type() == RTE_PROC_SECONDARY)
|
||||
return 0;
|
||||
@ -215,6 +216,17 @@ smp_port_init(uint16_t port, struct rte_mempool *mbuf_pool,
|
||||
if (info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
|
||||
port_conf.txmode.offloads |=
|
||||
DEV_TX_OFFLOAD_MBUF_FAST_FREE;
|
||||
|
||||
rss_hf_tmp = port_conf.rx_adv_conf.rss_conf.rss_hf;
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf &= info.flow_type_rss_offloads;
|
||||
if (port_conf.rx_adv_conf.rss_conf.rss_hf != rss_hf_tmp) {
|
||||
printf("Port %u modified RSS hash function based on hardware support,"
|
||||
"requested:%#"PRIx64" configured:%#"PRIx64"\n",
|
||||
port,
|
||||
rss_hf_tmp,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf);
|
||||
if (retval < 0)
|
||||
return retval;
|
||||
|
@ -3550,6 +3550,18 @@ main(int argc, char **argv)
|
||||
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);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(portid, nb_rx_queue,
|
||||
(uint16_t)n_tx_queue, &local_port_conf);
|
||||
if (ret < 0)
|
||||
|
@ -332,6 +332,17 @@ main(int argc, char **argv)
|
||||
rte_eth_dev_info_get(port_rx, &dev_info);
|
||||
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
|
||||
conf.txmode.offloads |= DEV_TX_OFFLOAD_MBUF_FAST_FREE;
|
||||
|
||||
conf.rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads;
|
||||
if (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",
|
||||
port_rx,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf,
|
||||
conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(port_rx, 1, 1, &conf);
|
||||
if (ret < 0)
|
||||
rte_exit(EXIT_FAILURE, "Port %d configuration error (%d)\n", port_rx, ret);
|
||||
@ -361,6 +372,17 @@ main(int argc, char **argv)
|
||||
rte_eth_dev_info_get(port_tx, &dev_info);
|
||||
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
|
||||
conf.txmode.offloads |= DEV_TX_OFFLOAD_MBUF_FAST_FREE;
|
||||
|
||||
conf.rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads;
|
||||
if (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",
|
||||
port_tx,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf,
|
||||
conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
ret = rte_eth_dev_configure(port_tx, 1, 1, &conf);
|
||||
if (ret < 0)
|
||||
rte_exit(EXIT_FAILURE, "Port %d configuration error (%d)\n", port_tx, ret);
|
||||
|
@ -196,6 +196,7 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
|
||||
uint16_t queues_per_pool;
|
||||
uint32_t max_nb_pools;
|
||||
struct rte_eth_txconf txq_conf;
|
||||
uint64_t rss_hf_tmp;
|
||||
|
||||
/*
|
||||
* The max pool number from dev_info will be used to validate the pool
|
||||
@ -256,6 +257,18 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
|
||||
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
|
||||
port_conf.txmode.offloads |=
|
||||
DEV_TX_OFFLOAD_MBUF_FAST_FREE;
|
||||
|
||||
rss_hf_tmp = port_conf.rx_adv_conf.rss_conf.rss_hf;
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf &=
|
||||
dev_info.flow_type_rss_offloads;
|
||||
if (port_conf.rx_adv_conf.rss_conf.rss_hf != rss_hf_tmp) {
|
||||
printf("Port %u modified RSS hash function based on hardware support,"
|
||||
"requested:%#"PRIx64" configured:%#"PRIx64"\n",
|
||||
port,
|
||||
rss_hf_tmp,
|
||||
port_conf.rx_adv_conf.rss_conf.rss_hf);
|
||||
}
|
||||
|
||||
/*
|
||||
* Though in this example, all queues including pf queues are setup.
|
||||
* This is because VMDQ queues doesn't always start from zero, and the
|
||||
|
@ -1515,9 +1515,11 @@ const char * __rte_experimental rte_eth_dev_tx_offload_name(uint64_t offload);
|
||||
* the [rt]x_offload_capa returned from rte_eth_dev_infos_get().
|
||||
* Any type of device supported offloading set in the input argument
|
||||
* eth_conf->[rt]xmode.offloads to rte_eth_dev_configure() is enabled
|
||||
* on all queues and it can't be disabled in rte_eth_[rt]x_queue_setup().
|
||||
* - the Receive Side Scaling (RSS) configuration when using multiple RX
|
||||
* queues per port.
|
||||
* on all queues and it can't be disabled in rte_eth_[rt]x_queue_setup()
|
||||
* - the Receive Side Scaling (RSS) configuration when using multiple RX
|
||||
* queues per port. Any RSS hash function set in eth_conf->rss_conf.rss_hf
|
||||
* must be within the flow_type_rss_offloads provided by drivers via
|
||||
* rte_eth_dev_infos_get() API.
|
||||
*
|
||||
* Embedding all configuration information in a single data structure
|
||||
* is the more flexible method that allows the addition of new features
|
||||
|
Loading…
Reference in New Issue
Block a user