關於DM8168平臺擴展PCIE網卡的問題

關於DM8168平臺擴展PCIE網卡的問題

/******************************************************************

*      author:       盧浩

*      time:         2013.05.21

*      environment:   ubuntu10.04LTS +TI DM8168

*      kernel version:  linux-2.6.37

*      QQ Group For Technology Exchange:122879839

******************************************************************/



這是TI的DM8168的PCIE接口定義圖,大家可以看到B10 B11沒有接,一開始我用的RTL8111C的網卡,上電之後板子都起不來,後來給B10飛了一個3.3V供電,就OK了,但是這種情況在BCM5751 PCIE網卡上並沒有。

B11是遠程喚醒等,在這裏用不上,所以不接也沒問題。

還有就是TI本身是PCIE4X的插槽,我買的網卡模塊是PCIE1X的。這個沒問題的,兼容的,插上去可以直接用的。

此時上面的撥碼開關SW5設置爲off,此時爲芯片內部復位。

在內核裏面添加相關設備的驅動。



這裏我添加了兩個網卡的驅動,一個是RTL8111系列的,一個是BCM57系列的,至於下面的那個RTL8111F是我自己從官方網站下的,後來調試了一下,發現和內核自帶的8169的驅動是通用的,所以大家就不必要去官方下載驅動了。

編譯完內核下載到板子運行。

當linux系統啓動完成之後,我們可以從內核打印的log看到,網卡已經正常初始化並加載成功

r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
PCI: enabling device 0000:01:00.0 (0140 -> 0142)
r8169 0000:01:00.0: eth0: RTL8168c/8111c at 0xd708a000, 00:e0:4c:a2:06:a1, XID 1c4000c0 IRQ 368


但是當我ping的時候,發現網卡竟然不通,後來在手冊上看到這樣一句話:

Since TI81XX RC supports maximum remote read request size (MRRQS) as 256 bytes, ensure that the EP driver/device you are using doesn't set read request size more than this value. If it does, then modify the driver to set read request size to 256 bytes before building it. Ensuring Maximum Read Request size within 256 Byte limit is required even for any intermediate Switch/Bridge devices in the fabric.

doesn't set read request size more than 256 bytes

驅動裏面有一下幾句

define MAX_READ_REQUEST_SHIFT12



這裏我已經改掉了。本來是0X5向左偏移12位。就是101000000000000,結果事20480.我直接寫了一個256,這樣子強制小於等於256bytes。

編譯內核下載運行


root@luhao:/luhao/5.05# ping 193.168.252.11 -I eth0
PING 193.168.252.11 (193.168.252.11): 56 data bytes
64 bytes from 193.168.252.11: seq=0 ttl=64 time=0.357 ms
64 bytes from 193.168.252.11: seq=1 ttl=64 time=0.290 ms
64 bytes from 193.168.252.11: seq=2 ttl=64 time=0.250 ms
64 bytes from 193.168.252.11: seq=3 ttl=64 time=0.312 ms
64 bytes from 193.168.252.11: seq=4 ttl=64 time=0.337 ms
64 bytes from 193.168.252.11: seq=5 ttl=64 time=0.262 ms


--- 193.168.252.11 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 0.250/0.301/0.357 ms
root@luhao:/luhao/5.05# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:E0:4C:A2:06:A1  
          inet addr:193.168.252.10  Bcast:193.168.252.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:4cff:fea2:6a1/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:1139274 errors:0 dropped:1096065 overruns:0 frame:0
          TX packets:79 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1462647402 (1.3 GiB)  TX bytes:24126 (23.5 KiB)
          Interrupt:112 Base address:0xa000 

OK。在看一下lspci的信息



root@luhao:/luhao/5.05# lspci -v
00:00.0 Class 0604: Device 104c:b800 (rev 01)
        Flags: bus master, fast devsel, latency 0
        Memory at <ignored> (32-bit, non-prefetchable)
        Memory at <ignored> (32-bit, prefetchable)
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Memory behind bridge: 20000000-200fffff
        Prefetchable memory behind bridge: 20100000-201fffff
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [70] Express Root Port (Slot-), MSI 00
        Capabilities: [100] Advanced Error Reporting


01:00.0 Class 0200: Device 10ec:8168 (rev 02)
        Subsystem: Device 10ec:8168
        Flags: bus master, fast devsel, latency 0, IRQ 368
        I/O ports at <unassigned> [disabled]
        Memory at 20000000 (64-bit, non-prefetchable) [size=4K]
        Memory at 20120000 (64-bit, prefetchable) [size=64K]
        [virtual] Expansion ROM at 20100000 [disabled] [size=128K]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Capabilities: [70] Express Endpoint, MSI 01
        Capabilities: [b0] MSI-X: Enable- Count=2 Masked-
        Capabilities: [d0] Vital Product Data
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [140] Virtual Channel <?>
        Capabilities: [160] Device Serial Number a1-06-00-00-68-4c-e0-00
        Kernel driver in use: r8169


在看一下PCIE網卡的當前屬性

root@luhao:/luhao/5.05# ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                             100baseT/Half 100baseT/Full 
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: d
        Current message level: 0x00000033 (51)
                               drv probe ifdown ifup
        Link detected: yes


OK,收工。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章