Hi > -----Original Message----- > From: Wang, Jie1X <jie1x.w...@intel.com> > Sent: Wednesday, July 14, 2021 01:04 > To: dev@dpdk.org > Cc: Li, Xiaoyun <xiaoyun...@intel.com>; andrew.rybche...@oktetlabs.ru; Wang, > Jie1X <jie1x.w...@intel.com>; sta...@dpdk.org > Subject: [PATCH v2] app/testpmd: fix testpmd doesn't show RSS hash offload > > This patch reapply Rx/Tx offloads configuration for all ports after the > program > configuring the device port. When the program configures the ports, the > default > Rx/Tx offloads are modified in > dev->data->dev_conf. > > So it is need to reapply Rx/Tx offloads configuration after dev_configure. > > Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings") > Cc: sta...@dpdk.org > > Signed-off-by: Jie Wang <jie1x.w...@intel.com> > --- > v2: copy "rx/txmode.offloads", instead of copying the entire struct > "dev->data- > >dev_conf.rx/txmode". > --- > app/test-pmd/testpmd.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index > 1cdd3cdd12..dc9ce5330b 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -2475,6 +2475,11 @@ start_port(portid_t pid) > } > > if (port->need_reconfig > 0) { > + const struct rte_eth_dev *dev = &rte_eth_devices[pi]; > + struct rte_eth_conf *dev_conf; > + int k; > + > + dev_conf = &dev->data->dev_conf; > port->need_reconfig = 0; > > if (flow_isolate_all) { > @@ -2508,6 +2513,20 @@ start_port(portid_t pid) > port->need_reconfig = 1; > return -1; > } > + /* Apply Rx offloads configuration */ > + for (k = 0; k < port->dev_info.max_rx_queues; k++) { > + if (port->rx_conf[k].offloads != > + dev_conf->rxmode.offloads) > + port->rx_conf[k].offloads = > + dev_conf->rxmode.offloads; > + }
I was suggesting something like: if (dev_conf->rxmode.offloads != port->dev_conf->rxmode.offloads) { port->dev_conf->rxmode.offloads = dev_conf->rxmode.offloads; for (queues) update offloads for each queue of this port } Not only check and change queue offload. > + /* Apply Tx offloads configuration */ > + for (k = 0; k < port->dev_info.max_tx_queues; k++) { > + if (port->tx_conf[k].offloads != > + dev_conf->txmode.offloads) > + port->tx_conf[k].offloads = > + dev_conf->txmode.offloads; > + } > } > if (port->need_reconfig_queues > 0) { > port->need_reconfig_queues = 0; > -- > 2.25.1