From mboxrd@z Thu Jan 1 00:00:00 1970 From: santosh Subject: Re: [PATCH v4 2/2] ethdev: get the supported pools for a port Date: Fri, 29 Sep 2017 12:31:07 +0100 Message-ID: <75420f37-2901-9782-5e95-a2257b176ed4@caviumnetworks.com> References: <20170815080717.9413-1-santosh.shukla@caviumnetworks.com> <20170911151837.25092-1-santosh.shukla@caviumnetworks.com> <20170911151837.25092-3-santosh.shukla@caviumnetworks.com> <20170925073728.auchwn7mxx63b32j@platinum> <8b832367-e8fa-077a-1732-50627e977f9c@caviumnetworks.com> <20170929083242.a4arzpf2drfqyxpj@platinum> <20170929112324.5etpxbgif2pbh7pp@platinum> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org, thomas@monjalon.net, jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com To: Olivier MATZ Return-path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0042.outbound.protection.outlook.com [104.47.42.42]) by dpdk.org (Postfix) with ESMTP id 72756397D for ; Fri, 29 Sep 2017 13:31:15 +0200 (CEST) In-Reply-To: <20170929112324.5etpxbgif2pbh7pp@platinum> 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 Friday 29 September 2017 12:23 PM, Olivier MATZ wrote: > On Fri, Sep 29, 2017 at 11:16:20AM +0100, santosh wrote: >> Hi Olivier, >> >> >> On Friday 29 September 2017 09:32 AM, Olivier MATZ wrote: >>> On Mon, Sep 25, 2017 at 10:52:31PM +0100, santosh wrote: >>>> Hi Olivier, >>>> >>>> >>>> On Monday 25 September 2017 08:37 AM, Olivier MATZ wrote: >>>> >>>>>> +{ >>>>>> + struct rte_eth_dev *dev; >>>>>> + const char *tmp; >>>>>> + >>>>>> + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); >>>>>> + >>>>>> + if (pool == NULL) >>>>>> + return -EINVAL; >>>>>> + >>>>>> + dev = &rte_eth_devices[port_id]; >>>>>> + >>>>>> + if (*dev->dev_ops->pools_ops_supported == NULL) { >>>>>> + tmp = rte_eal_mbuf_default_mempool_ops(); >>>>>> + if (!strcmp(tmp, pool)) >>>>>> + return 0; >>>>>> + else >>>>>> + return -ENOTSUP; >>>>> I don't understand why we are comparing with >>>>> rte_eal_mbuf_default_mempool_ops(). >>>>> >>>>> It means that the result of the function would be influenced >>>>> by the parameter given by the user. >>>> But that will be only for ops not supported case and in that case, >>>> function _must_ make sure that if inputted param is _default_ops_name >>>> then function should return ops supported correct info (whether >>>> returning '0' : Best ops or '1': ops does support >>>> , this part is arguable.. meaning One can say that default_ops ='handle-name' is best possible handle Or >>>> one of handle which platform supports). >>>> >>>>> I think that a PMD that does not implement ->pools_ops_supported >>>>> should always return 1 (mempool is supported). >>> I don't agree. >>> The result of this API (mempool ops supported or not by a PMD) >>> should not depend on what user asks for. >>> >>>> Return 1 says: PMD support this ops.. >>>> >>>> So if ops is not supported and func returns with 1, then which ops application will use? >>>> If that ops is default_ops.. then How application will distinguish when to use default ops or >>>> param ops?.. as because in both cases func will return with value 1. >>>> >>>> The approach in the patch takes care of that condition and func will return -ENOTSUP >>>> if (ops not support || inputted param not matching with default ops) otherwise will return >>>> 0 or 1. >>>> >>>> At application side; >>>> For error case: In case of -ENOTSUP, its upto application to use _default_ops or exit. >>>> For good case: 0 or 1 case, func gaurantee that handle is either best handle for pool or pool supports >>>> that handle.. However in your suggestion if ops not supported case returns 1 then application is not >>>> sure which ops to use.. default_ops Or input ops given to func. >>>> >>>> make sense? >>> My proposition is: >>> >>> - what a PMD returns does not depend on used parameter: >>> - 0: best support >>> - 1: support >>> - -ENOTSUP: not supported >>> >>> - if a PMD does not implement the _ops_supported() API, assume all pools >>> are supported (returns 1) >> If API returns 1 for PMD does not implement _ops_supported() case, >> then do we really need -ENOTSUP? > When the PMD explicitly does not support a mempool ops. > > Not implementing the API means, like today: "I don't care what > the mempool ops is, so I a priori support all the ones available, > without preference". > More confusing to me. If PMD does not implement mempool_ops then if (_ops_supported() == NULL) return 1; /// per your proposition. so I don't see why we need -ENOTSUP error code in API?