net/qede: fix port reconfiguration
This patch fixes deallocation of all fastpath resources unconditionally, when re-configuring the device. When re-allocating resources PMD depends on application to explicitly setup the Rx/Tx queue. Deallocation of all the resources is only required if the Rx/Tx queue configuration changes. For other scenarios like KNI MTU change we'd keep existing configuration. Fixes:8de0c42019
("net/qede: fix odd number of queues usage in 100G mode") Fixes:dd28bc8c6e
("net/qede: fix VF port creation sequence") Cc: stable@dpdk.org Signed-off-by: Rasesh Mody <rmody@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
This commit is contained in:
parent
a60704d1ac
commit
05ccc9d8a9
@ -1273,6 +1273,8 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
|
||||
struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);
|
||||
struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
|
||||
struct rte_eth_rxmode *rxmode = ð_dev->data->dev_conf.rxmode;
|
||||
uint8_t num_rxqs;
|
||||
uint8_t num_txqs;
|
||||
int ret;
|
||||
|
||||
PMD_INIT_FUNC_TRACE(edev);
|
||||
@ -1305,12 +1307,17 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
|
||||
if (qede_check_fdir_support(eth_dev))
|
||||
return -ENOTSUP;
|
||||
|
||||
qede_dealloc_fp_resc(eth_dev);
|
||||
qdev->num_tx_queues = eth_dev->data->nb_tx_queues * edev->num_hwfns;
|
||||
qdev->num_rx_queues = eth_dev->data->nb_rx_queues * edev->num_hwfns;
|
||||
|
||||
if (qede_alloc_fp_resc(qdev))
|
||||
return -ENOMEM;
|
||||
/* Allocate/reallocate fastpath resources only for new queue config */
|
||||
num_txqs = eth_dev->data->nb_tx_queues * edev->num_hwfns;
|
||||
num_rxqs = eth_dev->data->nb_rx_queues * edev->num_hwfns;
|
||||
if (qdev->num_tx_queues != num_txqs ||
|
||||
qdev->num_rx_queues != num_rxqs) {
|
||||
qede_dealloc_fp_resc(eth_dev);
|
||||
qdev->num_tx_queues = num_txqs;
|
||||
qdev->num_rx_queues = num_rxqs;
|
||||
if (qede_alloc_fp_resc(qdev))
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* If jumbo enabled adjust MTU */
|
||||
if (rxmode->offloads & DEV_RX_OFFLOAD_JUMBO_FRAME)
|
||||
|
@ -593,12 +593,14 @@ qede_alloc_mem_sb(struct qede_dev *qdev, struct ecore_sb_info *sb_info,
|
||||
|
||||
int qede_alloc_fp_resc(struct qede_dev *qdev)
|
||||
{
|
||||
struct ecore_dev *edev = &qdev->edev;
|
||||
struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
|
||||
struct qede_fastpath *fp;
|
||||
uint32_t num_sbs;
|
||||
uint16_t sb_idx;
|
||||
int i;
|
||||
|
||||
PMD_INIT_FUNC_TRACE(edev);
|
||||
|
||||
if (IS_VF(edev))
|
||||
ecore_vf_get_num_sbs(ECORE_LEADING_HWFN(edev), &num_sbs);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user