There is a new issue after applying the patch. Failed to configure buffer_split for a single queue and port can't up. The test steps and logs are as follows: ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 5-9 -n 4 -a 31:00.0 --force-max-simd-bitwidth=64 -- -i --mbuf-size=2048,2048 --txq=4 --rxq=4 testpmd> port stop all testpmd> port 0 rxq 2 rx_offload buffer_split on testpmd> show port 0 rx_offload configuration Rx Offloading Configuration of port 0 : Port : RSS_HASH Queue[ 0] : RSS_HASH Queue[ 1] : RSS_HASH Queue[ 2] : RSS_HASH BUFFER_SPLIT Queue[ 3] : RSS_HASH testpmd> set rxhdrs eth testpmd> port start all Configuring Port 0 (socket 0) No Rx segmentation offload configured Fail to configure port 0 rx queues
BRs, Yingya -----Original Message----- From: Ferruh Yigit <ferruh.yi...@amd.com> Sent: Friday, November 18, 2022 7:37 AM To: Hanumanth Pothula <hpoth...@marvell.com>; Singh, Aman Deep <aman.deep.si...@intel.com>; Zhang, Yuying <yuying.zh...@intel.com>; Han, YingyaX <yingyax....@intel.com>; Jiang, YuX <yux.ji...@intel.com> Cc: dev@dpdk.org; andrew.rybche...@oktetlabs.ru; tho...@monjalon.net; jer...@marvell.com; ndabilpu...@marvell.com Subject: Re: [PATCH v3 1/1] app/testpmd: add valid check to verify multi mempool feature On 11/17/2022 4:03 PM, Hanumanth Pothula wrote: > Validate ethdev parameter 'max_rx_mempools' to know whether device > supports multi-mempool feature or not. > > Bugzilla ID: 1128 > > Signed-off-by: Hanumanth Pothula <hpoth...@marvell.com> > v3: > - Simplified conditional check. > - Corrected spell, whether. > v2: > - Rebased on tip of next-net/main. > --- > app/test-pmd/testpmd.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index > 4e25f77c6a..6c3d0948ec 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -2655,16 +2655,22 @@ rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id, > union rte_eth_rxseg rx_useg[MAX_SEGS_BUFFER_SPLIT] = {}; > struct rte_mempool *rx_mempool[MAX_MEMPOOL] = {}; > struct rte_mempool *mpx; > + struct rte_eth_dev_info dev_info; > unsigned int i, mp_n; > uint32_t prev_hdrs = 0; > int ret; > > + ret = rte_eth_dev_info_get(port_id, &dev_info); > + if (ret != 0) > + return ret; > + > /* Verify Rx queue configuration is single pool and segment or > * multiple pool/segment. > + * @see rte_eth_dev_info::max_rx_mempools > * @see rte_eth_rxconf::rx_mempools > * @see rte_eth_rxconf::rx_seg > */ > - if (!(mbuf_data_size_n > 1) && !(rx_pkt_nb_segs > 1 || > + if ((dev_info.max_rx_mempools == 0) && !(rx_pkt_nb_segs > 1 || > ((rx_conf->offloads & RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT) != 0))) { > /* Single pool/segment configuration */ > rx_conf->rx_seg = NULL; Hi Yingya, Yu, Can you please verify this patch? Thanks, ferruh