From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.droids-corp.org (zoll.droids-corp.org [94.23.50.67]) by dpdk.org (Postfix) with ESMTP id 8B90A9FE for ; Fri, 29 Sep 2017 13:23:33 +0200 (CEST) Received: from lfbn-lil-1-182-75.w90-45.abo.wanadoo.fr ([90.45.31.75] helo=droids-corp.org) by mail.droids-corp.org with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dxtTp-0003cR-2H; Fri, 29 Sep 2017 13:29:18 +0200 Received: by droids-corp.org (sSMTP sendmail emulation); Fri, 29 Sep 2017 13:23:25 +0200 Date: Fri, 29 Sep 2017 13:23:25 +0200 From: Olivier MATZ To: santosh Cc: dev@dpdk.org, thomas@monjalon.net, jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com Message-ID: <20170929112324.5etpxbgif2pbh7pp@platinum> 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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [PATCH v4 2/2] ethdev: get the supported pools for a port 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: , X-List-Received-Date: Fri, 29 Sep 2017 11:23:33 -0000 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".