The RSS support for GVE allows multiple CPU cores to
handle the rx/tx queues as pollers. This requires initializing
the eth_dev_ops and updating the RX/TX functions for these pollers.

Signed-off-by: Tathagat Priyadarshi <tathagat.d...@gmail.com>
Acked-by: Rushil Gupta <rush...@google.com>
Acked-by: Joshua Washington <joshw...@google.com>
---
 drivers/net/gve/gve_ethdev.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c
index ca92277..2d8ef6f 100644
--- a/drivers/net/gve/gve_ethdev.c
+++ b/drivers/net/gve/gve_ethdev.c
@@ -1173,8 +1173,18 @@ struct gve_queue_page_list *
        rte_be32_t *db_bar;
        int err;
 
-       if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+       if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
+               if (gve_is_gqi(priv)) {
+                       gve_set_rx_function(eth_dev);
+                       gve_set_tx_function(eth_dev);
+                       eth_dev->dev_ops = &gve_eth_dev_ops;
+               } else {
+                       gve_set_rx_function_dqo(eth_dev);
+                       gve_set_tx_function_dqo(eth_dev);
+                       eth_dev->dev_ops = &gve_eth_dev_ops_dqo;
+               }
                return 0;
+       }
 
        pci_dev = RTE_DEV_TO_PCI(eth_dev->device);
 
-- 
1.8.3.1

Reply via email to