[dpdk-dev] [PATCH 16/20] ethdev: remove old close behaviour

Ferruh Yigit ferruh.yigit at intel.com
Wed Sep 23 18:44:55 CEST 2020


On 9/13/2020 11:07 PM, Thomas Monjalon wrote:
> The temporary flag RTE_ETH_DEV_CLOSE_REMOVE is removed.
> It was introduced in DPDK 18.11 in order to give time for PMDs to migrate.
> 
> The old behaviour was to free only queues when closing a port.
> The new behaviour is calling rte_eth_dev_release_port() which does
> three more tasks:
> 	- trigger event callback
> 	- reset state and few pointers
> 	- free all generic port resources
> 
> The private port resources must be released in the .dev_close callback.
> 
> The .remove callback should:
> 	- call .dev_close callback
> 	- call rte_eth_dev_release_port()
> 	- free multi-port device shared resources
> 
> Despite waiting two years, some drivers have not migrated,
> so they may hit issues with the incompatible new behaviour.
> After sending emails, adding logs, and announcing the deprecation,
> the only last solution is to declare these drivers as unmaintained:
> 	bnx2x, cxgbe, dpaa, dpaa2, enetc, ionic,
> 	ipn3ke,	liquidio, nfp, pfe, qede
> Below is a summary of what to implement in those drivers.
> 
> * The freeing of private port resources must be moved
> from the ".remove(device)" function to the ".dev_close(port)" function.
> 
> * If a generic resource (.mac_addrs or .hash_mac_addrs) cannot be freed,
> it must be set to NULL in ".dev_close" function to protect from
> subsequent rte_eth_dev_release_port() freeing.
> 
> * Note 1:
> The generic resources are freed in rte_eth_dev_release_port(),
> after ".dev_close" is called in rte_eth_dev_close(), but not when
> calling ".dev_close" directly from the ".remove" PMD function.
> That's why rte_eth_dev_release_port() must still be called explicitly
> from ".remove(device)" after calling the ".dev_close" PMD function.
> 
> * Note 2:
> If a device can have multiple ports, the common resources must be freed
> only in the ".remove(device)" function.
> 
> * Note 3:
> The port is supposed to be in a stopped state when it is closed.
> If it is not the case, it is free to the PMD implementation
> how to react when trying to close a non-stopped port:
> either try to stop it automatically or just return an error.

For this note, 'rte_eth_dev_close()' assumes port stopped and sets 
"dev->data->dev_started = 0;" blindly.

should we verify this, or perhaps should call 'rte_eth_dev_stop()' 
within the 'rte_eth_dev_close()' to be sure.


Also many PMDs doesn't check primary process check in the close, which 
should be fixed too, I wonder if it can be fixed in this series?


> -Cavium LiquidIO
> +Cavium LiquidIO - UNMAINTAINED
>   M: Shijith Thotton <sthotton at marvell.com>
>   M: Srisivasubramanian Srinivasan <srinivasan at marvell.com>
>   T: git://dpdk.org/next/dpdk-next-net-mrvl
> @@ -622,7 +622,7 @@ F: drivers/net/octeontx/
>   F: doc/guides/nics/octeontx.rst
>   F: doc/guides/nics/features/octeontx.ini
>   
> -Chelsio cxgbe
> +Chelsio cxgbe - UNMAINTAINED
>   M: Rahul Lakkireddy <rahul.lakkireddy at chelsio.com>
>   F: drivers/net/cxgbe/
>   F: doc/guides/nics/cxgbe.rst
> @@ -711,7 +711,7 @@ F: drivers/net/igc/
>   F: doc/guides/nics/igc.rst
>   F: doc/guides/nics/features/igc.ini
>   
> -Intel ipn3ke
> +Intel ipn3ke - UNMAINTAINED
>   M: Rosen Xu <rosen.xu at intel.com>
>   T: git://dpdk.org/next/dpdk-next-net-intel
>   F: drivers/net/ipn3ke/
> @@ -794,13 +794,13 @@ F: drivers/net/nfb/
>   F: doc/guides/nics/nfb.rst
>   F: doc/guides/nics/features/nfb.ini
>   
> -Netronome nfp
> +Netronome nfp - UNMAINTAINED
>   M: Heinrich Kuhn <heinrich.kuhn at netronome.com>
>   F: drivers/net/nfp/
>   F: doc/guides/nics/nfp.rst
>   F: doc/guides/nics/features/nfp*.ini
>   
> -NXP dpaa
> +NXP dpaa - UNMAINTAINED
>   M: Hemant Agrawal <hemant.agrawal at nxp.com>
>   M: Sachin Saxena <sachin.saxena at nxp.com>
>   F: drivers/mempool/dpaa/
> @@ -808,7 +808,7 @@ F: drivers/net/dpaa/
>   F: doc/guides/nics/dpaa.rst
>   F: doc/guides/nics/features/dpaa.ini
>   
> -NXP dpaa2
> +NXP dpaa2 - UNMAINTAINED
>   M: Hemant Agrawal <hemant.agrawal at nxp.com>
>   M: Sachin Saxena <sachin.saxena at nxp.com>
>   F: drivers/mempool/dpaa2/
> @@ -816,27 +816,27 @@ F: drivers/net/dpaa2/
>   F: doc/guides/nics/dpaa2.rst
>   F: doc/guides/nics/features/dpaa2.ini
>   
> -NXP enetc
> +NXP enetc - UNMAINTAINED
>   M: Gagandeep Singh <g.singh at nxp.com>
>   M: Sachin Saxena <sachin.saxena at nxp.com>
>   F: drivers/net/enetc/
>   F: doc/guides/nics/enetc.rst
>   F: doc/guides/nics/features/enetc.ini
>   
> -NXP pfe
> +NXP pfe - UNMAINTAINED
>   M: Gagandeep Singh <g.singh at nxp.com>
>   M: Akhil Goyal <akhil.goyal at nxp.com>
>   F: doc/guides/nics/pfe.rst
>   F: drivers/net/pfe/
>   F: doc/guides/nics/features/pfe.ini
>   
> -Pensando ionic
> +Pensando ionic - UNMAINTAINED
>   M: Alfredo Cardigliano <cardigliano at ntop.org>
>   F: drivers/net/ionic/
>   F: doc/guides/nics/ionic.rst
>   F: doc/guides/nics/features/ionic.ini
>   
> -QLogic bnx2x
> +QLogic bnx2x - UNMAINTAINED
>   M: Rasesh Mody <rmody at marvell.com>
>   M: Shahed Shaikh <shshaikh at marvell.com>
>   T: git://dpdk.org/next/dpdk-next-net-mrvl
> @@ -844,7 +844,7 @@ F: drivers/net/bnx2x/
>   F: doc/guides/nics/bnx2x.rst
>   F: doc/guides/nics/features/bnx2x*.ini
>   
> -QLogic qede PMD
> +QLogic qede PMD - UNMAINTAINED

I guess 'cxgbe' already send the patch, but for rest, is there a 
deadline for the patches, before mark them as "UNMAINTAINED"?



More information about the dev mailing list