X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fionic%2Fionic_ethdev.c;h=600333e20fd56bb14ee02e6355a164ac75e9a441;hb=0f20acbf5edaeab8e4c9d400e443679d48008569;hp=800f6e5d64b75c571f1a7eed4538c8fb231cbc9c;hpb=9c99878aa1b16de26fcce82c112b401766dd910e;p=dpdk.git diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 800f6e5d64..600333e20f 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -24,8 +24,8 @@ static int ionic_dev_info_get(struct rte_eth_dev *eth_dev, static int ionic_dev_configure(struct rte_eth_dev *dev); static int ionic_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); static int ionic_dev_start(struct rte_eth_dev *dev); -static void ionic_dev_stop(struct rte_eth_dev *dev); -static void ionic_dev_close(struct rte_eth_dev *dev); +static int ionic_dev_stop(struct rte_eth_dev *dev); +static int ionic_dev_close(struct rte_eth_dev *dev); static int ionic_dev_set_link_up(struct rte_eth_dev *dev); static int ionic_dev_set_link_down(struct rte_eth_dev *dev); static int ionic_dev_link_update(struct rte_eth_dev *eth_dev, @@ -940,7 +940,7 @@ ionic_dev_start(struct rte_eth_dev *eth_dev) /* * Stop device: disable rx and tx functions to allow for reconfiguring. */ -static void +static int ionic_dev_stop(struct rte_eth_dev *eth_dev) { struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); @@ -951,30 +951,36 @@ ionic_dev_stop(struct rte_eth_dev *eth_dev) err = ionic_lif_stop(lif); if (err) IONIC_PRINT(ERR, "Cannot stop LIF: %d", err); + + return err; } /* * Reset and stop device. */ -static void +static int ionic_dev_close(struct rte_eth_dev *eth_dev) { struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); int err; IONIC_PRINT_CALL(); + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; err = ionic_lif_stop(lif); if (err) { IONIC_PRINT(ERR, "Cannot stop LIF: %d", err); - return; + return -1; } err = eth_ionic_dev_uninit(eth_dev); if (err) { IONIC_PRINT(ERR, "Cannot destroy LIF: %d", err); - return; + return -1; } + + return 0; } static int @@ -997,6 +1003,7 @@ eth_ionic_dev_init(struct rte_eth_dev *eth_dev, void *init_params) return 0; rte_eth_copy_pci_info(eth_dev, pci_dev); + eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; lif->index = adapter->nlifs; lif->eth_dev = eth_dev; @@ -1061,11 +1068,6 @@ eth_ionic_dev_uninit(struct rte_eth_dev *eth_dev) ionic_lif_deinit(lif); ionic_lif_free(lif); - eth_dev->dev_ops = NULL; - eth_dev->rx_pkt_burst = NULL; - eth_dev->tx_pkt_burst = NULL; - eth_dev->tx_pkt_prepare = NULL; - return 0; }