LAN9500A Linux USB 이더넷 드라이버 문제!

LAN9500A Linux USB 이더넷 드라이버 문제!

저는 네트워크 인터페이스용 EEPROM이 없는 iMX28 모듈과 LAN9500A USB-이더넷 컨트롤러를 갖춘 맞춤형 보드를 개발 중입니다. 운영 체제는 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가 이를 감지하지 못한다는 것입니다.

다른 사람이 이것을 본 적이 있나요? 당신이 제공할 수 있는 어떤 도움이라도 정말 감사하겠습니다.

답변1

이 문제가 어느 정도 해결되었다는 것을 알고 있습니다.리눅스 커널 3.16.48.

관련 정보