net/virtio: fix log levels in configure
[dpdk.git] / drivers / net / virtio / virtio_ethdev.c
index 371f170..f0dec7f 100644 (file)
@@ -1229,7 +1229,8 @@ 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_EVENT_INTR_LSC,
+                                                     NULL, NULL);
        }
 
 }
@@ -1663,8 +1664,20 @@ virtio_dev_configure(struct rte_eth_dev *dev)
 
        PMD_INIT_LOG(DEBUG, "configure");
        req_features = VIRTIO_PMD_DEFAULT_GUEST_FEATURES;
+
+       if (dev->data->dev_conf.intr_conf.rxq) {
+               ret = virtio_init_device(dev, hw->req_guest_features);
+               if (ret < 0)
+                       return ret;
+       }
+
+       /* The name hw_ip_checksum is a bit confusing since it can be
+        * set by the application to request L3 and/or L4 checksums. In
+        * case of virtio, only L4 checksum is supported.
+        */
        if (rxmode->hw_ip_checksum)
                req_features |= (1ULL << VIRTIO_NET_F_GUEST_CSUM);
+
        if (rxmode->enable_lro)
                req_features |=
                        (1ULL << VIRTIO_NET_F_GUEST_TSO4) |
@@ -1679,16 +1692,16 @@ virtio_dev_configure(struct rte_eth_dev *dev)
 
        if (rxmode->hw_ip_checksum &&
                !vtpci_with_feature(hw, VIRTIO_NET_F_GUEST_CSUM)) {
-               PMD_DRV_LOG(NOTICE,
-                       "rx ip checksum not available on this host");
+               PMD_DRV_LOG(ERR,
+                       "rx checksum not available on this host");
                return -ENOTSUP;
        }
 
        if (rxmode->enable_lro &&
                (!vtpci_with_feature(hw, VIRTIO_NET_F_GUEST_TSO4) ||
                        !vtpci_with_feature(hw, VIRTIO_NET_F_GUEST_TSO4))) {
-               PMD_DRV_LOG(NOTICE,
-                       "lro not available on this host");
+               PMD_DRV_LOG(ERR,
+                       "Large Receive Offload not available on this host");
                return -ENOTSUP;
        }
 
@@ -1700,7 +1713,7 @@ virtio_dev_configure(struct rte_eth_dev *dev)
 
        if (rxmode->hw_vlan_filter
            && !vtpci_with_feature(hw, VIRTIO_NET_F_CTRL_VLAN)) {
-               PMD_DRV_LOG(NOTICE,
+               PMD_DRV_LOG(ERR,
                            "vlan filtering not available on this host");
                return -ENOTSUP;
        }
@@ -1764,6 +1777,11 @@ virtio_dev_start(struct rte_eth_dev *dev)
                virtqueue_notify(rxvq->vq);
        }
 
+       for (i = 0; i < dev->data->nb_tx_queues; i++) {
+               txvq = dev->data->tx_queues[i];
+               virtqueue_notify(txvq->vq);
+       }
+
        PMD_INIT_LOG(DEBUG, "Notified backend at initialization");
 
        for (i = 0; i < dev->data->nb_rx_queues; i++) {