git: 6b627f88584c - main - iwlwifi: update Intel's mvm/mld drivers

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
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 ***