From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 97805A04B1; Wed, 23 Sep 2020 18:59:49 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1942A1DA2D; Wed, 23 Sep 2020 18:59:48 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 18E6B1DA28 for ; Wed, 23 Sep 2020 18:59:45 +0200 (CEST) IronPort-SDR: eVqviOja0MYl7DMj++Ckw6uuD6ifvXcKqYfNeQ8VIcSxovlL+thWEPoVu+s+YIa3aOIRo0xD1M xeqEJJ++rDvA== X-IronPort-AV: E=McAfee;i="6000,8403,9753"; a="179039349" X-IronPort-AV: E=Sophos;i="5.77,293,1596524400"; d="scan'208";a="179039349" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2020 09:59:44 -0700 IronPort-SDR: Vk501uchzS3Tp0jhqsRZDHkTdVrng8dV2rvwTx0cdS1Yr+z5EeXlISIZemkkgEVqKDMxn6r/iu tc+q7TM/4yTg== X-IronPort-AV: E=Sophos;i="5.77,293,1596524400"; d="scan'208";a="305452119" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.213.218.147]) ([10.213.218.147]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2020 09:59:43 -0700 To: "Wei Hu (Xavier)" Cc: dev@dpdk.org, xavier.huwei@huawei.com, Chengchang Tang References: <20200818120254.72792-1-huwei013@chinasoftinc.com> <20200919104708.58451-1-xavier_huwei@163.com> <20200919104708.58451-4-xavier_huwei@163.com> <72499939-f3c1-1caa-cded-b46b489c1863@intel.com> <887fa0c9-73f4-401c-85ca-ad8a1f1b5a1c@chinasoftinc.com> <5fbb620a-498c-a404-4183-f78190890a78@chinasoftinc.com> From: Ferruh Yigit Message-ID: <8179ac78-9706-0bc5-e1da-ecda000532f7@intel.com> Date: Wed, 23 Sep 2020 17:59:39 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.2.2 MIME-Version: 1.0 In-Reply-To: <5fbb620a-498c-a404-4183-f78190890a78@chinasoftinc.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v3 3/6] app/testpmd: remove restriction on txpkts set X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 9/23/2020 12:57 PM, Wei Hu (Xavier) wrote: > Hi, Ferruh Yigit > > On 2020/9/23 11:14, Wei Hu (Xavier) wrote: >> Hi, Ferruh Yigit >> >> On 2020/9/22 22:51, Ferruh Yigit wrote: >>> On 9/19/2020 11:47 AM, Wei Hu (Xavier) wrote: >>>> From: Chengchang Tang >>>> >>>> Currently, if nb_txd is not set, the txpkts is not allowed to be set >>>> because the nb_txd is used to avoid the numer of segments exceed the Tx >>>> ring size and the default value of nb_txd is 0. And there is a bug that >>>> nb_txd is the global configuration for Tx ring size and the ring size >>>> could be changed by some command per queue. So these valid check is >>>> unreliable and introduced unnecessary constraints. >>>> >>>> This patch adds a valid check function to use the real Tx ring size to >>>> check the validity of txpkts. >>>> >>>> Fixes: af75078fece3 ("first public release") >>>> Cc: stable@dpdk.org >>>> >>>> Signed-off-by: Chengchang Tang >>>> Signed-off-by: Wei Hu (Xavier) >>>> --- >>>>   app/test-pmd/config.c | 42 ++++++++++++++++++++++++++++++++++++++---- >>>>   1 file changed, 38 insertions(+), 4 deletions(-) >>>> >>>> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c >>>> index 4e33208..882de2d 100644 >>>> --- a/app/test-pmd/config.c >>>> +++ b/app/test-pmd/config.c >>>> @@ -2984,17 +2984,51 @@ show_tx_pkt_segments(void) >>>>       printf("Split packet: %s\n", split); >>>>   } >>>>   +static bool >>>> +nb_segs_is_invalid(unsigned int nb_segs) >>>> +{ >>>> +    uint16_t port_id; >>>> + >>>> +    RTE_ETH_FOREACH_DEV(port_id) { >>>> +        struct rte_port *port = &ports[port_id]; >>>> +        uint16_t ring_size; >>>> +        uint16_t queue_id; >>>> + >>>> +        /* >>>> +         * When configure the txq by rte_eth_tx_queue_setup with >>>> +         * nb_tx_desc being 0, it will use a default value provided by >>>> +         * PMDs to setup this txq. If the default value is 0, it will >>>> +         * use the RTE_ETH_DEV_FALLBACK_TX_RINGSIZE to setup this txq. >>>> +         */ >>>> +        for (queue_id = 0; queue_id < nb_txq; queue_id++) { >>>> +            if (port->nb_tx_desc[queue_id]) >>>> +                ring_size = port->nb_tx_desc[queue_id]; >>>> +            else if (port->dev_info.default_txportconf.ring_size) >>>> +                ring_size = >>>> + port->dev_info.default_txportconf.ring_size; >>>> +            else >>>> +                ring_size = RTE_ETH_DEV_FALLBACK_TX_RINGSIZE; >>>> + >>>> +            if (ring_size < nb_segs) { >>>> +                printf("nb segments per TX packets=%u >= TX " >>>> +                       "queue(%u) ring_size=%u - ignored\n", >>>> +                    nb_segs, queue_id, ring_size); >>>> +                return true; >>>> +            } >>>> +        } >>> >>> What do you think calling 'rte_eth_rx_queue_info_get()' & >>> 'rte_eth_tx_queue_info_get()' to get the 'nb_desc'? >> >> Currently not all PMD driver implement the .rxq_info_get and >> >> .txq_info_get hook function. If calling rte_eth_rx_queue_info_get >> >> return -ENOSTUP, we still need to obtain the ring_size in this way. >> > If calling rte_eth_rx_queue_info_get function get ring_size, because not > all PMDS implement the relevant the related hook function, we need to > check the return value and if the return value is -ENOSTUP, we must > obtain the ring_size in this way. > Do you prefer this method, right? > Do we really need this check? What about verifying 'ring_size' if 'rte_eth_rx_queue_info_get()' returns a valid info, if not ignore the check? > > Hopes for your suggestion. > Thanks, Xavier >> >> Thanks, Xavier