/** * Close network device * * @v netdev Network device */ static void intelx_close ( struct net_device *netdev ) { struct intel_nic *intel = netdev->priv; uint32_t rxctrl; uint32_t dmatxctl; /* Disable receiver */ rxctrl = readl ( intel->regs + INTELX_RXCTRL ); rxctrl &= ~INTELX_RXCTRL_RXEN; writel ( rxctrl, intel->regs + INTELX_RXCTRL ); /* Disable transmitter */ dmatxctl = readl ( intel->regs + INTELX_DMATXCTL ); dmatxctl &= ~INTELX_DMATXCTL_TE; writel ( dmatxctl, intel->regs + INTELX_DMATXCTL ); /* Destroy receive descriptor ring */ intel_destroy_ring ( intel, &intel->rx ); /* Discard any unused receive buffers */ intel_empty_rx ( intel ); /* Destroy transmit descriptor ring */ intel_destroy_ring ( intel, &intel->tx ); /* Reset the NIC, to flush the transmit and receive FIFOs */ intelx_reset ( intel ); }
/** * Close network device * * @v netdev Network device */ static void intelxvf_close ( struct net_device *netdev ) { struct intel_nic *intel = netdev->priv; /* Destroy receive descriptor ring */ intel_destroy_ring ( intel, &intel->rx ); /* Discard any unused receive buffers */ intel_empty_rx ( intel ); /* Destroy transmit descriptor ring */ intel_destroy_ring ( intel, &intel->tx ); /* Reset the function */ intelxvf_reset ( intel ); }