patches for DPDK stable branches
 help / color / mirror / Atom feed
From: "lihuisong (C)" <lihuisong@huawei.com>
To: "He, ShiyangX" <shiyangx.he@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Cc: "Zhou, YidingX" <yidingx.zhou@intel.com>,
	"stable@dpdk.org" <stable@dpdk.org>,
	"Singh, Aman Deep" <aman.deep.singh@intel.com>,
	"Zhang, Yuying" <yuying.zhang@intel.com>,
	"Burakov, Anatoly" <anatoly.burakov@intel.com>,
	"Li, Xiaoyun" <xiaoyun.li@intel.com>,
	Alvin Zhang <alvinx.zhang@intel.com>
Subject: Re: [PATCH] app/testpmd: fix secondary process not forwarding
Date: Tue, 21 Feb 2023 14:37:44 +0800	[thread overview]
Message-ID: <81ef949b-54ca-055a-5f94-ddfda879bcd5@huawei.com> (raw)
In-Reply-To: <DM6PR11MB3946E70B359679170E59D6D4F7A59@DM6PR11MB3946.namprd11.prod.outlook.com>


在 2023/2/21 10:52, He, ShiyangX 写道:
>
>> -----Original Message-----
>> From: lihuisong (C) <lihuisong@huawei.com>
>> Sent: Monday, February 20, 2023 8:46 PM
>> To: He, ShiyangX <shiyangx.he@intel.com>; dev@dpdk.org
>> Cc: Zhou, YidingX <yidingx.zhou@intel.com>; stable@dpdk.org; Singh, Aman
>> Deep <aman.deep.singh@intel.com>; Zhang, Yuying
>> <yuying.zhang@intel.com>; Burakov, Anatoly <anatoly.burakov@intel.com>;
>> Li, Xiaoyun <xiaoyun.li@intel.com>; Alvin Zhang <alvinx.zhang@intel.com>
>> Subject: Re: [PATCH] app/testpmd: fix secondary process not forwarding
>>
>>
>> 在 2022/12/30 15:55, Shiyang He 写道:
>>> 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")
>> should use this commit:
>> Fixes: 3c4426db54fc ("app/testpmd: do not poll stopped queues")
> Thanks for your comments, I will ask maintainer to help fix this problem.
>
>>> Cc: stable@dpdk.org
>>>
>>> Signed-off-by: Shiyang He <shiyangx.he@intel.com>
>>> ---
>>>    app/test-pmd/testpmd.c | 29 +++++++++++++++++++++++++++--
>>>    1 file changed, 27 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
>>> 134d79a555..2c73daf9eb 100644
>>> --- a/app/test-pmd/testpmd.c
>>> +++ b/app/test-pmd/testpmd.c
>>> @@ -2378,9 +2378,34 @@ start_packet_forwarding(int with_tx_first)
>>>    	if (!pkt_fwd_shared_rxq_check())
>>>    		return;
>>>
>>> -	if (stream_init != NULL)
>>> -		for (i = 0; i < cur_fwd_config.nb_fwd_streams; i++)
>>> +	if (stream_init != NULL) {
>>> +		for (i = 0; i < cur_fwd_config.nb_fwd_streams; i++) {
>>> +			if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>> directly use "rte_eal_process_type() == RTE_PROC_SECONDARY"?
> The following action should be executed for all non-primary processes.
"all non-primary processes" is which processes? it's only 'secondary' 
here, not 'auto', right?
>
>>> +				struct fwd_stream *fs = fwd_streams[i];
>>> +				struct rte_eth_rxq_info rx_qinfo;
>>> +				struct rte_eth_txq_info tx_qinfo;
>>> +				int32_t rc;
>>> +				rc = rte_eth_rx_queue_info_get(fs->rx_port,
>>> +						fs->rx_queue, &rx_qinfo);
>>> +				if (!rc)
>>> +					ports[fs->rx_port].rxq[fs-
>>> rx_queue].state =
>>> +						rx_qinfo.queue_state;
>>> +				else
>>> +					TESTPMD_LOG(WARNING,
>>> +						"Failed to get rx queue
>> info\n");
>>> +
>>> +				rc = rte_eth_tx_queue_info_get(fs->tx_port,
>>> +						fs->tx_queue, &tx_qinfo);
>>> +				if (!rc)
>>> +					ports[fs->tx_port].txq[fs-
>>> tx_queue].state =
>>> +						tx_qinfo.queue_state;
>>> +				else
>>> +					TESTPMD_LOG(WARNING,
>>> +						"Failed to get tx queue
>> info\n");
>> not all PMDs implement rte_eth_rx/tx_queue_info_get() to query the state,
>> right?
>> Can you set this state to 'START' if the return value is '-ENOTSUP'?
> If pmd doesn't implement "rte_eth_rx/tx_queue_info_get()" to query queue state, should use the default value instead of modifying the state, because it may be modified elsewhere.
The rx/tx_queue_start/stop() can change Rx/Tx queue state if PMD 
supports this API.
In primary, if PMD doesn't support this API, this queue state do not be 
changed and still be the original value(RTE_ETH_QUEUE_STATE_STARTED) 
start_port() sets.
However, in secondary, Rx/Tx queue state have not been initialized, your 
patch also do not it.
Namely, their default values are wrong.

Our plan needs to ensure that the PMDs that do not support 
rx/tx_queue_start/stop() or rx/tx_queue_info_get() can forward in secondary.

I think we either add the initialization of queue state in start_port() 
or somewhere else, or make sure it's ok here.
>>> +			}
>>>    			stream_init(fwd_streams[i]);
>>> +		}
>>> +	}
>>>
>>>    	port_fwd_begin = cur_fwd_config.fwd_eng->port_fwd_begin;
>>>    	if (port_fwd_begin != NULL) {

  reply	other threads:[~2023-02-21  6:37 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-30  7:55 Shiyang He
2022-12-30 17:23 ` Stephen Hemminger
2023-01-04  2:02   ` He, ShiyangX
2023-01-13  9:07     ` He, ShiyangX
2023-02-08  3:22       ` Zhang, Yuying
2023-02-08  6:38         ` He, ShiyangX
2023-02-20  5:39           ` Zhang, Yuying
2023-02-20 12:45 ` lihuisong (C)
2023-02-21  2:52   ` He, ShiyangX
2023-02-21  6:37     ` lihuisong (C) [this message]
2023-02-21  6:51       ` He, ShiyangX
2023-02-21 15:44 ` [PATCH v2] " Shiyang He
2023-02-22  6:20   ` lihuisong (C)
2023-02-23 14:41 ` [PATCH v3] " Shiyang He
2023-02-23  8:08   ` lihuisong (C)
2023-03-06 15:16     ` Ferruh Yigit
2023-03-06 15:05   ` Ferruh Yigit
2023-03-07  3:25     ` He, ShiyangX
2023-03-07 11:41       ` Ferruh Yigit
2023-03-08  2:05         ` He, ShiyangX
2023-03-08  2:54           ` lihuisong (C)
2023-03-08  9:54             ` Ferruh Yigit
2023-03-08 16:19   ` [PATCH v4] " Shiyang He
2023-03-08 10:20     ` Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=81ef949b-54ca-055a-5f94-ddfda879bcd5@huawei.com \
    --to=lihuisong@huawei.com \
    --cc=alvinx.zhang@intel.com \
    --cc=aman.deep.singh@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=shiyangx.he@intel.com \
    --cc=stable@dpdk.org \
    --cc=xiaoyun.li@intel.com \
    --cc=yidingx.zhou@intel.com \
    --cc=yuying.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).