* [[MateuszPiotrowski/Drivers/802.11|802.11]]
* [[MateuszPiotrowski/Drivers/FreeBSD|FreeBSD]]
* [[MateuszPiotrowski/Drivers/Linux|Linux]]
* [[MateuszPiotrowski/Drivers/WiFi101|WiFi101]]
**Links and notes as I learn wireless device driver development.**
//Links to all subpages are in the upper right corner of this website.//
----
==== Log ====
=== 3.04.2017 ===
[[/AdrianChadd|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
=== 19.03.2017 ===
[[/AdrianChadd|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 [[https://gitweb.dragonflybsd.org/dragonfly.git/history/HEAD:/sys/dev/netif/|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 [[https://en.wikipedia.org/wiki/MIMO|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.//
----
==== iwm ====
=== DragonFly BSD ===
sys/dev/netif/iwm
=== OpenBSD ===
sys/net80211
sys/dev/pci
I am not sure about ''%%sys/dev/pci%%''. It seems like I've not found the proper directories yet.
== Status ==
According to the [[http://man.openbsd.org/iwm|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.
----
==== Testing ====
[[/TestSuite|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:
# Example for getting 100Mbit of UDP for 30 seconds.
# Server side:
iperf -s -u -i 1
# Client side:
iperf -s -u -i 1 -t 300 -b 100m
Useful for testing Wi-Fi:
* attenuators
* shield boxes
----
==== Mailing list threads ====
- [[https://lists.freebsd.org/pipermail/freebsd-wireless/2017-March/007549.html|Doing 802.11ac drivers for GSoC 2017]]
----
==== See also ====
* [[SummerOfCode2013/80211RateControl80211nExtensions|GSoC 2013: net80211 rate control API - 802.11n extensions]]
* [[https://www.osnews.com/story/25461/Interview_with_Adrian_Chadd_on_802_11n_in_FreeBSD|Interview with Adrian Chadd on 802.11n in FreeBSD (www.osnews.com, Dec 2011)]]
* [[https://adrianchadd.blogspot.com/|Adrian Chadd's Ramblings (adrianchadd.blogspot.com)]]
* [[https://adrianchadd.blogspot.co.uk/2015/09/porting-wifi-driver-from-openbsd-ar9170.html|Porting an rsu(4) WiFi driver from OpenBSD]]
* [[WiFi/IdeasPage]]
----
//indicates that I've not read it yet (and most often just scanned through)//
Special thanks to
* [[/AdrianChadd|Adrian Chadd]], adrian @ EFNet/#freebsd-wifi
* Imre Vadász, ivadasz @ EFNet/#dragonfybsd
:-):-):-):-):-):-):-):-):-):-):-):-):-):-)