net/iavf: fix queue start failed

Message ID 20210913034023.4324-1-chenqiming_huawei@163.com (mailing list archive)
State Superseded, archived
Delegated to: Qi Zhang
Headers
Series net/iavf: fix queue start failed |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/github-robot: build success github build: passed
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing fail Testing issues
ci/iol-intel-Performance success Performance Testing PASS

Commit Message

Qiming Chen Sept. 13, 2021, 3:40 a.m. UTC
  In the iavf_dev_start function, if the first execution of
iavf_start_queues fails, it will still fail when it is started again.
The patch solves the problem of rolling back resources after the queue
fails to start, and then restarts successfully.

Fixes: 69dd4c3d0898 ("net/avf: enable queue and device")
Cc: stable@dpdk.org

Signed-off-by: Qiming Chen <chenqiming_huawei@163.com>
---
 drivers/net/iavf/iavf_ethdev.c | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Qi Zhang Sept. 15, 2021, 2:01 a.m. UTC | #1
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Qiming Chen
> Sent: Monday, September 13, 2021 11:40 AM
> To: dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>;
> Qiming Chen <chenqiming_huawei@163.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/iavf: fix queue start failed
> 
> In the iavf_dev_start function, if the first execution of iavf_start_queues fails, it
> will still fail when it is started again.
> The patch solves the problem of rolling back resources after the queue fails to
> start, and then restarts successfully.
> 
> Fixes: 69dd4c3d0898 ("net/avf: enable queue and device")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Qiming Chen <chenqiming_huawei@163.com>
> ---
>  drivers/net/iavf/iavf_ethdev.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
> index 6ed2dbbcbe..9eca4b70ee 100644
> --- a/drivers/net/iavf/iavf_ethdev.c
> +++ b/drivers/net/iavf/iavf_ethdev.c
> @@ -897,6 +897,7 @@ iavf_dev_start(struct rte_eth_dev *dev)
> 
>  err_mac:
>  	iavf_add_del_all_mac_addr(adapter, false);
> +	iavf_stop_queues(dev);

This looks like not a good place to fix the issue, if iavf_start_queues failed, it it better all the resource be cleanup inside the function?

>  err_queue:
>  	return -1;
>  }
> --
> 2.30.1.windows.1
  

Patch

diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 6ed2dbbcbe..9eca4b70ee 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -897,6 +897,7 @@  iavf_dev_start(struct rte_eth_dev *dev)
 
 err_mac:
 	iavf_add_del_all_mac_addr(adapter, false);
+	iavf_stop_queues(dev);
 err_queue:
 	return -1;
 }