From fff4914bd9e6bcb68faea5b988942477f73ee34e Mon Sep 17 00:00:00 2001 From: Dapeng Yu Date: Mon, 11 Oct 2021 15:25:46 +0800 Subject: [PATCH] net/ice: fix freeing queues on DCF device reset In function ice_dcf_stop_queues(), RX queues and TX queues are actually not freed, so their pointers shall not be set to NULL when queues are stopped. This patch adds function call to free queues on DCF device close, which also set the RX and TX queues' pointers to NULL on freeing queues, and avoids referring to the released resource when device is started again. Fixes: 1a86f4dbdf42 ("net/ice: support DCF device reset") Cc: stable@dpdk.org Signed-off-by: Dapeng Yu Acked-by: Qi Zhang --- drivers/net/ice/ice_dcf_ethdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index f9be43741f..14f4fe80fe 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -603,7 +603,6 @@ ice_dcf_stop_queues(struct rte_eth_dev *dev) txq->tx_rel_mbufs(txq); reset_tx_queue(txq); dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED; - dev->data->tx_queues[i] = NULL; } for (i = 0; i < dev->data->nb_rx_queues; i++) { rxq = dev->data->rx_queues[i]; @@ -612,7 +611,6 @@ ice_dcf_stop_queues(struct rte_eth_dev *dev) rxq->rx_rel_mbufs(rxq); reset_rx_queue(rxq); dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED; - dev->data->rx_queues[i] = NULL; } } @@ -905,6 +903,8 @@ ice_dcf_dev_close(struct rte_eth_dev *dev) (void)ice_dcf_dev_stop(dev); + ice_free_queues(dev); + ice_dcf_free_repr_info(adapter); ice_dcf_uninit_parent_adapter(dev); ice_dcf_uninit_hw(dev, &adapter->real_hw); -- 2.20.1