]> git.baikalelectronics.ru Git - kernel.git/commit
net: ks8851: Set initial carrier state to down
authorLukas Wunner <lukas@wunner.de>
Wed, 20 Mar 2019 14:02:00 +0000 (15:02 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Mar 2019 19:43:52 +0000 (12:43 -0700)
commit726dd7f8f45b2938bea63ac66ab933408001565d
tree7cbe85f2b876509752d06b580fc4d4f555831722
parentb655030a83434bf100a568f1028d41916f27c11c
net: ks8851: Set initial carrier state to down

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: Lukas 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: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/micrel/ks8851.c