海思内核网络协议栈报错解决方法

本文记录了一次在移植内核过程中遇到的网络协议栈报错问题。系统在连接网络后频繁打印"skb->dev is NULL"错误。问题源于旧内核配置中网络部分的模块裁剪不彻底。解决方案是重新根据产品需求裁剪内核,以确保所有使用的功能模块都得到正确配置。参考海思内核裁减方法进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

简单记录一下,接手别人项目后重新移植内核时网络协议栈报错的问题。


问题描述

当设备连接网络后,系统莫名奇妙疯狂打印:

tnk_tcp_prepare: skb->dev is NULL
tnk_tcp_prepare: skb->dev is NULL
tnk_tcp_prepare: skb->dev is NULL

原因分析:

移植旧内核配置文件内容,关于网络部分配置大概如下:

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_CFG80211=y
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
CONFIG_CFG80211_WEXT=y
# CONFIG_LIB80211 is not set
# CONFIG_CFG80211_ALLOW_RECONNECT is not set
CONFIG_MAC80211=y
CONFIG_MAC80211_HAS_RC=y
# CONFIG_MAC80211_RC_PID is not set
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_MINSTREL_HT=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
CONFIG_MAC80211_MESH=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_MESSAGE_TRACING is not set
# CONFIG_MAC80211_DEBUG_MENU is not set

其中不难发现,wifi模块有些功能已打开,而有些功能关闭了。可以确定该模块裁剪的不够干净,所以当网络尝试测试相关模块时发现设备不存在,因此就报了一些网络协议栈设备不存在的问题。


解决方案:

为了解决这问题,最好的做法还是抛开旧内核的配置,根据产品要求重新裁剪内核较为合适。
具体实现方法,可参考【海思内核裁减方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积步千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值