net/enic: support priorities for TCAM flows
[dpdk.git] / drivers / net / virtio / virtio_ethdev.c
index dc0093b..013a290 100644 (file)
@@ -920,7 +920,6 @@ static const struct eth_dev_ops virtio_eth_dev_ops = {
        .rx_queue_intr_enable    = virtio_dev_rx_queue_intr_enable,
        .rx_queue_intr_disable   = virtio_dev_rx_queue_intr_disable,
        .rx_queue_release        = virtio_dev_queue_release,
-       .rx_descriptor_done      = virtio_dev_rx_queue_done,
        .tx_queue_setup          = virtio_dev_tx_queue_setup,
        .tx_queue_release        = virtio_dev_queue_release,
        /* collect stats per queue */
@@ -1355,12 +1354,13 @@ virtio_negotiate_features(struct virtio_hw *hw, uint64_t req_features)
        PMD_INIT_LOG(DEBUG, "features after negotiate = %" PRIx64,
                hw->guest_features);
 
-       if (hw->modern) {
-               if (!vtpci_with_feature(hw, VIRTIO_F_VERSION_1)) {
-                       PMD_INIT_LOG(ERR,
-                               "VIRTIO_F_VERSION_1 features is not enabled.");
-                       return -1;
-               }
+       if (hw->modern && !vtpci_with_feature(hw, VIRTIO_F_VERSION_1)) {
+               PMD_INIT_LOG(ERR,
+                       "VIRTIO_F_VERSION_1 features is not enabled.");
+               return -1;
+       }
+
+       if (hw->modern || hw->virtio_user_dev) {
                vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_FEATURES_OK);
                if (!(vtpci_get_status(hw) & VIRTIO_CONFIG_STATUS_FEATURES_OK)) {
                        PMD_INIT_LOG(ERR,
@@ -1490,9 +1490,9 @@ virtio_interrupt_handler(void *param)
 
        if (isr & VIRTIO_PCI_ISR_CONFIG) {
                if (virtio_dev_link_update(dev, 0) == 0)
-                       _rte_eth_dev_callback_process(dev,
-                                                     RTE_ETH_EVENT_INTR_LSC,
-                                                     NULL);
+                       rte_eth_dev_callback_process(dev,
+                                                    RTE_ETH_EVENT_INTR_LSC,
+                                                    NULL);
 
                if (vtpci_with_feature(hw, VIRTIO_NET_F_STATUS)) {
                        vtpci_read_dev_config(hw,
@@ -1903,6 +1903,7 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev)
        }
 
        eth_dev->dev_ops = &virtio_eth_dev_ops;
+       eth_dev->rx_descriptor_done = virtio_dev_rx_queue_done;
 
        if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
                if (!hw->virtio_user_dev) {