Rx/Tx queue initialization routine for VFs is same as that of phys function. define separate ops structure for VF devices.
Signed-off-by: Aman Kumar <aman.ku...@vvdntech.in> --- drivers/net/qdma/qdma_vf_ethdev.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/qdma/qdma_vf_ethdev.c b/drivers/net/qdma/qdma_vf_ethdev.c index ca3d21b688..28d34560c1 100644 --- a/drivers/net/qdma/qdma_vf_ethdev.c +++ b/drivers/net/qdma/qdma_vf_ethdev.c @@ -94,6 +94,13 @@ static int qdma_ethdev_offline(struct rte_eth_dev *dev) return rv; } +static struct eth_dev_ops qdma_vf_eth_dev_ops = { + .rx_queue_setup = qdma_dev_rx_queue_setup, + .tx_queue_setup = qdma_dev_tx_queue_setup, + .rx_queue_release = qdma_dev_rx_queue_release, + .tx_queue_release = qdma_dev_tx_queue_release, +}; + /** * DPDK callback to register a PCI device. * @@ -129,8 +136,10 @@ static int eth_qdma_vf_dev_init(struct rte_eth_dev *dev) /* for secondary processes, we don't initialise any further as primary * has already done this work. */ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { + dev->dev_ops = &qdma_vf_eth_dev_ops; return 0; + } if (once) { RTE_LOG(INFO, PMD, "QDMA PMD VERSION: %s\n", QDMA_PMD_VERSION); @@ -160,6 +169,8 @@ static int eth_qdma_vf_dev_init(struct rte_eth_dev *dev) dma_priv->c2h_bypass_mode = RTE_PMD_QDMA_RX_BYPASS_NONE; dma_priv->h2c_bypass_mode = 0; + dev->dev_ops = &qdma_vf_eth_dev_ops; + dma_priv->config_bar_idx = DEFAULT_VF_CONFIG_BAR; dma_priv->bypass_bar_idx = BAR_ID_INVALID; dma_priv->user_bar_idx = BAR_ID_INVALID; -- 2.36.1