Hi Shiyang, > -----Original Message----- > From: He, ShiyangX <shiyangx...@intel.com> > Sent: 2023年1月13日 17:08 > To: He, ShiyangX <shiyangx...@intel.com>; Zhang, Yuying > <yuying.zh...@intel.com> > Cc: dev@dpdk.org; Zhou, YidingX <yidingx.z...@intel.com>; > sta...@dpdk.org; Singh, Aman Deep <aman.deep.si...@intel.com>; > Burakov, Anatoly <anatoly.bura...@intel.com>; Li, Xiaoyun > <xiaoyun...@intel.com>; Alvin Zhang <alvinx.zh...@intel.com> > Subject: RE: [PATCH] app/testpmd: fix secondary process not forwarding > > @Zhang, Yuying Hi, please take a look at this patch! Are there any comments? > > >-----Original Message----- > >From: He, ShiyangX <shiyangx...@intel.com> > >Sent: Wednesday, January 4, 2023 10:02 AM > >To: Stephen Hemminger <step...@networkplumber.org> > >Cc: dev@dpdk.org; Zhou, YidingX <yidingx.z...@intel.com>; > >sta...@dpdk.org; Singh, Aman Deep <aman.deep.si...@intel.com>; Zhang, > >Yuying <yuying.zh...@intel.com>; Burakov, Anatoly > ><anatoly.bura...@intel.com>; Li, Xiaoyun <xiaoyun...@intel.com>; Alvin > >Zhang <alvinx.zh...@intel.com> > >Subject: RE: [PATCH] app/testpmd: fix secondary process not forwarding > > > >>> Under multi-process scenario, the secondary process gets queue state > >>> from the wrong location (the global variable 'ports'). Therefore, > >>> the secondary process can not forward since "stream_init" is not called. > >>> > >>> This commit fixes the issue by calling 'rte_eth_rx/tx_queue_info_get' > >>> to get queue state from shared memory. > >>> > >>> Fixes: a78040c990cb ("app/testpmd: update forward engine beginning") > >>> Cc: sta...@dpdk.org > >>> > >>> Signed-off-by: Shiyang He <shiyangx...@intel.com> > >> > >>Would it be possible to fix this the initialization of ports variable, > >>rather than doing a per-state fixup here? > > > >In multi-process scenario, the secondary process does not initialize > >the queue state in the 'ports' variable, and the ethdev's queue state > >may be changed by any other process, which causes 'ports' queue state > >of per-process and ethdev's queue state are inconsistent. Therefore, > >getting the queue state from ethdev is a feasible way which I can think of.
You should fix the queue state in the 'ports' variable of secondary process in the initialization of ports variable instead of fixup here.