History log of /haiku/src/libs/compat/openbsd_wlan/net80211/ieee80211_haiku.cpp
Revision Date Author Comments
# 419abdb2 25-Apr-2023 Augustin Cavalier <waddlesplash@gmail.com>

openbsd_wlan: Add implementation of IEEE80211_IOC_SCAN_REQ.

We cannot actually initiate scans, but we can at least detect when
one is in progress.

This fixes "ifconfig ... scan" on OpenBSD devices returning errors
instead of scan results ("list" always worked.)


# 0bee9ee7 09-Jun-2022 Augustin Cavalier <waddlesplash@gmail.com>

openbsd_wlan: Refactor implementation of IEEE80211_IOC_SCAN_RESULTS.

* Do not allocate an equally-sized buffer for all scan results,
but just alloca() a buffer for a single result, and copy this
back to userland at the end of each iteration.

* Check remaining space correctly with respect to IE data.

May fix incorrect scan results or userland memory corruptions
seen with the previous code. Also should be faster since it
does not need to allocate large kernel-side temporary buffers.


# ea7c8307 08-Jun-2022 Augustin Cavalier <waddlesplash@gmail.com>

openbsd_wlan: Implement IEEE80211_IOC_MLME for leaving networks.


# 2f7936a6 08-Jun-2022 Augustin Cavalier <waddlesplash@gmail.com>

openbsd_wlan: Add a Haiku-specific "FreeBSD-style" ioctl for joining networks.

In the long run it may make more sense to have Haiku-style ioctls for
this purpose, but since we are currently coexisting with FreeBSD-style
ioctls, just add this as another FreeBSD-style ioctl for now (we already
have two custom ones anyway.)

This ioctl pretty much just consists of the same parameters we pass
to wpa_supplicant using the Haiku-specific constants already, with one
notable difference: the PSK must be in proper WPA format, i.e. already
hashed. Hence we will submit this ioctl, for now, from our own code in
our wpa_supplicant port.

WPS is not implemented in this commit, but it could be if someone actually
needs to connect to WPS networks for some reason...

Tested and verified as working along with the wpa_supplicant changes.


# bcb089f6 08-Jun-2022 Augustin Cavalier <waddlesplash@gmail.com>

openbsd_wlan (and FreeBSD ieee80211_ioctl.h): Initial ioctl compatibility.

* Introduce IEEE80211_IOCTLS_ABBREVIATED to FreeBSD's ieee80211_ioctl.h,
so that the FreeBSD header can be included along with the OpenBSD
net80211 stack without triggering lots of errors, so we can use
these structs in openbsd_wlan ieee80211_haiku.cpp.

* Implement basic ieee80211req handling machinery. We aren't going
to handle anything but SIOCG80211 and SIOCS80211 in this method,
so we can simplify it a bit at the same time.

* Implement IEEE80211_IOC_SCAN_RESULTS to return scan results from
the OpenBSD WiFi stack in FreeBSD ioctl format.

This change adds two minor "features" (noted with #ifdefs) to the
OpenBSD net80211 stack: one to specify what node index to return
when returning known nodes (scan results), as this way we do not
have to allocate a huge buffer to store the scan results in before
sending them back to userland, but can instead get and convert
a single one at a time.

(We store the converted values in kernel mode all at once, though,
so this is not as efficient as it could be. More improvement possible.)

* Implement IEEE80211_IOC_BSSID and IEEE80211_IOC_SSID while we are at it.
This actually may make joining open networks possible, but I didn't
really test it. (They are used with SIOCG80211 to see what network
the device is currently connecting/connected to.)


# eb561466 12-May-2022 Augustin Cavalier <waddlesplash@gmail.com>

openbsd_wlan: Basic adaptations to the net80211 layer.

The stack now compiles and links. Combining this with adaptations to
the driver gets things to the point where it runs scans, but we do
not yet implement ioctls so they can be returned to userland.