博通高通迈威尔螃蟹全志南方硅谷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芯片的分析和理解。
總結
以上是生活随笔為你收集整理的博通高通迈威尔螃蟹全志南方硅谷WiFi本质的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LVGL-v8.1 demo win32
- 下一篇: 苹果手机home键在哪里_苹果手机为什么