sh_eth: fix handling of no LINK signal
authorSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Sun, 31 Mar 2013 09:50:07 +0000 (09:50 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 31 Mar 2013 23:42:33 +0000 (19:42 -0400)
commit1e1b812bbe1069fc8e2e372dca7d5f541c7a8ceb
tree70dd800eaa9af831acf96284c3bc7d13e562f581
parent14bc435ea54cb888409efb54fc6b76c13ef530e9
sh_eth: fix handling of no LINK signal

The code handling the absent LINK signal (or the absent PSR register -- which
reflects the state of this signal) is quite naive and has probably never really
worked.  It's probably enough to say that this code is executed only on the LINK
change interrupt (sic!) but even if we actually have the signal and choose to
ignore it (it might be connected to PHY's link/activity LED output as on the
Renesas BOCK-W board), sh_eth_adjust_link() on which this code relies to update
'mdp->link' gets executed later than the LINK change interrupt where it is
checked, and so RX/TX never get enabled via ECMR register.

So, ignore the LINK changed interrupt iff LINK signal is absent (or just chosen
not to be used) or PSR register is absent, and enable/disable RX/TX directly in
sh_eth_adjust_link() in this case.

Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/renesas/sh_eth.c