LINUX.ORG.RU

LAN7850 не заводится 1000Bit

 , ,


0

1

Берем чип 7850 который по usb https://github.com/torvalds/linux/blob/master/drivers/net/usb/lan78xx.c

Не заводиться 1000мбит, интерфейс определяется но больше ничего. В сотке всё работает.

Кстати пробовали на винде, так там и 1000 нормально работает

Ответ на: комментарий от CrazyAlex25

Ну это ж не скорость а канальная частота, грубо говоря теоретический максимум. Там IIRC надо конфиг phy крутить, или mdx форсить, что-то такое. Так то оно заводилось.

slapin ★★★★★ ()
Ответ на: комментарий от slapin

Так оно если линк 1000 поднимет, реально будет 250-300. Можно попробовать в ручную сменить линк с помощью mii-tools или ethtool:

# ethtool eth0
Если поддерживает 
# ethtool -s eth0 speed 1000 duplex full
Или
# mii-tool eth0
# mii-tool -F 1000baseTx-HD

CrazyAlex25 ★★ ()
Ответ на: комментарий от slapin

Ну да, на винде проверили iperf’ом - прокачали 324, этого бы хватило.

Но вот на linux’e вставляем, видим интерфейс, он работает… Вставляет в 100 - прилетает айпи, есть инет итд… Вставляем в 1000 - не прилетает айпи, нет инета. В ручную пробовали назначать - тоже не идет.

Думали баг lan78xx.c но ведь полно дивайсов на этом чипе, уже бы пофиксили

Ruslan ()
Ответ на: комментарий от Ruslan

Алгоритм такой (прошу прощения за очевидность):

  1. Убедиться что патчкорд точно рабочий
  2. Отключить auto-mdx и выставить вручную 1000fd (mii-tool) на обеих концах. Карточки на этом чипе действительно работают (у меня 3 таких). Но производитель мог сделать косяк и поправить его в своем драйвере. Но все должно решиться mii-tool.
slapin ★★★★★ ()
Ответ на: комментарий от slapin

попробуй еще сделать так:

mii-tool -A 1000baseT-FD -v eth0

или

mii-tool -F 1000baseT-FD -v eth0

или

mii-tool -A 1000baseT-HD -v eth0

или

mii-tool -F 1000baseT-HD -v eth0

но это надо видеть что там у тебя творится вообще

slapin ★★★★★ ()
Последнее исправление: slapin (всего исправлений: 1)
Ответ на: комментарий от slapin
Settings for enp0s20f0u5:
    Supported ports: [ TP MII ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: Symmetric Receive-only
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  1000baseT/Full 
    Advertised pause frame use: Symmetric
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                         100baseT/Half 100baseT/Full 
                                         1000baseT/Half 1000baseT/Full 
    Link partner advertised pause frame use: Symmetric Receive-only
    Link partner advertised auto-negotiation: Yes
    Link partner advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Port: MII
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbag
    Wake-on: g
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes
Ruslan ()
Ответ на: комментарий от Ruslan

у тебя ведь это? http://ww1.microchip.com/downloads/en/DeviceDoc/LAN7850-Data-Sheet-DS00001993E.pdf

это должно работать, там нечему не работать… могу на выходных найти и потестить. у тебя какая версия ядра? у меня на железках старье просто. Этот чип в OTG-USB хабах стоит, и нужно будет ваять переходник чтобы на компе проверить :(

slapin ★★★★★ ()
Ответ на: комментарий от slapin

Да, он самый. Ядра уже разные пробовали: 4.19.118, 5.4.43 В сотке без проблем, в тыще никак :) Я отпишусь еще перед выходными, если сами не победим, интересно воспроизвести у кого-то другого

Ruslan ()
Ответ на: комментарий от slapin

Там можно сдампнуть регистры mii и посмотреть правильные ли они в итоге получаются, производитель мог нагнать (mii-tool -vvv eth0, ethtool -d eth0) и проверить по даташиту. Можно менять через ethtool.

slapin ★★★★★ ()
Ответ на: комментарий от slapin

Достар регистры

sudo ethtool -d enxe66afe16fd1b

LAN78xx Registers:
------------------
ID_REV       = 0x78500002
INT_STS      = 0x00010000
HW_CFG       = 0x00000010
PMT_CTRL     = 0x000041C1
E2P_CMD      = 0x00000000
E2P_DATA     = 0x00000000
USB_STATUS   = 0x00000000
VLAN_TYPE    = 0x00008100

MAC Registers:
--------------
MAC_CR             = 0x00003008
MAC_RX             = 0x05F20021
MAC_TX             = 0x00000001
FLOW               = 0x00000000
ERR_STS            = 0x00000000
MII_ACC            = 0x00000840
MII_DATA           = 0x000079ED
EEE_TX_LPI_REQ_DLY = 0x00000000
EEE_TW_TX_SYS      = 0x0021001E
EEE_TX_LPI_REM_DLY = 0x00000000
WUCSR              = 0x00000000

PHY Registers:
--------------
Mode Control = 0x1040
Mode Status  = 0x79ED
Device identifier1   = 0x0007
Device identifier2   = 0xC132
Auto-Neg Advertisement         = 0x05E1
Auto-Neg Link Partner Ability  = 0xC1E1
Auto-Neg Expansion      = 0x000F
Auto-Neg Next Page TX   = 0x2001
Auto-Neg Link Partner Next Page RX  = 0x4BFF
1000BASE-T Control  = 0x0200
1000BASE-T Status   = 0x3C00
Reserved  = 0x0000
Reserved  = 0x0000
MMD Access Control       = 0x4003
MMD Access Address/Data  = 0x2001
1000BASE-T Status Extension1  = 0x3000
1000BASE-TX Status Extension  = 0x0000
1000BASE-T Status Extension2  = 0x9000
Bypass Control  = 0x0088
100BASE-TX/1000BASE-T Rx Error Counter    = 0x0000
100BASE-TX/1000BASE-T FC Err Counter      = 0x0000
10BASE-T/100BASE-TX/1000BASE-T LD Counter = 0x0000
Extended 10BASE-T Control and Status      = 0x3200
Extended PHY Control1  = 0x0004
Extended PHY Control2  = 0x0040
Interrupt Mask    = 0xA000
Interrupt Status  = 0x0000
Reserved  = 0x0000
Auxiliary Control and Status  = 0x8F35
LED Mode Select  = 0x8021
LED Behavior     = 0x0400
Extended Page Access  = 0x0000

А чем такое можно под виндой получить для сравнения?

Ruslan ()

Короче разобрались :) Рассказываю…

На нашей тестовой плате eeprom’a небыло вообще, а в OTP с завода в чипе пустота. По чистой случайности, когда там пустота (нули в регистрах) - этого хватает для поднятия сети на 100мбит в линуксе. У винды свой драйвер - там работает и 1000мбит.

Для прошивания в otp или eeprom есть прога от микрочипа mplab-connect-configurator Но прикол в том, что пока нету eeprom’a - она не даёт ничего сделать (сгенерировать дефолтную прошивку). Купили нужный eeprom, припаяли, прога mplab-connect начала работать и дала сгенерировать дефолтную прошивку. Прошили в eeprom - всё хорошо, затем прошили и в OTP - тоже всё хорошо :) Включаем по usb в убунту - все летает, включаем по usb в nano pi core2 (armbian) - сетка увиделась на 1000мбит, но прокачавается iperf’ом только 100-109мбит. Пока думаем как победить :)

Ruslan ()