lkml.org 
[lkml]   [2018]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 159/183] net: stmmac: discard disabled flags in interrupt status register
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Niklas Cassel <niklas.cassel@axis.com>


    [ Upstream commit 1b84ca187510f60f00f4e15255043ce19bb30410 ]

    The interrupt status register in both dwmac1000 and dwmac4 ignores
    interrupt enable (for dwmac4) / interrupt mask (for dwmac1000).
    Therefore, if we want to check only the bits that can actually trigger
    an irq, we have to filter the interrupt status register manually.

    Commit 0a764db10337 ("stmmac: Discard masked flags in interrupt status
    register") fixed this for dwmac1000. Fix the same issue for dwmac4.

    Just like commit 0a764db10337 ("stmmac: Discard masked flags in
    interrupt status register"), this makes sure that we do not get
    spurious link up/link down prints.

    Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
    +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
    @@ -562,10 +562,12 @@ static int dwmac4_irq_status(struct mac_
    struct stmmac_extra_stats *x)
    {
    void __iomem *ioaddr = hw->pcsr;
    - u32 intr_status;
    + u32 intr_status = readl(ioaddr + GMAC_INT_STATUS);
    + u32 intr_enable = readl(ioaddr + GMAC_INT_EN);
    int ret = 0;

    - intr_status = readl(ioaddr + GMAC_INT_STATUS);
    + /* Discard disabled bits */
    + intr_status &= intr_enable;

    /* Not used events (e.g. MMC interrupts) are not handled. */
    if ((intr_status & mmc_tx_irq))

    \
     
     \ /
      Last update: 2018-04-25 12:53    [W:3.769 / U:0.332 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site