|/802.11 /FreeBSD /Linux /WiFi101|
Links and notes as I learn wireless device driver development.
Links to all subpages are in the upper right corner of this website.
Adrian Chadd suggested looking at the following features (roughly in that order):
- NIC setup, antenna setup, channel setup, being able to RX 11n/MIMO frames, being able to TX 11n/MIMO frames
- do RX aggregation
- do TX aggregation
Adrian Chadd suggested I should spoke to ivadasz (Imre Vadász) from DragonFly BSD. I gained a lot of valuable insights:
Imre works on iwn (not iwm).
Commits are available here.
- Adrian has been merging a lot of those to FreeBSD.
- Updates and fixes of the driver.
- Newer hardware support (AC3168 and AC8265).
Imre said that he's syncing against the Linux-4.7.2's iwlwifi driver.
- He didn't work on 11n and 11ac support.
iwm needs fixing in how it interacts with the net80211 state machine (for associating/disassociating with access points and so on)
OpenBSD-stable has basic 11n support in iwm thanks to Stefan Sperling (stsp at OpenBSD). OpenBSD-current should have MIMO support although it hasn't been tested by Imre personally.
Difference between iwm and iwn:
iwm is a driver for Intel WiFi hardware starting from AC7260 and AC3160. At the moment the code in DragonFly BSD and FreeBSD only has support for 11a, 11b and 11g modes.
iwn is a driver for older Intel WiFi hardware
iwm and iwn counterparts in Linux. Imre said:
In Linux the code corresponding to iwm and iwn lives in drivers/net/wireless/intel/iwlwifi. There is various common code there, and in the pcie subdirectory. And basically the dvm subdirectory contains code exclusive to hardware supported by iwn, and stuff corresponding to iwm lives in the mvm subdirectory.
- Why 11ac doesn't work during FreeBSD installation? Imre said:
You'll need to load iwm manually during installation. In regular boot after installing, the iwm driver module should be loaded automatically. Since iwm needs to load the firmware quite early during attachment, it doesn't work properly when loading the module in the bootloader or adding it to the kernel configuration to statically link it; One would need to load the correct firmware module as well from the loader.
I am not sure about sys/dev/pci. It seems like I've not found the proper directories yet.
According to the iwm(4) manpage from OpenBSD-current:
The iwm driver does not support any of the 802.11ac capabilities offered by the adapters. Support for 802.11n 40MHz channels and Tx aggregation is not yet implemented. Additional work is required in ieee80211(9) before those features can be supported.
Kyua is designed for userland applications. It might come handy if I can trigger userland behaviour
Adrian uses iperf.
Getting iperf to do UDP quickly:
Useful for testing Wi-Fi:
- shield boxes
Mailing list threads
indicates that I've not read it yet (and most often just scanned through)
Special thanks to
Adrian Chadd, adrian @ EFNet/#freebsd-wifi
- Imre Vadász, ivadasz @ EFNet/#dragonfybsd