net/virtio: fix memory leak when reinitializing device
[dpdk.git] / drivers / net / octeontx / octeontx_ethdev.c
index e4753c6..adca343 100644 (file)
@@ -27,6 +27,9 @@ struct octeontx_vdev_init_params {
        uint8_t nr_port;
 };
 
+uint16_t
+rte_octeontx_pchan_map[OCTEONTX_MAX_BGX_PORTS][OCTEONTX_MAX_LMAC_PER_BGX];
+
 enum octeontx_link_speed {
        OCTEONTX_LINK_SPEED_SGMII,
        OCTEONTX_LINK_SPEED_XAUI,
@@ -38,6 +41,27 @@ enum octeontx_link_speed {
        OCTEONTX_LINK_SPEED_RESERVE2
 };
 
+int otx_net_logtype_mbox;
+int otx_net_logtype_init;
+int otx_net_logtype_driver;
+
+RTE_INIT(otx_net_init_log);
+static void
+otx_net_init_log(void)
+{
+       otx_net_logtype_mbox = rte_log_register("pmd.otx.ethdev.mbox");
+       if (otx_net_logtype_mbox >= 0)
+               rte_log_set_level(otx_net_logtype_mbox, RTE_LOG_NOTICE);
+
+       otx_net_logtype_init = rte_log_register("pmd.otx.ethdev.init");
+       if (otx_net_logtype_init >= 0)
+               rte_log_set_level(otx_net_logtype_init, RTE_LOG_NOTICE);
+
+       otx_net_logtype_driver = rte_log_register("pmd.otx.ethdev.driver");
+       if (otx_net_logtype_driver >= 0)
+               rte_log_set_level(otx_net_logtype_driver, RTE_LOG_NOTICE);
+}
+
 /* Parse integer from integer argument */
 static int
 parse_integer_arg(const char *key __rte_unused,
@@ -545,8 +569,8 @@ octeontx_dev_link_update(struct rte_eth_dev *dev,
                break;
        }
 
-       link.link_duplex = ETH_LINK_AUTONEG;
-       link.link_autoneg = ETH_LINK_SPEED_AUTONEG;
+       link.link_duplex = ETH_LINK_FULL_DUPLEX;
+       link.link_autoneg = ETH_LINK_AUTONEG;
 
        return octeontx_atomic_write_link_status(dev, &link);
 }
@@ -1118,6 +1142,9 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev,
                                nic->num_tx_queues);
        PMD_INIT_LOG(DEBUG, "speed %d mtu %d", nic->speed, nic->mtu);
 
+       rte_octeontx_pchan_map[(nic->base_ochan >> 8) & 0x7]
+               [(nic->base_ochan >> 4) & 0xF] = data->port_id;
+
        return data->port_id;
 
 err: