博通高通迈威尔螃蟹全志南方硅谷WiFi本质的区别

之前写了 螃蟹wifi驱动在AP模式下存在挂死系统的问题_MengXP的博客-CSDN博客
后来我也做了很多实验,查阅了一些资料。做了一些思考,现在总结如下:

无线网卡芯片本身一定是包含一个PHY、DSP基带(CortexM3),本质上就是无线电收发,这一点毋庸置疑。区别就在于,是否将MLME(MAC sublayer management entity)封装在基带上。将MLME封装在基带上就叫 FullMAC或者HardMAC,将MLME放在linux驱动上,就叫SoftMAC。这样区别就产生了,FullMAC由于其良好的实时性以及不占用HostCPU,他的性能可以很高。而SoftMAC要借HostCPU来实现协议解析调度仲裁,会占用很多cpu时间,且大部分都是dpc时间,实时性也不是很好。

那么如何区分无线网卡驱动时SoftMAC和FullMAC架构呢?简而言之,如果驱动依赖mac80211组件就是SoftMAC驱动,如果不依赖mac80211组件就是FullMAC。最简单的办法是检查其内核模块编译是否依赖MAC80211,可以看Kconfig文件的Depend on,不过有时并不准确,realtek就没有认真编写这个Kconfig。或检查其驱动源代码,如果定义了 ieee80211_ops 就意味着使用了 mac80211。

我查找了资料以及参考源代码,总结如下:

1.博通的大部分现代网卡都是FullMAC,历史上旧版本的有SoftMAC,这一点在他的驱动程序上就做了区分,编译的时候看名字就能看出来,如果你编译的FullMAC能正常驱动,那就一定是FullMAC。linux\drivers\net\wireless\bcmdhd

2.高通的大部分网卡例如ath5k, ath9k, ath10都是SoftMAC,而ath6kl是FullMAC(mobile chipset)。

3.螃蟹的所有网卡都是SoftMAC!驱动程序架构非常糟糕一大坨代码,编译出来的驱动很大很大,且不同的芯片有不同的驱动hal层,没有一个兼容的版本。

4.Marvell的网卡可以切换SoftMAC/FullMAC。SoftMAC就是thin firmware。

5.全志的XR819和XR829都是SoftMAC

6.南方硅谷的SV6158驱动源码中包含了一个很显眼的smac,且Kconfig依赖MAC80211,应属SoftMAC

另外关于安全方面的考虑,如果协议解析方面出现漏洞,如果是FullMAC的实现,那么被攻击后会得到wifi基带的控制权,想要渗透到host层面还需要寻找与host交互方面的漏洞。如果是SoftMAC的实现,那么一旦被攻击成功,就会拿到host层面的控制权。

总的来说使用FullMAC的阵营基本上只有博通和Marvell。但是高通竟然站在SoftMAC这边,恐怕是因为SoftMAC对功能管理,或开发上更灵活。考虑到便携设备的SoC处理能力有限,在使用wifi模块时应尽量使用FullMAC实现的wifi芯片,这样才能更好的做到低功耗。

以上就是我对一些常见wifi芯片的分析和理解。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值