History log of /freebsd-current/sys/compat/linuxkpi/common/include/net/mac80211.h
Revision Date Author Comments
# 69b6c4a6 21-May-2024 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fix for_each_sta_active_link()

Likely a c&p error from for_each_vif_active_link() to
for_each_sta_active_link().
We are checking the nitems on the vif instead of the sta in this macro.
Function wise there is no difference as the arrays are the same size
but for correctness fix this.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 2f029bf9 29-Jan-2024 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: extend ieee80211_key_seq and WLAN_KEY_LEN_* defines

For iwlwifi(4) d3.c we need another struct in struct ieee80211_key_seq
and related WLAN_KEY_LEN_* defines in.

MFC after: 3 days
Reviewed by: cc, emaste
Differential Revision: https://reviews.freebsd.org/D43646


# 828ce22f 27-Jan-2024 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fix field order in ieee80211_key_conf

When adding the new field link_id to struct ieee80211_key_conf, it
was erroneously placed at the end of the struct; the zero-length
(variable sized) array for the key always needs to stay last.
Resort fields and add hopefully helpful comment to avoid the problem
in the future.

Fixes: adff403fe7a87
MFC after: 3 days
Reviewed by: cc
Differential Revision: https://reviews.freebsd.org/D43635


# eac3646f 11-Dec-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: more TXQ implementation and locking

Implement ieee80211_handle_wake_tx_queue() and ieee80211_tx_dequeue_ni()
while looking at the code. They are needed by various wireless drivers.

Introduce an ltxq lock and protect the skbq by that.
This prevents panics due to a race between a driver upcall and
the net80211 tx downcall. While the former should be rcu protected we
cannot rely on that.
It remains questionable if we need to protect further fields there
(with a different lock?).

Also introduce a txq_mtx on the lhw which needs to be further deployed
but we need to come up with a good strategy to not end up with 7 different
locks.

Sponsored by: The FreeBSD Foundation
PR: 274178, 275710
Tested by: cc
MFC after: 3 days


# 9fb91463 26-Oct-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: bring in some HT code

Fix defines and structures to use proper types.

Bring in basic ni->sta synchronization, some channel width handling,
and overload the net80211 functions so that we can talk to
driver/firmware to setup parameters. We will likely not need one
or two of those but it is good for tracing currently.

Cover HT and bits of VHT code in LinuxKPI behind apropriate #ifdef
which are currently not enabled (like LKPI_80211_HW_CRYPTO) until
confirmed to work.
Last, IEEE80211_AMPDU_RX_START made some firmware unhappy.

This will allow others to work on it and test as well.

Sponsored by: The FreeBSD Foundation
MFC after: 10 days


# 616e1330 20-Sep-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: adjust code to new structure layout

With past commits new structures were added. Now switch over some
bss_conf fields into vif->cfg where they got moved to and remove the
old fields. This allows drivers to find the expected values in the
now expected places and work better.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 3e1f5cc9 14-Sep-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: prepare for iwlwifi driver updates

Unconditionally enable the changes for newer drivers, as needed by
iwlwifi (and others).

Sposnored by: The FreeBSD Foundation
MFC after: 3 days
X-Note: breaks build until iwlwifi update (next hash)


# 815b7436 05-Sep-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

iwlwifi/LinuxKPI: 802.11: update ieee80211_request_smps()

Update ieee80211_request_smps() to the new number of arguments in
LinuxKPI (which was already prepared) and update the one call in the
older iwlwifi driver version.
This will allow iwlwifi as-is now and rtw88 to compile in case someone
else wants to work on the latter in parallel to predominant efforts on
the former.

Sponsored by: The FreeBSD Foundation
MFC after: 20 days


# adff403f 16-May-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: update compat code for updated drivers

Adjust and add structs, fields, functions to make more modern versions
of LinuxKPI based wireless drivers (based on wireless-testing (
wt-2023-06-09, wt-2023-07-24, and later)) compile.

Some of these changes can only be applied once all drivers get
updated to not break the old versions currently in the tree.
Mark those changes with __FOR_LATER_DRV_UPDATE for now and flip the
switch at a later point.

Sponsored by: The FreeBSD Foundation
MFC after: 20 days


# 95ee2897 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# 910a8343 11-May-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fix IEEE80211_TX_INFO_DRIVER_DATA_SIZE

Fix the sizing of IEEE80211_TX_INFO_DRIVER_DATA_SIZE so that it
also works on 32bit platforms. Otherwise it triggers a compile-time
assertion in ath10k for i386.

Sponsored by: The FreeBSD Foundation
MFC after: 10 days


# 35f7fa4a 20-Apr-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: improve assertion and tkip code

Move a KASSERT out of a function and make it a CTASSERT with
appropriate comments.

Skeleton implement two tkip functions, still left TODO, initializing
variables with dummy values to quiten compiler warnings. It is
unclear to me if we should still ever properly implement TKIP
compat code at this point. If so the current code gives a good
idea what needs to be done in addition to allocating references
to real state along with keyconf.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# f369f10d 19-Apr-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fix a -Wenum-compare warning

We are asserting that two values from different enums are the same.
gcc warns about these. Cast the values to (int) to avoid the warning.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 2336248a 31-Jan-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fix ff76cbc81d57ffc4bbc9bc20fd22325b2a8c2028 (pspoll)

Add the lost "inline".

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
X-MFC with: ff76cbc81d57ffc4bbc9bc20fd22325b2a8c2028


# ff76cbc8 31-Jan-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: implement ieee80211_is_pspoll()

Implement ieee80211_is_pspoll() and move it up to the set of implemented
ieee80211_is_*() functions.

There are no further changes (git diff just looks weird).

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 5a9a0d78 31-Jan-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: basic implementation of *queue(s)/*txq*

Very basic implementations of ieee80211_{wake,stop}_queue[s],
as well as ieee80211_txq_schedule_start(), ieee80211_next_txq(),
and ieee80211_schedule_txq().
Various combinations of these are used by different wireless
drivers, incl. iwlwifi.

Sponsored by: The FreeBSD Foundation (parts of this work)
MFC after: 3 days


# a8397571 31-Jan-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: implement ieee80211_tx_status_ext()

Add an implementation of ieee80211_tx_status_ext() extending the
internal linuxkpi_ieee80211_tx_status() implementation.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# e30e05d3 31-Jan-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: extend linuxkpi_ieee80211_rx()

Extend linuxkpi_ieee80211_rx() by another argument for
the ieee80211_rx_list() implementation (even though the argument
is currently ignored).

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# a3baca22 31-Jan-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fix types and whitespace

Correct struct member types, fix whitespace, and remove superfluous
return statements in void functions.

No functional changes.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 4b0af114 30-Dec-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: move ieee80211_{unregister,restart}_hw out of header

Migrate the two functions from the header into the implementation file
in order to have access to more facilities and not to run into possible
allocation/locking/... problems in the future.

Sponsored by: The FreeBSD Foundation
MFC after: 10 days


# c990500b 30-Dec-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI; 802.11: update mac80211.h structures and fields

Cleanup some fields and structures and add new ones.

Sponsored by: The FreeBSD Foundation
MFC after: 10 days


# 5db817d8 30-Dec-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: implement some *eleme/ie* lookup functions

Implement cfg80211_find_elem(), ieee80211_bss_get_elem(),
ieee80211_bss_get_ie(), and cfg80211_find_vendor_ie() with the last
one having a short cut always also checking oui_type in the pattern.

Sponsored by: The FreeBSD Foundation
MFC after: 10 days


# 05e640dc 31-Oct-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: update struct member types

Update struct member types for ongoing work towards HT support.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 1d70218e 31-Oct-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11 update header files

Adjust struct members, add more (for HE dummy) defines, add more
(wrapper) functions in order to acoomodate another driver.

MFC after: 3 days


# 0080f30f 22-Oct-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: add changes to support debugfs in iwlwifi

Add new fields (also have to move a struct up, no changes there)
in order to make iwlwifi debugfs support compile.

Sposnored by: The FreeBSD Foundation
MFC after: 3 days


# f02e2115 21-Sep-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: add more header compat bits

First part adding more bits in order to synch up drivers to the same
level and enable a new ones.

MFC after: 3 days


# 800aa9cd 09-Sep-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 80211 (+net80211): update and cleanup headers

Fix types for various struct fields (initially added as int).

Move structs and inline functions logically together, e.g., for wowlan.
Add more skeleton functions and #defines needed for iwlwifi d3.c
in the future.

Add struct ieee80211_vht_cap (without "_ie") to net80211 and remove
duplicate definitions in LinuxKPI headers now using net80211 structs.
For now leave ieee80211_ie_vhtcap in net80211. I am not sure yet if we
actually need it as such. That'll be cleaned up with more VHT updates
in net80211 in the future.

No functional changes in currently compiled code intended.

Try to implement ieee80211_action_contains_tpc() as I ran into it with
an older iwlwifi chipset. This depends on c994352a8841eb453.

Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks


# d6d687da 09-Sep-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 80211: add ieee80211_stop_tx_ba_session()

rtw89 needs ieee80211_stop_tx_ba_session().
Add the skeleton function for now so we can implement BA functions all
together.

MFC after: 3 days


# 549198b1 07-Sep-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI, dev: 80211 update mac80211 KPI

Update the mac80211 ops KPI for (*conf_tx), (*assign_vif_chanctx),
(*unassign_vif_chanctx), (*start_ap), and (*stop_ap), as well as
ieee80211_beacon_get_tim() and ieee80211_beacon_get_template().

Update in-tree drivers iwlwifi and rtw88 accordingly based on upstream
changes (as well as out-of-tree ones). This was triggered by trying to
synchronize more drivers to a common state.

MFC after: 1 week


# ec190d91 05-Sep-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 80211: improve linuxkpi_ieee80211_get_tid()

Continue what was started in 26a36948331bd08d9afaddfc0da724eacdb953dd
in iwlwifi and extend out internal implementation of
linuxkpi_ieee80211_get_tid() by an argument as to whether "no-QoS"
answers are acceptable. For the LinuxKPI ieee80211_get_tid() set
this to false as the Linux derived drivers seem to do extra checks
for the QoS-Data frame before acquiring the tid.
Add KASSERTs to enforce the extra argument.
This allows us to use the net80211 variant in LinuxKPI for other
means explicitly documenting that we do accept a IEEE80211_NONQOS_TID.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# caaa79c3 27-Aug-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI 802.11: change type of bssid in struct ieee80211_bss_conf

Enabling other driver code found that the bssid in
struct ieee80211_bss_conf is not an array but expected to be
a const pointer (const, != NULL checks).
Adjust accordingly in the header and in the LinuxKPI compat code.
There initialization now needs to be a static array always present
as we need a value before we will have a BSS (node in scan_to_auth)
as the mac80211 driver (*handlers) are expecting the pointer to be
not NULL (copying without checks).
This is a pre-req to enable d3 (CONFIG_PM[_SLEEP]) in the future.

Tested by: Tomoaki AOKI (junchoon dec.sakura.ne.jp)
Tested by: Berislav Purgar (bpurgar gmail.com)
Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# b0f73768 29-Jul-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11 header updates

While working on new and updates to drivers more structs, fields,
functions, .. were found, had to be shuffled around, ..
Some of these are (so far still dummy) functions or not properly
typed fields. The IEEE80211_HE_ constants are all still dummy.
This was msotly as a start to make new (out-of-tree) things compile.

Sponsored by: The FreeBSD Foundation (minor VHT/chan width bits)
MFC after: 1 week


# 467d3e2e 28-Jul-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI 802.11/iwlwifi/rtw88: update KPI

Upgrade the argument of (*bss_info_changed) mac80211 ops function call
from 32 to 64 bit.
Add an extra argument to ieee80211_beacon_get_template().

Both changes are needed in order to keep other out-of-tree drivers in
synch and to move forward.

The driver changes were extracted from Linux wireless-testing
7b7090b4c6a906cc7c3e2a460335f705b93f4506 and
6e8912a503759bb8f1f01c5b761d0d45815fa6de.

Sponsored by: The FreBSD Foundation
MFC after: 1 week


# 799051e2 15-Jun-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: ieee80211_start_tx_ba_session()

For as long as we do not implement the compat code for tx aggregation
return -EINVAL in ieee80211_start_tx_ba_session() as both rtw88 and
rtw89 check for this value and only then disable further attempts.

MFC after: 3 days


# 6cf748ad 20-May-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI 802.11 / iwlwifi / rtw88 : re-factor ieee802211_sta for MLO

Working on an update for rtw88 baed on wireless-testing I ran into
a build issue with struct ieee802211_sta. Some fields were factored
out into their own struct apparently preparing for MLO (Multi Link
Operation).

In order to be able to update one driver we have to adjust both
rtw88 and iwlwifi (and the ones still out-of-tree) now.

This is mostly a sed-replace job and no functional changes are
intended.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 00614c9c 30-Apr-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fill in two more TODOs

Implement ieee80211_is_data_present() and a subset of
ieee80211_is_bufferable_mmpdu() which hopefully is good enough in
the compat code for now.
This is partly in preparation for some TXQ changes coming up soon.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# b3e7f403 25-Apr-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11 ieee80211_sn_sub() fix

In ieee80211_sn_sub() we need to shift the mask before applying it.
This fixes the logic from 978f25e840fe4975f243e6077a764842f0e9d3eb.

Reported by: J.R. Oldroyd (fbsd opal.com)
MFC after: 3 days
Sponsored by: The FreeBSD Foundation


# 383b3e8f 15-Apr-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: start adding rate control to ieee80211_tx_status()

Start adding rate control feedback in ieee80211_tx_status() in order
for net80211 to be able to report something back (which may not
yet be the view of the firmware). iwlwifi is reporting back an MSC 0
even with HT disabled (to be investigated) so we cannot (yet) use
the firmware/driver rate feedback directly.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# ade774b1 14-Apr-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: implement ieee80211_probereq_get()

Implement ieee80211_probereq_get() needed by Realtek drivers.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 978f25e8 08-Apr-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: add ieee80211_beacon_get_tim(), ieee80211_sn_sub()

Add a dummy implementation for ieee80211_beacon_get_tim().
Add the implementation for ieee80211_sn_sub().

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 60970a32 01-Apr-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fix RSSI (and NF)

As in 4a22cd6c4e5f4fc4a38aa7400742d4005c5ae3de nf and rss should be
signed and not unsigned. Change the types in the header and while
here change a magic number to a define as done elsewhere (value does
not change).

When calculating c_rssi we need to make it relative so subtract nf.
And while here improve the debug output.

This will hopefully fix ifconfig wlanN list scan S:N output which
tools use to chose a BSSID and help net80211 internal calculations.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 86220d3c 31-Mar-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: fix compat code for i386

Compiling another driver on i386 revealed two problems:
- ieee80211_tx_info.status.status_driver_data space needs to be
calculated. While a pointer is 32bit vm_paddr_t is 64 bit on i386
so we didn't fit more than one of these in but needed more space.
- the arguments to ieee80211_txq_get_depth() are expected to
unsigned long and not uint64_t.

No user noticable changes.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# bb81db90 22-Mar-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11: implement ieee80211_beacon_loss()

Implement ieee80211_beacon_loss() similar to
ieee80211_connection_loss() with different state handling.
While here leave a comment in connection_loss() about the state
change argument.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# d875aa15 22-Feb-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: update 802.11 headers

Add new defines, struct members, and (stub) functions needed for an
updated iwlwifi. Most of the defines are for rfkill or HE.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 2e183d99 15-Feb-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11 header updates and add/adjust source dependencies.

This update is for more/newer versions of drivers:
- add and properly place more structs, enums, defines needed by drivers.
- correct types of struct fields.
- make various function arguments const.
- move REG_RULE() macro to its own file regulatory.h and
use macros for calculations.
- add linuxkpi_ieee80211_get_channel() implementation.
- change linuxkpi_ieee80211_ifattach() to return int for error checking.

No intended functional changes for iwlwifi.

Sponsored by: The FreeBSD Foundation (partially)
MFC after: 3 days


# 7043ca91 07-Feb-2022 John Baldwin <jhb@FreeBSD.org>

linuxkpi: Add parentheses to pacify -Wparentheses warnings from GCC.

Reviewed by: bz, emaste
Differential Revision: https://reviews.freebsd.org/D34145


# c8dafefa 15-Jan-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11 Refine/add DTIM/TSF handling

Correct data types related to delivery traffic indication map (DTIM)/
timing synchronization function (TSF) and implement/refine their
handling. This information is used/needed by iwlwifi to set a station
as associated. This will hopefully avoid more "no beacon heard"
time event failures.

The recording of the Linux specific sync_device_ts is done in the
receive path for now in case we do have the right information
available. I need to investigate as to how-much it may make sense
to also migrate it into net80211 in the future depending on the
usage in other drivers (or how we did handle this in the past in
natively ported versions, e.g. iwm).

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 51b461b3 09-Jan-2022 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: 802.11 update compat code for driver updates

Add more (dummy in case of HE) defines, structs, functions and another
mac80211 function pointer needed to update and support recent drivers.

MFC after: 3 days


# 6b4cac81 26-Dec-2021 Bjoern A. Zeeb <bz@FreeBSD.org>

LinuxKPI: add 802.11 compat code

Add 802.11 compat code for mac80211 and to a minimal degree cfg80211.
This allows us to compile and use basic functionality of wireless
drivers such as iwlwifi.

This is a constant work in progress but having it in the tree will
allow others to test and more easy to track changes and avoid having
snapshots no longer applying to branches.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days