- 在给上层的ops处dm9000 精简代码,其他不变
dm9000_ethtool_ops 去掉可以运行
dm9000_netdev_ops 精简到如此地步可运行
1385 static const struct net_device_ops dm9000_netdev_ops = {
1386 .ndo_init = dm9000_init,
1387 .ndo_open = dm9000_open,
1388 .ndo_stop = dm9000_stop,
1389 .ndo_start_xmit = dm9000_start_xmit,
}
CONFIG_NET=y
CONFIG_INET=y
CONFIG_IP_PNP=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_HAVE_NET_DSA=y
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
CONFIG_WIRELESS=y
CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
CONFIG_ETHTOOL_NETLINK=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_SUNRPC=n
CONFIG_IPV6=n
CONFIG_UNIX=n
[ 1.320133] dm9000 dm9000.0: IRQ index 1 not found
[ 1.500082] DM9000 INIT
[ 1.504639] eth0: dm9000a at d08cc000,d0900004 IRQ 108 MAC: 08:90:00:a0:90:90 (platform data)
...
之后做了 dm9000_open 和 工作任务
dm9000 dm9000.0 eth0: link down
来了一次 dm9000_interrupt 和 工作任务
...
IP-Config: Guessing netmask 255.0.0.0
IP-Config: Complete:
device=eth0, hwaddr=08:90:00:a0:90:90, ipaddr=10.10.11.120, mask=255.0.0.0, gw=255.255.255.255
host=10.10.11.120, domain=, nis-domain=(none)
bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
dm9000 dm9000.0 eth0: link up, 100Mbps, full-duplex, lpa 0x4DE1
/etc/init.d/ip.sh:1:ifconfig eth0 192.168.1.120 netmask 255.255.255.0 up
root=/dev/mmcblk0p2 rw rootfstype=ext3 console=tty0 console=ttySAC0,115200 init=/linuxrc ip=10.10.11.120 rootwait
# cat /proc/interrupts
CPU0
108: 1546 s3c-eint Level eth0
# cat /proc/iomem
18000000-18000003 : dm9000.0
18000000-18000003 : dm9000
18000004-180fffff : dm9000.0
18000004-180fffff : dm9000
ping 一下得到了 2次,3次或4次中断?
# cat /proc/interrupts
CPU0
108: 3278 s3c-eint Level eth0
# ping 192.168.1.1 -c 1 && cat /proc/interrupts
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=4.769 ms
--- 192.168.1.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 4.769/4.769/4.769 ms
CPU0
108: 3282 s3c-eint Level eth0
什么时候会xmit
只要ifconfig eth0 up了,会不间断的xmit(谁做的,TODO),不是等间距时间的
另外主动调用ping , 也会做一个 xmit
down了之后还会中断吗
不会,down 动作会 关闭中断
up 了之后一直来中断
ifconfig eth0 down/up
只有在当前为down 的时候 up,才会陷入内核让他up
只有在当前为up 的时候 ddown,才会陷入内核让他down
ifconfig eth0 192.168.1.120 netmask 255.255.255.0
会操作到硬件吗?
不会调用到 ops 中的函数,只有up或者down 才有可能