net/virtio: keep Rx handler whatever the Tx queue config
[dpdk.git] / drivers / net / virtio / virtio_ethdev.c
index f310c97..07eb723 100644 (file)
@@ -1242,7 +1242,7 @@ set_rxtx_funcs(struct rte_eth_dev *eth_dev)
 {
        struct virtio_hw *hw = eth_dev->data->dev_private;
 
-       if (hw->use_simple_rxtx) {
+       if (hw->use_simple_rx) {
                PMD_INIT_LOG(INFO, "virtio: using simple Rx path on port %u",
                        eth_dev->data->port_id);
                eth_dev->rx_pkt_burst = virtio_recv_pkts_vec;
@@ -1257,7 +1257,7 @@ set_rxtx_funcs(struct rte_eth_dev *eth_dev)
                eth_dev->rx_pkt_burst = &virtio_recv_pkts;
        }
 
-       if (hw->use_simple_rxtx) {
+       if (hw->use_simple_tx) {
                PMD_INIT_LOG(INFO, "virtio: using simple Tx path on port %u",
                        eth_dev->data->port_id);
                eth_dev->tx_pkt_burst = virtio_xmit_pkts_simple;
@@ -1742,14 +1742,19 @@ virtio_dev_configure(struct rte_eth_dev *dev)
                        return -EBUSY;
                }
 
-       hw->use_simple_rxtx = 1;
+       hw->use_simple_rx = 1;
+       hw->use_simple_tx = 1;
 
 #if defined RTE_ARCH_ARM64 || defined CONFIG_RTE_ARCH_ARM
-       if (!rte_cpu_get_flag_enabled(RTE_CPUFLAG_NEON))
-               hw->use_simple_rxtx = 0;
+       if (!rte_cpu_get_flag_enabled(RTE_CPUFLAG_NEON)) {
+               hw->use_simple_rx = 0;
+               hw->use_simple_tx = 0;
+       }
 #endif
-       if (vtpci_with_feature(hw, VIRTIO_NET_F_MRG_RXBUF))
-               hw->use_simple_rxtx = 0;
+       if (vtpci_with_feature(hw, VIRTIO_NET_F_MRG_RXBUF)) {
+               hw->use_simple_rx = 0;
+               hw->use_simple_tx = 0;
+       }
 
        return 0;
 }