Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Feb 2025 14:52:29 GMT
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: f4e352ef16d6 - stable/14 - iwlwifi: update Intel's iwlwifi/mvm driver.
Message-ID:  <202502101452.51AEqTsm027532@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/14 has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=f4e352ef16d6afb4f2238ecdf925d531f8b9e995

commit f4e352ef16d6afb4f2238ecdf925d531f8b9e995
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2024-09-27 21:53:40 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-02-10 14:52:07 +0000

    iwlwifi: update Intel's iwlwifi/mvm driver.
    
    This version is based on
    git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
    98f7e32f20d28ec452afb208f9cffc08448a2652 ( tag: v6.11 ).
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit a4128aad8503277614f2d214011ef60a19447b83)
---
 share/man/man4/iwlwifi.4                           |   12 +-
 share/man/man4/iwlwififw.4                         |  238 ++-
 sys/contrib/dev/iwlwifi/cfg/22000.c                |    4 +-
 sys/contrib/dev/iwlwifi/cfg/ax210.c                |   12 +-
 sys/contrib/dev/iwlwifi/cfg/bz.c                   |   29 +-
 sys/contrib/dev/iwlwifi/cfg/sc.c                   |   48 +-
 sys/contrib/dev/iwlwifi/fw/acpi.c                  |  649 ++-----
 sys/contrib/dev/iwlwifi/fw/acpi.h                  |  220 +--
 sys/contrib/dev/iwlwifi/fw/api/alive.h             |    6 +-
 sys/contrib/dev/iwlwifi/fw/api/binding.h           |    4 +-
 sys/contrib/dev/iwlwifi/fw/api/coex.h              |   81 +-
 sys/contrib/dev/iwlwifi/fw/api/commands.h          |   30 +
 sys/contrib/dev/iwlwifi/fw/api/config.h            |    4 +-
 sys/contrib/dev/iwlwifi/fw/api/d3.h                |  107 +-
 sys/contrib/dev/iwlwifi/fw/api/datapath.h          |   36 +-
 sys/contrib/dev/iwlwifi/fw/api/dbg-tlv.h           |   81 +-
 sys/contrib/dev/iwlwifi/fw/api/debug.h             |   40 +-
 sys/contrib/dev/iwlwifi/fw/api/location.h          |  160 +-
 sys/contrib/dev/iwlwifi/fw/api/mac-cfg.h           |   60 +-
 sys/contrib/dev/iwlwifi/fw/api/mac.h               |   17 +-
 sys/contrib/dev/iwlwifi/fw/api/nvm-reg.h           |  198 +-
 sys/contrib/dev/iwlwifi/fw/api/offload.h           |    8 +-
 sys/contrib/dev/iwlwifi/fw/api/phy-ctxt.h          |   24 +-
 sys/contrib/dev/iwlwifi/fw/api/phy.h               |    9 +-
 sys/contrib/dev/iwlwifi/fw/api/power.h             |  134 +-
 sys/contrib/dev/iwlwifi/fw/api/rfi.h               |    7 +-
 sys/contrib/dev/iwlwifi/fw/api/rs.h                |    4 +-
 sys/contrib/dev/iwlwifi/fw/api/rx.h                |   26 +-
 sys/contrib/dev/iwlwifi/fw/api/scan.h              |   49 +-
 sys/contrib/dev/iwlwifi/fw/api/sta.h               |    4 +-
 sys/contrib/dev/iwlwifi/fw/api/stats.h             |  153 +-
 sys/contrib/dev/iwlwifi/fw/api/time-event.h        |   80 +-
 sys/contrib/dev/iwlwifi/fw/api/tx.h                |   23 +-
 sys/contrib/dev/iwlwifi/fw/api/txq.h               |   14 +-
 sys/contrib/dev/iwlwifi/fw/dbg.c                   |  295 ++-
 sys/contrib/dev/iwlwifi/fw/dbg.h                   |    4 +-
 sys/contrib/dev/iwlwifi/fw/debugfs.c               |   17 +-
 sys/contrib/dev/iwlwifi/fw/dump.c                  |    3 +-
 sys/contrib/dev/iwlwifi/fw/error-dump.h            |   33 +-
 sys/contrib/dev/iwlwifi/fw/file.h                  |   71 +-
 sys/contrib/dev/iwlwifi/fw/img.h                   |    4 +-
 sys/contrib/dev/iwlwifi/fw/init.c                  |    7 +-
 sys/contrib/dev/iwlwifi/fw/notif-wait.h            |    3 +-
 sys/contrib/dev/iwlwifi/fw/pnvm.c                  |   49 +-
 sys/contrib/dev/iwlwifi/fw/regulatory.c            |  639 +++++++
 sys/contrib/dev/iwlwifi/fw/regulatory.h            |  220 +++
 sys/contrib/dev/iwlwifi/fw/rs.c                    |    1 -
 sys/contrib/dev/iwlwifi/fw/runtime.h               |   30 +-
 sys/contrib/dev/iwlwifi/fw/uefi.c                  |  462 ++++-
 sys/contrib/dev/iwlwifi/fw/uefi.h                  |  245 ++-
 sys/contrib/dev/iwlwifi/iwl-config.h               |   43 +-
 sys/contrib/dev/iwlwifi/iwl-context-info-gen3.h    |   13 +-
 sys/contrib/dev/iwlwifi/iwl-csr.h                  |   10 +-
 sys/contrib/dev/iwlwifi/iwl-dbg-tlv.c              |   94 +-
 sys/contrib/dev/iwlwifi/iwl-dbg-tlv.h              |    6 +-
 sys/contrib/dev/iwlwifi/iwl-debug.c                |    5 +-
 sys/contrib/dev/iwlwifi/iwl-devtrace.h             |    2 +
 sys/contrib/dev/iwlwifi/iwl-drv.c                  |  151 +-
 sys/contrib/dev/iwlwifi/iwl-drv.h                  |   12 +-
 sys/contrib/dev/iwlwifi/iwl-eeprom-parse.c         |  879 ---------
 sys/contrib/dev/iwlwifi/iwl-eeprom-read.c          |  397 ----
 sys/contrib/dev/iwlwifi/iwl-eeprom-read.h          |   12 -
 sys/contrib/dev/iwlwifi/iwl-fh.h                   |   85 +-
 sys/contrib/dev/iwlwifi/iwl-io.c                   |    4 +-
 sys/contrib/dev/iwlwifi/iwl-modparams.h            |   21 +-
 sys/contrib/dev/iwlwifi/iwl-nvm-parse.c            |  223 ++-
 sys/contrib/dev/iwlwifi/iwl-nvm-parse.h            |   23 +-
 sys/contrib/dev/iwlwifi/iwl-nvm-utils.c            |  118 ++
 .../{iwl-eeprom-parse.h => iwl-nvm-utils.h}        |   19 +-
 sys/contrib/dev/iwlwifi/iwl-op-mode.h              |   32 +-
 sys/contrib/dev/iwlwifi/iwl-prph.h                 |   42 +-
 sys/contrib/dev/iwlwifi/iwl-trans.c                |  456 ++++-
 sys/contrib/dev/iwlwifi/iwl-trans.h                |  736 ++------
 sys/contrib/dev/iwlwifi/mei/iwl-mei.h              |    7 +-
 sys/contrib/dev/iwlwifi/mvm/coex.c                 |  124 +-
 sys/contrib/dev/iwlwifi/mvm/constants.h            |   26 +-
 sys/contrib/dev/iwlwifi/mvm/d3.c                   |  649 ++++++-
 sys/contrib/dev/iwlwifi/mvm/debugfs-vif.c          |  272 ++-
 sys/contrib/dev/iwlwifi/mvm/debugfs.c              |  418 ++---
 sys/contrib/dev/iwlwifi/mvm/debugfs.h              |    1 +
 sys/contrib/dev/iwlwifi/mvm/ftm-initiator.c        |  277 ++-
 sys/contrib/dev/iwlwifi/mvm/ftm-responder.c        |   49 +-
 sys/contrib/dev/iwlwifi/mvm/fw.c                   |  522 ++----
 sys/contrib/dev/iwlwifi/mvm/link.c                 |  953 +++++++++-
 sys/contrib/dev/iwlwifi/mvm/mac-ctxt.c             |  117 +-
 sys/contrib/dev/iwlwifi/mvm/mac80211.c             | 1423 +++++++++------
 sys/contrib/dev/iwlwifi/mvm/mld-key.c              |   42 +-
 sys/contrib/dev/iwlwifi/mvm/mld-mac.c              |   11 +-
 sys/contrib/dev/iwlwifi/mvm/mld-mac80211.c         |  672 ++++---
 sys/contrib/dev/iwlwifi/mvm/mld-sta.c              |   98 +-
 sys/contrib/dev/iwlwifi/mvm/mvm.h                  |  592 ++++--
 sys/contrib/dev/iwlwifi/mvm/nvm.c                  |   19 +-
 sys/contrib/dev/iwlwifi/mvm/offloading.c           |    8 +-
 sys/contrib/dev/iwlwifi/mvm/ops.c                  |  319 +++-
 sys/contrib/dev/iwlwifi/mvm/phy-ctxt.c             |  115 +-
 sys/contrib/dev/iwlwifi/mvm/power.c                |  179 +-
 sys/contrib/dev/iwlwifi/mvm/rfi.c                  |    8 +-
 sys/contrib/dev/iwlwifi/mvm/rs-fw.c                |   33 +-
 sys/contrib/dev/iwlwifi/mvm/rx.c                   |  329 +++-
 sys/contrib/dev/iwlwifi/mvm/rxmq.c                 |  473 ++---
 sys/contrib/dev/iwlwifi/mvm/scan.c                 |  694 +++++--
 sys/contrib/dev/iwlwifi/mvm/sf.c                   |    5 +-
 sys/contrib/dev/iwlwifi/mvm/sta.c                  |  258 ++-
 sys/contrib/dev/iwlwifi/mvm/sta.h                  |   47 +-
 sys/contrib/dev/iwlwifi/mvm/tdls.c                 |   39 +-
 sys/contrib/dev/iwlwifi/mvm/testmode.h             |   92 +
 sys/contrib/dev/iwlwifi/mvm/time-event.c           |  470 ++++-
 sys/contrib/dev/iwlwifi/mvm/time-event.h           |   21 +-
 sys/contrib/dev/iwlwifi/mvm/tt.c                   |  146 +-
 sys/contrib/dev/iwlwifi/mvm/tx.c                   |  325 ++--
 sys/contrib/dev/iwlwifi/mvm/utils.c                |   99 +-
 sys/contrib/dev/iwlwifi/pcie/ctxt-info-gen3.c      |   42 +-
 sys/contrib/dev/iwlwifi/pcie/ctxt-info.c           |    6 +-
 sys/contrib/dev/iwlwifi/pcie/drv.c                 |  211 ++-
 sys/contrib/dev/iwlwifi/pcie/internal.h            |  362 +++-
 sys/contrib/dev/iwlwifi/pcie/rx.c                  |   47 +-
 sys/contrib/dev/iwlwifi/pcie/trans-gen2.c          |   29 +-
 sys/contrib/dev/iwlwifi/pcie/trans.c               |  482 ++---
 sys/contrib/dev/iwlwifi/pcie/tx-gen2.c             | 1191 +++++++++++-
 sys/contrib/dev/iwlwifi/pcie/tx.c                  | 1270 +++++++++++--
 sys/contrib/dev/iwlwifi/queue/tx.c                 | 1903 --------------------
 sys/contrib/dev/iwlwifi/queue/tx.h                 |  183 --
 sys/contrib/dev/iwlwifi/tests/Makefile             |    7 +
 sys/contrib/dev/iwlwifi/tests/devinfo.c            |   78 +
 sys/contrib/dev/iwlwifi/tests/module.c             |   10 +
 sys/modules/iwlwifi/Makefile                       |    7 +-
 usr.sbin/fwget/pci/pci_network_intel               |   33 +-
 127 files changed, 14821 insertions(+), 9009 deletions(-)

diff --git a/share/man/man4/iwlwifi.4 b/share/man/man4/iwlwifi.4
index b4dce91f1ee4..04317c22936f 100644
--- a/share/man/man4/iwlwifi.4
+++ b/share/man/man4/iwlwifi.4
@@ -220,15 +220,19 @@ Intel(R) Wi-Fi 6 AX101
 .It
 Intel(R) Wi-Fi 6 AX203
 .It
-Intel(R) Wi-Fi 6E AX221 160MHz
-.It
 Intel(R) Wi-Fi 6E AX231 160MHz
 .It
-Intel(R) TBD Bz device
+Intel(R) Wi-Fi 7 BE201 320MHz
+.It
+Intel(R) Wi-Fi 7 BE200 320MHz
 .It
-Intel(R) Wi-Fi 6 AX204 160MHz
+Intel(R) Wi-Fi 7 BE202 160MHz
 .It
 Intel(R) TBD Sc device
+.It
+Intel(R) TBD Sc2 device
+.It
+Intel(R) TBD Sc2f device
 .\" --------------------------------------------------------------------
 .El
 .Sh SEE ALSO
diff --git a/share/man/man4/iwlwififw.4 b/share/man/man4/iwlwififw.4
index debd0cda36b5..491a634e70b5 100644
--- a/share/man/man4/iwlwififw.4
+++ b/share/man/man4/iwlwififw.4
@@ -1,5 +1,5 @@
 .\"-
-.\" Copyright (c) 2021-2023 The FreeBSD Foundation
+.\" Copyright (c) 2021-2024 The FreeBSD Foundation
 .\"
 .\" This documentation was written by Bj\xc3\xb6rn Zeeb under sponsorship from
 .\" the FreeBSD Foundation.
@@ -25,7 +25,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd September 21, 2023
+.Dd October 12, 2024
 .Dt iwlwififw 4
 .Os
 .Sh NAME
@@ -43,13 +43,18 @@ models supported by the
 .Xr iwlwifi 4
 driver.
 .Pp
+One can use
+.Xr fwget 8
+to install the correct firmware package.
+.Pp
 .Bl -column -compact "Vendor" "Device" "Subv. " "Subd. " "Firmware-Prefix"
 .It Ar Name
 .It Ar Vendor Ta Ar Device Ta Ar Subv. Ta Ar Subd. Ta Ar Firmware-Prefix
-.\" ---------------------------------------------------------------------
-.\" This list is manually generated from a sysctl and post-processing.
-.\" Edits will be overwritten on next update.
-.\" ---------------------------------------------------------------------
+.% ---------------------------------------------------------------------
+.% This list is manually generated from a sysctl and post-processing
+.% by sys/contrib/dev/iwlwifi/zzz_fw_ports_fwget.sh generating the list.
+.% Edits will be overwritten on next update.
+.% ---------------------------------------------------------------------
 .It ""
 .It Intel(R) Dual Band Wireless AC 7260
 .It 0x8086 Ta 0x08b1 Ta any Ta 0x4070 Ta iwlwifi-7260
@@ -735,6 +740,198 @@ driver.
 .It Intel(R) Dual Band Wireless AC 8265
 .It 0x8086 Ta 0x24fd Ta any Ta 0x9074 Ta iwlwifi-8265
 .It ""
+.It (unknown)
+.It 0x8086 Ta 0x2526 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x271b Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x271c Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x30dc Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x31dc Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x9df0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa370 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x02f0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x06f0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x34f0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x3df0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x4df0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x43f0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa0f0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x2723 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x2725 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x7a70 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x7af0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x51f0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x51f1 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x54f0 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x7f70 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x2729 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x7e40 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x2727 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x272d Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x272b Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 000000 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0090 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0094 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0098 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x009c Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x00c0 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x00c4 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x00e0 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x00e4 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x00e8 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x00ec Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0100 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0110 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0114 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0118 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x011c Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0310 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0314 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0510 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x0a10 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x1671 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x1672 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x1771 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x1772 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x1791 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x1792 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x4090 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x40c4 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x40e0 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x4110 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xa840 Ta any Ta 0x4314 Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x7740 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x4d40 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xe440 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xe340 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0xd340 Ta any Ta any Ta (unknown)
+.It ""
+.It (unknown)
+.It 0x8086 Ta 0x6e70 Ta any Ta any Ta (unknown)
+.It ""
 .It Killer (R) Wireless-AC 1550 Wireless Network Adapter (9260NGW) 160MHz
 .It 0x8086 Ta 0x2526 Ta any Ta 0x1550 Ta iwlwifi-9260-th-b0-jf-b0
 .It ""
@@ -1290,9 +1487,6 @@ driver.
 .It Intel(R) Wi-Fi 6E AX211 160MHz
 .It 0x8086 Ta any Ta any Ta any Ta (null)
 .It ""
-.It Intel(R) Wi-Fi 6E AX221 160MHz
-.It 0x8086 Ta any Ta any Ta any Ta (null)
-.It ""
 .It Intel(R) Wi-Fi 6E AX231 160MHz
 .It 0x8086 Ta any Ta any Ta any Ta (null)
 .It ""
@@ -1311,9 +1505,6 @@ driver.
 .It Intel(R) Wi-Fi 6E AX411 160MHz
 .It 0x8086 Ta any Ta any Ta any Ta iwlwifi-so-a0-gf4-a0
 .It ""
-.It Intel(R) TBD Bz device
-.It 0x8086 Ta any Ta any Ta any Ta (null)
-.It ""
 .It Intel(R) Wireless-AC 9560 160MHz
 .It 0x8086 Ta any Ta any Ta any Ta iwlwifi-so-a0-jf-b0
 .It ""
@@ -1332,14 +1523,23 @@ driver.
 .It Intel(R) Wireless-AC 9462
 .It 0x8086 Ta any Ta any Ta any Ta iwlwifi-so-a0-jf-b0
 .It ""
-.It Intel(R) Wi-Fi 6 AX204 160MHz
-.It 0x8086 Ta any Ta any Ta any Ta iwlwifi-so-a0-mr-a0
+.It Intel(R) Wi-Fi 7 BE201 320MHz
+.It 0x8086 Ta any Ta any Ta any Ta (null)
+.It ""
+.It Intel(R) Wi-Fi 7 BE200 320MHz
+.It 0x8086 Ta any Ta any Ta any Ta (null)
 .It ""
-.It Intel(R) Wi-Fi 6 AX204 160MHz
+.It Intel(R) Wi-Fi 7 BE202 160MHz
 .It 0x8086 Ta any Ta any Ta any Ta (null)
 .It ""
 .It Intel(R) TBD Sc device
 .It 0x8086 Ta any Ta any Ta any Ta (null)
+.It ""
+.It Intel(R) TBD Sc2 device
+.It 0x8086 Ta any Ta any Ta any Ta (null)
+.It ""
+.It Intel(R) TBD Sc2f device
+.It 0x8086 Ta any Ta any Ta any Ta (null)
 .\" ---------------------------------------------------------------------
 .El
 .Pp
@@ -1350,10 +1550,14 @@ in the above listing).
 .Sh FILES
 A copy of the
 .Xr iwlwifi 4
-firmware license is installed at
-.Em /usr/share/doc/legal/intel_iwlwifi_firmware.LICENCE .
+firmware license is installed along with the
+.Pa wifi-firmware-iwlwifi-kmod
+package or the
+.Pa ports/net/wifi-firmware-iwlwifi-kmod
+port (or each of its flavors).
 .Sh SEE ALSO
 .Xr iwlwifi 4 ,
+.Xr fwget 8 ,
 .Xr firmware 9
 .Sh HISTORY
 The
diff --git a/sys/contrib/dev/iwlwifi/cfg/22000.c b/sys/contrib/dev/iwlwifi/cfg/22000.c
index d594694206b3..2e2fcb3807ef 100644
--- a/sys/contrib/dev/iwlwifi/cfg/22000.c
+++ b/sys/contrib/dev/iwlwifi/cfg/22000.c
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
  * Copyright (C) 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2023 Intel Corporation
+ * Copyright (C) 2018-2024 Intel Corporation
  */
 #include <linux/module.h>
 #include <linux/stringify.h>
@@ -13,7 +13,7 @@
 #define IWL_22000_UCODE_API_MAX	77
 
 /* Lowest firmware API version supported */
-#define IWL_22000_UCODE_API_MIN	50
+#define IWL_22000_UCODE_API_MIN	77
 
 /* NVM versions */
 #define IWL_22000_NVM_VERSION		0x0a1d
diff --git a/sys/contrib/dev/iwlwifi/cfg/ax210.c b/sys/contrib/dev/iwlwifi/cfg/ax210.c
index 8d5f9dce71d5..975e8aed1526 100644
--- a/sys/contrib/dev/iwlwifi/cfg/ax210.c
+++ b/sys/contrib/dev/iwlwifi/cfg/ax210.c
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
  * Copyright (C) 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2023 Intel Corporation
+ * Copyright (C) 2018-2024 Intel Corporation
  */
 #include <linux/module.h>
 #include <linux/stringify.h>
@@ -10,10 +10,10 @@
 #include "fw/api/txq.h"
 
 /* Highest firmware API version supported */
-#define IWL_AX210_UCODE_API_MAX	83
+#define IWL_AX210_UCODE_API_MAX	89
 
 /* Lowest firmware API version supported */
-#define IWL_AX210_UCODE_API_MIN	59
+#define IWL_AX210_UCODE_API_MIN	77
 
 /* NVM versions */
 #define IWL_AX210_NVM_VERSION		0x0a1d
@@ -299,3 +299,9 @@ MODULE_FIRMWARE(IWL_MA_B_HR_B_FW_MODULE_FIRMWARE(IWL_AX210_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_MA_B_GF_A_FW_MODULE_FIRMWARE(IWL_AX210_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_MA_B_GF4_A_FW_MODULE_FIRMWARE(IWL_AX210_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_MA_B_MR_A_FW_MODULE_FIRMWARE(IWL_AX210_UCODE_API_MAX));
+
+MODULE_FIRMWARE("iwlwifi-so-a0-gf-a0.pnvm");
+MODULE_FIRMWARE("iwlwifi-so-a0-gf4-a0.pnvm");
+MODULE_FIRMWARE("iwlwifi-ty-a0-gf-a0.pnvm");
+MODULE_FIRMWARE("iwlwifi-ma-b0-gf-a0.pnvm");
+MODULE_FIRMWARE("iwlwifi-ma-b0-gf4-a0.pnvm");
diff --git a/sys/contrib/dev/iwlwifi/cfg/bz.c b/sys/contrib/dev/iwlwifi/cfg/bz.c
index b9893b22e41d..3b6b8b410be5 100644
--- a/sys/contrib/dev/iwlwifi/cfg/bz.c
+++ b/sys/contrib/dev/iwlwifi/cfg/bz.c
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
  * Copyright (C) 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2023 Intel Corporation
+ * Copyright (C) 2018-2024 Intel Corporation
  */
 #include <linux/module.h>
 #include <linux/stringify.h>
@@ -10,10 +10,10 @@
 #include "fw/api/txq.h"
 
 /* Highest firmware API version supported */
-#define IWL_BZ_UCODE_API_MAX	83
+#define IWL_BZ_UCODE_API_MAX	92
 
 /* Lowest firmware API version supported */
-#define IWL_BZ_UCODE_API_MIN	80
+#define IWL_BZ_UCODE_API_MIN	90
 
 /* NVM versions */
 #define IWL_BZ_NVM_VERSION		0x0a1d
@@ -129,17 +129,11 @@ static const struct iwl_base_params iwl_bz_base_params = {
 	IWL_DEVICE_BZ_COMMON,						\
 	.ht_params = &iwl_22000_ht_params
 
-#define IWL_DEVICE_GL_A							\
-	IWL_DEVICE_BZ_COMMON,						\
-	.ht_params = &iwl_gl_a_ht_params
-
 /*
- * If the device doesn't support HE, no need to have that many buffers.
- * These sizes were picked according to 8 MSDUs inside 256 A-MSDUs in an
+ * This size was picked according to 8 MSDUs inside 512 A-MSDUs in an
  * A-MPDU, with additional overhead to account for processing time.
  */
-#define IWL_NUM_RBDS_NON_HE		512
-#define IWL_NUM_RBDS_BZ_HE		4096
+#define IWL_NUM_RBDS_BZ_EHT		(512 * 16)
 
 const struct iwl_cfg_trans_params iwl_bz_trans_cfg = {
 	.device_family = IWL_DEVICE_FAMILY_BZ,
@@ -155,21 +149,24 @@ const struct iwl_cfg_trans_params iwl_bz_trans_cfg = {
 };
 
 const char iwl_bz_name[] = "Intel(R) TBD Bz device";
+const char iwl_fm_name[] = "Intel(R) Wi-Fi 7 BE201 320MHz";
+const char iwl_gl_name[] = "Intel(R) Wi-Fi 7 BE200 320MHz";
+const char iwl_mtp_name[] = "Intel(R) Wi-Fi 7 BE202 160MHz";
 
 const struct iwl_cfg iwl_cfg_bz = {
 	.fw_name_mac = "bz",
 	.uhb_supported = true,
 	IWL_DEVICE_BZ,
-	.features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
-	.num_rbds = IWL_NUM_RBDS_BZ_HE,
+	.features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
+	.num_rbds = IWL_NUM_RBDS_BZ_EHT,
 };
 
 const struct iwl_cfg iwl_cfg_gl = {
 	.fw_name_mac = "gl",
 	.uhb_supported = true,
 	IWL_DEVICE_BZ,
-	.features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
-	.num_rbds = IWL_NUM_RBDS_BZ_HE,
+	.features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
+	.num_rbds = IWL_NUM_RBDS_BZ_EHT,
 };
 
 
@@ -181,3 +178,5 @@ MODULE_FIRMWARE(IWL_BZ_A_FM_C_MODULE_FIRMWARE(IWL_BZ_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_BZ_A_FM4_B_MODULE_FIRMWARE(IWL_BZ_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_GL_B_FM_B_MODULE_FIRMWARE(IWL_BZ_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_GL_C_FM_C_MODULE_FIRMWARE(IWL_BZ_UCODE_API_MAX));
+
+MODULE_FIRMWARE("iwlwifi-gl-c0-fm-c0.pnvm");
diff --git a/sys/contrib/dev/iwlwifi/cfg/sc.c b/sys/contrib/dev/iwlwifi/cfg/sc.c
index ad283fd22e2a..4ccb0b7bdc20 100644
--- a/sys/contrib/dev/iwlwifi/cfg/sc.c
+++ b/sys/contrib/dev/iwlwifi/cfg/sc.c
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
  * Copyright (C) 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2023 Intel Corporation
+ * Copyright (C) 2018-2024 Intel Corporation
  */
 #include <linux/module.h>
 #include <linux/stringify.h>
@@ -10,10 +10,10 @@
 #include "fw/api/txq.h"
 
 /* Highest firmware API version supported */
-#define IWL_SC_UCODE_API_MAX	83
+#define IWL_SC_UCODE_API_MAX	92
 
 /* Lowest firmware API version supported */
-#define IWL_SC_UCODE_API_MIN	82
+#define IWL_SC_UCODE_API_MIN	90
 
 /* NVM versions */
 #define IWL_SC_NVM_VERSION		0x0a1d
@@ -33,6 +33,10 @@
 #define IWL_SC_A_GF_A_FW_PRE		"iwlwifi-sc-a0-gf-a0"
 #define IWL_SC_A_GF4_A_FW_PRE		"iwlwifi-sc-a0-gf4-a0"
 #define IWL_SC_A_WH_A_FW_PRE		"iwlwifi-sc-a0-wh-a0"
+#define IWL_SC2_A_FM_C_FW_PRE		"iwlwifi-sc2-a0-fm-c0"
+#define IWL_SC2_A_WH_A_FW_PRE		"iwlwifi-sc2-a0-wh-a0"
+#define IWL_SC2F_A_FM_C_FW_PRE		"iwlwifi-sc2f-a0-fm-c0"
+#define IWL_SC2F_A_WH_A_FW_PRE		"iwlwifi-sc2f-a0-wh-a0"
 
 #define IWL_SC_A_FM_B_FW_MODULE_FIRMWARE(api) \
 	IWL_SC_A_FM_B_FW_PRE "-" __stringify(api) ".ucode"
@@ -48,6 +52,14 @@
 	IWL_SC_A_GF4_A_FW_PRE "-" __stringify(api) ".ucode"
 #define IWL_SC_A_WH_A_FW_MODULE_FIRMWARE(api) \
 	IWL_SC_A_WH_A_FW_PRE "-" __stringify(api) ".ucode"
+#define IWL_SC2_A_FM_C_FW_MODULE_FIRMWARE(api) \
+	IWL_SC2_A_FM_C_FW_PRE "-" __stringify(api) ".ucode"
+#define IWL_SC2_A_WH_A_FW_MODULE_FIRMWARE(api) \
+	IWL_SC2_A_WH_A_FW_PRE "-" __stringify(api) ".ucode"
+#define IWL_SC2F_A_FM_C_FW_MODULE_FIRMWARE(api) \
+	IWL_SC2F_A_FM_C_FW_PRE "-" __stringify(api) ".ucode"
+#define IWL_SC2F_A_WH_A_FW_MODULE_FIRMWARE(api) \
+	IWL_SC2F_A_WH_A_FW_PRE "-" __stringify(api) ".ucode"
 
 static const struct iwl_base_params iwl_sc_base_params = {
 	.eeprom_size = OTP_LOW_IMAGE_SIZE_32K,
@@ -124,15 +136,16 @@ static const struct iwl_base_params iwl_sc_base_params = {
 
 #define IWL_DEVICE_SC							\
 	IWL_DEVICE_BZ_COMMON,						\
+	.uhb_supported = true,						\
+	.features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,		\
+	.num_rbds = IWL_NUM_RBDS_SC_EHT,				\
 	.ht_params = &iwl_22000_ht_params
 
 /*
- * If the device doesn't support HE, no need to have that many buffers.
- * These sizes were picked according to 8 MSDUs inside 256 A-MSDUs in an
+ * This size was picked according to 8 MSDUs inside 512 A-MSDUs in an
  * A-MPDU, with additional overhead to account for processing time.
  */
-#define IWL_NUM_RBDS_NON_HE		512
-#define IWL_NUM_RBDS_SC_HE		4096
+#define IWL_NUM_RBDS_SC_EHT		(512 * 16)
 
 const struct iwl_cfg_trans_params iwl_sc_trans_cfg = {
 	.device_family = IWL_DEVICE_FAMILY_SC,
@@ -151,10 +164,21 @@ const char iwl_sc_name[] = "Intel(R) TBD Sc device";
 
 const struct iwl_cfg iwl_cfg_sc = {
 	.fw_name_mac = "sc",
-	.uhb_supported = true,
 	IWL_DEVICE_SC,
-	.features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
-	.num_rbds = IWL_NUM_RBDS_SC_HE,
+};
+
+const char iwl_sc2_name[] = "Intel(R) TBD Sc2 device";
+
+const struct iwl_cfg iwl_cfg_sc2 = {
+	.fw_name_mac = "sc2",
+	IWL_DEVICE_SC,
+};
+
+const char iwl_sc2f_name[] = "Intel(R) TBD Sc2f device";
+
+const struct iwl_cfg iwl_cfg_sc2f = {
+	.fw_name_mac = "sc2f",
+	IWL_DEVICE_SC,
 };
 
 MODULE_FIRMWARE(IWL_SC_A_FM_B_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
@@ -164,3 +188,7 @@ MODULE_FIRMWARE(IWL_SC_A_HR_B_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_SC_A_GF_A_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_SC_A_GF4_A_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL_SC_A_WH_A_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
+MODULE_FIRMWARE(IWL_SC2_A_FM_C_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
+MODULE_FIRMWARE(IWL_SC2_A_WH_A_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
+MODULE_FIRMWARE(IWL_SC2F_A_FM_C_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
+MODULE_FIRMWARE(IWL_SC2F_A_WH_A_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX));
diff --git a/sys/contrib/dev/iwlwifi/fw/acpi.c b/sys/contrib/dev/iwlwifi/fw/acpi.c
index dfe8357036eb..8c8880b44827 100644
--- a/sys/contrib/dev/iwlwifi/fw/acpi.c
+++ b/sys/contrib/dev/iwlwifi/fw/acpi.c
@@ -1,10 +1,9 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
  * Copyright (C) 2017 Intel Deutschland GmbH
- * Copyright (C) 2019-2023 Intel Corporation
+ * Copyright (C) 2019-2024 Intel Corporation
  */
 #include <linux/uuid.h>
-#include <linux/dmi.h>
 #include "iwl-drv.h"
 #include "iwl-debug.h"
 #include "acpi.h"
@@ -13,63 +12,22 @@
 const guid_t iwl_guid = GUID_INIT(0xF21202BF, 0x8F78, 0x4DC6,
 				  0xA5, 0xB3, 0x1F, 0x73,
 				  0x8E, 0x28, 0x5A, 0xDE);
-IWL_EXPORT_SYMBOL(iwl_guid);
 
-const guid_t iwl_rfi_guid = GUID_INIT(0x7266172C, 0x220B, 0x4B29,
-				      0x81, 0x4F, 0x75, 0xE4,
-				      0xDD, 0x26, 0xB5, 0xFD);
-IWL_EXPORT_SYMBOL(iwl_rfi_guid);
-
-static const struct dmi_system_id dmi_ppag_approved_list[] = {
-	{ .ident = "HP",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "HP"),
-		},
-	},
-	{ .ident = "SAMSUNG",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD"),
-		},
-	},
-	{ .ident = "MSFT",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
-		},
-	},
-	{ .ident = "ASUS",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-		},
-	},
-	{ .ident = "GOOGLE-HP",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Google"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
-		},
-	},
-	{ .ident = "GOOGLE-ASUS",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Google"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek COMPUTER INC."),
-		},
-	},
-	{ .ident = "GOOGLE-SAMSUNG",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Google"),
-			DMI_MATCH(DMI_BOARD_VENDOR, "SAMSUNG ELECTRONICS CO., LTD"),
-		},
-	},
-	{ .ident = "DELL",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-		},
-	},
-	{ .ident = "DELL",
-	  .matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Alienware"),
-		},
-	},
-	{}
+static const size_t acpi_dsm_size[DSM_FUNC_NUM_FUNCS] = {
+	[DSM_FUNC_QUERY] =			sizeof(u32),
+	[DSM_FUNC_DISABLE_SRD] =		sizeof(u8),
+	[DSM_FUNC_ENABLE_INDONESIA_5G2] =	sizeof(u8),
+	[DSM_FUNC_ENABLE_6E] =			sizeof(u32),
+	[DSM_FUNC_REGULATORY_CONFIG] =		sizeof(u32),
+	/* Not supported in driver */
+	[5] =					(size_t)0,
+	[DSM_FUNC_11AX_ENABLEMENT] =		sizeof(u32),
+	[DSM_FUNC_ENABLE_UNII4_CHAN] =		sizeof(u32),
+	[DSM_FUNC_ACTIVATE_CHANNEL] =		sizeof(u32),
+	[DSM_FUNC_FORCE_DISABLE_CHANNELS] =	sizeof(u32),
+	[DSM_FUNC_ENERGY_DETECTION_THRESHOLD] =	sizeof(u32),
+	[DSM_FUNC_RFI_CONFIG] =			sizeof(u32),
+	[DSM_FUNC_ENABLE_11BE] =		sizeof(u32),
 };
 
 static int iwl_acpi_get_handle(struct device *dev, acpi_string method,
@@ -195,46 +153,41 @@ out:
 }
 
 /*
- * Evaluate a DSM with no arguments and a u8 return value,
+ * This function receives a DSM function number, calculates its expected size
+ * according to Intel BIOS spec, and fills in the value in a 32-bit field.
+ * In case the expected size is smaller than 32-bit, padding will be added.
  */
-int iwl_acpi_get_dsm_u8(struct device *dev, int rev, int func,
-			const guid_t *guid, u8 *value)
+int iwl_acpi_get_dsm(struct iwl_fw_runtime *fwrt,
+		     enum iwl_dsm_funcs func, u32 *value)
 {
+	size_t expected_size;
+	u64 tmp;
 	int ret;
-	u64 val;
 
-	ret = iwl_acpi_get_dsm_integer(dev, rev, func,
-				       guid, &val, sizeof(u8));
+	BUILD_BUG_ON(ARRAY_SIZE(acpi_dsm_size) != DSM_FUNC_NUM_FUNCS);
 
-	if (ret < 0)
-		return ret;
-
-	/* cast val (u64) to be u8 */
-	*value = (u8)val;
-	return 0;
-}
-IWL_EXPORT_SYMBOL(iwl_acpi_get_dsm_u8);
+	if (WARN_ON(func >= ARRAY_SIZE(acpi_dsm_size)))
+		return -EINVAL;
 
-/*
- * Evaluate a DSM with no arguments and a u32 return value,
- */
-int iwl_acpi_get_dsm_u32(struct device *dev, int rev, int func,
-			 const guid_t *guid, u32 *value)
-{
-	int ret;
-	u64 val;
+	expected_size = acpi_dsm_size[func];
 
-	ret = iwl_acpi_get_dsm_integer(dev, rev, func,
-				       guid, &val, sizeof(u32));
+	/* Currently all ACPI DSMs are either 8-bit or 32-bit */
+	if (expected_size != sizeof(u8) && expected_size != sizeof(u32))
+		return -EOPNOTSUPP;
 
-	if (ret < 0)
+	ret = iwl_acpi_get_dsm_integer(fwrt->dev, ACPI_DSM_REV, func,
+				       &iwl_guid, &tmp, expected_size);
+	if (ret)
 		return ret;
 
-	/* cast val (u64) to be u32 */
-	*value = (u32)val;
+	if ((expected_size == sizeof(u8) && tmp != (u8)tmp) ||
+	    (expected_size == sizeof(u32) && tmp != (u32)tmp))
+		IWL_DEBUG_RADIO(fwrt,
+				"DSM value overflows the expected size, truncating\n");
+	*value = (u32)tmp;
+
 	return 0;
 }
-IWL_EXPORT_SYMBOL(iwl_acpi_get_dsm_u32);
 
 static union acpi_object *
 iwl_acpi_get_wifi_pkg_range(struct device *dev,
@@ -302,9 +255,8 @@ iwl_acpi_get_wifi_pkg(struct device *dev,
 					   tbl_rev);
 }
 
-
-int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
-		     union iwl_tas_config_cmd *cmd, int fw_ver)
+int iwl_acpi_get_tas_table(struct iwl_fw_runtime *fwrt,
+			   struct iwl_tas_data *tas_data)
 {
 	union acpi_object *wifi_pkg, *data;
 	int ret, tbl_rev, i, block_list_size, enabled;
@@ -326,22 +278,9 @@ int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
 		ACPI_TYPE_INTEGER) {
 		u32 tas_selection =
 			(u32)wifi_pkg->package.elements[1].integer.value;
-		u16 override_iec =
-			(tas_selection & ACPI_WTAS_OVERRIDE_IEC_MSK) >> ACPI_WTAS_OVERRIDE_IEC_POS;
-		u16 enabled_iec = (tas_selection & ACPI_WTAS_ENABLE_IEC_MSK) >>
-			ACPI_WTAS_ENABLE_IEC_POS;
-		u8 usa_tas_uhb = (tas_selection & ACPI_WTAS_USA_UHB_MSK) >> ACPI_WTAS_USA_UHB_POS;
 
-
-		enabled = tas_selection & ACPI_WTAS_ENABLED_MSK;
-		if (fw_ver <= 3) {
-			cmd->v3.override_tas_iec = cpu_to_le16(override_iec);
-			cmd->v3.enable_tas_iec = cpu_to_le16(enabled_iec);
-		} else {
-			cmd->v4.usa_tas_uhb_allowed = usa_tas_uhb;
-			cmd->v4.override_tas_iec = (u8)override_iec;
-			cmd->v4.enable_tas_iec = (u8)enabled_iec;
-		}
+		enabled = iwl_parse_tas_selection(fwrt, tas_data,
+						  tas_selection);
 
 	} else if (tbl_rev == 0 &&
 		wifi_pkg->package.elements[1].type == ACPI_TYPE_INTEGER) {
@@ -360,22 +299,16 @@ int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
 	IWL_DEBUG_RADIO(fwrt, "Reading TAS table revision %d\n", tbl_rev);
 	if (wifi_pkg->package.elements[2].type != ACPI_TYPE_INTEGER ||
 	    wifi_pkg->package.elements[2].integer.value >
-	    APCI_WTAS_BLACK_LIST_MAX) {
+	    IWL_WTAS_BLACK_LIST_MAX) {
 		IWL_DEBUG_RADIO(fwrt, "TAS invalid array size %llu\n",
 				wifi_pkg->package.elements[2].integer.value);
 		ret = -EINVAL;
 		goto out_free;
 	}
 	block_list_size = wifi_pkg->package.elements[2].integer.value;
-	cmd->v4.block_list_size = cpu_to_le32(block_list_size);
+	tas_data->block_list_size = cpu_to_le32(block_list_size);
 
 	IWL_DEBUG_RADIO(fwrt, "TAS array size %u\n", block_list_size);
-	if (block_list_size > APCI_WTAS_BLACK_LIST_MAX) {
-		IWL_DEBUG_RADIO(fwrt, "TAS invalid array size value %u\n",
-				block_list_size);
-		ret = -EINVAL;
-		goto out_free;
-	}
 
 	for (i = 0; i < block_list_size; i++) {
 		u32 country;
@@ -389,7 +322,7 @@ int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
 		}
 
 		country = wifi_pkg->package.elements[3 + i].integer.value;
-		cmd->v4.block_list_array[i] = cpu_to_le32(country);
+		tas_data->block_list_array[i] = cpu_to_le32(country);
 		IWL_DEBUG_RADIO(fwrt, "TAS block list country %d\n", country);
 	}
 
@@ -398,19 +331,19 @@ out_free:
 	kfree(data);
 	return ret;
 }
-IWL_EXPORT_SYMBOL(iwl_acpi_get_tas);
 
-int iwl_acpi_get_mcc(struct device *dev, char *mcc)
+int iwl_acpi_get_mcc(struct iwl_fw_runtime *fwrt, char *mcc)
 {
 	union acpi_object *wifi_pkg, *data;
 	u32 mcc_val;
 	int ret, tbl_rev;
 
-	data = iwl_acpi_get_object(dev, ACPI_WRDD_METHOD);
+	data = iwl_acpi_get_object(fwrt->dev, ACPI_WRDD_METHOD);
 	if (IS_ERR(data))
 		return PTR_ERR(data);
 
-	wifi_pkg = iwl_acpi_get_wifi_pkg(dev, data, ACPI_WRDD_WIFI_DATA_SIZE,
+	wifi_pkg = iwl_acpi_get_wifi_pkg(fwrt->dev, data,
+					 ACPI_WRDD_WIFI_DATA_SIZE,
 					 &tbl_rev);
*** 36914 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202502101452.51AEqTsm027532>