Changeset 42432


Ignore:
Timestamp:
2014-09-07T11:45:32+02:00 (3 years ago)
Author:
nbd
Message:

ath79: dev-eth: Don't advertise 1gbit in link code word on ar9331

While the AR9331 has a gigabit MAC towards the internal switch, the
integrated PHYs however are only 100-base-tx capable. The existing code
however advertieses gigabit capability in the link status word. If you
attach such a PHY to a gigabit capable switch on the remote end, with
some probability it attempts to negotiate gigabit and fails, falling
baco to the AR9331 assuming a 10mbit half-duplex link. This has been
observed quite frequently with the Carambola2 and gigabit capable
switches.

In ath79_register_eth(), "pdata->has_gbit = 1;" is set unconditionally
for both AR9331 ethernet ports. This is most likely wrong. Despite the
two MAC IP cores being gigabit MACs, the MAC for eth1 is connected to a
100base-T PHY via MII. The has_gbit attribute is used in the ethernet
driver to determine the supported link modes.

So either pdata->has_gbit is not set to 1 anymore, or the ethernet
driver needs to be modified to determine the advertised link code word
on another criteria than pdata->has_gbit. This patch implements the
former solution.

Signed-off-by: Harald Welte <laforge@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c

    r41623 r42432  
    941941 
    942942                        pdata->speed = SPEED_1000; 
     943                        pdata->has_gbit = 1; 
    943944                        pdata->duplex = DUPLEX_FULL; 
    944945                        pdata->switch_data = &ath79_switch_data; 
     
    947948                } 
    948949 
    949                 pdata->has_gbit = 1; 
    950950                pdata->is_ar724x = 1; 
    951951 
Note: See TracChangeset for help on using the changeset viewer.