git: 6b627f88584c - main - iwlwifi: update Intel's mvm/mld drivers
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 23 Oct 2025 21:28:23 UTC
The branch main has been updated by bz:
URL: https://cgit.FreeBSD.org/src/commit/?id=6b627f88584ce13118e0a24951b503c0b1f2d5a7
commit 6b627f88584ce13118e0a24951b503c0b1f2d5a7
Merge: b307799b5141 69caa1cf3ce5
Author: Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-10-17 17:27:49 +0000
Commit: Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-10-23 21:26:00 +0000
iwlwifi: update Intel's mvm/mld drivers
This version is based on
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
e5f0a698b34ed76002dc5cff3804a61c80233a7a ( tag: v6.17 ).
Some of the changes we reported upstream got incorporated in this
(or the v6.16) release.
This also includes a change from iwlwifi-next.git::next for missing symbols
iwl_mvm_v3_rate_from_fw() and iwl_mvm_v3_rate_to_fw() were originally
comitted to mvm/rs.[ch] which we do not have. That left us with
unresolved symbols. For the never comitted v6.16 driver update I had
started to piece these together but they have been migrated out to
utils.c so take them from there until the next release hopefully ships
this change.
Obtained from: git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next.git
branch next, 1b49af228594452206d5c50a33b6a341428edb63
MFC after: 3 days
sys/contrib/dev/iwlwifi/cfg/22000.c | 397 +--
sys/contrib/dev/iwlwifi/cfg/7000.c | 173 +-
sys/contrib/dev/iwlwifi/cfg/8000.c | 92 +-
sys/contrib/dev/iwlwifi/cfg/9000.c | 168 +-
sys/contrib/dev/iwlwifi/cfg/ax210.c | 297 +--
sys/contrib/dev/iwlwifi/cfg/bz.c | 198 +-
sys/contrib/dev/iwlwifi/cfg/dr.c | 93 +
sys/contrib/dev/iwlwifi/cfg/rf-fm.c | 51 +
sys/contrib/dev/iwlwifi/cfg/rf-gf.c | 73 +
sys/contrib/dev/iwlwifi/cfg/rf-hr.c | 89 +
sys/contrib/dev/iwlwifi/cfg/rf-jf.c | 111 +
sys/contrib/dev/iwlwifi/cfg/rf-pe.c | 16 +
sys/contrib/dev/iwlwifi/cfg/rf-wh.c | 15 +
sys/contrib/dev/iwlwifi/cfg/sc.c | 201 +-
sys/contrib/dev/iwlwifi/fw/acpi.c | 253 +-
sys/contrib/dev/iwlwifi/fw/acpi.h | 60 +-
sys/contrib/dev/iwlwifi/fw/api/alive.h | 29 +-
sys/contrib/dev/iwlwifi/fw/api/binding.h | 2 -
sys/contrib/dev/iwlwifi/fw/api/coex.h | 29 +-
sys/contrib/dev/iwlwifi/fw/api/commands.h | 31 +-
sys/contrib/dev/iwlwifi/fw/api/context.h | 9 +-
sys/contrib/dev/iwlwifi/fw/api/d3.h | 196 +-
sys/contrib/dev/iwlwifi/fw/api/datapath.h | 11 +-
sys/contrib/dev/iwlwifi/fw/api/dbg-tlv.h | 13 +-
sys/contrib/dev/iwlwifi/fw/api/debug.h | 48 +-
sys/contrib/dev/iwlwifi/fw/api/dhc.h | 230 ++
sys/contrib/dev/iwlwifi/fw/api/location.h | 179 +-
sys/contrib/dev/iwlwifi/fw/api/mac-cfg.h | 394 ++-
sys/contrib/dev/iwlwifi/fw/api/mac.h | 14 +-
sys/contrib/dev/iwlwifi/fw/api/nvm-reg.h | 62 +-
sys/contrib/dev/iwlwifi/fw/api/offload.h | 12 +-
sys/contrib/dev/iwlwifi/fw/api/phy-ctxt.h | 9 +-
sys/contrib/dev/iwlwifi/fw/api/phy.h | 25 +-
sys/contrib/dev/iwlwifi/fw/api/power.h | 171 +-
sys/contrib/dev/iwlwifi/fw/api/rs.h | 135 +-
sys/contrib/dev/iwlwifi/fw/api/rx.h | 54 +-
sys/contrib/dev/iwlwifi/fw/api/scan.h | 46 +-
sys/contrib/dev/iwlwifi/fw/api/sta.h | 1 +
sys/contrib/dev/iwlwifi/fw/api/stats.h | 17 +-
sys/contrib/dev/iwlwifi/fw/api/tdls.h | 12 +-
sys/contrib/dev/iwlwifi/fw/api/time-event.h | 60 +-
sys/contrib/dev/iwlwifi/fw/api/tx.h | 105 +-
sys/contrib/dev/iwlwifi/fw/dbg.c | 350 ++-
sys/contrib/dev/iwlwifi/fw/dbg.h | 20 +-
sys/contrib/dev/iwlwifi/fw/debugfs.c | 50 +-
sys/contrib/dev/iwlwifi/fw/dhc-utils.h | 75 +
sys/contrib/dev/iwlwifi/fw/dump.c | 44 +-
sys/contrib/dev/iwlwifi/fw/error-dump.h | 9 +-
sys/contrib/dev/iwlwifi/fw/file.h | 45 +-
sys/contrib/dev/iwlwifi/fw/img.c | 2 +
sys/contrib/dev/iwlwifi/fw/img.h | 12 +-
sys/contrib/dev/iwlwifi/fw/init.c | 24 +-
sys/contrib/dev/iwlwifi/fw/paging.c | 6 +-
sys/contrib/dev/iwlwifi/fw/pnvm.c | 79 +-
sys/contrib/dev/iwlwifi/fw/pnvm.h | 5 +-
sys/contrib/dev/iwlwifi/fw/regulatory.c | 200 +-
sys/contrib/dev/iwlwifi/fw/regulatory.h | 90 +-
sys/contrib/dev/iwlwifi/fw/rs.c | 137 +-
sys/contrib/dev/iwlwifi/fw/runtime.h | 19 +-
sys/contrib/dev/iwlwifi/fw/smem.c | 4 +-
sys/contrib/dev/iwlwifi/fw/uefi.c | 225 +-
sys/contrib/dev/iwlwifi/fw/uefi.h | 93 +-
sys/contrib/dev/iwlwifi/iwl-config.h | 508 ++--
sys/contrib/dev/iwlwifi/iwl-csr.h | 48 +-
sys/contrib/dev/iwlwifi/iwl-dbg-tlv.c | 20 +-
sys/contrib/dev/iwlwifi/iwl-debug.h | 14 +-
sys/contrib/dev/iwlwifi/iwl-drv.c | 337 ++-
sys/contrib/dev/iwlwifi/iwl-drv.h | 9 +-
sys/contrib/dev/iwlwifi/iwl-fh.h | 30 +-
sys/contrib/dev/iwlwifi/iwl-io.c | 42 +-
sys/contrib/dev/iwlwifi/iwl-io.h | 23 +-
sys/contrib/dev/iwlwifi/iwl-nvm-parse.c | 246 +-
sys/contrib/dev/iwlwifi/iwl-nvm-parse.h | 16 +-
sys/contrib/dev/iwlwifi/iwl-nvm-utils.c | 17 +-
sys/contrib/dev/iwlwifi/iwl-op-mode.h | 106 +-
sys/contrib/dev/iwlwifi/iwl-prph.h | 15 +-
sys/contrib/dev/iwlwifi/iwl-trans.c | 484 +++-
sys/contrib/dev/iwlwifi/iwl-trans.h | 346 ++-
sys/contrib/dev/iwlwifi/iwl-utils.c | 195 ++
sys/contrib/dev/iwlwifi/iwl-utils.h | 58 +
sys/contrib/dev/iwlwifi/mld/Makefile | 12 +
sys/contrib/dev/iwlwifi/mld/agg.c | 680 +++++
sys/contrib/dev/iwlwifi/mld/agg.h | 127 +
sys/contrib/dev/iwlwifi/mld/ap.c | 363 +++
sys/contrib/dev/iwlwifi/mld/ap.h | 45 +
sys/contrib/dev/iwlwifi/mld/coex.c | 40 +
sys/contrib/dev/iwlwifi/mld/coex.h | 15 +
sys/contrib/dev/iwlwifi/mld/constants.h | 79 +
sys/contrib/dev/iwlwifi/mld/d3.c | 1906 ++++++++++++++
sys/contrib/dev/iwlwifi/mld/d3.h | 51 +
sys/contrib/dev/iwlwifi/mld/debugfs.c | 1109 ++++++++
sys/contrib/dev/iwlwifi/mld/debugfs.h | 244 ++
sys/contrib/dev/iwlwifi/mld/ftm-initiator.c | 451 ++++
sys/contrib/dev/iwlwifi/mld/ftm-initiator.h | 29 +
sys/contrib/dev/iwlwifi/mld/fw.c | 554 ++++
sys/contrib/dev/iwlwifi/mld/hcmd.h | 56 +
sys/contrib/dev/iwlwifi/mld/iface.c | 707 ++++++
sys/contrib/dev/iwlwifi/mld/iface.h | 253 ++
sys/contrib/dev/iwlwifi/mld/key.c | 370 +++
sys/contrib/dev/iwlwifi/mld/key.h | 39 +
sys/contrib/dev/iwlwifi/mld/led.c | 100 +
sys/contrib/dev/iwlwifi/mld/led.h | 29 +
sys/contrib/dev/iwlwifi/mld/link.c | 895 +++++++
sys/contrib/dev/iwlwifi/mld/link.h | 129 +
sys/contrib/dev/iwlwifi/mld/low_latency.c | 336 +++
sys/contrib/dev/iwlwifi/mld/low_latency.h | 68 +
sys/contrib/dev/iwlwifi/mld/mac80211.c | 2672 ++++++++++++++++++++
sys/contrib/dev/iwlwifi/mld/mac80211.h | 13 +
sys/contrib/dev/iwlwifi/mld/mcc.c | 285 +++
sys/contrib/dev/iwlwifi/mld/mcc.h | 17 +
sys/contrib/dev/iwlwifi/mld/mld.c | 771 ++++++
sys/contrib/dev/iwlwifi/mld/mld.h | 592 +++++
sys/contrib/dev/iwlwifi/mld/mlo.c | 1225 +++++++++
sys/contrib/dev/iwlwifi/mld/mlo.h | 171 ++
sys/contrib/dev/iwlwifi/mld/notif.c | 725 ++++++
sys/contrib/dev/iwlwifi/mld/notif.h | 35 +
sys/contrib/dev/iwlwifi/mld/phy.c | 198 ++
sys/contrib/dev/iwlwifi/mld/phy.h | 60 +
sys/contrib/dev/iwlwifi/mld/power.c | 391 +++
sys/contrib/dev/iwlwifi/mld/power.h | 33 +
sys/contrib/dev/iwlwifi/mld/ptp.c | 321 +++
sys/contrib/dev/iwlwifi/mld/ptp.h | 45 +
sys/contrib/dev/iwlwifi/mld/regulatory.c | 369 +++
sys/contrib/dev/iwlwifi/mld/regulatory.h | 23 +
sys/contrib/dev/iwlwifi/mld/roc.c | 265 ++
sys/contrib/dev/iwlwifi/mld/roc.h | 20 +
sys/contrib/dev/iwlwifi/mld/rx.c | 2137 ++++++++++++++++
sys/contrib/dev/iwlwifi/mld/rx.h | 72 +
sys/contrib/dev/iwlwifi/mld/scan.c | 2181 ++++++++++++++++
sys/contrib/dev/iwlwifi/mld/scan.h | 173 ++
sys/contrib/dev/iwlwifi/mld/session-protect.c | 222 ++
sys/contrib/dev/iwlwifi/mld/session-protect.h | 102 +
sys/contrib/dev/iwlwifi/mld/sta.c | 1321 ++++++++++
sys/contrib/dev/iwlwifi/mld/sta.h | 273 ++
sys/contrib/dev/iwlwifi/mld/stats.c | 518 ++++
sys/contrib/dev/iwlwifi/mld/stats.h | 22 +
sys/contrib/dev/iwlwifi/mld/tests/Makefile | 5 +
sys/contrib/dev/iwlwifi/mld/tests/agg.c | 663 +++++
sys/contrib/dev/iwlwifi/mld/tests/hcmd.c | 62 +
sys/contrib/dev/iwlwifi/mld/tests/link-selection.c | 339 +++
sys/contrib/dev/iwlwifi/mld/tests/link.c | 110 +
sys/contrib/dev/iwlwifi/mld/tests/module.c | 11 +
sys/contrib/dev/iwlwifi/mld/tests/rx.c | 353 +++
sys/contrib/dev/iwlwifi/mld/tests/utils.c | 503 ++++
sys/contrib/dev/iwlwifi/mld/tests/utils.h | 140 +
sys/contrib/dev/iwlwifi/mld/thermal.c | 467 ++++
sys/contrib/dev/iwlwifi/mld/thermal.h | 36 +
sys/contrib/dev/iwlwifi/mld/time_sync.c | 240 ++
sys/contrib/dev/iwlwifi/mld/time_sync.h | 26 +
sys/contrib/dev/iwlwifi/mld/tlc.c | 702 +++++
sys/contrib/dev/iwlwifi/mld/tlc.h | 23 +
sys/contrib/dev/iwlwifi/mld/tx.c | 1394 ++++++++++
sys/contrib/dev/iwlwifi/mld/tx.h | 77 +
sys/contrib/dev/iwlwifi/mvm/binding.c | 7 +-
sys/contrib/dev/iwlwifi/mvm/coex.c | 88 +-
sys/contrib/dev/iwlwifi/mvm/constants.h | 8 +-
sys/contrib/dev/iwlwifi/mvm/d3.c | 761 +++---
sys/contrib/dev/iwlwifi/mvm/debugfs-vif.c | 66 +-
sys/contrib/dev/iwlwifi/mvm/debugfs.c | 130 +-
sys/contrib/dev/iwlwifi/mvm/ftm-initiator.c | 130 +-
sys/contrib/dev/iwlwifi/mvm/ftm-responder.c | 90 +-
sys/contrib/dev/iwlwifi/mvm/fw.c | 308 +--
sys/contrib/dev/iwlwifi/mvm/led.c | 4 +-
sys/contrib/dev/iwlwifi/mvm/link.c | 106 +-
sys/contrib/dev/iwlwifi/mvm/mac-ctxt.c | 259 +-
sys/contrib/dev/iwlwifi/mvm/mac80211.c | 483 ++--
sys/contrib/dev/iwlwifi/mvm/mld-key.c | 14 +-
sys/contrib/dev/iwlwifi/mvm/mld-mac.c | 55 +-
sys/contrib/dev/iwlwifi/mvm/mld-mac80211.c | 233 +-
sys/contrib/dev/iwlwifi/mvm/mld-sta.c | 81 +-
sys/contrib/dev/iwlwifi/mvm/mvm.h | 225 +-
sys/contrib/dev/iwlwifi/mvm/nvm.c | 52 +-
sys/contrib/dev/iwlwifi/mvm/offloading.c | 2 +-
sys/contrib/dev/iwlwifi/mvm/ops.c | 394 +--
sys/contrib/dev/iwlwifi/mvm/phy-ctxt.c | 8 +-
sys/contrib/dev/iwlwifi/mvm/power.c | 10 +-
sys/contrib/dev/iwlwifi/mvm/ptp.c | 14 +-
sys/contrib/dev/iwlwifi/mvm/quota.c | 43 +-
sys/contrib/dev/iwlwifi/mvm/rs-fw.c | 36 +-
sys/contrib/dev/iwlwifi/mvm/rx.c | 77 +-
sys/contrib/dev/iwlwifi/mvm/rxmq.c | 236 +-
sys/contrib/dev/iwlwifi/mvm/scan.c | 192 +-
sys/contrib/dev/iwlwifi/mvm/sta.c | 244 +-
sys/contrib/dev/iwlwifi/mvm/sta.h | 29 +-
sys/contrib/dev/iwlwifi/mvm/tdls.c | 20 +-
sys/contrib/dev/iwlwifi/mvm/tests/hcmd.c | 38 +
sys/contrib/dev/iwlwifi/mvm/time-event.c | 61 +-
sys/contrib/dev/iwlwifi/mvm/time-event.h | 8 +-
sys/contrib/dev/iwlwifi/mvm/tt.c | 97 +-
sys/contrib/dev/iwlwifi/mvm/tx.c | 406 ++-
sys/contrib/dev/iwlwifi/mvm/utils.c | 258 +-
.../pcie/{ctxt-info-gen3.c => ctxt-info-v2.c} | 213 +-
sys/contrib/dev/iwlwifi/pcie/ctxt-info.c | 29 +-
sys/contrib/dev/iwlwifi/pcie/drv.c | 2503 ++++++++----------
.../dev/iwlwifi/pcie/{ => gen1_2}/internal.h | 188 +-
sys/contrib/dev/iwlwifi/pcie/{ => gen1_2}/rx.c | 223 +-
.../dev/iwlwifi/pcie/{ => gen1_2}/trans-gen2.c | 209 +-
sys/contrib/dev/iwlwifi/pcie/{ => gen1_2}/trans.c | 1216 ++++++---
.../dev/iwlwifi/pcie/{ => gen1_2}/tx-gen2.c | 88 +-
sys/contrib/dev/iwlwifi/pcie/{ => gen1_2}/tx.c | 291 ++-
.../iwl-context-info-v2.h} | 109 +-
.../dev/iwlwifi/{ => pcie}/iwl-context-info.h | 44 +-
sys/contrib/dev/iwlwifi/pcie/utils.c | 128 +
sys/contrib/dev/iwlwifi/pcie/utils.h | 40 +
sys/contrib/dev/iwlwifi/tests/Makefile | 2 +-
sys/contrib/dev/iwlwifi/tests/devinfo.c | 229 +-
sys/modules/iwlwifi/Makefile | 68 +-
207 files changed, 39858 insertions(+), 8269 deletions(-)
diff --cc sys/contrib/dev/iwlwifi/cfg/dr.c
index 000000000000,807f4e29d55a..807f4e29d55a
mode 000000,100644..100644
--- a/sys/contrib/dev/iwlwifi/cfg/dr.c
+++ b/sys/contrib/dev/iwlwifi/cfg/dr.c
diff --cc sys/contrib/dev/iwlwifi/cfg/rf-fm.c
index 000000000000,456a666c8dfd..456a666c8dfd
mode 000000,100644..100644
--- a/sys/contrib/dev/iwlwifi/cfg/rf-fm.c
+++ b/sys/contrib/dev/iwlwifi/cfg/rf-fm.c
diff --cc sys/contrib/dev/iwlwifi/cfg/rf-gf.c
index 000000000000,7ff5170faaa9..7ff5170faaa9
mode 000000,100644..100644
--- a/sys/contrib/dev/iwlwifi/cfg/rf-gf.c
+++ b/sys/contrib/dev/iwlwifi/cfg/rf-gf.c
diff --cc sys/contrib/dev/iwlwifi/cfg/rf-hr.c
index 000000000000,9f408d276ce9..9f408d276ce9
mode 000000,100644..100644
--- a/sys/contrib/dev/iwlwifi/cfg/rf-hr.c
+++ b/sys/contrib/dev/iwlwifi/cfg/rf-hr.c
diff --cc sys/contrib/dev/iwlwifi/cfg/rf-jf.c
index 000000000000,0a074e0a3bc6..0a074e0a3bc6
mode 000000,100644..100644
--- a/sys/contrib/dev/iwlwifi/cfg/rf-jf.c
+++ b/sys/contrib/dev/iwlwifi/cfg/rf-jf.c
diff --cc sys/contrib/dev/iwlwifi/cfg/rf-pe.c
index 000000000000,483f21659eff..483f21659eff
mode 000000,100644..100644
--- a/sys/contrib/dev/iwlwifi/cfg/rf-pe.c
+++ b/sys/contrib/dev/iwlwifi/cfg/rf-pe.c
diff --cc sys/contrib/dev/iwlwifi/cfg/rf-wh.c
index 000000000000,97735175cb0e..97735175cb0e
mode 000000,100644..100644
--- a/sys/contrib/dev/iwlwifi/cfg/rf-wh.c
+++ b/sys/contrib/dev/iwlwifi/cfg/rf-wh.c
diff --cc sys/contrib/dev/iwlwifi/fw/api/dhc.h
index 000000000000,b6d79c678cd8..ddba2fc9254c
mode 000000,100644..100644
--- a/sys/contrib/dev/iwlwifi/fw/api/dhc.h
+++ b/sys/contrib/dev/iwlwifi/fw/api/dhc.h
@@@ -1,0 -1,226 +1,230 @@@
+ /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
+ /*
+ * Copyright (C) 2025 Intel Corporation
+ */
+ #ifndef __iwl_fw_api_dhc_h__
+ #define __iwl_fw_api_dhc_h__
+
+ #define DHC_TABLE_MASK_POS (28)
+
+ /**
+ * enum iwl_dhc_table_id - DHC table operations index
+ */
+ enum iwl_dhc_table_id {
+ /**
+ * @DHC_TABLE_INTEGRATION: select the integration table
+ */
+ DHC_TABLE_INTEGRATION = 2 << DHC_TABLE_MASK_POS,
+ /**
+ * @DHC_TABLE_TOOLS: select the tools table
+ */
+ DHC_TABLE_TOOLS = 0,
+ };
+
+ /**
+ * enum iwl_dhc_umac_tools_table - tools operations
+ * @DHC_TOOLS_UMAC_GET_TAS_STATUS: Get TAS status.
+ * See @struct iwl_dhc_tas_status_resp
+ */
+ enum iwl_dhc_umac_tools_table {
+ DHC_TOOLS_UMAC_GET_TAS_STATUS = 0,
+ };
+
+ /**
+ * enum iwl_dhc_umac_integration_table - integration operations
+ */
+ enum iwl_dhc_umac_integration_table {
+ /**
+ * @DHC_INT_UMAC_TWT_OPERATION: trigger a TWT operation
+ */
+ DHC_INT_UMAC_TWT_OPERATION = 4,
+ /**
+ * @DHC_INTEGRATION_TLC_DEBUG_CONFIG: TLC debug
+ */
+ DHC_INTEGRATION_TLC_DEBUG_CONFIG = 1,
+ /**
+ * @DHC_INTEGRATION_MAX: Maximum UMAC integration table entries
+ */
+ DHC_INTEGRATION_MAX
+ };
+
+ #define DHC_TARGET_UMAC BIT(27)
+
+ /**
+ * struct iwl_dhc_cmd - debug host command
+ * @length: length in DWs of the data structure that is concatenated to the end
+ * of this struct
+ * @index_and_mask: bit 31 is 1 for data set operation else it's 0
+ * bits 28-30 is the index of the table of the operation -
+ * &enum iwl_dhc_table_id *
+ * bit 27 is 0 if the cmd targeted to LMAC and 1 if targeted to UMAC,
+ * (LMAC is 0 for backward compatibility)
+ * bit 26 is 0 if the cmd targeted to LMAC0 and 1 if targeted to LMAC1,
+ * relevant only if bit 27 set to 0
+ * bits 0-25 is a specific entry index in the table specified in bits 28-30
+ *
+ * @data: the concatenated data.
+ */
+ struct iwl_dhc_cmd {
+ __le32 length;
+ __le32 index_and_mask;
++#if defined(__linux__)
+ __le32 data[];
++#elif defined(__FreeBSD__)
++ __le32 data[0];
++#endif
+ } __packed; /* DHC_CMD_API_S */
+
+ /**
+ * struct iwl_dhc_payload_hdr - DHC payload header
+ * @version: a version of a payload
+ * @reserved: reserved for alignment
+ */
+ struct iwl_dhc_payload_hdr {
+ u8 version;
+ u8 reserved[3];
+ } __packed; /* DHC_PAYLOAD_HDR_API_S_VER_1 */
+
+ /**
+ * struct iwl_dhc_tas_status_per_radio - TAS status per radio
+ * @band: &PHY_BAND_5 for high band, PHY_BAND_24 for low band and
+ * &PHY_BAND_6 for ultra high band.
+ * @static_status: TAS statically enabled or disabled
+ * @static_disable_reason: TAS static disable reason, uses
+ * &enum iwl_tas_statically_disabled_reason
+ * @near_disconnection: is TAS currently near disconnection per radio
+ * @dynamic_status_ant_a: Antenna A current TAS status.
+ * uses &enum iwl_tas_dyna_status
+ * @dynamic_status_ant_b: Antenna B current TAS status.
+ * uses &enum iwl_tas_dyna_status
+ * @max_reg_pwr_limit_ant_a: Antenna A regulatory power limits in dBm
+ * @max_reg_pwr_limit_ant_b: Antenna B regulatory power limits in dBm
+ * @sar_limit_ant_a: Antenna A SAR limit per radio in dBm
+ * @sar_limit_ant_b: Antenna B SAR limit per radio in dBm
+ * @reserved: reserved for alignment
+ */
+ struct iwl_dhc_tas_status_per_radio {
+ u8 band;
+ u8 static_status;
+ u8 static_disable_reason;
+ u8 near_disconnection;
+ u8 dynamic_status_ant_a;
+ u8 dynamic_status_ant_b;
+ __le16 max_reg_pwr_limit_ant_a;
+ __le16 max_reg_pwr_limit_ant_b;
+ __le16 sar_limit_ant_a;
+ __le16 sar_limit_ant_b;
+ u8 reserved[2];
+ } __packed; /* DHC_TAS_STATUS_PER_RADIO_S_VER_1 */
+
+ /**
+ * struct iwl_dhc_tas_status_resp - Response to DHC_TOOLS_UMAC_GET_TAS_STATUS
+ * @header: DHC payload header, uses &struct iwl_dhc_payload_hdr
+ * @tas_config_info: see @struct bios_value_u32
+ * @mcc_block_list: block listed country codes
+ * @tas_status_radio: TAS status, uses &struct iwl_dhc_tas_status_per_radio
+ * @curr_mcc: current mcc
+ * @valid_radio_mask: represent entry in tas_status_per_radio is valid.
+ * @reserved: reserved for alignment
+ */
+ struct iwl_dhc_tas_status_resp {
+ struct iwl_dhc_payload_hdr header;
+ struct bios_value_u32 tas_config_info;
+ __le16 mcc_block_list[IWL_WTAS_BLACK_LIST_MAX];
+ struct iwl_dhc_tas_status_per_radio tas_status_radio[2];
+ __le16 curr_mcc;
+ u8 valid_radio_mask;
+ u8 reserved;
+ } __packed; /* DHC_TAS_STATUS_RSP_API_S_VER_1 */
+
+ /**
+ * struct iwl_dhc_cmd_resp_v1 - debug host command response
+ * @status: status of the command
+ * @data: the response data
+ */
+ struct iwl_dhc_cmd_resp_v1 {
+ __le32 status;
+ __le32 data[];
+ } __packed; /* DHC_RESP_API_S_VER_1 */
+
+ /**
+ * struct iwl_dhc_cmd_resp - debug host command response
+ * @status: status of the command
+ * @descriptor: command descriptor (index_and_mask) returned
+ * @data: the response data
+ */
+ struct iwl_dhc_cmd_resp {
+ __le32 status;
+ __le32 descriptor;
+ __le32 data[];
+ } __packed; /* DHC_RESP_API_S_VER_2 and DHC_RESP_API_S_VER_3 */
+
+ /**
+ * enum iwl_dhc_twt_operation_type - describes the TWT operation type
+ *
+ * @DHC_TWT_REQUEST: Send a Request TWT command
+ * @DHC_TWT_SUGGEST: Send a Suggest TWT command
+ * @DHC_TWT_DEMAND: Send a Demand TWT command
+ * @DHC_TWT_GROUPING: Send a Grouping TWT command
+ * @DHC_TWT_ACCEPT: Send a Accept TWT command
+ * @DHC_TWT_ALTERNATE: Send a Alternate TWT command
+ * @DHC_TWT_DICTATE: Send a Dictate TWT command
+ * @DHC_TWT_REJECT: Send a Reject TWT command
+ * @DHC_TWT_TEARDOWN: Send a TearDown TWT command
+ */
+ enum iwl_dhc_twt_operation_type {
+ DHC_TWT_REQUEST,
+ DHC_TWT_SUGGEST,
+ DHC_TWT_DEMAND,
+ DHC_TWT_GROUPING,
+ DHC_TWT_ACCEPT,
+ DHC_TWT_ALTERNATE,
+ DHC_TWT_DICTATE,
+ DHC_TWT_REJECT,
+ DHC_TWT_TEARDOWN,
+ }; /* DHC_TWT_OPERATION_TYPE_E */
+
+ /**
+ * struct iwl_dhc_twt_operation - trigger a TWT operation
+ *
+ * @mac_id: the mac Id on which to trigger TWT operation
+ * @twt_operation: see &enum iwl_dhc_twt_operation_type
+ * @target_wake_time: when should we be on channel
+ * @interval_exp: the exponent for the interval
+ * @interval_mantissa: the mantissa for the interval
+ * @min_wake_duration: the minimum duration for the wake period
+ * @trigger: is the TWT triggered or not
+ * @flow_type: is the TWT announced or not
+ * @flow_id: the TWT flow identifier from 0 to 7
+ * @protection: is the TWT protected
+ * @ndo_paging_indicator: is ndo_paging_indicator set
+ * @responder_pm_mode: is responder_pm_mode set
+ * @negotiation_type: if the responder wants to doze outside the TWT SP
+ * @twt_request: 1 for TWT request, 0 otherwise
+ * @implicit: is TWT implicit
+ * @twt_group_assignment: the TWT group assignment
+ * @twt_channel: the TWT channel
+ * @reserved: reserved
+ */
+ struct iwl_dhc_twt_operation {
+ __le32 mac_id;
+ __le32 twt_operation;
+ __le64 target_wake_time;
+ __le32 interval_exp;
+ __le32 interval_mantissa;
+ __le32 min_wake_duration;
+ u8 trigger;
+ u8 flow_type;
+ u8 flow_id;
+ u8 protection;
+ u8 ndo_paging_indicator;
+ u8 responder_pm_mode;
+ u8 negotiation_type;
+ u8 twt_request;
+ u8 implicit;
+ u8 twt_group_assignment;
+ u8 twt_channel;
+ u8 reserved;
+ }; /* DHC_TWT_OPERATION_API_S */
+
+ #endif /* __iwl_fw_api_dhc_h__ */
diff --cc sys/contrib/dev/iwlwifi/fw/api/phy.h
index c73d4d597857,000000000000..4c5221debbcb
mode 100644,000000..100644
--- a/sys/contrib/dev/iwlwifi/fw/api/phy.h
+++ b/sys/contrib/dev/iwlwifi/fw/api/phy.h
@@@ -1,235 -1,0 +1,240 @@@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
+/*
- * Copyright (C) 2012-2014, 2019-2022, 2024 Intel Corporation
++ * Copyright (C) 2012-2014, 2019-2022, 2024-2025 Intel Corporation
+ * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
+ * Copyright (C) 2016-2017 Intel Deutschland GmbH
+ */
+#ifndef __iwl_fw_api_phy_h__
+#define __iwl_fw_api_phy_h__
++#include <linux/types.h>
++#include <linux/bits.h>
++#if defined(__FreeBSD__)
++#include <linux/bitops.h>
++#endif
+
+/**
+ * enum iwl_phy_ops_subcmd_ids - PHY group commands
+ */
+enum iwl_phy_ops_subcmd_ids {
+ /**
+ * @CMD_DTS_MEASUREMENT_TRIGGER_WIDE:
+ * Uses either &struct iwl_dts_measurement_cmd or
+ * &struct iwl_ext_dts_measurement_cmd
+ */
+ CMD_DTS_MEASUREMENT_TRIGGER_WIDE = 0x0,
+
+ /**
- * @CTDP_CONFIG_CMD: &struct iwl_mvm_ctdp_cmd
++ * @CTDP_CONFIG_CMD: &struct iwl_ctdp_cmd
+ */
+ CTDP_CONFIG_CMD = 0x03,
+
+ /**
+ * @TEMP_REPORTING_THRESHOLDS_CMD: &struct temp_report_ths_cmd
+ */
+ TEMP_REPORTING_THRESHOLDS_CMD = 0x04,
+
+ /**
+ * @PER_CHAIN_LIMIT_OFFSET_CMD: &struct iwl_geo_tx_power_profiles_cmd_v1,
+ * &struct iwl_geo_tx_power_profiles_cmd_v2,
+ * &struct iwl_geo_tx_power_profiles_cmd_v3,
+ * &struct iwl_geo_tx_power_profiles_cmd_v4 or
+ * &struct iwl_geo_tx_power_profiles_cmd_v5
+ */
+ PER_CHAIN_LIMIT_OFFSET_CMD = 0x05,
+
+ /**
+ * @PER_PLATFORM_ANT_GAIN_CMD: &union iwl_ppag_table_cmd
+ */
+ PER_PLATFORM_ANT_GAIN_CMD = 0x07,
+
+ /**
+ * @AP_TX_POWER_CONSTRAINTS_CMD: &struct iwl_txpower_constraints_cmd
+ */
+ AP_TX_POWER_CONSTRAINTS_CMD = 0x0C,
+
+ /**
+ * @CT_KILL_NOTIFICATION: &struct ct_kill_notif
+ */
+ CT_KILL_NOTIFICATION = 0xFE,
+
+ /**
+ * @DTS_MEASUREMENT_NOTIF_WIDE:
+ * &struct iwl_dts_measurement_notif_v1 or
- * &struct iwl_dts_measurement_notif_v2
++ * &struct iwl_dts_measurement_notif
+ */
+ DTS_MEASUREMENT_NOTIF_WIDE = 0xFF,
+};
+
+/* DTS measurements */
+
+enum iwl_dts_measurement_flags {
+ DTS_TRIGGER_CMD_FLAGS_TEMP = BIT(0),
+ DTS_TRIGGER_CMD_FLAGS_VOLT = BIT(1),
+};
+
+/**
+ * struct iwl_dts_measurement_cmd - request DTS temp and/or voltage measurements
+ *
+ * @flags: indicates which measurements we want as specified in
+ * &enum iwl_dts_measurement_flags
+ */
+struct iwl_dts_measurement_cmd {
+ __le32 flags;
+} __packed; /* TEMPERATURE_MEASUREMENT_TRIGGER_CMD_S */
+
+/**
+* enum iwl_dts_control_measurement_mode - DTS measurement type
+* @DTS_AUTOMATIC: Automatic mode (full SW control). Provide temperature read
+* back (latest value. Not waiting for new value). Use automatic
+* SW DTS configuration.
+* @DTS_REQUEST_READ: Request DTS read. Configure DTS with manual settings,
+* trigger DTS reading and provide read back temperature read
+* when available.
+* @DTS_OVER_WRITE: over-write the DTS temperatures in the SW until next read
+* @DTS_DIRECT_WITHOUT_MEASURE: DTS returns its latest temperature result,
+* without measurement trigger.
+*/
+enum iwl_dts_control_measurement_mode {
+ DTS_AUTOMATIC = 0,
+ DTS_REQUEST_READ = 1,
+ DTS_OVER_WRITE = 2,
+ DTS_DIRECT_WITHOUT_MEASURE = 3,
+};
+
+/**
+* enum iwl_dts_used - DTS to use or used for measurement in the DTS request
+* @DTS_USE_TOP: Top
+* @DTS_USE_CHAIN_A: chain A
+* @DTS_USE_CHAIN_B: chain B
+* @DTS_USE_CHAIN_C: chain C
+* @XTAL_TEMPERATURE: read temperature from xtal
+*/
+enum iwl_dts_used {
+ DTS_USE_TOP = 0,
+ DTS_USE_CHAIN_A = 1,
+ DTS_USE_CHAIN_B = 2,
+ DTS_USE_CHAIN_C = 3,
+ XTAL_TEMPERATURE = 4,
+};
+
+/**
+* enum iwl_dts_bit_mode - bit-mode to use in DTS request read mode
+* @DTS_BIT6_MODE: bit 6 mode
+* @DTS_BIT8_MODE: bit 8 mode
+*/
+enum iwl_dts_bit_mode {
+ DTS_BIT6_MODE = 0,
+ DTS_BIT8_MODE = 1,
+};
+
+/**
+ * struct iwl_ext_dts_measurement_cmd - request extended DTS temp measurements
+ * @control_mode: see &enum iwl_dts_control_measurement_mode
+ * @temperature: used when over write DTS mode is selected
+ * @sensor: set temperature sensor to use. See &enum iwl_dts_used
+ * @avg_factor: average factor to DTS in request DTS read mode
+ * @bit_mode: value defines the DTS bit mode to use. See &enum iwl_dts_bit_mode
+ * @step_duration: step duration for the DTS
+ */
+struct iwl_ext_dts_measurement_cmd {
+ __le32 control_mode;
+ __le32 temperature;
+ __le32 sensor;
+ __le32 avg_factor;
+ __le32 bit_mode;
+ __le32 step_duration;
+} __packed; /* XVT_FW_DTS_CONTROL_MEASUREMENT_REQUEST_API_S */
+
+/**
+ * struct iwl_dts_measurement_notif_v1 - measurements notification
+ *
+ * @temp: the measured temperature
+ * @voltage: the measured voltage
+ */
+struct iwl_dts_measurement_notif_v1 {
+ __le32 temp;
+ __le32 voltage;
+} __packed; /* TEMPERATURE_MEASUREMENT_TRIGGER_NTFY_S_VER_1*/
+
+/**
- * struct iwl_dts_measurement_notif_v2 - measurements notification
++ * struct iwl_dts_measurement_notif - measurements notification
+ *
+ * @temp: the measured temperature
+ * @voltage: the measured voltage
+ * @threshold_idx: the trip index that was crossed
+ */
- struct iwl_dts_measurement_notif_v2 {
++struct iwl_dts_measurement_notif {
+ __le32 temp;
+ __le32 voltage;
+ __le32 threshold_idx;
+} __packed; /* TEMPERATURE_MEASUREMENT_TRIGGER_NTFY_S_VER_2 */
+
+/**
+ * struct iwl_dts_measurement_resp - measurements response
+ *
+ * @temp: the measured temperature
+ */
+struct iwl_dts_measurement_resp {
+ __le32 temp;
+} __packed; /* CMD_DTS_MEASUREMENT_RSP_API_S_VER_1 */
+
+/**
+ * struct ct_kill_notif - CT-kill entry notification
+ * This structure represent both versions of this notification.
+ *
+ * @temperature: the current temperature in celsius
+ * @dts: only in v2: DTS that trigger the CT Kill bitmap:
+ * bit 0: ToP master
+ * bit 1: PA chain A master
+ * bit 2: PA chain B master
+ * bit 3: ToP slave
+ * bit 4: PA chain A slave
+ * bit 5: PA chain B slave)
+ * bits 6,7: reserved (set to 0)
+ * @scheme: only for v2: scheme that trigger the CT Kill (0-SW, 1-HW)
+ */
+struct ct_kill_notif {
+ __le16 temperature;
+ u8 dts;
+ u8 scheme;
+} __packed; /* CT_KILL_NOTIFICATION_API_S_VER_1, CT_KILL_NOTIFICATION_API_S_VER_2 */
+
+/**
- * enum iwl_mvm_ctdp_cmd_operation - CTDP command operations
++* enum iwl_ctdp_cmd_operation - CTDP command operations
+* @CTDP_CMD_OPERATION_START: update the current budget
+* @CTDP_CMD_OPERATION_STOP: stop ctdp
+* @CTDP_CMD_OPERATION_REPORT: get the average budget
+*/
- enum iwl_mvm_ctdp_cmd_operation {
++enum iwl_ctdp_cmd_operation {
+ CTDP_CMD_OPERATION_START = 0x1,
+ CTDP_CMD_OPERATION_STOP = 0x2,
+ CTDP_CMD_OPERATION_REPORT = 0x4,
+};/* CTDP_CMD_OPERATION_TYPE_E */
+
+/**
- * struct iwl_mvm_ctdp_cmd - track and manage the FW power consumption budget
++ * struct iwl_ctdp_cmd - track and manage the FW power consumption budget
+ *
- * @operation: see &enum iwl_mvm_ctdp_cmd_operation
++ * @operation: see &enum iwl_ctdp_cmd_operation
+ * @budget: the budget in milliwatt
+ * @window_size: defined in API but not used
+ */
- struct iwl_mvm_ctdp_cmd {
++struct iwl_ctdp_cmd {
+ __le32 operation;
+ __le32 budget;
+ __le32 window_size;
+} __packed;
+
+#define IWL_MAX_DTS_TRIPS 8
+
+/**
+ * struct temp_report_ths_cmd - set temperature thresholds
+ *
+ * @num_temps: number of temperature thresholds passed
+ * @thresholds: array with the thresholds to be configured
+ */
+struct temp_report_ths_cmd {
+ __le32 num_temps;
+ __le16 thresholds[IWL_MAX_DTS_TRIPS];
+} __packed; /* GRP_PHY_TEMP_REPORTING_THRESHOLDS_CMD */
+
+#endif /* __iwl_fw_api_phy_h__ */
diff --cc sys/contrib/dev/iwlwifi/fw/api/rx.h
index ec89e9576d2e,000000000000..2024b11c80d0
mode 100644,000000..100644
--- a/sys/contrib/dev/iwlwifi/fw/api/rx.h
+++ b/sys/contrib/dev/iwlwifi/fw/api/rx.h
@@@ -1,1033 -1,0 +1,1059 @@@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
+/*
- * Copyright (C) 2012-2014, 2018-2024 Intel Corporation
++ * Copyright (C) 2012-2014, 2018-2025 Intel Corporation
+ * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
+ * Copyright (C) 2015-2017 Intel Deutschland GmbH
+ */
+#ifndef __iwl_fw_api_rx_h__
+#define __iwl_fw_api_rx_h__
+
+/* API for pre-9000 hardware */
+
+#define IWL_RX_INFO_PHY_CNT 8
+#define IWL_RX_INFO_ENERGY_ANT_ABC_IDX 1
+#define IWL_RX_INFO_ENERGY_ANT_A_MSK 0x000000ff
+#define IWL_RX_INFO_ENERGY_ANT_B_MSK 0x0000ff00
+#define IWL_RX_INFO_ENERGY_ANT_A_POS 0
+#define IWL_RX_INFO_ENERGY_ANT_B_POS 8
+#define IWL_RX_INFO_ENERGY_ANT_C_POS 16
+
+enum iwl_mac_context_info {
+ MAC_CONTEXT_INFO_NONE,
+ MAC_CONTEXT_INFO_GSCAN,
+};
+
+/**
+ * struct iwl_rx_phy_info - phy info
+ * (REPLY_RX_PHY_CMD = 0xc0)
+ * @non_cfg_phy_cnt: non configurable DSP phy data byte count
+ * @cfg_phy_cnt: configurable DSP phy data byte count
+ * @stat_id: configurable DSP phy data set ID
+ * @reserved1: reserved
+ * @system_timestamp: GP2 at on air rise
+ * @timestamp: TSF at on air rise
+ * @beacon_time_stamp: beacon at on-air rise
+ * @phy_flags: general phy flags: band, modulation, ...
+ * @channel: channel number
+ * @non_cfg_phy: for various implementations of non_cfg_phy
+ * @rate_n_flags: RATE_MCS_*
+ * @byte_count: frame's byte-count
+ * @frame_time: frame's time on the air, based on byte count and frame rate
+ * calculation
+ * @mac_active_msk: what MACs were active when the frame was received
+ * @mac_context_info: additional info on the context in which the frame was
+ * received as defined in &enum iwl_mac_context_info
+ *
+ * Before each Rx, the device sends this data. It contains PHY information
+ * about the reception of the packet.
+ */
+struct iwl_rx_phy_info {
+ u8 non_cfg_phy_cnt;
+ u8 cfg_phy_cnt;
+ u8 stat_id;
+ u8 reserved1;
+ __le32 system_timestamp;
+ __le64 timestamp;
+ __le32 beacon_time_stamp;
+ __le16 phy_flags;
+ __le16 channel;
+ __le32 non_cfg_phy[IWL_RX_INFO_PHY_CNT];
+ __le32 rate_n_flags;
+ __le32 byte_count;
+ u8 mac_active_msk;
+ u8 mac_context_info;
+ __le16 frame_time;
+} __packed;
+
+/*
+ * TCP offload Rx assist info
+ *
+ * bits 0:3 - reserved
+ * bits 4:7 - MIC CRC length
+ * bits 8:12 - MAC header length
+ * bit 13 - Padding indication
+ * bit 14 - A-AMSDU indication
+ * bit 15 - Offload enabled
+ */
+enum iwl_csum_rx_assist_info {
+ CSUM_RXA_RESERVED_MASK = 0x000f,
+ CSUM_RXA_MICSIZE_MASK = 0x00f0,
+ CSUM_RXA_HEADERLEN_MASK = 0x1f00,
+ CSUM_RXA_PADD = BIT(13),
+ CSUM_RXA_AMSDU = BIT(14),
+ CSUM_RXA_ENA = BIT(15)
+};
+
+/**
+ * struct iwl_rx_mpdu_res_start - phy info
+ * @byte_count: byte count of the frame
+ * @assist: see &enum iwl_csum_rx_assist_info
+ */
+struct iwl_rx_mpdu_res_start {
+ __le16 byte_count;
+ __le16 assist;
+} __packed; /* _RX_MPDU_RES_START_API_S_VER_2 */
+
+/**
+ * enum iwl_rx_phy_flags - to parse %iwl_rx_phy_info phy_flags
+ * @RX_RES_PHY_FLAGS_BAND_24: true if the packet was received on 2.4 band
+ * @RX_RES_PHY_FLAGS_MOD_CCK: modulation is CCK
+ * @RX_RES_PHY_FLAGS_SHORT_PREAMBLE: true if packet's preamble was short
+ * @RX_RES_PHY_FLAGS_NARROW_BAND: narrow band (<20 MHz) receive
+ * @RX_RES_PHY_FLAGS_ANTENNA: antenna on which the packet was received
+ * @RX_RES_PHY_FLAGS_ANTENNA_POS: antenna bit position
+ * @RX_RES_PHY_FLAGS_AGG: set if the packet was part of an A-MPDU
+ * @RX_RES_PHY_FLAGS_OFDM_HT: The frame was an HT frame
+ * @RX_RES_PHY_FLAGS_OFDM_GF: The frame used GF preamble
+ * @RX_RES_PHY_FLAGS_OFDM_VHT: The frame was a VHT frame
+ */
+enum iwl_rx_phy_flags {
+ RX_RES_PHY_FLAGS_BAND_24 = BIT(0),
+ RX_RES_PHY_FLAGS_MOD_CCK = BIT(1),
+ RX_RES_PHY_FLAGS_SHORT_PREAMBLE = BIT(2),
+ RX_RES_PHY_FLAGS_NARROW_BAND = BIT(3),
+ RX_RES_PHY_FLAGS_ANTENNA = (0x7 << 4),
+ RX_RES_PHY_FLAGS_ANTENNA_POS = 4,
+ RX_RES_PHY_FLAGS_AGG = BIT(7),
+ RX_RES_PHY_FLAGS_OFDM_HT = BIT(8),
+ RX_RES_PHY_FLAGS_OFDM_GF = BIT(9),
+ RX_RES_PHY_FLAGS_OFDM_VHT = BIT(10),
+};
+
+/**
+ * enum iwl_mvm_rx_status - written by fw for each Rx packet
+ * @RX_MPDU_RES_STATUS_CRC_OK: CRC is fine
+ * @RX_MPDU_RES_STATUS_OVERRUN_OK: there was no RXE overflow
+ * @RX_MPDU_RES_STATUS_SRC_STA_FOUND: station was found
+ * @RX_MPDU_RES_STATUS_KEY_VALID: key was valid
+ * @RX_MPDU_RES_STATUS_ICV_OK: ICV is fine, if not, the packet is destroyed
+ * @RX_MPDU_RES_STATUS_MIC_OK: used for CCM alg only. TKIP MIC is checked
+ * in the driver.
+ * @RX_MPDU_RES_STATUS_TTAK_OK: TTAK is fine
+ * @RX_MPDU_RES_STATUS_MNG_FRAME_REPLAY_ERR: valid for alg = CCM_CMAC or
+ * alg = CCM only. Checks replay attack for 11w frames.
+ * @RX_MPDU_RES_STATUS_SEC_NO_ENC: this frame is not encrypted
+ * @RX_MPDU_RES_STATUS_SEC_WEP_ENC: this frame is encrypted using WEP
+ * @RX_MPDU_RES_STATUS_SEC_CCM_ENC: this frame is encrypted using CCM
+ * @RX_MPDU_RES_STATUS_SEC_TKIP_ENC: this frame is encrypted using TKIP
+ * @RX_MPDU_RES_STATUS_SEC_EXT_ENC: this frame is encrypted using extension
+ * algorithm
+ * @RX_MPDU_RES_STATUS_SEC_CMAC_GMAC_ENC: this frame is protected using
+ * CMAC or GMAC
+ * @RX_MPDU_RES_STATUS_SEC_ENC_ERR: this frame couldn't be decrypted
+ * @RX_MPDU_RES_STATUS_SEC_ENC_MSK: bitmask of the encryption algorithm
+ * @RX_MPDU_RES_STATUS_DEC_DONE: this frame has been successfully decrypted
+ * @RX_MPDU_RES_STATUS_CSUM_DONE: checksum was done by the hw
+ * @RX_MPDU_RES_STATUS_CSUM_OK: checksum found no errors
+ * @RX_MPDU_RES_STATUS_STA_ID_MSK: station ID mask
+ * @RX_MDPU_RES_STATUS_STA_ID_SHIFT: station ID bit shift
+ */
+enum iwl_mvm_rx_status {
+ RX_MPDU_RES_STATUS_CRC_OK = BIT(0),
+ RX_MPDU_RES_STATUS_OVERRUN_OK = BIT(1),
+ RX_MPDU_RES_STATUS_SRC_STA_FOUND = BIT(2),
+ RX_MPDU_RES_STATUS_KEY_VALID = BIT(3),
+ RX_MPDU_RES_STATUS_ICV_OK = BIT(5),
+ RX_MPDU_RES_STATUS_MIC_OK = BIT(6),
+ RX_MPDU_RES_STATUS_TTAK_OK = BIT(7),
+ RX_MPDU_RES_STATUS_MNG_FRAME_REPLAY_ERR = BIT(7),
+ RX_MPDU_RES_STATUS_SEC_NO_ENC = (0 << 8),
+ RX_MPDU_RES_STATUS_SEC_WEP_ENC = (1 << 8),
+ RX_MPDU_RES_STATUS_SEC_CCM_ENC = (2 << 8),
+ RX_MPDU_RES_STATUS_SEC_TKIP_ENC = (3 << 8),
+ RX_MPDU_RES_STATUS_SEC_EXT_ENC = (4 << 8),
+ RX_MPDU_RES_STATUS_SEC_CMAC_GMAC_ENC = (6 << 8),
+ RX_MPDU_RES_STATUS_SEC_ENC_ERR = (7 << 8),
+ RX_MPDU_RES_STATUS_SEC_ENC_MSK = (7 << 8),
+ RX_MPDU_RES_STATUS_DEC_DONE = BIT(11),
+ RX_MPDU_RES_STATUS_CSUM_DONE = BIT(16),
+ RX_MPDU_RES_STATUS_CSUM_OK = BIT(17),
+ RX_MDPU_RES_STATUS_STA_ID_SHIFT = 24,
+ RX_MPDU_RES_STATUS_STA_ID_MSK = 0x1f << RX_MDPU_RES_STATUS_STA_ID_SHIFT,
+};
+
+/* 9000 series API */
+enum iwl_rx_mpdu_mac_flags1 {
+ IWL_RX_MDPU_MFLG1_ADDRTYPE_MASK = 0x03,
+ IWL_RX_MPDU_MFLG1_MIC_CRC_LEN_MASK = 0xf0,
+ /* shift should be 4, but the length is measured in 2-byte
+ * words, so shifting only by 3 gives a byte result
+ */
+ IWL_RX_MPDU_MFLG1_MIC_CRC_LEN_SHIFT = 3,
+};
+
+enum iwl_rx_mpdu_mac_flags2 {
+ /* in 2-byte words */
+ IWL_RX_MPDU_MFLG2_HDR_LEN_MASK = 0x1f,
+ IWL_RX_MPDU_MFLG2_PAD = 0x20,
+ IWL_RX_MPDU_MFLG2_AMSDU = 0x40,
+};
+
+enum iwl_rx_mpdu_amsdu_info {
+ IWL_RX_MPDU_AMSDU_SUBFRAME_IDX_MASK = 0x7f,
+ IWL_RX_MPDU_AMSDU_LAST_SUBFRAME = 0x80,
+};
+
- #define RX_MPDU_BAND_POS 6
- #define RX_MPDU_BAND_MASK 0xC0
- #define BAND_IN_RX_STATUS(_val) \
- (((_val) & RX_MPDU_BAND_MASK) >> RX_MPDU_BAND_POS)
++enum iwl_rx_mpdu_mac_phy_band {
++ /* whether or not this is MAC or LINK depends on the API */
++ IWL_RX_MPDU_MAC_PHY_BAND_MAC_MASK = 0x0f,
++ IWL_RX_MPDU_MAC_PHY_BAND_LINK_MASK = 0x0f,
++ IWL_RX_MPDU_MAC_PHY_BAND_PHY_MASK = 0x30,
++ IWL_RX_MPDU_MAC_PHY_BAND_BAND_MASK = 0xc0,
++};
+
+enum iwl_rx_l3_proto_values {
+ IWL_RX_L3_TYPE_NONE,
*** 27153 LINES SKIPPED ***