* [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable
@ 2021-10-28 8:34 Thomas Monjalon
2021-10-28 8:37 ` Kinsella, Ray
2021-10-28 10:22 ` Ferruh Yigit
0 siblings, 2 replies; 6+ messages in thread
From: Thomas Monjalon @ 2021-10-28 8:34 UTC (permalink / raw)
To: dev; +Cc: matan, Ferruh Yigit, Andrew Rybchenko, Ray Kinsella
The port ownership concept was introduced in ethdev in DPDK 18.02.
Not sure it is used by applications except those using failsafe or netvsc.
It can also be used by libraries or applications to sort out
how ports are controlled.
Hiding sub-ports controlled by failsafe or netvsc look to be enough
justification to promote this API as stable.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
doc/guides/prog_guide/poll_mode_drv.rst | 6 +++++-
lib/ethdev/rte_ethdev.h | 20 --------------------
lib/ethdev/version.map | 12 +++++-------
3 files changed, 10 insertions(+), 28 deletions(-)
diff --git a/doc/guides/prog_guide/poll_mode_drv.rst b/doc/guides/prog_guide/poll_mode_drv.rst
index 6831289844..9d081b1cba 100644
--- a/doc/guides/prog_guide/poll_mode_drv.rst
+++ b/doc/guides/prog_guide/poll_mode_drv.rst
@@ -146,14 +146,18 @@ Based on their PCI identifier, NIC ports are assigned two other identifiers:
Port Ownership
~~~~~~~~~~~~~~
+
The Ethernet devices ports can be owned by a single DPDK entity (application, library, PMD, process, etc).
The ownership mechanism is controlled by ethdev APIs and allows to set/remove/get a port owner by DPDK entities.
-Allowing this should prevent any multiple management of Ethernet port by different entities.
+It prevents Ethernet ports to be managed by different entities.
.. note::
It is the DPDK entity responsibility to set the port owner before using it and to manage the port usage synchronization between different threads or processes.
+It is recommended to set port ownership early,
+like during the probing notification ``RTE_ETH_EVENT_NEW``.
+
Device Configuration
~~~~~~~~~~~~~~~~~~~~
diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
index 09d60351a3..154465c3ab 100644
--- a/lib/ethdev/rte_ethdev.h
+++ b/lib/ethdev/rte_ethdev.h
@@ -2193,9 +2193,6 @@ rte_eth_find_next_sibling(uint16_t port_id_start, uint16_t ref_port_id);
port_id = rte_eth_find_next_sibling(port_id + 1, ref_port_id))
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
* Get a new unique owner identifier.
* An owner identifier is used to owns Ethernet devices by only one DPDK entity
* to avoid multiple management of device by different entities.
@@ -2205,13 +2202,9 @@ rte_eth_find_next_sibling(uint16_t port_id_start, uint16_t ref_port_id);
* @return
* Negative errno value on error, 0 on success.
*/
-__rte_experimental
int rte_eth_dev_owner_new(uint64_t *owner_id);
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
* Set an Ethernet device owner.
*
* @param port_id
@@ -2221,14 +2214,10 @@ int rte_eth_dev_owner_new(uint64_t *owner_id);
* @return
* Negative errno value on error, 0 on success.
*/
-__rte_experimental
int rte_eth_dev_owner_set(const uint16_t port_id,
const struct rte_eth_dev_owner *owner);
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
* Unset Ethernet device owner to make the device ownerless.
*
* @param port_id
@@ -2238,14 +2227,10 @@ int rte_eth_dev_owner_set(const uint16_t port_id,
* @return
* 0 on success, negative errno value on error.
*/
-__rte_experimental
int rte_eth_dev_owner_unset(const uint16_t port_id,
const uint64_t owner_id);
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
* Remove owner from all Ethernet devices owned by a specific owner.
*
* @param owner_id
@@ -2253,13 +2238,9 @@ int rte_eth_dev_owner_unset(const uint16_t port_id,
* @return
* 0 on success, negative errno value on error.
*/
-__rte_experimental
int rte_eth_dev_owner_delete(const uint64_t owner_id);
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
* Get the owner of an Ethernet device.
*
* @param port_id
@@ -2269,7 +2250,6 @@ int rte_eth_dev_owner_delete(const uint64_t owner_id);
* @return
* 0 on success, negative errno value on error..
*/
-__rte_experimental
int rte_eth_dev_owner_get(const uint16_t port_id,
struct rte_eth_dev_owner *owner);
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index c2fb0669a4..15a69e67eb 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -36,6 +36,11 @@ DPDK_22 {
rte_eth_dev_logtype;
rte_eth_dev_mac_addr_add;
rte_eth_dev_mac_addr_remove;
+ rte_eth_dev_owner_delete;
+ rte_eth_dev_owner_get;
+ rte_eth_dev_owner_new;
+ rte_eth_dev_owner_set;
+ rte_eth_dev_owner_unset;
rte_eth_dev_pool_ops_supported;
rte_eth_dev_priority_flow_ctrl_set;
rte_eth_dev_reset;
@@ -148,13 +153,6 @@ EXPERIMENTAL {
rte_mtr_stats_read;
rte_mtr_stats_update;
- # added in 18.02
- rte_eth_dev_owner_delete;
- rte_eth_dev_owner_get;
- rte_eth_dev_owner_new;
- rte_eth_dev_owner_set;
- rte_eth_dev_owner_unset;
-
# added in 18.05
rte_eth_dev_get_module_eeprom;
rte_eth_dev_get_module_info;
--
2.33.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable
2021-10-28 8:34 [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable Thomas Monjalon
@ 2021-10-28 8:37 ` Kinsella, Ray
2021-10-28 8:55 ` Andrew Rybchenko
2021-10-28 10:22 ` Ferruh Yigit
1 sibling, 1 reply; 6+ messages in thread
From: Kinsella, Ray @ 2021-10-28 8:37 UTC (permalink / raw)
To: Thomas Monjalon, dev; +Cc: matan, Ferruh Yigit, Andrew Rybchenko
On 28/10/2021 09:34, Thomas Monjalon wrote:
> The port ownership concept was introduced in ethdev in DPDK 18.02.
> Not sure it is used by applications except those using failsafe or netvsc.
> It can also be used by libraries or applications to sort out
> how ports are controlled.
>
> Hiding sub-ports controlled by failsafe or netvsc look to be enough
> justification to promote this API as stable.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> doc/guides/prog_guide/poll_mode_drv.rst | 6 +++++-
> lib/ethdev/rte_ethdev.h | 20 --------------------
> lib/ethdev/version.map | 12 +++++-------
> 3 files changed, 10 insertions(+), 28 deletions(-)
Acked-by: Ray Kinsella <mdr@ashroe.eu>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable
2021-10-28 8:37 ` Kinsella, Ray
@ 2021-10-28 8:55 ` Andrew Rybchenko
2022-06-02 11:43 ` Ferruh Yigit
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Rybchenko @ 2021-10-28 8:55 UTC (permalink / raw)
To: Kinsella, Ray, Thomas Monjalon, dev; +Cc: matan, Ferruh Yigit
On 10/28/21 11:37 AM, Kinsella, Ray wrote:
>
>
> On 28/10/2021 09:34, Thomas Monjalon wrote:
>> The port ownership concept was introduced in ethdev in DPDK 18.02.
>> Not sure it is used by applications except those using failsafe or
>> netvsc.
>> It can also be used by libraries or applications to sort out
>> how ports are controlled.
>>
>> Hiding sub-ports controlled by failsafe or netvsc look to be enough
>> justification to promote this API as stable.
>>
>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>> ---
>> doc/guides/prog_guide/poll_mode_drv.rst | 6 +++++-
>> lib/ethdev/rte_ethdev.h | 20 --------------------
>> lib/ethdev/version.map | 12 +++++-------
>> 3 files changed, 10 insertions(+), 28 deletions(-)
>
> Acked-by: Ray Kinsella <mdr@ashroe.eu>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable
2021-10-28 8:55 ` Andrew Rybchenko
@ 2022-06-02 11:43 ` Ferruh Yigit
0 siblings, 0 replies; 6+ messages in thread
From: Ferruh Yigit @ 2022-06-02 11:43 UTC (permalink / raw)
To: Andrew Rybchenko, Kinsella, Ray, Thomas Monjalon; +Cc: matan, dev
On 10/28/2021 9:55 AM, Andrew Rybchenko wrote:
> On 10/28/21 11:37 AM, Kinsella, Ray wrote:
>>
>>
>> On 28/10/2021 09:34, Thomas Monjalon wrote:
>>> The port ownership concept was introduced in ethdev in DPDK 18.02.
>>> Not sure it is used by applications except those using failsafe or
>>> netvsc.
>>> It can also be used by libraries or applications to sort out
>>> how ports are controlled.
>>>
>>> Hiding sub-ports controlled by failsafe or netvsc look to be enough
>>> justification to promote this API as stable.
>>>
>>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>>> ---
>>> doc/guides/prog_guide/poll_mode_drv.rst | 6 +++++-
>>> lib/ethdev/rte_ethdev.h | 20 --------------------
>>> lib/ethdev/version.map | 12 +++++-------
>>> 3 files changed, 10 insertions(+), 28 deletions(-)
>>
>> Acked-by: Ray Kinsella <mdr@ashroe.eu>
>
> Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Applied to dpdk-next-net/main, thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable
2021-10-28 8:34 [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable Thomas Monjalon
2021-10-28 8:37 ` Kinsella, Ray
@ 2021-10-28 10:22 ` Ferruh Yigit
2021-10-28 10:38 ` Thomas Monjalon
1 sibling, 1 reply; 6+ messages in thread
From: Ferruh Yigit @ 2021-10-28 10:22 UTC (permalink / raw)
To: Thomas Monjalon, dev
Cc: matan, Andrew Rybchenko, Ray Kinsella, Stephen Hemminger, Long Li
On 10/28/2021 9:34 AM, Thomas Monjalon wrote:
> The port ownership concept was introduced in ethdev in DPDK 18.02.
> Not sure it is used by applications except those using failsafe or netvsc.
> It can also be used by libraries or applications to sort out
> how ports are controlled.
>
> Hiding sub-ports controlled by failsafe or netvsc look to be enough
> justification to promote this API as stable.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
There is a defect in the 'rte_eth_dev_owner_delete()', which cause a crash,
it is fixed in my ethdev unit test patch:
https://patches.dpdk.org/project/dpdk/patch/20210716142800.3853651-8-ferruh.yigit@intel.com/
I think we should get the fix first.
And the crash not detected/reported until now makes me think API is still
not used much, I wonder if we should wait a little more to mature them.
Also only internal user of the API is 'drivers/net/netvsc', I wonder if
PMD detect the crash?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable
2021-10-28 10:22 ` Ferruh Yigit
@ 2021-10-28 10:38 ` Thomas Monjalon
0 siblings, 0 replies; 6+ messages in thread
From: Thomas Monjalon @ 2021-10-28 10:38 UTC (permalink / raw)
To: Ferruh Yigit, Long Li
Cc: dev, matan, Andrew Rybchenko, Ray Kinsella, Stephen Hemminger
28/10/2021 12:22, Ferruh Yigit:
> On 10/28/2021 9:34 AM, Thomas Monjalon wrote:
> > The port ownership concept was introduced in ethdev in DPDK 18.02.
> > Not sure it is used by applications except those using failsafe or netvsc.
> > It can also be used by libraries or applications to sort out
> > how ports are controlled.
> >
> > Hiding sub-ports controlled by failsafe or netvsc look to be enough
> > justification to promote this API as stable.
> >
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>
> There is a defect in the 'rte_eth_dev_owner_delete()', which cause a crash,
> it is fixed in my ethdev unit test patch:
> https://patches.dpdk.org/project/dpdk/patch/20210716142800.3853651-8-ferruh.yigit@intel.com/
>
> I think we should get the fix first.
I think such fix should be sent separately.
OK to get the fix first.
> And the crash not detected/reported until now makes me think API is still
> not used much, I wonder if we should wait a little more to mature them.
It is not a surprise that the delete operation is not used much.
But the set operation is used.
I am not sure about waiting more. I have no strong opinion.
> Also only internal user of the API is 'drivers/net/netvsc', I wonder if
> PMD detect the crash?
Question for Long Li?
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-06-02 11:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-28 8:34 [dpdk-dev] [PATCH] ethdev: promote port ownership API as stable Thomas Monjalon
2021-10-28 8:37 ` Kinsella, Ray
2021-10-28 8:55 ` Andrew Rybchenko
2022-06-02 11:43 ` Ferruh Yigit
2021-10-28 10:22 ` Ferruh Yigit
2021-10-28 10:38 ` Thomas Monjalon
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).