ethdev: filter destroy event before probed
Checks
Commit Message
If a port is being created and rollbacked because of an error,
the event RTE_ETH_EVENT_DESTROY should not be sent.
It makes no sense to receive a destroy event for a port which
was not yet announced via RTE_ETH_EVENT_NEW.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
lib/librte_ethdev/rte_ethdev.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Comments
On 10/24/2018 2:12 PM, Thomas Monjalon wrote:
> If a port is being created and rollbacked because of an error,
> the event RTE_ETH_EVENT_DESTROY should not be sent.
> It makes no sense to receive a destroy event for a port which
> was not yet announced via RTE_ETH_EVENT_NEW.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
On 10/25/2018 1:38 PM, Ferruh Yigit wrote:
> On 10/24/2018 2:12 PM, Thomas Monjalon wrote:
>> If a port is being created and rollbacked because of an error,
>> the event RTE_ETH_EVENT_DESTROY should not be sent.
>> It makes no sense to receive a destroy event for a port which
>> was not yet announced via RTE_ETH_EVENT_NEW.
>>
>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Applied to dpdk-next-net/master, thanks.
@@ -512,7 +512,9 @@ rte_eth_dev_release_port(struct rte_eth_dev *eth_dev)
rte_eth_dev_shared_data_prepare();
- _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_DESTROY, NULL);
+ if (eth_dev->state != RTE_ETH_DEV_UNUSED)
+ _rte_eth_dev_callback_process(eth_dev,
+ RTE_ETH_EVENT_DESTROY, NULL);
rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock);