• Lukas Wunner's avatar
    net: ks8851: Set initial carrier state to down · 9624bafa
    Lukas Wunner authored
    The ks8851 chip's initial carrier state is down. A Link Change Interrupt
    is signaled once interrupts are enabled if the carrier is up.
    
    The ks8851 driver has it backwards by assuming that the initial carrier
    state is up. The state is therefore misrepresented if the interface is
    opened with no cable attached. Fix it.
    
    The Link Change interrupt is sometimes not signaled unless the P1MBSR
    register (which contains the Link Status bit) is read on ->ndo_open().
    This might be a hardware erratum. Read the register by calling
    mii_check_link(), which has the desirable side effect of setting the
    carrier state to down if the cable was detached while the interface was
    closed.
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Ben Dooks <ben.dooks@codethink.co.uk>
    Cc: Tristram Ha <Tristram.Ha@microchip.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9624bafa
ks8851.c 40.2 KB