- 论坛徽章:
- 0
|
本帖最后由 yv9200 于 2015-11-20 15:49 编辑
之前用的是2.6.21的dm9000的驱动,现在是把2.6.33.7里面的ks8851的驱动移植到2.6.21的内核上,有些地方不是很明白,
1,2.6.33.7 ks8851的probe函数里面用的是 netdev->netdev_ops = &ks_netdev_ops;
netdev->ethtool_ops = &ks_ethtool_ops;
然后在include/linux/netdevice.h里面找到封装这个ops的结构体
struct net_device_ops {
int (*ndo_init)(struct net_device *dev);
void (*ndo_uninit)(struct net_device *dev);
int (*ndo_open)(struct net_device *dev);
int (*ndo_stop)(struct net_device *dev);
netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb,
struct net_device *dev);
u16 (*ndo_select_queue)(struct net_device *dev,
struct sk_buff *skb);
里面对应的是网卡驱动里的各种函数
在2.6.21的内核被我改成 netdev->open = ks_net_open,
netdev->stop = ks_net_stop,
netdev->do_ioctl = ks_net_ioctl,
然后我看对应的netdevice.h里面也没有封装的函数指针,只是对应哪个结构体里的函数指针。
我想知道这个netdevice.h里面的函数指针是根据驱动里的功能函数定义的,还是根据根据内核底层需实现各种功能已经固定好了,不能修改?
2,现在的网卡驱动可以编译,但ifconfig 后
Link encap:Ethernet HWaddr 14:F0:9F:E5:14:F0
inet addr:192.168.4.100 Bcast:192.168.4.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
没有看到中断的信息,这个是中断问题,该从哪里找?接到别的网口上也ping不通。
现在调到这里不知道该如何往下进展,希望谁对这比较了解给点调试网卡驱动的建议,本人不甚感激。谢谢。。。
目前状态,phy已经正常,硬件连接可以正常,也可以ping通,也可以tftp 。
问题: ifconfig时 RX packets:0 TX packets:0总是0,还是没有中断的那个信息,但cat /proc/interrupt可以看到驱动的中断,谁知道这个是哪里的问题?
ifconfig 那个RX TX已经正常了,现在发现的新问题是RUNNING这个状态不变,无论有没有网线,谁知道这个需要改哪里的状态?
这个问题已解决。
新问题:网卡可以ping通,各种状态都是对的,当前网络风暴来时会出问题,在ping的时候网络风暴来,包就收不到了,当把网络风暴去的时候,又可以正常ping通,但网络风暴过后,ifconfig eth down/up就会出现oop错误 错误如下,假如ping的整个过程没有网络风暴,可以正常的up/down,求帮助,谢谢
~ $ ifconfig eth0 up
entering ks8851_open T0:100, T1:5000, N0:70, N1:0, P:1
Unable to handle kernel paging request at virtual address 00408224
pgd = c1a88000
[00408224] *pgd=00000000
Internal error: Oops: 5 [#1]
Modules linked in: at91_ether ks8851_mll sver rled
CPU: 0
PC is at fib_create_info+0x6f4/0x954
LR is at dev_get_by_index+0x10/0x38
pc : [<c01dd97c>] lr : [<c0196a80>] Not tainted
sp : c1865c40 ip : c1865c30 fp : c1865cfc
r10: 6400a8c0 r9 : 00000002 r8 : c1abc840
r7 : 00000000 r6 : c1abc7e0 r5 : 00000001 r4 : 004081c8
r3 : 004081c8 r2 : 00000018 r1 : 00000001 r0 : c02de828
Flags: nzCv IRQs on FIQs on Mode SVC_32 Segment user
Control: C000717F
Table: 21A88000 DAC: 00000015
Process ifconfig (pid: 757, stack limit = 0xc1864250)
Stack: (0xc1865c40 to 0xc1866000)
5c40: 00000001 00000000 00000000 ffffffed 00000000 00000000 00000000 00000000
5c60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
5c80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
5ca0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
5cc0: 00000000 f223ffae 711f802c 4832c55a 7913de24 c1865d94 6400a8c0 00000020
5ce0: c1c7b6c8 c1d11c00 00000000 c1865d94 c1865d48 c1865d00 c01de7e8 c01dd298
5d00: 1f46a2ca 00000004 c1865d28 c1865d28 00000004 6400a8c0 00000000 c1c7b6a0
5d20: c1865d94 6400a8c0 c1d0e1a0 c1865d4c 00000002 00000000 00000018 c1865e00
5d40: c1865d4c c01dc8c0 c01de674 00020020 00000002 00000000 6400a8c0 00000000
5d60: 00000002 00000000 00000000 6400a8c0 00000000 00000000 00000000 00000000
5d80: 00000000 00000000 00000c00 00000000 00000000 fe020020 00000002 000000ff
5da0: 6400a8c0 00000000 00000002 00000000 00000000 6400a8c0 00000000 00000000
5dc0: 00000000 00000000 00000000 00000000 00000c00 00000000 00000000 c1d0e1a0
5de0: c1d0e1a0 0000a8c0 6400a8c0 c1aa6800 00ffffff c1865e2c c1865e04 c01dc950
5e00: c01dc808 c1d0e1a0 c1d0e1a0 c1aa6800 00000001 00000000 c1865ed8 c1aa6800
5e20: c1865e40 c1865e30 c01dce44 c01dc8e8 c02c4380 c1865e5c c1865e44 c0043c48
5e40: c01dcdec c1aa6800 00000000 00001002 c1865e6c c1865e60 c0043e18 c0043c1c
5e60: c1865e84 c1865e70 c019712c c0043e18 c1aa6800 00001043 c1865ea4 c1865e88
5e80: c0198940 c0197084 ffffff9d c1d0e1a0 c1c7b220 beb94cc0 c1865f10 c1865ea8
5ea0: c01d5414 c01988f0 c1864000 00000000 c1c7b22c 00008914 00001043 0000d524
5ec0: 401351c8 beb94f89 30687465 00000000 00000000 00000000 00001043 0000d524
5ee0: 401351c8 beb94f89 00008914 ffffffe7 beb94cc0 00000000 c0022d44 c1864000
5f00: beb94edc c1865f20 c1865f14 c01d694c c01d5144 c1865f40 c1865f24 c018ce88
5f20: c01d68ac c0365720 ffffffe7 00008914 00000000 c1865f5c c1865f44 c0081c10
5f40: c018ccc4 c0365720 beb94cc0 00000003 c1865f84 c1865f60 c0081eec c0081be4
5f60: 00001000 00000000 c0365720 fffffff7 00008914 00000036 c1865fa4 c1865f88
5f80: c0081f4c c0081c68 00000000 000b04fc 000b05cc 00000000 00000000 c1865fa8
5fa0: c0022ba0 c0081f1c 000b04fc 000b05cc 00000003 00008914 beb94cc0 000b04fc
5fc0: 000b04fc 000b05cc 00000000 000937b8 0000da10 00000004 beb94edc 000b0674
5fe0: 000c3844 beb94c68 0003949c 401d9f34 20000010 00000003 40229434 40229434
Backtrace:
[<c01dd288>] (fib_create_info+0x0/0x954) from [<c01de7e8>] (fn_hash_insert+0x184/0x630)
[<c01de664>] (fn_hash_insert+0x0/0x630) from [<c01dc8c0>] (fib_magic+0xc8/0xe0)
[<c01dc7f8>] (fib_magic+0x0/0xe0) from [<c01dc950>] (fib_add_ifaddr+0x78/0x13c)
[<c01dc8d8>] (fib_add_ifaddr+0x0/0x13c) from [<c01dce44>] (fib_netdev_event+0x68/0x94)
[<c01dcddc>] (fib_netdev_event+0x0/0x94) from [<c0043c48>] (notifier_call_chain+0x3c/0x54)
r4 = C02C4380
[<c0043c0c>] (notifier_call_chain+0x0/0x54) from [<c0043e18>] (raw_notifier_call_chain+0x10/0x14)
r6 = 00001002 r5 = 00000000 r4 = C1AA6800
[<c0043e08>] (raw_notifier_call_chain+0x0/0x14) from [<c019712c>] (dev_open+0xb8/0xc
[<c0197074>] (dev_open+0x0/0xc from [<c0198940>] (dev_change_flags+0x60/0x12
r5 = 00001043 r4 = C1AA6800
[<c01988e0>] (dev_change_flags+0x0/0x12 from [<c01d5414>] (devinet_ioctl+0x2e0/0x70
r7 = BEB94CC0 r6 = C1C7B220 r5 = C1D0E1A0 r4 = FFFFFF9D
[<c01d5134>] (devinet_ioctl+0x0/0x70 from [<c01d694c>] (inet_ioctl+0xb0/0xe0)
[<c01d689c>] (inet_ioctl+0x0/0xe0) from [<c018ce88>] (sock_ioctl+0x1d4/0x22c)
[<c018ccb4>] (sock_ioctl+0x0/0x22c) from [<c0081c10>] (do_ioctl+0x3c/0x84)
r7 = 00000000 r6 = 00008914 r5 = FFFFFFE7 r4 = C0365720
[<c0081bd4>] (do_ioctl+0x0/0x84) from [<c0081eec>] (vfs_ioctl+0x294/0x2b4)
r6 = 00000003 r5 = BEB94CC0 r4 = C0365720
[<c0081c58>] (vfs_ioctl+0x0/0x2b4) from [<c0081f4c>] (sys_ioctl+0x40/0x5c)
r7 = 00000036 r6 = 00008914 r5 = FFFFFFF7 r4 = C0365720
[<c0081f0c>] (sys_ioctl+0x0/0x5c) from [<c0022ba0>] (ret_fast_syscall+0x0/0x2c)
r6 = 00000000 r5 = 000B05CC r4 = 000B04FC
Code: e0022001 e7934102 e3540000 0a000038 (e594505c)
Segmentation fault
|
|