谁能给我说说内核启动时TCP/IP协议栈和网卡驱动的初始化过程吗?

时间:2022-12-13 11:04:14
我现在碰到的问题是有大量网络UDP数据过来时,设备开机会死掉,
当我设备内核启动时数据链路MAC和IP层以初始化好,这时候对方设备arp请求获得了我设备的MAC地址,就会发送大量的UDP数据过来,但是我设备的TCP/UDP层协议栈还没有初始化好,这时我设备数据链路MAC层收到了大量数据并往上层推的时候就发生了这问题.我想在内核里加个标签,使TCP/IP协议栈全部初始化好后再让网卡配置MAC地址,这样应该可以避免问题了吧.
谁能给我说说内核启动时TCP/IP协议栈和网卡驱动的初始化过程吗?都在什么文件中?我在什么地方加flag呢?

具体开发环境和现象如下:
我用fel8xx-2.0开发包中的cdk开发环境和linux2.4.4开发ppc860嵌入设备,很多时候设备断电时,有数据向设备IP地址发送,此时设备开机,串口打印如下内容 (此时脚本rc.sysinit还没有运行,我设备IP地址也还没有生效), 并在180秒后重启动,重启动后正常.有时侯相同操作又是正常的. 而如果没有数据向设备IP地址发送,此时设备开机后都好的.

IP: Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
Oops: kernel access of bad area, sig: 11
NIP: ....
.........
Call backtrace:
............
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
Rebooting in 180 seconds..

5 个解决方案

#1


舒服,坐在沙发上学习,呵呵

#2


up

#3


建议去看看bsd的TCP/IP源码+TCP/IP详解第二卷

#4


感觉应该在设备启动完成后再把网络接口打开才对,就是在设备启动的过程中把网络接口断掉,
应用层有ifdown,ifup命令,如果在内核中就查查命令的源代码,看看命令是怎么实现的就行了。

#5


网卡的driver是什么? 我觉得应该是driver的问题。

#1


舒服,坐在沙发上学习,呵呵

#2


up

#3


建议去看看bsd的TCP/IP源码+TCP/IP详解第二卷

#4


感觉应该在设备启动完成后再把网络接口打开才对,就是在设备启动的过程中把网络接口断掉,
应用层有ifdown,ifup命令,如果在内核中就查查命令的源代码,看看命令是怎么实现的就行了。

#5


网卡的driver是什么? 我觉得应该是driver的问题。