• Russell King's avatar
    net: marvell: mvpp2: fix lack of link interrupts · bf2fa125
    Russell King authored
    Sven Auhagen reports that if he changes a SFP+ module for a SFP module
    on the Macchiatobin Single Shot, the link does not come back up.  For
    Sven, it is as easy as:
    
    - Insert a SFP+ module connected, and use ping6 to verify link is up.
    - Remove SFP+ module
    - Insert SFP 1000base-X module use ping6 to verify link is up: Link
      up event did not trigger and the link is down
    
    but that doesn't show the problem for me.  Locally, this has been
    reproduced by:
    
    - Boot with no modules.
    - Insert SFP+ module, confirm link is up.
    - Replace module with 25000base-X module.  Confirm link is up.
    - Set remote end down, link is reported as dropped at both ends.
    - Set remote end up, link is reported up at remote end, but not local
      end due to lack of link interrupt.
    
    Fix this by setting up both GMAC and XLG interrupts for port 0, but
    only unmasking the appropriate interrupt according to the current mode
    set in the mac_config() method.  However, only do the mask/unmask
    dance when we are really changing the link mode to avoid missing any
    link interrupts.
    Tested-by: default avatarSven Auhagen <sven.auhagen@voleatech.de>
    Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    bf2fa125
mvpp2_main.c 148 KB