net/e1000: align dynamic log names with standard
[dpdk.git] / drivers / net / e1000 / em_ethdev.c
index 78fdccf..242375f 100644 (file)
@@ -16,7 +16,7 @@
 #include <rte_pci.h>
 #include <rte_bus_pci.h>
 #include <rte_ether.h>
-#include <rte_ethdev.h>
+#include <rte_ethdev_driver.h>
 #include <rte_ethdev_pci.h>
 #include <rte_memory.h>
 #include <rte_eal.h>
@@ -135,6 +135,7 @@ static const struct rte_pci_id pci_id_em_map[] = {
        { RTE_PCI_DEVICE(E1000_INTEL_VENDOR_ID, E1000_DEV_ID_82574L) },
        { RTE_PCI_DEVICE(E1000_INTEL_VENDOR_ID, E1000_DEV_ID_82574LA) },
        { RTE_PCI_DEVICE(E1000_INTEL_VENDOR_ID, E1000_DEV_ID_82583V) },
+       { RTE_PCI_DEVICE(E1000_INTEL_VENDOR_ID, E1000_DEV_ID_PCH2_LV_LM) },
        { RTE_PCI_DEVICE(E1000_INTEL_VENDOR_ID, E1000_DEV_ID_PCH_LPT_I217_LM) },
        { RTE_PCI_DEVICE(E1000_INTEL_VENDOR_ID, E1000_DEV_ID_PCH_LPT_I217_V) },
        { RTE_PCI_DEVICE(E1000_INTEL_VENDOR_ID, E1000_DEV_ID_PCH_LPTLP_I218_LM) },
@@ -260,6 +261,7 @@ eth_em_dev_is_ich8(struct e1000_hw *hw)
        DEBUGFUNC("eth_em_dev_is_ich8");
 
        switch (hw->device_id) {
+       case E1000_DEV_ID_PCH2_LV_LM:
        case E1000_DEV_ID_PCH_LPT_I217_LM:
        case E1000_DEV_ID_PCH_LPT_I217_V:
        case E1000_DEV_ID_PCH_LPTLP_I218_LM:
@@ -560,6 +562,30 @@ em_set_pba(struct e1000_hw *hw)
        E1000_WRITE_REG(hw, E1000_PBA, pba);
 }
 
+static void
+eth_em_rxtx_control(struct rte_eth_dev *dev,
+                   bool enable)
+{
+       struct e1000_hw *hw =
+               E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+       uint32_t tctl, rctl;
+
+       tctl = E1000_READ_REG(hw, E1000_TCTL);
+       rctl = E1000_READ_REG(hw, E1000_RCTL);
+       if (enable) {
+               /* enable Tx/Rx */
+               tctl |= E1000_TCTL_EN;
+               rctl |= E1000_RCTL_EN;
+       } else {
+               /* disable Tx/Rx */
+               tctl &= ~E1000_TCTL_EN;
+               rctl &= ~E1000_RCTL_EN;
+       }
+       E1000_WRITE_REG(hw, E1000_TCTL, tctl);
+       E1000_WRITE_REG(hw, E1000_RCTL, rctl);
+       E1000_WRITE_FLUSH(hw);
+}
+
 static int
 eth_em_start(struct rte_eth_dev *dev)
 {
@@ -733,6 +759,9 @@ eth_em_start(struct rte_eth_dev *dev)
 
        adapter->stopped = 0;
 
+       eth_em_rxtx_control(dev, true);
+       eth_em_link_update(dev, 0);
+
        PMD_INIT_LOG(DEBUG, "<<");
 
        return 0;
@@ -758,6 +787,7 @@ eth_em_stop(struct rte_eth_dev *dev)
        struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
        struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
 
+       eth_em_rxtx_control(dev, false);
        em_rxq_intr_disable(hw);
        em_lsc_intr_disable(hw);
 
@@ -1584,7 +1614,6 @@ eth_em_interrupt_action(struct rte_eth_dev *dev,
                E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
        struct e1000_interrupt *intr =
                E1000_DEV_PRIVATE_TO_INTR(dev->data->dev_private);
-       uint32_t tctl, rctl;
        struct rte_eth_link link;
        int ret;
 
@@ -1616,21 +1645,6 @@ eth_em_interrupt_action(struct rte_eth_dev *dev,
                     pci_dev->addr.domain, pci_dev->addr.bus,
                     pci_dev->addr.devid, pci_dev->addr.function);
 
-       tctl = E1000_READ_REG(hw, E1000_TCTL);
-       rctl = E1000_READ_REG(hw, E1000_RCTL);
-       if (link.link_status) {
-               /* enable Tx/Rx */
-               tctl |= E1000_TCTL_EN;
-               rctl |= E1000_RCTL_EN;
-       } else {
-               /* disable Tx/Rx */
-               tctl &= ~E1000_TCTL_EN;
-               rctl &= ~E1000_RCTL_EN;
-       }
-       E1000_WRITE_REG(hw, E1000_TCTL, tctl);
-       E1000_WRITE_REG(hw, E1000_RCTL, rctl);
-       E1000_WRITE_FLUSH(hw);
-
        return 0;
 }
 
@@ -1652,7 +1666,7 @@ eth_em_interrupt_handler(void *param)
 
        eth_em_interrupt_get_status(dev);
        eth_em_interrupt_action(dev, dev->intr_handle);
-       _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL, NULL);
+       _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL);
 }
 
 static int
@@ -1854,10 +1868,10 @@ RTE_INIT(e1000_init_log);
 static void
 e1000_init_log(void)
 {
-       e1000_logtype_init = rte_log_register("pmd.e1000.init");
+       e1000_logtype_init = rte_log_register("pmd.net.e1000.init");
        if (e1000_logtype_init >= 0)
                rte_log_set_level(e1000_logtype_init, RTE_LOG_NOTICE);
-       e1000_logtype_driver = rte_log_register("pmd.e1000.driver");
+       e1000_logtype_driver = rte_log_register("pmd.net.e1000.driver");
        if (e1000_logtype_driver >= 0)
                rte_log_set_level(e1000_logtype_driver, RTE_LOG_NOTICE);
 }