无线网络中各个节点不断地广播信标帧,收到某节点的信标帧之后才知道这个节点存在,知道它的网络配置是怎么样的,才能知道应该怎么和它通信。
那么问题来了,禁用了CSMA之后,发送节点全力发送,那么它会永远占用信道,邻居节点的信标帧再也收不到了,那么,等本地对邻居节点保存的信息超时之后,就认为对方节点已经不存在,就无法再正常发送了。
那么知道了原因,解决方案也就很简单了,把这个超时时间设长,长到完全可以满足实验需求就可以了。
打开net/mac80211/ibss.c,就在前几行宏定义里面找到:
#define IEEE80211_IBSS_INACTIVITY_LIMIT (60 * HZ)
这里的默认超时时间是1分钟,比如我可以改成1个小时:
#define IEEE80211_IBSS_INACTIVITY_LIMIT (60 * 60 * HZ)
这样就能保证pktgen在前一个小时里可以正常工作。