Linux

LAN9500A Linux USB 乙太網驅動問題!

  • September 24, 2017

我正在開發一個配備 iMX28 模組和 LAN9500A USB 到乙太網控制器的定制板,沒有用於網路介面的 EEPROM。作業系統是 Linux(核心 v3.16)。LAN9500A 連接到帶有集成磁性元件和 LED 的 RJ45 插孔。

我對照我的設計檢查了 Microchip 的參考原理圖。 http://ww1.microchip.com/downloads/en/DeviceDoc/9500a_sch.pdf

我可以看到檢測到 LAN9500A 並載入了正確的驅動程序…,

# dmesg | grep -i smsc
[    1.549126] usbcore: registered new interface driver smsc95xx
[    2.186356] smsc95xx v1.0.4
[    2.258622] smsc95xx 1-1:1.0 eth2: register 'smsc95xx' at usb-ci_hdrc.1-1, smsc95xx USB 2.0 Ethernet, 62:94:6a:f1:ec:26
[    9.588663] fec 800f0000.ethernet eth0: Freescale FEC PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=800f0000.etherne:00, irq=-1)

系統打開後,連結和活動 LED 會亮起…

# ifconfig eth2 up
IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready
root@imx28evk:~# IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
smsc95xx 1-1:1.0 eth2: link up, 100Mbps, full-duplex, lpa 0x4DE1
IPv6: eth2: IPv6 duplicate address fe80::fa:25ff:fe59:cf38 detected!

# ifconfig eth2 down

LED仍然亮著…

# ifconfig eth2 up
smsc95xx 1-1:1.0 eth2: link up, 100Mbps, full-duplex, lpa 0xC5E1

# ifconfig eth2 down 

LED仍然亮著…

$ ifconfig eth2 up 

現在 LED 熄滅…

# ethtool eth2
Settings for eth2:
       Supported ports: [ TP MII ]
       Supported link modes:   10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
       Supported pause frame use: No
       Supports auto-negotiation: Yes
       Advertised link modes:  10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
       Advertised pause frame use: Symmetric Receive-only
       Advertised auto-negotiation: Yes
       Speed: 10Mb/s
       Duplex: Half
       Port: MII
       PHYAD: 1
       Transceiver: internal
       Auto-negotiation: on
       Supports Wake-on: pumbag
       Wake-on: d
       Current message level: 0x00000007 (7)
                              drv probe link
       Link detected: no

# mii-tool eth2
eth2: no link

# ifconfig eth2 down 

$ ifconfig eth2 up
smsc95xx 1-1:1.0 eth2: link up, 100Mbps, full-duplex, lpa 0xC5E1

LED 燈亮起

ethtool eth2
Settings for eth2:
       Supported ports: [ TP MII ]
       Supported link modes:   10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
       Supported pause frame use: No
       Supports auto-negotiation: Yes
       Advertised link modes:  10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
       Advertised pause frame use: Symmetric Receive-only
       Advertised auto-negotiation: Yes
       Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                            100baseT/Half 100baseT/Full
       Link partner advertised pause frame use: Symmetric
       Link partner advertised auto-negotiation: Yes
       Speed: 100Mb/s
       Duplex: Full
       Port: MII
       PHYAD: 1
       Transceiver: internal
       Auto-negotiation: on
       Supports Wake-on: pumbag
       Wake-on: d
       Current message level: 0x00000007 (7)
                              drv probe link
       Link detected: yes

# mii-tool eth2
eth2: negotiated 1000baseT-HD flow-control, link ok

另一個問題是,當我從 RJ45 插座上拔下並插入乙太網電纜時,Linux 沒有檢測到它,…

有沒有其他人看過這個?我非常感謝您能提供的任何幫助。

我意識到這個問題在Linux Kernel 3.16.48中已經得到了一定程度的解決。

引用自:https://unix.stackexchange.com/questions/389457