diff options
author | Giuseppe CAVALLARO | 2011-09-01 23:51:38 +0200 |
---|---|---|
committer | David S. Miller | 2011-09-15 21:40:01 +0200 |
commit | 1c901a46d576926287b05fc145bd3fd31a3e65de (patch) | |
tree | 058be60cafd52cb138277ba658b6959519bbb203 /drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | |
parent | stmmac: support wake up irq from external sources (v3) (diff) | |
download | kernel-qcow2-linux-1c901a46d576926287b05fc145bd3fd31a3e65de.tar.gz kernel-qcow2-linux-1c901a46d576926287b05fc145bd3fd31a3e65de.tar.xz kernel-qcow2-linux-1c901a46d576926287b05fc145bd3fd31a3e65de.zip |
stmmac: add MMC support exported via ethtool (v3)
This patch adds the MMC management counters support.
MMC module is an extension of the register address
space and all the hardware counters can be accessed
via ethtoo -S ethX.
Note that, the MMC interrupts remain masked and the logic
to handle this kind of interrupt will be added later (if
actually useful).
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/stmicro/stmmac/stmmac_main.c')
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 5aea21e587dd..c28b90d35007 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -748,6 +748,17 @@ static void stmmac_dma_interrupt(struct stmmac_priv *priv) stmmac_tx_err(priv); } +static void stmmac_mmc_setup(struct stmmac_priv *priv) +{ + unsigned int mode = MMC_CNTRL_RESET_ON_READ | MMC_CNTRL_COUNTER_RESET | + MMC_CNTRL_PRESET | MMC_CNTRL_FULL_HALF_PRESET; + + /* Do not manage MMC IRQ (FIXME) */ + dwmac_mmc_intr_all_mask(priv->ioaddr); + dwmac_mmc_ctrl(priv->ioaddr, mode); + memset(&priv->mmc, 0, sizeof(struct stmmac_counters)); +} + /** * stmmac_open - open entry point of the driver * @dev : pointer to the device structure. @@ -846,6 +857,8 @@ static int stmmac_open(struct net_device *dev) memset(&priv->xstats, 0, sizeof(struct stmmac_extra_stats)); priv->xstats.threshold = tc; + stmmac_mmc_setup(priv); + /* Start the ball rolling... */ DBG(probe, DEBUG, "%s: DMA RX/TX processes started...\n", dev->name); priv->hw->dma->start_tx(priv->ioaddr); |