Linux Kernel に含まれるWi-Fiドライバが、FullMACとSoftMACのどちらなのかを調べてみました。
FullMACドライバはMACのMLME処理をWi-Fiチップで行うドライバです。SoftMACドライバはMACのMLME処理をカーネルのmac80211で行うドライバです。
どうも、時代の流れはSoftMACに分があるようです。最近になってもFullMACのチップを作っているのはBroadcomとMarvellのみです。Androidをサポートする場合はテザリングでAPモードが必要だったり、Wi-Fi Directが必要だったりで、それをFullMACでサポートするのに掛かるコストは大変そうです。
ソース
- Linux kernel 4.9を調査しました。
- https://github.com/torvalds/linux/tree/v4.9
判別方法
- cfg80211_opsを定義しているドライバはmac80211を使っていないのでFullMACと判断した。
- ieee80211_opsを定義しているドライバはmac80211を使っているのでSoftMACと判断した。
FullMAC in Linux kernel
- ath/ath6kl
- ath/wil6210
- broadcom/brcm80211/brcmfmac
- intel/ipw2x00
- intersil/orinoco
- marvell/libertas
- marvell/mwifiex
SoftMAC in Linux kernel
- admtek
- ath/ar5523
- ath/ath10k
- ath/ath5k
- ath/ath9k
- ath/carl9170
- ath/wcn36xx
- atmel
- broadcom/b43
- broadcom/b43legacy
- broadcom/brcm80211/brcmsmac
- intel/iwlegacy
- intel/iwlwifi/dvm
- intel/iwlwifi/mvm
- intersil/p54
- marvell/libertas_tf
- marvell/mwl8k.c
- mediatek/mt7601u
- ralink/rt2x00
- realtek/rtl818x
- realtek/rtl8xxxu
- realtek/rtlwifi
- rsi
- st/cw1200
- ti/wl1251
- ti/wl12xx
- ti/wl18xx
- zydas/zd1211rw
その他
- 上記に含まれないドライバはwireless extensionにしか対応していない古いドライバです。
Proprietary SoftMAC
- 独自のSoftMAC処理を組み込んだドライバがチップベンダから提供されている場合があります。
- それらは大抵の場合、巨大で読みにくいコードです。
- Realtek
- https://github.com/lwfinger/rtl8188eu
- Mediatek (from Ralink)
- https://github.com/terence-deng/mt7601u
- Mediatek (from Improcomm)
- https://github.com/BemolxDevelopment/android_kernel_mediatek_mt6795/tree/master/drivers/misc/mediatek/connectivity/combo/drv_wlan/mt6630