I lowered the log-level of hostapd to 1 because i wanted to test 802.11r authentication flow and discovered the following problem:
Tue Dec 3 22:51:23 2019 daemon.debug hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: binding station to interface 'wlan1'
Tue Dec 3 22:51:23 2019 daemon.debug hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: authentication OK (FT)
Tue Dec 3 22:51:23 2019 daemon.debug hostapd: wlan1: STA 90:2b:d2:ff:ff:ff MLME: MLME-AUTHENTICATE.indication(90:2b:d2:ff:ff:ff, FT)
Tue Dec 3 22:51:23 2019 daemon.debug hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: association OK (aid 1)
Tue Dec 3 22:51:23 2019 daemon.notice hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: Could not set STA to kernel driver
Tue Dec 3 22:51:24 2019 daemon.debug hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: association OK (aid 1)
Tue Dec 3 22:51:24 2019 daemon.notice hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: Could not set STA to kernel driver
Tue Dec 3 22:51:24 2019 daemon.debug hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: association OK (aid 1)
Tue Dec 3 22:51:24 2019 daemon.notice hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: Could not set STA to kernel driver
Tue Dec 3 22:51:24 2019 daemon.debug hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: association OK (aid 1)
Tue Dec 3 22:51:24 2019 daemon.notice hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: Could not set STA to kernel driver
Tue Dec 3 22:51:25 2019 daemon.debug hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: association OK (aid 1)
Tue Dec 3 22:51:25 2019 daemon.notice hostapd: wlan1: STA 90:2b:d2:ff:ff:ff IEEE 802.11: Could not set STA to kernel driver
Tue Dec 3 22:51:25 2019 daemon.notice hostapd: wlan0: STA 90:2b:d2:ff:ff:ff IEEE 802.11: did not acknowledge authentication response
This is caused by the "missing" implementation of sta_add
and the following call by hostapd:
static int add_associated_sta(...) -> int hostapd_sta_add(...) ->
if (hapd->driver->sta_add == NULL)
return 0;
in the current ath9k and ath10k+(ct) drivers.
Im a bit puzzled why thats the case and im not sure im correct with this, but it seems like the interface from ath9k got removed in favor of sta_state
(https://github.com/torvalds/linux/commit/df3c6eb34da5ed61d288c23466e1ec4dd7ca509a)
Edit: it seems like ath10k(ct) does also not have this at all.
The question is, why does hostapd rely on the add call instead?
Where should i forward this to, as this behavior seems entirely broken to me.
PS: first time tinkering with wireless drivers, so please explain when i went wrong somewhere!