Skip to content

Commit

Permalink
app/test-pipeline: relax RSS hash requirement
Browse files Browse the repository at this point in the history
For some drivers which can not support the configured RSS hash functions,
the thread reports 'invalid rss_hf' when doing device configure.

For example, i40e driver can not support 'RTE_ETH_RSS_IPV4',
'RTE_ETH_RSS_IPV6' and 'RTE_ETH_RSS_NONFRAG_IPV6_OTHER', thus it can not
run successfully in test-pipeline with XL710 NIC and reports the issue:
-------------------------------------------------------------
Ethdev port_id=0 invalid rss_hf: 0xa38c, valid value: 0x7ef8
PANIC in app_init_ports():
Cannot init NIC port 0 (-22)
-------------------------------------------------------------

To fix this, referring to l3fwd operation, adjust the 'rss_hf' based on
device capability and just report a warning.

Signed-off-by: Feifei Wang <feifei.wang2@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Trevor Tao <trevor.tao@arm.com>
Signed-off-by: 0-day Robot <robot@bytheb.org>
  • Loading branch information
Feifeiarm authored and ovsrobot committed Jun 26, 2023
1 parent 6c94839 commit 5a03691
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion app/test-pipeline/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -188,21 +188,41 @@ static void
app_init_ports(void)
{
uint32_t i;
struct rte_eth_dev_info dev_info;


/* Init NIC ports, then start the ports */
for (i = 0; i < app.n_ports; i++) {
uint16_t port;
int ret;
struct rte_eth_conf local_port_conf = port_conf;

port = app.ports[i];
RTE_LOG(INFO, USER1, "Initializing NIC port %u ...\n", port);

ret = rte_eth_dev_info_get(port, &dev_info);
if (ret != 0)
rte_panic("Error during getting device (port %u) info: %s\n",
port, rte_strerror(-ret));

/* Init port */
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("Warning:"
"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,
1,
1,
&port_conf);
&local_port_conf);
if (ret < 0)
rte_panic("Cannot init NIC port %u (%d)\n", port, ret);

Expand Down

0 comments on commit 5a03691

Please sign in to comment.