X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fliquidio%2Flio_ethdev.c;h=d4dd3768cdb68ea9d2b90f23ff67f197258c6b07;hb=be797cbf4582f3c474f208aeb3d1baa4001a6156;hp=52bcefc8195c1539c275f66b1695a1664f2291f6;hpb=b8f5d2ae75c97698190d46f4810d01f407016aad;p=dpdk.git diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c index 52bcefc819..d4dd3768cd 100644 --- a/drivers/net/liquidio/lio_ethdev.c +++ b/drivers/net/liquidio/lio_ethdev.c @@ -1465,7 +1465,7 @@ dev_lsc_handle_error: } /* Stop device and disable input/output functions */ -static void +static int lio_dev_stop(struct rte_eth_dev *eth_dev) { struct lio_device *lio_dev = LIO_DEV(eth_dev); @@ -1484,6 +1484,8 @@ lio_dev_stop(struct rte_eth_dev *eth_dev) /* Clear recorded link status */ lio_dev->linfo.link.link_status64 = 0; + + return 0; } static int @@ -1555,6 +1557,7 @@ static int lio_dev_close(struct rte_eth_dev *eth_dev) { struct lio_device *lio_dev = LIO_DEV(eth_dev); + int ret = 0; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; @@ -1562,7 +1565,7 @@ lio_dev_close(struct rte_eth_dev *eth_dev) lio_dev_info(lio_dev, "closing port %d\n", eth_dev->data->port_id); if (lio_dev->intf_open) - lio_dev_stop(eth_dev); + ret = lio_dev_stop(eth_dev); /* Reset ioq regs */ lio_dev->fn_list.setup_device_regs(lio_dev); @@ -1586,7 +1589,7 @@ lio_dev_close(struct rte_eth_dev *eth_dev) /* Delete all queues */ lio_dev_clear_queues(eth_dev); - return 0; + return ret; } /** @@ -1704,6 +1707,7 @@ static int lio_reconf_queues(struct rte_eth_dev *eth_dev, int num_txq, int num_rxq) { struct lio_device *lio_dev = LIO_DEV(eth_dev); + int ret; if (lio_dev->nb_rx_queues != num_rxq || lio_dev->nb_tx_queues != num_txq) { @@ -1713,8 +1717,11 @@ lio_reconf_queues(struct rte_eth_dev *eth_dev, int num_txq, int num_rxq) lio_dev->nb_tx_queues = num_txq; } - if (lio_dev->intf_open) - lio_dev_stop(eth_dev); + if (lio_dev->intf_open) { + ret = lio_dev_stop(eth_dev); + if (ret != 0) + return ret; + } /* Reset ioq registers */ if (lio_dev->fn_list.setup_device_regs(lio_dev)) { @@ -2068,10 +2075,6 @@ lio_eth_dev_uninit(struct rte_eth_dev *eth_dev) /* lio_free_sc_buffer_pool */ lio_free_sc_buffer_pool(lio_dev); - eth_dev->dev_ops = NULL; - eth_dev->rx_pkt_burst = NULL; - eth_dev->tx_pkt_burst = NULL; - return 0; } @@ -2091,6 +2094,7 @@ lio_eth_dev_init(struct rte_eth_dev *eth_dev) return 0; rte_eth_copy_pci_info(eth_dev, pdev); + eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; if (pdev->mem_resource[0].addr) { lio_dev->hw_addr = pdev->mem_resource[0].addr;