From: Olivier Matz <olivier.matz@6wind.com>
To: santosh <santosh.shukla@caviumnetworks.com>
Cc: dev@dpdk.org, hemant.agrawal@nxp.com, jerin.jacob@caviumnetworks.com
Subject: Re: [dpdk-dev] [PATCH 2/2] ether/ethdev: Allow pmd to advertise preferred pool capability
Date: Tue, 4 Jul 2017 15:07:14 +0200 [thread overview]
Message-ID: <20170704150714.4feaa396@platinum> (raw)
In-Reply-To: <a4b51c12-a3bd-a0dc-0278-29cecb1bb33d@caviumnetworks.com>
On Tue, 4 Jul 2017 18:09:33 +0530, santosh <santosh.shukla@caviumnetworks.com> wrote:
> On Friday 30 June 2017 07:43 PM, Olivier Matz wrote:
>
> > On Thu, 1 Jun 2017 13:35:59 +0530, Santosh Shukla <santosh.shukla@caviumnetworks.com> wrote:
> >> Platform with two different NICs like external PCI NIC and
> >> Integrated NIC, May want to use their preferred pool handle.
> >> Right now there is no way that two different NICs on same board,
> >> Could use their choice of a pool.
> >> Both NICs forced to use same pool, Which is statically configured
> >> by setting CONFIG_RTE_MEMPOOL_DEFAULT_OPS=<pool-name>.
> >>
> >> So Introducing get_preferred_pool() API. Which allows PMD driver
> >> to advertise their pool capability to Application.
> >> Based on that hint, Application creates separate pool for
> >> That driver.
> >>
> >> Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
> >> ---
> >> lib/librte_ether/rte_ethdev.c | 16 ++++++++++++++++
> >> lib/librte_ether/rte_ethdev.h | 21 +++++++++++++++++++++
> >> lib/librte_ether/rte_ether_version.map | 7 +++++++
> >> 3 files changed, 44 insertions(+)
> >>
> >> diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
> >> index 83898a8f7..4068a05b1 100644
> >> --- a/lib/librte_ether/rte_ethdev.c
> >> +++ b/lib/librte_ether/rte_ethdev.c
> >> @@ -3472,3 +3472,19 @@ rte_eth_dev_l2_tunnel_offload_set(uint8_t port_id,
> >> -ENOTSUP);
> >> return (*dev->dev_ops->l2_tunnel_offload_set)(dev, l2_tunnel, mask, en);
> >> }
> >> +
> >> +int
> >> +rte_eth_dev_get_preferred_pool(uint8_t port_id, const char *pool)
> >> +{
> >> + struct rte_eth_dev *dev;
> >> +
> >> + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
> >> +
> >> + dev = &rte_eth_devices[port_id];
> >> +
> >> + if (*dev->dev_ops->get_preferred_pool == NULL) {
> >> + pool = RTE_MBUF_DEFAULT_MEMPOOL_OPS;
> >> + return 0;
> >> + }
> >> + return (*dev->dev_ops->get_preferred_pool)(dev, pool);
> >> +}
> > Instead of this, what about:
> >
> > /*
> > * Return values:
> > * - -ENOTSUP: error, pool type is not supported
> > * - on success, return the priority of the mempool (0 = highest)
> > */
> > int
> > rte_eth_dev_pool_ops_supported(uint8_t port_id, const char *pool)
> >
> > By default, always return 0 (i.e. all pools are supported).
> >
> > With this API, we can announce several supported pools (not only
> > one preferred), and order them by preference.
>
> IMO: We should let application to decide on pool preference. Driver
> only to advice his preferred or supported pool handle to application,
> and its upto application to decide on pool selection scheme.
The api I'm proposing does not prevent the application from taking
the decision. On the contrary, it gives more clues to the application:
an ordered list of supported pools, instead of just the preferred pool.
>
> > I also wonder if we should use a ops_index instead of a pool name
> > for the second argument.
> >
> >
> >
> >> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
> >> index 0f38b45f8..8e5b06af7 100644
> >> --- a/lib/librte_ether/rte_ethdev.h
> >> +++ b/lib/librte_ether/rte_ethdev.h
> >> @@ -1381,6 +1381,10 @@ typedef int (*eth_l2_tunnel_offload_set_t)
> >> uint8_t en);
> >> /**< @internal enable/disable the l2 tunnel offload functions */
> >>
> >> +typedef int (*eth_get_preferred_pool_t)(struct rte_eth_dev *dev,
> >> + const char *pool);
> >> +/**< @internal Get preferred pool handler for a device */
> >> +
> >> #ifdef RTE_NIC_BYPASS
> >>
> >> enum {
> >> @@ -1573,6 +1577,8 @@ struct eth_dev_ops {
> >> /**< Get extended device statistic values by ID. */
> >> eth_xstats_get_names_by_id_t xstats_get_names_by_id;
> >> /**< Get name of extended device statistics by ID. */
> >> + eth_get_preferred_pool_t get_preferred_pool;
> >> + /**< Get preferred pool handler for a device */
> >> };
> >>
> >> /**
> >> @@ -4607,6 +4613,21 @@ rte_eth_dev_get_port_by_name(const char *name, uint8_t *port_id);
> >> int
> >> rte_eth_dev_get_name_by_port(uint8_t port_id, char *name);
> >>
> >> +/**
> >> + * Get preferred pool handle for a device
> >> + *
> >> + * @param port_id
> >> + * port identifier of the device
> >> + * @param [out] pool
> >> + * Preferred pool handle for this device.
> >> + * Pool len shouldn't more than 256B. Allocated by pmd driver.
> > [out] ??
> > I don't get why it is allocated by the driver
> >
> Driver to advice his preferred pool to application. That's why out.
So how can it be const?
Did you tried it?
>
> Thanks.
>
> >
> >> + * @return
> >> + * - (0) if successful.
> >> + * - (-EINVAL) on failure.
> >> + */
> >> +int
> >> +rte_eth_dev_get_preferred_pool(uint8_t port_id, const char *pool);
> >> +
> >> #ifdef __cplusplus
> >> }
> >> #endif
> >> diff --git a/lib/librte_ether/rte_ether_version.map b/lib/librte_ether/rte_ether_version.map
> >> index d6726bb1b..819fe800e 100644
> >> --- a/lib/librte_ether/rte_ether_version.map
> >> +++ b/lib/librte_ether/rte_ether_version.map
> >> @@ -156,3 +156,10 @@ DPDK_17.05 {
> >> rte_eth_xstats_get_names_by_id;
> >>
> >> } DPDK_17.02;
> >> +
> >> +DPDK_17.08 {
> >> + global:
> >> +
> >> + rte_eth_dev_get_preferred_pool;
> >> +
> >> +} DPDK_17.05;
>
next prev parent reply other threads:[~2017-07-04 13:07 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-01 8:05 [dpdk-dev] [PATCH 0/2] Allow application set mempool handle Santosh Shukla
2017-06-01 8:05 ` [dpdk-dev] [PATCH 1/2] eal: Introducing option to " Santosh Shukla
2017-06-30 14:12 ` Olivier Matz
2017-07-04 12:33 ` santosh
2017-06-01 8:05 ` [dpdk-dev] [PATCH 2/2] ether/ethdev: Allow pmd to advertise preferred pool capability Santosh Shukla
2017-06-30 14:13 ` Olivier Matz
2017-07-04 12:39 ` santosh
2017-07-04 13:07 ` Olivier Matz [this message]
2017-07-04 14:12 ` Jerin Jacob
2017-06-19 11:52 ` [dpdk-dev] [PATCH 0/2] Allow application set mempool handle Hemant Agrawal
2017-06-19 13:01 ` Jerin Jacob
2017-06-20 10:37 ` Hemant Agrawal
2017-06-20 14:04 ` Jerin Jacob
2017-06-30 14:12 ` Olivier Matz
2017-07-04 12:25 ` santosh
2017-07-04 15:59 ` Olivier Matz
2017-07-05 7:48 ` santosh
2017-07-20 7:06 ` [dpdk-dev] [PATCH v2 0/2] Dynamically configure " Santosh Shukla
2017-07-20 7:06 ` [dpdk-dev] [PATCH v2 1/2] eal: allow user to override default pool handle Santosh Shukla
2017-08-15 8:07 ` [dpdk-dev] [PATCH v3 0/2] Dynamically configure mempool handle Santosh Shukla
2017-08-15 8:07 ` [dpdk-dev] [PATCH v3 1/2] eal: allow user to override default pool handle Santosh Shukla
2017-09-04 11:46 ` Olivier MATZ
2017-09-07 9:25 ` Hemant Agrawal
2017-08-15 8:07 ` [dpdk-dev] [PATCH v3 2/2] ethdev: allow pmd to advertise " Santosh Shukla
2017-09-04 12:11 ` Olivier MATZ
2017-09-04 13:14 ` santosh
2017-09-07 9:21 ` Hemant Agrawal
2017-09-07 10:06 ` santosh
2017-09-07 10:11 ` santosh
2017-09-07 11:08 ` Hemant Agrawal
2017-09-11 9:33 ` Olivier MATZ
2017-09-11 12:40 ` santosh
2017-09-11 13:00 ` Olivier MATZ
2017-09-04 9:41 ` [dpdk-dev] [PATCH v3 0/2] Dynamically configure mempool handle Sergio Gonzalez Monroy
2017-09-04 13:20 ` santosh
2017-09-04 13:34 ` Olivier MATZ
2017-09-04 14:24 ` Sergio Gonzalez Monroy
2017-09-05 7:47 ` Olivier MATZ
2017-09-05 8:11 ` Jerin Jacob
2017-09-11 15:18 ` [dpdk-dev] [PATCH v4 " Santosh Shukla
2017-09-11 15:18 ` [dpdk-dev] [PATCH v4 1/2] eal: allow user to override default pool handle Santosh Shukla
2017-09-25 7:28 ` Olivier MATZ
2017-09-25 21:23 ` santosh
2017-09-11 15:18 ` [dpdk-dev] [PATCH v4 2/2] ethdev: get the supported pools for a port Santosh Shukla
2017-09-25 7:37 ` Olivier MATZ
2017-09-25 21:52 ` santosh
2017-09-29 5:00 ` santosh
2017-09-29 8:32 ` Olivier MATZ
2017-09-29 10:16 ` santosh
2017-09-29 11:21 ` santosh
2017-09-29 11:23 ` Olivier MATZ
2017-09-29 11:31 ` santosh
2017-09-13 10:00 ` [dpdk-dev] [PATCH v4 0/2] Dynamically configure mempool handle santosh
2017-09-19 8:28 ` santosh
2017-09-25 7:24 ` Olivier MATZ
2017-09-25 21:58 ` santosh
2017-10-01 9:14 ` [dpdk-dev] [PATCH v5 " Santosh Shukla
2017-10-01 9:14 ` [dpdk-dev] [PATCH v5 1/2] eal: allow user to override default pool handle Santosh Shukla
2017-10-02 14:29 ` Olivier MATZ
2017-10-06 0:29 ` Thomas Monjalon
2017-10-06 3:31 ` santosh
2017-10-06 8:39 ` Thomas Monjalon
2017-10-06 7:45 ` [dpdk-dev] [PATCH v6 0/2] Dynamically configure mempool handle Santosh Shukla
2017-10-06 7:45 ` [dpdk-dev] [PATCH v6 1/2] eal: allow user to override default pool handle Santosh Shukla
2017-10-06 7:45 ` [dpdk-dev] [PATCH v6 2/2] ethdev: get the supported pool for a port Santosh Shukla
2017-10-06 18:58 ` [dpdk-dev] [PATCH v6 0/2] Dynamically configure mempool handle Thomas Monjalon
2017-10-01 9:14 ` [dpdk-dev] [PATCH v5 2/2] ethdev: get the supported pool for a port Santosh Shukla
2017-10-02 14:31 ` Olivier MATZ
2017-10-06 0:30 ` Thomas Monjalon
2017-10-06 3:32 ` santosh
2017-10-02 8:37 ` [dpdk-dev] [PATCH v5 0/2] Dynamically configure mempool handle santosh
2017-07-20 7:06 ` [dpdk-dev] [PATCH v2 2/2] ethdev: allow pmd to advertise pool handle Santosh Shukla
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=20170704150714.4feaa396@platinum \
--to=olivier.matz@6wind.com \
--cc=dev@dpdk.org \
--cc=hemant.agrawal@nxp.com \
--cc=jerin.jacob@caviumnetworks.com \
--cc=santosh.shukla@caviumnetworks.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).