static void ldpaa_eth_stop(struct eth_device *net_dev) { struct ldpaa_eth_priv *priv = (struct ldpaa_eth_priv *)net_dev->priv; int err = 0; if ((net_dev->state == ETH_STATE_PASSIVE) || (net_dev->state == ETH_STATE_INIT)) return; #ifdef DEBUG ldpaa_eth_get_dpni_counter(); #endif err = dprc_disconnect(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dprc_handle, &dpmac_endpoint); if (err < 0) printf("dprc_disconnect() failed dpmac_endpoint\n"); err = dpmac_destroy(dflt_mc_io, MC_CMD_NO_FLAGS, priv->dpmac_handle); if (err < 0) printf("dpmac_destroy() failed\n"); /* Stop Tx and Rx traffic */ err = dpni_disable(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); if (err < 0) printf("dpni_disable() failed\n"); #ifdef CONFIG_PHYLIB phy_shutdown(priv->phydev); #endif ldpaa_dpbp_free(); dpni_reset(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); dpni_close(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); }
static void ldpaa_eth_stop(struct eth_device *net_dev) { struct ldpaa_eth_priv *priv = (struct ldpaa_eth_priv *)net_dev->priv; int err = 0; if ((net_dev->state == ETH_STATE_PASSIVE) || (net_dev->state == ETH_STATE_INIT)) return; /* Stop Tx and Rx traffic */ err = dpni_disable(dflt_mc_io, priv->dpni_handle); if (err < 0) printf("dpni_disable() failed\n"); #ifdef CONFIG_PHYLIB phy_shutdown(priv->phydev); #endif ldpaa_dpbp_free(); dpni_reset(dflt_mc_io, priv->dpni_handle); dpni_close(dflt_mc_io, priv->dpni_handle); }