X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fpfe%2Fpfe_ethdev.c;h=3135466713fbd3c8ba062a27f59fca2547397c66;hb=89233c081c5d2883bb3cf5bdbc13ae54cb76dec3;hp=55f2fea4b2b3004b8f5941588b1ff6ce83128516;hpb=57803c5ef5a1d067330b0dd7e314149e4ef3a3c3;p=dpdk.git diff --git a/drivers/net/pfe/pfe_ethdev.c b/drivers/net/pfe/pfe_ethdev.c index 55f2fea4b2..3135466713 100644 --- a/drivers/net/pfe/pfe_ethdev.c +++ b/drivers/net/pfe/pfe_ethdev.c @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include #include @@ -373,21 +373,26 @@ pfe_eth_close_cdev(struct pfe_eth_priv_s *priv) } } -static void +static int pfe_eth_stop(struct rte_eth_dev *dev/*, int wake*/) { struct pfe_eth_priv_s *priv = dev->data->dev_private; + dev->data->dev_started = 0; + gemac_disable(priv->EMAC_baseaddr); gpi_disable(priv->GPI_baseaddr); dev->rx_pkt_burst = &pfe_dummy_recv_pkts; dev->tx_pkt_burst = &pfe_dummy_xmit_pkts; + + return 0; } static int pfe_eth_close(struct rte_eth_dev *dev) { + int ret; PMD_INIT_FUNC_TRACE(); if (!dev) @@ -396,7 +401,10 @@ pfe_eth_close(struct rte_eth_dev *dev) if (!g_pfe) return -1; - pfe_eth_stop(dev); + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + ret = pfe_eth_stop(dev); /* Close the device file for link status */ pfe_eth_close_cdev(dev->data->dev_private); @@ -410,7 +418,7 @@ pfe_eth_close(struct rte_eth_dev *dev) g_pfe = NULL; } - return 0; + return ret; } static int @@ -664,8 +672,7 @@ pfe_allmulticast_enable(struct rte_eth_dev *dev) static int pfe_link_down(struct rte_eth_dev *dev) { - pfe_eth_stop(dev); - return 0; + return pfe_eth_stop(dev); } static int @@ -840,13 +847,15 @@ pfe_eth_init(struct rte_vdev_device *vdev, struct pfe *pfe, int id) eth_dev->data->mtu = 1500; eth_dev->dev_ops = &ops; - pfe_eth_stop(eth_dev); + err = pfe_eth_stop(eth_dev); + if (err != 0) + goto err0; pfe_gemac_init(priv); eth_dev->data->nb_rx_queues = 1; eth_dev->data->nb_tx_queues = 1; - eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE; + eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; /* For link status, open the PFE CDEV; Error from this function * is silently ignored; In case of error, the link status will not @@ -1168,4 +1177,4 @@ struct rte_vdev_driver pmd_pfe_drv = { RTE_PMD_REGISTER_VDEV(PFE_NAME_PMD, pmd_pfe_drv); RTE_PMD_REGISTER_PARAM_STRING(PFE_NAME_PMD, PFE_VDEV_GEM_ID_ARG "= "); -RTE_LOG_REGISTER(pfe_logtype_pmd, pmd.net.pfe, NOTICE); +RTE_LOG_REGISTER_DEFAULT(pfe_logtype_pmd, NOTICE);