git: 80f50c9eb66d - main - net/wifi-firmware-*kmod: improve build logic, add flavors, update fw version

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Thu, 23 May 2024 22:20:05 UTC
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/ports/commit/?id=80f50c9eb66d88b6e69cd5159d1ff318dcb60b33

commit 80f50c9eb66d88b6e69cd5159d1ff318dcb60b33
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2024-04-25 13:46:04 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2024-05-23 22:19:37 +0000

    net/wifi-firmware-*kmod: improve build logic, add flavors, update fw version
    
    - update framework to no longer depend on local distfiles for firmware(9)
      but generate the Makefile hierarchy in post-extract.  Keep a
      Makefile.inc.in in files for simplicity.
    - update extracting WHENCE parts using a local WHENCE.awk.in in files
      and a pattern to match the section(s).
    - use the already prepared FWSUBS sections for flavors and add the
      FWDRV as "default".  Generate the CONFLICTS_INSTALL conflict and
      PKGNAMESUFFIX entries.  Adjust paths and logic for flavors.
      Depend on the flavors rather the combined ("default flavor") packages
      by default if someone installs wifi-firmware-kmod.
      The wifi-firmware-${name}-kmod packages are still built for older
      versions of fwget shipping in releases.
    - add support for iwlwifi and ath12k firmware
    - update firmware to linux-firmware.git tag: 20240513 for all drivers.
    
    Sponsored by:   The FreeBSD Foundation
    Reviewed by:    jrm
    Differential Revision: https://reviews.freebsd.org/D44945
---
 net/wifi-firmware-ath10k-kmod/Makefile       | 126 +++++++++++-----------
 net/wifi-firmware-ath10k-kmod/distinfo       | 150 +++++++++++++--------------
 net/wifi-firmware-ath11k-kmod/Makefile       | 119 ++++++---------------
 net/wifi-firmware-ath11k-kmod/distinfo       |  54 ++++++----
 net/wifi-firmware-ath12k-kmod/Makefile       |  35 +++++++
 net/wifi-firmware-ath12k-kmod/distinfo       |  13 +++
 net/wifi-firmware-ath12k-kmod/pkg-descr      |   3 +
 net/wifi-firmware-iwlwifi-kmod/Makefile      |  68 ++++++++++++
 net/wifi-firmware-iwlwifi-kmod/distinfo      |  49 +++++++++
 net/wifi-firmware-iwlwifi-kmod/pkg-descr     |   1 +
 net/wifi-firmware-kmod/Makefile              |  43 ++++++--
 net/wifi-firmware-kmod/Makefile.inc          |  96 +++++++++++------
 net/wifi-firmware-kmod/files/Makefile.inc.in |  26 +++++
 net/wifi-firmware-kmod/files/WHENCE.awk.in   |  24 +++++
 net/wifi-firmware-mt76-kmod/Makefile         |  57 ++++++++--
 net/wifi-firmware-mt76-kmod/distinfo         |  96 ++++++++++++-----
 net/wifi-firmware-mt76-kmod/pkg-descr        |   2 +
 net/wifi-firmware-rtw88-kmod/Makefile        |  28 +++--
 net/wifi-firmware-rtw88-kmod/distinfo        |  36 +++----
 net/wifi-firmware-rtw89-kmod/Makefile        |  31 ++++--
 net/wifi-firmware-rtw89-kmod/distinfo        |  28 ++---
 net/wifi-firmware-rtw89-kmod/pkg-descr       |  12 ++-
 22 files changed, 728 insertions(+), 369 deletions(-)

diff --git a/net/wifi-firmware-ath10k-kmod/Makefile b/net/wifi-firmware-ath10k-kmod/Makefile
index 20003c3ce348..e91f1cddc821 100644
--- a/net/wifi-firmware-ath10k-kmod/Makefile
+++ b/net/wifi-firmware-ath10k-kmod/Makefile
@@ -2,87 +2,97 @@ BASEDIR=	${.CURDIR}/../wifi-firmware-kmod
 
 FWDRV=		ath10k
 FWSUBDIR=	ath10k
-FWDRV_VERSION=	20230310
+FWDRV_VERSION=	20240513
 
 LICENSE=	LICENSE.QualcommAtheros_ath10k
 LICENSE_NAME=	QCA firmware license (${FWDRV})
 
-FWSUBS=	\
-	QCA6174_hw21 \
-	QCA6174_hw30 \
-	QCA9377_hw10 \
-	QCA9887_hw10 \
-	QCA9888_hw20 \
-	QCA988X_hw20 \
-	QCA9984_hw10 \
-	QCA99X0_hw20
+WHENCE_REGEX=	ath10k -.*
 
-DISTFILES_QCA6174_hw21=	\
-	${FWSUBDIR}/QCA6174/hw2.1/board.bin${DISTURL_SUFFIX} \
+# The flavor/firmware lists below are generated by a script
+# also helping to generate the fwget(8) definitions.
+# { sys/contrib/dev/athk/ath10k/zzz_fw_ports_fwget.sh }
+### >>>
+
+FWSUBS= \
+	qca988x_hw20 \
+	qca6174_hw21 \
+	qca6174_hw30 \
+	qca99x0_hw20 \
+	qca9377_hw10 \
+	qca9984_hw10 \
+	qca9887_hw10 \
+	qca9888_hw20
+
+DISTFILES_qca988x_hw20= \
+	${FWSUBDIR}/QCA988X/hw2.0/board.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA988X/hw2.0/firmware-4.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA988X/hw2.0/firmware-5.bin${DISTURL_SUFFIX}
+DISTFILES_qca988x_hw20_lic= \
+	${FWSUBDIR}/QCA988X/hw2.0/notice_ath10k_firmware-4.txt${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA988X/hw2.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
+DISTFILES_qca6174_hw21= \
 	${FWSUBDIR}/QCA6174/hw2.1/board-2.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA6174/hw2.1/board.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA6174/hw2.1/firmware-5.bin${DISTURL_SUFFIX}
-DISTFILES_QCA6174_hw21_lic=	\
+DISTFILES_qca6174_hw21_lic= \
 	${FWSUBDIR}/QCA6174/hw2.1/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
-DISTFILES_QCA6174_hw30=	\
-	${FWSUBDIR}/QCA6174/hw3.0/board.bin${DISTURL_SUFFIX} \
+DISTFILES_qca6174_hw30= \
 	${FWSUBDIR}/QCA6174/hw3.0/board-2.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA6174/hw3.0/board.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA6174/hw3.0/firmware-4.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA6174/hw3.0/firmware-6.bin${DISTURL_SUFFIX}
-DISTFILES_QCA6174_hw30_lic=	\
+DISTFILES_qca6174_hw30_lic= \
 	${FWSUBDIR}/QCA6174/hw3.0/notice_ath10k_firmware-4.txt${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA6174/hw3.0/notice_ath10k_firmware-6.txt${DISTURL_SUFFIX}
-DISTFILES_QCA9377_hw10=	\
-	${FWSUBDIR}/QCA9377/hw1.0/board.bin${DISTURL_SUFFIX} \
+DISTFILES_qca99x0_hw20= \
+	${FWSUBDIR}/QCA99X0/hw2.0/board-2.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA99X0/hw2.0/firmware-5.bin${DISTURL_SUFFIX}
+DISTFILES_qca99x0_hw20_lic= \
+	${FWSUBDIR}/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
+DISTFILES_qca9377_hw10= \
 	${FWSUBDIR}/QCA9377/hw1.0/board-2.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA9377/hw1.0/board.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA9377/hw1.0/firmware-5.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA9377/hw1.0/firmware-6.bin${DISTURL_SUFFIX}
-DISTFILES_QCA9377_hw10_lic=	\
+DISTFILES_qca9377_hw10_lic= \
 	${FWSUBDIR}/QCA9377/hw1.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA9377/hw1.0/notice_ath10k_firmware-6.txt${DISTURL_SUFFIX}
-DISTFILES_QCA9887_hw10=	\
+DISTFILES_qca9984_hw10= \
+	${FWSUBDIR}/QCA9984/hw1.0/board-2.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA9984/hw1.0/firmware-5.bin${DISTURL_SUFFIX}
+DISTFILES_qca9984_hw10_lic= \
+	${FWSUBDIR}/QCA9984/hw1.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
+DISTFILES_qca9887_hw10= \
 	${FWSUBDIR}/QCA9887/hw1.0/board.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA9887/hw1.0/firmware-5.bin${DISTURL_SUFFIX}
-DISTFILES_QCA9887_hw10_lic=	\
+DISTFILES_qca9887_hw10_lic= \
 	${FWSUBDIR}/QCA9887/hw1.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
-DISTFILES_QCA9888_hw20=	\
+DISTFILES_qca9888_hw20= \
 	${FWSUBDIR}/QCA9888/hw2.0/board-2.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA9888/hw2.0/firmware-5.bin${DISTURL_SUFFIX}
-DISTFILES_QCA9888_hw20_lic=	\
+DISTFILES_qca9888_hw20_lic= \
 	${FWSUBDIR}/QCA9888/hw2.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
-DISTFILES_QCA988X_hw20=	\
-	${FWSUBDIR}/QCA988X/hw2.0/board.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/QCA988X/hw2.0/firmware-4.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/QCA988X/hw2.0/firmware-5.bin${DISTURL_SUFFIX}
-DISTFILES_QCA988X_hw20_lic=	\
-	${FWSUBDIR}/QCA988X/hw2.0/notice_ath10k_firmware-4.txt${DISTURL_SUFFIX} \
-	${FWSUBDIR}/QCA988X/hw2.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
-DISTFILES_QCA9984_hw10=	\
-	${FWSUBDIR}/QCA9984/hw1.0/board-2.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/QCA9984/hw1.0/firmware-5.bin${DISTURL_SUFFIX}
-DISTFILES_QCA9984_hw10_lic=	\
-	${FWSUBDIR}/QCA9984/hw1.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
-DISTFILES_QCA99X0_hw20=	\
-	${FWSUBDIR}/QCA99X0/hw2.0/board-2.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/QCA99X0/hw2.0/firmware-5.bin${DISTURL_SUFFIX}
-DISTFILES_QCA99X0_hw20_lic=	\
-	${FWSUBDIR}/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
-DISTFILES_fw=	\
-	${DISTFILES_QCA6174_hw21} \
-	${DISTFILES_QCA6174_hw30} \
-	${DISTFILES_QCA9377_hw10} \
-	${DISTFILES_QCA9887_hw10} \
-	${DISTFILES_QCA9888_hw20} \
-	${DISTFILES_QCA988X_hw20} \
-	${DISTFILES_QCA9984_hw10} \
-	${DISTFILES_QCA99X0_hw20}
-DISTFILES_lic=	\
-	${DISTFILES_QCA6174_hw21_lic} \
-	${DISTFILES_QCA6174_hw30_lic} \
-	${DISTFILES_QCA9377_hw10_lic} \
-	${DISTFILES_QCA9887_hw10_lic} \
-	${DISTFILES_QCA9888_hw20_lic} \
-	${DISTFILES_QCA988X_hw20_lic} \
-	${DISTFILES_QCA9984_hw10_lic} \
-	${DISTFILES_QCA99X0_hw20_lic}
+
+DISTFILES_${FWDRV}= \
+	${DISTFILES_qca988x_hw20} \
+	${DISTFILES_qca6174_hw21} \
+	${DISTFILES_qca6174_hw30} \
+	${DISTFILES_qca99x0_hw20} \
+	${DISTFILES_qca9377_hw10} \
+	${DISTFILES_qca9984_hw10} \
+	${DISTFILES_qca9887_hw10} \
+	${DISTFILES_qca9888_hw20}
+DISTFILES_${FWDRV}_lic= \
+	${DISTFILES_qca988x_hw20_lic} \
+	${DISTFILES_qca6174_hw21_lic} \
+	${DISTFILES_qca6174_hw30_lic} \
+	${DISTFILES_qca99x0_hw20_lic} \
+	${DISTFILES_qca9377_hw10_lic} \
+	${DISTFILES_qca9984_hw10_lic} \
+	${DISTFILES_qca9887_hw10_lic} \
+	${DISTFILES_qca9888_hw20_lic}
+
+### <<<
 
 .include "${BASEDIR}/Makefile.inc"
diff --git a/net/wifi-firmware-ath10k-kmod/distinfo b/net/wifi-firmware-ath10k-kmod/distinfo
index 8754538f31e3..743dfdd3a1a3 100644
--- a/net/wifi-firmware-ath10k-kmod/distinfo
+++ b/net/wifi-firmware-ath10k-kmod/distinfo
@@ -1,79 +1,71 @@
-TIMESTAMP = 1680555734
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA4019/hw1.0/board-2.bin?h=20230310) = 32efd23848e3b29873f00b599732925436d45e0ba45a9ce8e41243eb7c3a8a2c
-SIZE (linux-firmware/ath10kfw/ath10k/QCA4019/hw1.0/board-2.bin?h=20230310) = 1154076
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA4019/hw1.0/firmware-5.bin?h=20230310) = ce5ff248312aef77c620eb93d5bc290ddf68447c5ac9c91c845abab7163a9e70
-SIZE (linux-firmware/ath10kfw/ath10k/QCA4019/hw1.0/firmware-5.bin?h=20230310) = 583344
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/board.bin?h=20230310) = 23c51bdaf0ec685d9ce2ecf08fa91d05dc8c6506f82f0811cd365b55a92cbad1
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/board.bin?h=20230310) = 8124
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/board-2.bin?h=20230310) = fd5cab002d3533b674dfda6ec92d1d705c267c46d0e2e4dc8c917360e9e4913e
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/board-2.bin?h=20230310) = 263188
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/firmware-5.bin?h=20230310) = cc77874b709e26ffcc1cd548a4813e4be8cd523329c1b3ba34e341417d2935c5
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/firmware-5.bin?h=20230310) = 498172
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/board.bin?h=20230310) = 1a8d225818b46986fc4f615594fbe448fa820618590d6902c8f844bb37cda667
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/board.bin?h=20230310) = 8124
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/board-2.bin?h=20230310) = dd0665955febea4cc34edf890fa79c38632719d05a0d85ce232e27850b08c62d
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/board-2.bin?h=20230310) = 731852
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/firmware-4.bin?h=20230310) = dc74ba148cf88f1f99a62854112ec574d8c265d88417a4d969461448b0ab60c5
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/firmware-4.bin?h=20230310) = 733784
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/firmware-6.bin?h=20230310) = 05b5e488b75b1e21fbd38a8cfdd44abd2e5e0b4204f4a8f6cfbd70feef220603
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/firmware-6.bin?h=20230310) = 706004
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/board.bin?h=20230310) = 127d35d82edb46278f30c448cbca664d755ff0d5fed57b649959cdbc4208c768
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/board.bin?h=20230310) = 8124
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/board-2.bin?h=20230310) = 0fdcc7838f478da81704de88f7b33e28862110c6d5decf7818543f8e37e6cd98
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/board-2.bin?h=20230310) = 304308
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/firmware-5.bin?h=20230310) = 95ed94c24795c31dbdf8c97ab7278dd3a107673ea7330dfe4d01b1c65965f7a8
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/firmware-5.bin?h=20230310) = 783336
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/firmware-6.bin?h=20230310) = 8f8b002fccfe81d42238f27dd1f56d189604f180bd4772c7c8e75ae1fef16f01
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/firmware-6.bin?h=20230310) = 751436
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/board.bin?h=20230310) = cf4df099f6ee05c181f55ce17297a1d32c61d725eb96246fd315ad5587c42426
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/board.bin?h=20230310) = 1024
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/firmware-5.bin?h=20230310) = 18c3d42a22c584383000131d423d7473d44d654f88c3fccca9a950802db8b07e
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/firmware-5.bin?h=20230310) = 238548
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/board-2.bin?h=20230310) = d3da3e6dba71f6db76f06ef81af91aa58b5f3f2912ad241a1ac509a764f1db02
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/board-2.bin?h=20230310) = 145684
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/firmware-5.bin?h=20230310) = 89d4488053035c645559e3160e71321807f439b3ac9a2268a2a227147f67ddf4
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/firmware-5.bin?h=20230310) = 693700
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/board.bin?h=20230310) = 5b5b380333c2dd3b6ce67f30e2f7008f4020bf594970d3b464fd8d4a80fcd880
-SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/board.bin?h=20230310) = 2116
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/firmware-4.bin?h=20230310) = 208f91dd40b7db5feb645104125338491ca932028c2dd858bb12f07ac6c90cc1
-SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/firmware-4.bin?h=20230310) = 241892
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/firmware-5.bin?h=20230310) = 15867031c87f1d7408c1b25fb6419077a1b97de208f2aa58c3266b60e1f8daa2
-SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/firmware-5.bin?h=20230310) = 249044
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/board-2.bin?h=20230310) = 94936eb428664a47c049e3a7da997ab390cd5e2f51d5af417e3c1f7ca3d41898
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/board-2.bin?h=20230310) = 220528
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/firmware-5.bin?h=20230310) = 4a11cbb3f2838f6c003b85f3b6c7c5043f1efd2858f2ca52346523ec938460c3
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/firmware-5.bin?h=20230310) = 681672
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/board-2.bin?h=20230310) = f91975dca2435fa6f8570146e6b255c2a70b9ffbdf5ef16a29d67bec7374c11a
-SIZE (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/board-2.bin?h=20230310) = 157680
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/firmware-5.bin?h=20230310) = 5fbc2e717327e9482bce212497b2a34fe7f7c82607c94d49e39f95a46ca1b2a3
-SIZE (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/firmware-5.bin?h=20230310) = 479332
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt?h=20230310) = 29b3bfc290b553a44616f00ddd7a85b26893cdf215597252c65674dc7e9ea2da
-SIZE (linux-firmware/ath10kfw/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt?h=20230310) = 30479
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt?h=20230310) = 631065703055d11b099477c508508f20a80b202aad548a7726564bfa59a96c91
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt?h=20230310) = 46087
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt?h=20230310) = 3b5eb392b2d9d8c46d6aae26d06c187e5ea3029b12d13bc2b8deb8b3ce6bfa53
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt?h=20230310) = 79689
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt?h=20230310) = 8ce5c6ea0542bf4aac31fc3ae16a39792ad22d0eae4543063fac56fb3380f021
-SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt?h=20230310) = 53425
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt?h=20230310) = 7fef27f33c95ed680c21809edacdd90736ed3c903e6c224eb72f947c35e9856c
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt?h=20230310) = 46143
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt?h=20230310) = 8ce5c6ea0542bf4aac31fc3ae16a39792ad22d0eae4543063fac56fb3380f021
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt?h=20230310) = 53425
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt?h=20230310) = 98c0dc5559c1bf5934a29683fdc032e0df834c7197c38bcadd58aafb1a3ee443
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt?h=20230310) = 15441
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt?h=20230310) = 29b3bfc290b553a44616f00ddd7a85b26893cdf215597252c65674dc7e9ea2da
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt?h=20230310) = 30479
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt?h=20230310) = 5186f5fdda2cf0348dffecd04e97c1f0364d04b189bc72ae7c76ba2417e098a8
-SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt?h=20230310) = 13890
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt?h=20230310) = 98c0dc5559c1bf5934a29683fdc032e0df834c7197c38bcadd58aafb1a3ee443
-SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt?h=20230310) = 15441
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt?h=20230310) = 29b3bfc290b553a44616f00ddd7a85b26893cdf215597252c65674dc7e9ea2da
-SIZE (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt?h=20230310) = 30479
-SHA256 (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt?h=20230310) = 874195144a7f1114fee287ad1112a4fc9c785e0bf16279bf2673644b8b440f4e
-SIZE (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt?h=20230310) = 29133
-SHA256 (linux-firmware/ath10kfw/LICENSE.QualcommAtheros_ath10k?h=20230310) = 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f
-SIZE (linux-firmware/ath10kfw/LICENSE.QualcommAtheros_ath10k?h=20230310) = 2713
-SHA256 (linux-firmware/ath10kfw/WHENCE?h=20230310) = 866f14018cd82a4465cd13a278bec2f0750ca3e5b03c34082a16458ebd464d64
-SIZE (linux-firmware/ath10kfw/WHENCE?h=20230310) = 203894
-SHA256 (linux-firmware/ath10kfw/modules_ath10kfw_20230310.tar.gz) = ad7882c16060ff69d369c55f10c8dc2f4185a0b4b14286fe285d4446c5d6d3d6
-SIZE (linux-firmware/ath10kfw/modules_ath10kfw_20230310.tar.gz) = 45056
+TIMESTAMP = 1715895491
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/board.bin?h=20240513) = 5b5b380333c2dd3b6ce67f30e2f7008f4020bf594970d3b464fd8d4a80fcd880
+SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/board.bin?h=20240513) = 2116
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/firmware-4.bin?h=20240513) = 208f91dd40b7db5feb645104125338491ca932028c2dd858bb12f07ac6c90cc1
+SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/firmware-4.bin?h=20240513) = 241892
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/firmware-5.bin?h=20240513) = 15867031c87f1d7408c1b25fb6419077a1b97de208f2aa58c3266b60e1f8daa2
+SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/firmware-5.bin?h=20240513) = 249044
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/board-2.bin?h=20240513) = fd5cab002d3533b674dfda6ec92d1d705c267c46d0e2e4dc8c917360e9e4913e
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/board-2.bin?h=20240513) = 263188
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/board.bin?h=20240513) = 23c51bdaf0ec685d9ce2ecf08fa91d05dc8c6506f82f0811cd365b55a92cbad1
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/board.bin?h=20240513) = 8124
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/firmware-5.bin?h=20240513) = cc77874b709e26ffcc1cd548a4813e4be8cd523329c1b3ba34e341417d2935c5
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/firmware-5.bin?h=20240513) = 498172
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/board-2.bin?h=20240513) = 66e83dde1c9af535df1fcd17c72971a96a263357300e921b358d35a353227d60
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/board-2.bin?h=20240513) = 740076
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/board.bin?h=20240513) = 1a8d225818b46986fc4f615594fbe448fa820618590d6902c8f844bb37cda667
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/board.bin?h=20240513) = 8124
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/firmware-4.bin?h=20240513) = dc74ba148cf88f1f99a62854112ec574d8c265d88417a4d969461448b0ab60c5
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/firmware-4.bin?h=20240513) = 733784
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/firmware-6.bin?h=20240513) = 04d3bad5efa3f9fbe3ba53fd3e25fa9b0585ed227eea8111303b4e08861f979d
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/firmware-6.bin?h=20240513) = 706360
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/board-2.bin?h=20240513) = 24148daa956ef4bebb903dbc77cbe458796f9db70adc0433023a0a0254c7d8e5
+SIZE (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/board-2.bin?h=20240513) = 169824
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/firmware-5.bin?h=20240513) = 5fbc2e717327e9482bce212497b2a34fe7f7c82607c94d49e39f95a46ca1b2a3
+SIZE (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/firmware-5.bin?h=20240513) = 479332
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/board-2.bin?h=20240513) = 0fdcc7838f478da81704de88f7b33e28862110c6d5decf7818543f8e37e6cd98
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/board-2.bin?h=20240513) = 304308
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/board.bin?h=20240513) = 127d35d82edb46278f30c448cbca664d755ff0d5fed57b649959cdbc4208c768
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/board.bin?h=20240513) = 8124
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/firmware-5.bin?h=20240513) = 95ed94c24795c31dbdf8c97ab7278dd3a107673ea7330dfe4d01b1c65965f7a8
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/firmware-5.bin?h=20240513) = 783336
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/firmware-6.bin?h=20240513) = 8f8b002fccfe81d42238f27dd1f56d189604f180bd4772c7c8e75ae1fef16f01
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/firmware-6.bin?h=20240513) = 751436
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/board-2.bin?h=20240513) = 9a04d0c801c69db16399c47e5e65ef6311da2785918b26fa83b9392e83b81e64
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/board-2.bin?h=20240513) = 281312
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/firmware-5.bin?h=20240513) = 4a11cbb3f2838f6c003b85f3b6c7c5043f1efd2858f2ca52346523ec938460c3
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/firmware-5.bin?h=20240513) = 681672
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/board.bin?h=20240513) = cf4df099f6ee05c181f55ce17297a1d32c61d725eb96246fd315ad5587c42426
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/board.bin?h=20240513) = 1024
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/firmware-5.bin?h=20240513) = 18c3d42a22c584383000131d423d7473d44d654f88c3fccca9a950802db8b07e
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/firmware-5.bin?h=20240513) = 238548
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/board-2.bin?h=20240513) = e2d2b04873844e304066d1c95032b96fda314eea5a497c6134f29f2f9676188e
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/board-2.bin?h=20240513) = 218596
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/firmware-5.bin?h=20240513) = 89d4488053035c645559e3160e71321807f439b3ac9a2268a2a227147f67ddf4
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/firmware-5.bin?h=20240513) = 693700
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt?h=20240513) = 5186f5fdda2cf0348dffecd04e97c1f0364d04b189bc72ae7c76ba2417e098a8
+SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt?h=20240513) = 13890
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt?h=20240513) = 98c0dc5559c1bf5934a29683fdc032e0df834c7197c38bcadd58aafb1a3ee443
+SIZE (linux-firmware/ath10kfw/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt?h=20240513) = 15441
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt?h=20240513) = 631065703055d11b099477c508508f20a80b202aad548a7726564bfa59a96c91
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt?h=20240513) = 46087
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt?h=20240513) = 3b5eb392b2d9d8c46d6aae26d06c187e5ea3029b12d13bc2b8deb8b3ce6bfa53
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt?h=20240513) = 79689
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt?h=20240513) = 8ce5c6ea0542bf4aac31fc3ae16a39792ad22d0eae4543063fac56fb3380f021
+SIZE (linux-firmware/ath10kfw/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt?h=20240513) = 53425
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt?h=20240513) = 874195144a7f1114fee287ad1112a4fc9c785e0bf16279bf2673644b8b440f4e
+SIZE (linux-firmware/ath10kfw/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt?h=20240513) = 29133
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt?h=20240513) = 7fef27f33c95ed680c21809edacdd90736ed3c903e6c224eb72f947c35e9856c
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt?h=20240513) = 46143
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt?h=20240513) = 8ce5c6ea0542bf4aac31fc3ae16a39792ad22d0eae4543063fac56fb3380f021
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt?h=20240513) = 53425
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt?h=20240513) = 29b3bfc290b553a44616f00ddd7a85b26893cdf215597252c65674dc7e9ea2da
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt?h=20240513) = 30479
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt?h=20240513) = 98c0dc5559c1bf5934a29683fdc032e0df834c7197c38bcadd58aafb1a3ee443
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt?h=20240513) = 15441
+SHA256 (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt?h=20240513) = 29b3bfc290b553a44616f00ddd7a85b26893cdf215597252c65674dc7e9ea2da
+SIZE (linux-firmware/ath10kfw/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt?h=20240513) = 30479
+SHA256 (linux-firmware/ath10kfw/LICENSE.QualcommAtheros_ath10k?h=20240513) = 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f
+SIZE (linux-firmware/ath10kfw/LICENSE.QualcommAtheros_ath10k?h=20240513) = 2713
+SHA256 (linux-firmware/ath10kfw/WHENCE?h=20240513) = 09453d13d522ce48c11fd37a04bc4a46b88792bc6e51c3b73cdcc5acb364e763
+SIZE (linux-firmware/ath10kfw/WHENCE?h=20240513) = 274394
diff --git a/net/wifi-firmware-ath11k-kmod/Makefile b/net/wifi-firmware-ath11k-kmod/Makefile
index 4f4e1566a73d..941cf0efa13a 100644
--- a/net/wifi-firmware-ath11k-kmod/Makefile
+++ b/net/wifi-firmware-ath11k-kmod/Makefile
@@ -2,104 +2,53 @@ BASEDIR=	${.CURDIR}/../wifi-firmware-kmod
 
 FWDRV=		ath11k
 FWSUBDIR=	ath11k
-FWDRV_VERSION=	20230310
+FWDRV_VERSION=	20240513
 
 # Yes, the license is the ath10k one; see WHENCE.
 LICENSE=	LICENSE.QualcommAtheros_ath10k
 LICENSE_NAME=	QCA firmware license (${FWDRV})
 
-FWSUBS=	\
-	QCA6390_hw20 \
-	QCN9074_hw10
-#	IPQ6018_hw10 \
-#	IPQ8074_hw20 \
-#	WCN6855_hw20 \
-#	WCN6750_hw10
+WHENCE_REGEX=	ath11k -.*
 
-DISTFILES_QCA6390_hw20=	\
-	${FWSUBDIR}/QCA6390/hw2.0/board-2.bin${DISTURL_SUFFIX} \
+# The flavor/firmware lists below are generated by a script
+# also helping to generate the fwget(8) definitions.
+# { sys/contrib/dev/athk/ath11k/zzz_fw_ports_fwget.sh }
+### >>>
+
+FWSUBS= \
+	qca6390_hw20 \
+	qcn9074_hw10 \
+	wcn6855_hw20
+
+DISTFILES_qca6390_hw20= \
 	${FWSUBDIR}/QCA6390/hw2.0/amss.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCA6390/hw2.0/board-2.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCA6390/hw2.0/m3.bin${DISTURL_SUFFIX}
-DISTFILES_QCA6390_hw20_lic=	\
+DISTFILES_qca6390_hw20_lic= \
 	${FWSUBDIR}/QCA6390/hw2.0/Notice.txt${DISTURL_SUFFIX}
-DISTFILES_QCN9074_hw10=	\
-	${FWSUBDIR}/QCN9074/hw1.0/board-2.bin${DISTURL_SUFFIX} \
+DISTFILES_qcn9074_hw10= \
 	${FWSUBDIR}/QCN9074/hw1.0/amss.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/QCN9074/hw1.0/board-2.bin${DISTURL_SUFFIX} \
 	${FWSUBDIR}/QCN9074/hw1.0/m3.bin${DISTURL_SUFFIX}
-DISTFILES_QCN9074_hw10_lic=	\
+DISTFILES_qcn9074_hw10_lic= \
 	${FWSUBDIR}/QCN9074/hw1.0/Notice.txt${DISTURL_SUFFIX}
-DISTFILES_IPQ6018_hw10=	\
-	${FWSUBDIR}/IPQ6018/hw1.0/board-2.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/m3_fw.b00${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/m3_fw.b01${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/m3_fw.b02${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/m3_fw.flist${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/m3_fw.mdt${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.b00${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.b01${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.b02${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.b03${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.b04${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.b05${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.b07${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.b08${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.flist${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ6018/hw1.0/q6_fw.mdt${DISTURL_SUFFIX}
-DISTFILES_IPQ6018_hw10_lic=	\
-	${FWSUBDIR}/IPQ6018/hw1.0/Notice.txt${DISTURL_SUFFIX}
-DISTFILES_IPQ8074_hw20=	\
-	${FWSUBDIR}/IPQ8074/hw2.0/board-2.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/m3_fw.b00${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/m3_fw.b01${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/m3_fw.b02${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/m3_fw.flist${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/m3_fw.mdt${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.b00${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.b01${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.b02${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.b03${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.b04${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.b05${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.b07${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.b08${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.flist${DISTURL_SUFFIX} \
-	${FWSUBDIR}/IPQ8074/hw2.0/q6_fw.mdt${DISTURL_SUFFIX}
-DISTFILES_IPQ8074_hw20_lic=	\
-	${FWSUBDIR}/IPQ8074/hw2.0/Notice.txt${DISTURL_SUFFIX}
-DISTFILES_WCN6855_hw20=	\
-	${FWSUBDIR}/WCN6855/hw2.0/regdb.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6855/hw2.0/board-2.bin${DISTURL_SUFFIX} \
+DISTFILES_wcn6855_hw20= \
 	${FWSUBDIR}/WCN6855/hw2.0/amss.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6855/hw2.0/m3.bin${DISTURL_SUFFIX}
-DISTFILES_WCN6855_hw20_lic=	\
+	${FWSUBDIR}/WCN6855/hw2.0/board-2.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/WCN6855/hw2.0/m3.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/WCN6855/hw2.0/regdb.bin${DISTURL_SUFFIX}
+DISTFILES_wcn6855_hw20_lic= \
 	${FWSUBDIR}/WCN6855/hw2.0/Notice.txt${DISTURL_SUFFIX}
-DISTFILES_WCN6750_hw10=	\
-	${FWSUBDIR}/WCN6750/hw1.0/board-2.bin${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b00${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b01${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b02${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b03${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b04${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b05${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b06${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b07${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.b08${DISTURL_SUFFIX} \
-	${FWSUBDIR}/WCN6750/hw1.0/wpss.mdt${DISTURL_SUFFIX}
-DISTFILES_WCN6750_hw10_lic=	\
-	${FWSUBDIR}/WCN6750/hw1.0/Notice.txt${DISTURL_SUFFIX}
-DISTFILES_fw=	\
-	${DISTFILES_QCA6390_hw20} \
-	${DISTFILES_QCN9074_hw10}
-#	${DISTFILES_IPQ6018_hw10} \
-#	${DISTFILES_IPQ8074_hw20} \
-#	${DISTFILES_WCN6855_hw20} \
-#	${DISTFILES_WCN6750_hw10}
-DISTFILES_lic=	\
-	${DISTFILES_QCA6390_hw20_lic} \
-	${DISTFILES_QCN9074_hw10_lic}
-#	${DISTFILES_IPQ6018_hw10_lic} \
-#	${DISTFILES_IPQ8074_hw20_lic} \
-#	${DISTFILES_WCN6855_hw20_lic} \
-#	${DISTFILES_WCN6750_hw10_lic}
+
+DISTFILES_${FWDRV}= \
+	${DISTFILES_qca6390_hw20} \
+	${DISTFILES_qcn9074_hw10} \
+	${DISTFILES_wcn6855_hw20}
+DISTFILES_${FWDRV}_lic= \
+	${DISTFILES_qca6390_hw20_lic} \
+	${DISTFILES_qcn9074_hw10_lic} \
+	${DISTFILES_wcn6855_hw20_lic}
+
+### <<<
 
 .include "${BASEDIR}/Makefile.inc"
diff --git a/net/wifi-firmware-ath11k-kmod/distinfo b/net/wifi-firmware-ath11k-kmod/distinfo
index 2cb520db6f6e..d965320664cf 100644
--- a/net/wifi-firmware-ath11k-kmod/distinfo
+++ b/net/wifi-firmware-ath11k-kmod/distinfo
@@ -1,23 +1,31 @@
-TIMESTAMP = 1680646554
-SHA256 (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/board-2.bin?h=20230310) = ffae36a14450ea9dc0317db04fba84344812037b0de4f89bee90b05eae6ecb00
-SIZE (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/board-2.bin?h=20230310) = 115984
-SHA256 (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/amss.bin?h=20230310) = 8ab2a06422e3989012df423bb6a156fde2c3feb4cd5db4c5d3588f674dc872ff
-SIZE (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/amss.bin?h=20230310) = 3628672
-SHA256 (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/m3.bin?h=20230310) = 1921d25edb52f90a7a0acc7275861e14399f904d579aae9f7ab1c4d28533fad6
-SIZE (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/m3.bin?h=20230310) = 266684
-SHA256 (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/board-2.bin?h=20230310) = dbf0ca14aa1229eccd48f26f1026901b9718b143bd30b51b8ea67c84ba6207f1
-SIZE (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/board-2.bin?h=20230310) = 786836
-SHA256 (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/amss.bin?h=20230310) = 4b03e776e3392e249a9f5d9753be980cab287168f059861618618d65df016513
-SIZE (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/amss.bin?h=20230310) = 11905872
-SHA256 (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/m3.bin?h=20230310) = 6bad938141e5ef3931eb84747935a3fb4cf954ee1720e66bc517f8a2f262b8ae
-SIZE (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/m3.bin?h=20230310) = 340108
-SHA256 (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/Notice.txt?h=20230310) = 2facd28901420b9b58248ec3c17d4ea4693165b72f36106d5537ea4bb9380f1b
-SIZE (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/Notice.txt?h=20230310) = 189707
-SHA256 (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/Notice.txt?h=20230310) = 0768d1c28b6886f159703ef929fd3c92ab6bec1cbc9dcae449b17722a824ebcf
-SIZE (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/Notice.txt?h=20230310) = 161358
-SHA256 (linux-firmware/ath11kfw/LICENSE.QualcommAtheros_ath10k?h=20230310) = 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f
-SIZE (linux-firmware/ath11kfw/LICENSE.QualcommAtheros_ath10k?h=20230310) = 2713
-SHA256 (linux-firmware/ath11kfw/WHENCE?h=20230310) = 866f14018cd82a4465cd13a278bec2f0750ca3e5b03c34082a16458ebd464d64
-SIZE (linux-firmware/ath11kfw/WHENCE?h=20230310) = 203894
-SHA256 (linux-firmware/ath11kfw/modules_ath11kfw_20230310.tar.gz) = 7ad7d9775db417759e88b20b349aa2aaf448ab907a3dc4a70dfbaf3f46ff506b
-SIZE (linux-firmware/ath11kfw/modules_ath11kfw_20230310.tar.gz) = 27648
+TIMESTAMP = 1715895520
+SHA256 (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/amss.bin?h=20240513) = 8ab2a06422e3989012df423bb6a156fde2c3feb4cd5db4c5d3588f674dc872ff
+SIZE (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/amss.bin?h=20240513) = 3628672
+SHA256 (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/board-2.bin?h=20240513) = ffae36a14450ea9dc0317db04fba84344812037b0de4f89bee90b05eae6ecb00
+SIZE (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/board-2.bin?h=20240513) = 115984
+SHA256 (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/m3.bin?h=20240513) = 1921d25edb52f90a7a0acc7275861e14399f904d579aae9f7ab1c4d28533fad6
+SIZE (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/m3.bin?h=20240513) = 266684
+SHA256 (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/amss.bin?h=20240513) = 5ee1b7b204541b5f99984f21d694ececaec08fbce1b520ffe6fe740b02a4afd7
+SIZE (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/amss.bin?h=20240513) = 3963336
+SHA256 (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/board-2.bin?h=20240513) = dbf0ca14aa1229eccd48f26f1026901b9718b143bd30b51b8ea67c84ba6207f1
+SIZE (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/board-2.bin?h=20240513) = 786836
+SHA256 (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/m3.bin?h=20240513) = b6d957f335073a15a8de809398e1506f0200a08747eaf7189c843cf519ffc1de
+SIZE (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/m3.bin?h=20240513) = 340108
+SHA256 (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/amss.bin?h=20240513) = 8f10357b53b40238333f0b055b4829fc8dd87994aa2476ae3fa92234d8f31065
+SIZE (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/amss.bin?h=20240513) = 4988928
+SHA256 (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/board-2.bin?h=20240513) = b2612c3a270a2e795270c8567cb8435aaf4f4acc9897cd593cf3c9a9a07f3ef3
+SIZE (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/board-2.bin?h=20240513) = 6308684
+SHA256 (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/m3.bin?h=20240513) = 9b9b226abf8ce0e005209e53c0c9a4443abaf7b3def7fefe7e5c5676255c7bdc
+SIZE (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/m3.bin?h=20240513) = 266684
+SHA256 (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/regdb.bin?h=20240513) = e1b774b1feda4cab01f5a26089124059539fc31544ac34129dce45c8ff26d645
+SIZE (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/regdb.bin?h=20240513) = 24310
+SHA256 (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/Notice.txt?h=20240513) = 2facd28901420b9b58248ec3c17d4ea4693165b72f36106d5537ea4bb9380f1b
+SIZE (linux-firmware/ath11kfw/ath11k/QCA6390/hw2.0/Notice.txt?h=20240513) = 189707
+SHA256 (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/Notice.txt?h=20240513) = 0768d1c28b6886f159703ef929fd3c92ab6bec1cbc9dcae449b17722a824ebcf
+SIZE (linux-firmware/ath11kfw/ath11k/QCN9074/hw1.0/Notice.txt?h=20240513) = 161358
+SHA256 (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/Notice.txt?h=20240513) = 770720d03de70ff503c6d9bb6f6932fc7833d078647fe8352c6d5d49d44bbc5f
+SIZE (linux-firmware/ath11kfw/ath11k/WCN6855/hw2.0/Notice.txt?h=20240513) = 152394
+SHA256 (linux-firmware/ath11kfw/LICENSE.QualcommAtheros_ath10k?h=20240513) = 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f
+SIZE (linux-firmware/ath11kfw/LICENSE.QualcommAtheros_ath10k?h=20240513) = 2713
+SHA256 (linux-firmware/ath11kfw/WHENCE?h=20240513) = 09453d13d522ce48c11fd37a04bc4a46b88792bc6e51c3b73cdcc5acb364e763
+SIZE (linux-firmware/ath11kfw/WHENCE?h=20240513) = 274394
diff --git a/net/wifi-firmware-ath12k-kmod/Makefile b/net/wifi-firmware-ath12k-kmod/Makefile
new file mode 100644
index 000000000000..9f1c7ea7f9b9
--- /dev/null
+++ b/net/wifi-firmware-ath12k-kmod/Makefile
@@ -0,0 +1,35 @@
+BASEDIR=	${.CURDIR}/../wifi-firmware-kmod
+
+FWDRV=		ath12k
+FWSUBDIR=	ath12k
+FWDRV_VERSION=	20240513
+
+# Yes, the license is the ath10k one; see WHENCE.
+LICENSE=	LICENSE.QualcommAtheros_ath10k
+LICENSE_NAME=	QCA firmware license (${FWDRV})
+
+WHENCE_REGEX=	ath12k -.*
+
+# The flavor/firmware lists below are generated by a script
+# also helping to generate the fwget(8) definitions.
+# { sys/contrib/dev/athk/ath12k/zzz_fw_ports_fwget.sh }
+### >>>
+
+FWSUBS= \
+	wcn7850_hw20
+
+DISTFILES_wcn7850_hw20= \
+	${FWSUBDIR}/WCN7850/hw2.0/amss.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/WCN7850/hw2.0/board-2.bin${DISTURL_SUFFIX} \
+	${FWSUBDIR}/WCN7850/hw2.0/m3.bin${DISTURL_SUFFIX}
+DISTFILES_wcn7850_hw20_lic= \
+	${FWSUBDIR}/WCN7850/hw2.0/Notice.txt${DISTURL_SUFFIX}
+
+DISTFILES_${FWDRV}= \
+	${DISTFILES_wcn7850_hw20}
+DISTFILES_${FWDRV}_lic= \
+	${DISTFILES_wcn7850_hw20_lic}
+
+### <<<
+
+.include "${BASEDIR}/Makefile.inc"
diff --git a/net/wifi-firmware-ath12k-kmod/distinfo b/net/wifi-firmware-ath12k-kmod/distinfo
new file mode 100644
index 000000000000..9500eba13632
--- /dev/null
+++ b/net/wifi-firmware-ath12k-kmod/distinfo
@@ -0,0 +1,13 @@
+TIMESTAMP = 1715895537
+SHA256 (linux-firmware/ath12kfw/ath12k/WCN7850/hw2.0/amss.bin?h=20240513) = b15b21fd99baafd5dad81b6d6fa054df023363029821eb67dd674a438b9fd78d
+SIZE (linux-firmware/ath12kfw/ath12k/WCN7850/hw2.0/amss.bin?h=20240513) = 6000704
+SHA256 (linux-firmware/ath12kfw/ath12k/WCN7850/hw2.0/board-2.bin?h=20240513) = 92357946083541fc3370a152df57cb5a74cd28adcdc78339e57d8c98e42526cd
+SIZE (linux-firmware/ath12kfw/ath12k/WCN7850/hw2.0/board-2.bin?h=20240513) = 382856
+SHA256 (linux-firmware/ath12kfw/ath12k/WCN7850/hw2.0/m3.bin?h=20240513) = 97eca0829a1da06bfcb000863f585e2c64ee7febae29f4822097dea1986d919b
+SIZE (linux-firmware/ath12kfw/ath12k/WCN7850/hw2.0/m3.bin?h=20240513) = 299660
+SHA256 (linux-firmware/ath12kfw/ath12k/WCN7850/hw2.0/Notice.txt?h=20240513) = 515bf4c9d620a87458e4447fe01a0e9bc384d1c3e0037cc4c3d2037b1ff25525
+SIZE (linux-firmware/ath12kfw/ath12k/WCN7850/hw2.0/Notice.txt?h=20240513) = 142991
+SHA256 (linux-firmware/ath12kfw/LICENSE.QualcommAtheros_ath10k?h=20240513) = 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f
+SIZE (linux-firmware/ath12kfw/LICENSE.QualcommAtheros_ath10k?h=20240513) = 2713
+SHA256 (linux-firmware/ath12kfw/WHENCE?h=20240513) = 09453d13d522ce48c11fd37a04bc4a46b88792bc6e51c3b73cdcc5acb364e763
+SIZE (linux-firmware/ath12kfw/WHENCE?h=20240513) = 274394
diff --git a/net/wifi-firmware-ath12k-kmod/pkg-descr b/net/wifi-firmware-ath12k-kmod/pkg-descr
new file mode 100644
index 000000000000..332b717a5809
--- /dev/null
+++ b/net/wifi-firmware-ath12k-kmod/pkg-descr
@@ -0,0 +1,3 @@
+Firmware files for QCA WiFi NICs supported by the ath12k driver.
+
+Currently only provides firmware for the PCI chipsets.
diff --git a/net/wifi-firmware-iwlwifi-kmod/Makefile b/net/wifi-firmware-iwlwifi-kmod/Makefile
new file mode 100644
index 000000000000..3cff195b89a7
--- /dev/null
+++ b/net/wifi-firmware-iwlwifi-kmod/Makefile
@@ -0,0 +1,68 @@
+BASEDIR=	${.CURDIR}/../wifi-firmware-kmod
+
+FWDRV=		iwlwifi
+FWSUBDIR=
+FWDRV_VERSION=	20240513
+
+LICENSE=	LICENCE.iwlwifi_firmware
+LICENSE_NAME=	Intel firmware license (${FWDRV})
+
+WHENCE_REGEX=	iwlwifi -.*
+
+# Run iwlwifi-generate-fw-list.sh according to description.
+
+# The flavor/firmware lists below are generated by a script
+# also helping to generate the fwget(8) definitions.
+# { sys/contrib/dev/iwlwifi/zzz_fw_ports_fwget.sh }
+### >>>
+
+FWSUBS= \
+	7000 \
+	8000 \
+	9000 \
+	22000 \
+	ax210 \
+	bz
+
+# Do not prefix with empty ${FWSUBDIR}/!
+DISTFILES_7000= \
+	iwlwifi-3160-17.ucode${DISTURL_SUFFIX} \
+	iwlwifi-3168-29.ucode${DISTURL_SUFFIX} \
+	iwlwifi-7260-17.ucode${DISTURL_SUFFIX} \
+	iwlwifi-7265D-29.ucode${DISTURL_SUFFIX} \
+	iwlwifi-7265-17.ucode${DISTURL_SUFFIX}
+DISTFILES_8000= \
+	iwlwifi-8000C-36.ucode${DISTURL_SUFFIX} \
+	iwlwifi-8265-36.ucode${DISTURL_SUFFIX}
+DISTFILES_9000= \
+	iwlwifi-9000-pu-b0-jf-b0-46.ucode${DISTURL_SUFFIX} \
+	iwlwifi-9260-th-b0-jf-b0-46.ucode${DISTURL_SUFFIX}
+DISTFILES_22000= \
+	iwlwifi-QuZ-a0-hr-b0-77.ucode${DISTURL_SUFFIX} \
+	iwlwifi-QuZ-a0-jf-b0-77.ucode${DISTURL_SUFFIX} \
+	iwlwifi-Qu-b0-hr-b0-77.ucode${DISTURL_SUFFIX} \
+	iwlwifi-Qu-b0-jf-b0-77.ucode${DISTURL_SUFFIX} \
+	iwlwifi-Qu-c0-hr-b0-77.ucode${DISTURL_SUFFIX} \
+	iwlwifi-cc-a0-77.ucode${DISTURL_SUFFIX}
+DISTFILES_ax210= \
+	iwlwifi-ma-b0-gf4-a0.pnvm${DISTURL_SUFFIX} \
+	iwlwifi-ma-b0-gf4-a0-89.ucode${DISTURL_SUFFIX} \
+	iwlwifi-ma-b0-gf-a0.pnvm${DISTURL_SUFFIX} \
+	iwlwifi-ma-b0-gf-a0-89.ucode${DISTURL_SUFFIX} \
+	iwlwifi-ma-b0-hr-b0-83.ucode${DISTURL_SUFFIX}
+DISTFILES_bz= \
+	iwlwifi-gl-c0-fm-c0.pnvm${DISTURL_SUFFIX} \
+	iwlwifi-gl-c0-fm-c0-83.ucode${DISTURL_SUFFIX}
+
+DISTFILES_${FWDRV}= \
+	${DISTFILES_7000} \
+	${DISTFILES_8000} \
+	${DISTFILES_9000} \
+	${DISTFILES_22000} \
+	${DISTFILES_ax210} \
+	${DISTFILES_bz}
+DISTFILES_${FWDRV}_lic=
+
+### <<<
+
+.include "${BASEDIR}/Makefile.inc"
diff --git a/net/wifi-firmware-iwlwifi-kmod/distinfo b/net/wifi-firmware-iwlwifi-kmod/distinfo
new file mode 100644
index 000000000000..4163191ef9d3
--- /dev/null
+++ b/net/wifi-firmware-iwlwifi-kmod/distinfo
@@ -0,0 +1,49 @@
+TIMESTAMP = 1715893861
+SHA256 (linux-firmware/iwlwififw/iwlwifi-3160-17.ucode?h=20240513) = 0e893c1ed74c3186047508e93442b2d71a07dd5fac00d9dbdb68f34407d7be14
+SIZE (linux-firmware/iwlwififw/iwlwifi-3160-17.ucode?h=20240513) = 918268
+SHA256 (linux-firmware/iwlwififw/iwlwifi-3168-29.ucode?h=20240513) = 3afae7bf4bb5fbb83a895ec7ad097b9fd20b7d8794f405c2823cbea5284e65c3
+SIZE (linux-firmware/iwlwififw/iwlwifi-3168-29.ucode?h=20240513) = 1036288
+SHA256 (linux-firmware/iwlwififw/iwlwifi-7260-17.ucode?h=20240513) = 5d81a6003df0228a497ad27f916ba2c979614b4c439b0f45a5f2873dc0607fe8
+SIZE (linux-firmware/iwlwififw/iwlwifi-7260-17.ucode?h=20240513) = 1049340
+SHA256 (linux-firmware/iwlwififw/iwlwifi-7265D-29.ucode?h=20240513) = f6776a50107cba4f68362b5cf8455f5a0db6a4e8d1e34f4ede6f26803458e25e
+SIZE (linux-firmware/iwlwififw/iwlwifi-7265D-29.ucode?h=20240513) = 1036772
+SHA256 (linux-firmware/iwlwififw/iwlwifi-7265-17.ucode?h=20240513) = 91f699308f102a9ed90217d813bfdb355464ece958a4f8ac96bba5e9d77fe870
+SIZE (linux-firmware/iwlwififw/iwlwifi-7265-17.ucode?h=20240513) = 1180412
+SHA256 (linux-firmware/iwlwififw/iwlwifi-8000C-36.ucode?h=20240513) = a830767818a47b5c51ae3a763fa7a65b03703ce38d3ef5918d8cd7ba82859c64
+SIZE (linux-firmware/iwlwififw/iwlwifi-8000C-36.ucode?h=20240513) = 2428004
+SHA256 (linux-firmware/iwlwififw/iwlwifi-8265-36.ucode?h=20240513) = d7d84c9b6a3b1976acb97a2bec7102e24a6b5d794110c0dcbd107ab5d9877e5f
+SIZE (linux-firmware/iwlwififw/iwlwifi-8265-36.ucode?h=20240513) = 2436632
+SHA256 (linux-firmware/iwlwififw/iwlwifi-9000-pu-b0-jf-b0-46.ucode?h=20240513) = 9a0c5d938646942f9798e6212579c25771e4bb44301cd409b82abe361ca2c3e0
+SIZE (linux-firmware/iwlwififw/iwlwifi-9000-pu-b0-jf-b0-46.ucode?h=20240513) = 1519568
+SHA256 (linux-firmware/iwlwififw/iwlwifi-9260-th-b0-jf-b0-46.ucode?h=20240513) = 05f4c12514fddfd56fea660b3d2eb6b6e6f4a87a324d5d40464050312ddca911
+SIZE (linux-firmware/iwlwififw/iwlwifi-9260-th-b0-jf-b0-46.ucode?h=20240513) = 1490508
+SHA256 (linux-firmware/iwlwififw/iwlwifi-QuZ-a0-hr-b0-77.ucode?h=20240513) = 3c2014b78872e04e204e5e8981a1aaf13942ccf198d384ab31f8ebe678ea0121
+SIZE (linux-firmware/iwlwififw/iwlwifi-QuZ-a0-hr-b0-77.ucode?h=20240513) = 1406116
+SHA256 (linux-firmware/iwlwififw/iwlwifi-QuZ-a0-jf-b0-77.ucode?h=20240513) = 82c5488dc3e52cb6573e989ad478eae70a76240234677265196a35fcbe2f098c
+SIZE (linux-firmware/iwlwififw/iwlwifi-QuZ-a0-jf-b0-77.ucode?h=20240513) = 1321956
+SHA256 (linux-firmware/iwlwififw/iwlwifi-Qu-b0-hr-b0-77.ucode?h=20240513) = 1421aa6cec40ac11acc24a76625176b861361e707f93c525d259eeaf0fa808c6
+SIZE (linux-firmware/iwlwififw/iwlwifi-Qu-b0-hr-b0-77.ucode?h=20240513) = 1405980
+SHA256 (linux-firmware/iwlwififw/iwlwifi-Qu-b0-jf-b0-77.ucode?h=20240513) = 5272de5667059f7c4b3f99c77f8c61a0dfd71b4f26954d42cad3df870b5af235
+SIZE (linux-firmware/iwlwififw/iwlwifi-Qu-b0-jf-b0-77.ucode?h=20240513) = 1322684
+SHA256 (linux-firmware/iwlwififw/iwlwifi-Qu-c0-hr-b0-77.ucode?h=20240513) = 95636939981d2d4edf7a40bde3b50a9d887cafc807603d8161ec5e1fdcc55ff8
+SIZE (linux-firmware/iwlwififw/iwlwifi-Qu-c0-hr-b0-77.ucode?h=20240513) = 1405996
+SHA256 (linux-firmware/iwlwififw/iwlwifi-cc-a0-77.ucode?h=20240513) = ce9c6e3bda22003f9a9b97cbca94b8215911b7a146c0f4f017963dbb1a233351
+SIZE (linux-firmware/iwlwififw/iwlwifi-cc-a0-77.ucode?h=20240513) = 1367432
+SHA256 (linux-firmware/iwlwififw/iwlwifi-ma-b0-gf4-a0.pnvm?h=20240513) = 9600ce77fbb9112a35c5876f5bd21831c431bb5b424c8aaa4d0bf3bd7149610f
+SIZE (linux-firmware/iwlwififw/iwlwifi-ma-b0-gf4-a0.pnvm?h=20240513) = 27820
+SHA256 (linux-firmware/iwlwififw/iwlwifi-ma-b0-gf4-a0-89.ucode?h=20240513) = be29b81db02dc627e0e9591f5ae7c828eab8b39852d6966f46a16b6ecfa7640f
+SIZE (linux-firmware/iwlwififw/iwlwifi-ma-b0-gf4-a0-89.ucode?h=20240513) = 1598424
+SHA256 (linux-firmware/iwlwififw/iwlwifi-ma-b0-gf-a0.pnvm?h=20240513) = 10be27ffbb1d7cee9ad7f8fe1cd8d08bc6b8e6fd8bf9913e46dc88f0291c13d8
+SIZE (linux-firmware/iwlwififw/iwlwifi-ma-b0-gf-a0.pnvm?h=20240513) = 55096
+SHA256 (linux-firmware/iwlwififw/iwlwifi-ma-b0-gf-a0-89.ucode?h=20240513) = 92d150a13910e8b741f6cafd3b7caf30c32efea33bb61946fd96bfafe80842ce
+SIZE (linux-firmware/iwlwififw/iwlwifi-ma-b0-gf-a0-89.ucode?h=20240513) = 1721440
+SHA256 (linux-firmware/iwlwififw/iwlwifi-ma-b0-hr-b0-83.ucode?h=20240513) = 03b67d28b4916634c544e057abdc46b15b636a85064df993ca431fd92fe4a835
+SIZE (linux-firmware/iwlwififw/iwlwifi-ma-b0-hr-b0-83.ucode?h=20240513) = 1572104
+SHA256 (linux-firmware/iwlwififw/iwlwifi-gl-c0-fm-c0.pnvm?h=20240513) = f486587db1edde8791665dc27d263d907890fcdf16cc8f8fb254cacd360d4a6e
+SIZE (linux-firmware/iwlwififw/iwlwifi-gl-c0-fm-c0.pnvm?h=20240513) = 267272
+SHA256 (linux-firmware/iwlwififw/iwlwifi-gl-c0-fm-c0-83.ucode?h=20240513) = 1129761b5597077655996ec8590f100766e9d61ec9c331474b4febc6967f0e70
+SIZE (linux-firmware/iwlwififw/iwlwifi-gl-c0-fm-c0-83.ucode?h=20240513) = 1797996
+SHA256 (linux-firmware/iwlwififw/LICENCE.iwlwifi_firmware?h=20240513) = 16d5040c7cf851fc693b7542e20870935b99802533ea1bfd231c377a2305e5c5
+SIZE (linux-firmware/iwlwififw/LICENCE.iwlwifi_firmware?h=20240513) = 2046
+SHA256 (linux-firmware/iwlwififw/WHENCE?h=20240513) = 09453d13d522ce48c11fd37a04bc4a46b88792bc6e51c3b73cdcc5acb364e763
+SIZE (linux-firmware/iwlwififw/WHENCE?h=20240513) = 274394
diff --git a/net/wifi-firmware-iwlwifi-kmod/pkg-descr b/net/wifi-firmware-iwlwifi-kmod/pkg-descr
new file mode 100644
index 000000000000..c024286659a0
--- /dev/null
+++ b/net/wifi-firmware-iwlwifi-kmod/pkg-descr
@@ -0,0 +1 @@
+Firmware files for Intel WiFi NICs supported by the iwlwifi mvm driver.
diff --git a/net/wifi-firmware-kmod/Makefile b/net/wifi-firmware-kmod/Makefile
index 53a4ff214678..22249ab82c6f 100644
--- a/net/wifi-firmware-kmod/Makefile
+++ b/net/wifi-firmware-kmod/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	wifi-firmware-kmod
-PORTVERSION=	20230508
+PORTVERSION=	20240513
 CATEGORIES=	net
 
 MAINTAINER=	bz@FreeBSD.org
@@ -7,11 +7,42 @@ COMMENT=	Firmware modules for WiFi NIC drivers
 WWW=		https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/
 
 RUN_DEPENDS=	\
-		wifi-firmware-ath10k-kmod>0:net/wifi-firmware-ath10k-kmod \
-		wifi-firmware-ath11k-kmod>0:net/wifi-firmware-ath11k-kmod \
-		wifi-firmware-mt76-kmod>0:net/wifi-firmware-mt76-kmod \
-		wifi-firmware-rtw88-kmod>0:net/wifi-firmware-rtw88-kmod \
-		wifi-firmware-rtw89-kmod>0:net/wifi-firmware-rtw89-kmod
+	wifi-firmware-ath10k-kmod-qca988x_hw20>0:net/wifi-firmware-ath10k-kmod@qca988x_hw20 \
+	wifi-firmware-ath10k-kmod-qca6174_hw21>0:net/wifi-firmware-ath10k-kmod@qca6174_hw21 \
+	wifi-firmware-ath10k-kmod-qca6174_hw30>0:net/wifi-firmware-ath10k-kmod@qca6174_hw30 \
+	wifi-firmware-ath10k-kmod-qca99x0_hw20>0:net/wifi-firmware-ath10k-kmod@qca99x0_hw20 \
+	wifi-firmware-ath10k-kmod-qca9377_hw10>0:net/wifi-firmware-ath10k-kmod@qca9377_hw10 \
+	wifi-firmware-ath10k-kmod-qca9984_hw10>0:net/wifi-firmware-ath10k-kmod@qca9984_hw10 \
+	wifi-firmware-ath10k-kmod-qca9887_hw10>0:net/wifi-firmware-ath10k-kmod@qca9887_hw10 \
+	wifi-firmware-ath10k-kmod-qca9888_hw20>0:net/wifi-firmware-ath10k-kmod@qca9888_hw20 \
+	\
+	wifi-firmware-ath11k-kmod-qca6390_hw20>0:net/wifi-firmware-ath11k-kmod@qca6390_hw20 \
+	wifi-firmware-ath11k-kmod-qcn9074_hw10>0:net/wifi-firmware-ath11k-kmod@qcn9074_hw10 \
+	wifi-firmware-ath11k-kmod-wcn6855_hw20>0:net/wifi-firmware-ath11k-kmod@wcn6855_hw20 \
+	\
+	wifi-firmware-ath12k-kmod-wcn7850_hw20>0:net/wifi-firmware-ath12k-kmod@wcn7850_hw20 \
+	\
+	wifi-firmware-iwlwifi-kmod-7000>0:net/wifi-firmware-iwlwifi-kmod@7000 \
+	wifi-firmware-iwlwifi-kmod-8000>0:net/wifi-firmware-iwlwifi-kmod@8000 \
+	wifi-firmware-iwlwifi-kmod-9000>0:net/wifi-firmware-iwlwifi-kmod@9000 \
+	wifi-firmware-iwlwifi-kmod-22000>0:net/wifi-firmware-iwlwifi-kmod@22000 \
+	wifi-firmware-iwlwifi-kmod-ax210>0:net/wifi-firmware-iwlwifi-kmod@ax210 \
+	wifi-firmware-iwlwifi-kmod-bz>0:net/wifi-firmware-iwlwifi-kmod@bz \
+	\
+	wifi-firmware-mt76-kmod-mt7915>0:net/wifi-firmware-mt76-kmod@mt7915 \
+	wifi-firmware-mt76-kmod-mt792x>0:net/wifi-firmware-mt76-kmod@mt792x \
+	wifi-firmware-mt76-kmod-mt7996>0:net/wifi-firmware-mt76-kmod@mt7996 \
+	\
+	wifi-firmware-rtw88-kmod-rtw8723d>0:net/wifi-firmware-rtw88-kmod@rtw8723d \
+	wifi-firmware-rtw88-kmod-rtw8821c>0:net/wifi-firmware-rtw88-kmod@rtw8821c \
+	wifi-firmware-rtw88-kmod-rtw8822b>0:net/wifi-firmware-rtw88-kmod@rtw8822b \
+	wifi-firmware-rtw88-kmod-rtw8822c>0:net/wifi-firmware-rtw88-kmod@rtw8822c \
+	\
+	wifi-firmware-rtw89-kmod-rtw8851b>0:net/wifi-firmware-rtw89-kmod@rtw8851b \
+	wifi-firmware-rtw89-kmod-rtw8852a>0:net/wifi-firmware-rtw89-kmod@rtw8852a \
+	wifi-firmware-rtw89-kmod-rtw8852b>0:net/wifi-firmware-rtw89-kmod@rtw8852b \
+	wifi-firmware-rtw89-kmod-rtw8852c>0:net/wifi-firmware-rtw89-kmod@rtw8852c \
+	wifi-firmware-rtw89-kmod-rtw8922a>0:net/wifi-firmware-rtw89-kmod@rtw8922a
 
 USES=		metaport
 
diff --git a/net/wifi-firmware-kmod/Makefile.inc b/net/wifi-firmware-kmod/Makefile.inc
index 8177bd045e51..e6d57564f4f2 100644
--- a/net/wifi-firmware-kmod/Makefile.inc
+++ b/net/wifi-firmware-kmod/Makefile.inc
@@ -2,39 +2,56 @@ PORTNAME=	wifi-firmware-${FWDRV}-kmod
 PORTVERSION=	${FWDRV_VERSION}
 CATEGORIES=	net
 MASTER_SITES=	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/
-MASTER_SITES+=	LOCAL/bz:mkbuild
 
 MAINTAINER=	bz@FreeBSD.org
-COMMENT=	Firmware modules for ${FWDRV} ${FLAVOR} WiFi NIC
+COMMENT=	Firmware modules for the ${FWDRV} (${FLAVOR}) WiFi NIC driver
 WWW?=		https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/${FWSUBDIR}
 
 FWDRV_VERSION?=	0
 FWDRV?=		base
 
 LICENSE_NAME?=	firmware license (${FWDRV})
-LICENSE_FILE?=	${WRKSRC}/${LICENSE}
+LICENSE_FILE?=	${WRKSRC}/${FLAVOR}/${LICENSE}
 LICENSE_PERMS?=	dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept
 
 EXTRACT_SUFX=
-DISTURL_SUFFIX=	?h=${PORTVERSION}
+DISTURL_SUFFIX?=	?h=${PORTVERSION}
 
 # Sanity checks
 .if !defined(FWDRV) || !defined(FWSUBDIR) || !defined(FWSUBS) || \
 	!defined(FWDRV_VERSION) || !defined(LICENSE) || \
-	!defined(DISTFILES_fw) || !defined(DISTFILES_lic)
+	!defined(DISTFILES_${FWDRV}) || !defined(DISTFILES_${FWDRV}_lic) || \
+	!defined(BASEDIR) || !defined(WHENCE_REGEX)
 IGNORE=	is a metaport or misconfigured child port; there is nothing to build
 .endif
 
-# Split things up in case we decide to make this flavors once we add support for more drivers.
+FILESDIR=	${BASEDIR}/files
+
+# Split things into the full package (driver name) and more specific flavors.
+FLAVORS=	${FWDRV} \
+		${FWSUBS}
+
+# What a kludge.... thanks https://docs.freebsd.org/en/books/porters-handbook/flavors/ !
+FLAVOR?=	${FLAVORS:[1]}
+
+# Generate the conflicts list.
+.for f in ${FWSUBS}
+${FWDRV}_CONFLICTS_INSTALL+=	${PORTNAME}-${f}
+${f}_PKGNAMESUFFIX=		-${f}
+${f}_CONFLICTS_INSTALL=		${PORTNAME}
+.endfor
+
+DISTFILES_FLAVOR:=	${DISTFILES_${FLAVOR}}
+DISTFILES_FLAVOR_lic:=	${DISTFILES_${FLAVOR}_lic}
+
 DISTFILES=	\
-	${DISTFILES_fw} \
-	${DISTFILES_lic} \
+	${DISTFILES_FLAVOR} \
+	${DISTFILES_FLAVOR_lic} \
 	${LICENSE}${DISTURL_SUFFIX} \
-	WHENCE${DISTURL_SUFFIX} \
-	modules_${FWDRV}fw_${PORTVERSION}.tar.gz:mkbuild
+	WHENCE${DISTURL_SUFFIX}
 
 DIST_SUBDIR=	linux-firmware/${FWDRV}fw
-EXTRACT_ONLY=	modules_${FWDRV}fw_${PORTVERSION}.tar.gz
+EXTRACT_ONLY=
 
 ONLY_FOR_ARCHS=	aarch64 amd64 i386
 ONLY_FOR_ARCHS_REASON=	LinuxKPI driver only available for these architectures
@@ -42,41 +59,62 @@ ONLY_FOR_ARCHS_REASON=	LinuxKPI driver only available for these architectures
 USES=		kmod uidfix
 
 post-extract:
-	@${MV} ${WRKDIR}/${FWDRV}fw ${WRKSRC}
-	@${CP} ${DISTDIR}/${DIST_SUBDIR}/${LICENSE}${DISTURL_SUFFIX} ${WRKSRC}/${LICENSE}
-	@${CP} ${DISTDIR}/${DIST_SUBDIR}/WHENCE${DISTURL_SUFFIX} ${WRKSRC}/WHENCE.in
-	@${AWK} -f ${WRKSRC}/WHENCE.awk ${WRKSRC}/WHENCE.in > ${WRKSRC}/WHENCE
-	@${MKDIR} ${WRKSRC}/fw
-.for _f in ${DISTFILES_fw}
-	@${MKDIR} ${WRKSRC}/fw/${_f:H}
-	${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@}
+	@${MKDIR} ${WRKSRC}/${FLAVOR}/fw
+	# Deal with supplementary licenses files.
+	@${CP} ${DISTDIR}/${DIST_SUBDIR}/${LICENSE}${DISTURL_SUFFIX} ${WRKSRC}/${FLAVOR}/${LICENSE}
+	@${CP} ${DISTDIR}/${DIST_SUBDIR}/WHENCE${DISTURL_SUFFIX} ${WRKSRC}/${FLAVOR}/WHENCE.in
+	@${SED} -e "s@%%XXX%%@${WHENCE_REGEX:Q}@g" ${FILESDIR}/WHENCE.awk.in > ${WRKSRC}/${FLAVOR}/WHENCE.awk
+	@${AWK} -f ${WRKSRC}/${FLAVOR}/WHENCE.awk ${WRKSRC}/${FLAVOR}/WHENCE.in > ${WRKSRC}/${FLAVOR}/WHENCE
+	# Prepare toplevel Makefile and Makefile.inc.
+	@${ECHO_CMD} "SUBDIR=" > ${WRKSRC}/${FLAVOR}/Makefile
+	@${SED} -e "s@%%FWDRV%%@${FWDRV}@g" \
+	    -e "s@%%FWSUBDIR%%@${FWSUBDIR}@g" \
+	    ${FILESDIR}/Makefile.inc.in > ${WRKSRC}/${FLAVOR}/Makefile.inc
+.for _f in ${DISTFILES_FLAVOR}
+	# We remove '.' and '-' as well as '/' as they don't work well in loader.conf.
+	@${MKDIR} ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}
+	# Create subdir (firmware file) Makefile.
+	@${ECHO_CMD} "FWNAME=${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:T}" > ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile
+.if (${_f:H:C,^[^/]*,,1:C,^/,,} != "")
+	@${ECHO_CMD} "FWSUBSUBDIR=${_f:H:C,^[^/]*,,1:C,^/,,}" >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile
+.endif
+	# XXX-BZ recover firmware versions later again from somewhere?  Pain to keep track though, else use 0 or ${FWDRV_VERSION}?
+	@${ECHO_CMD} "VERSION=0" >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile
+	@${ECHO_CMD} '.include <bsd.kmod.mk>' >> ${WRKSRC}/${FLAVOR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}/Makefile
+	# Add subdir to top-level Makefile.
+	@${ECHO_CMD} "SUBDIR+=${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}" >> ${WRKSRC}/${FLAVOR}/Makefile
+	# Create firmware source directory and copy in distfile.
+	@${MKDIR} ${WRKSRC}/${FLAVOR}/fw/${_f:H}
+	${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@}
 .endfor
-.for _f in ${DISTFILES_lic}
-	${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g}
+	@${ECHO_CMD} '.include <bsd.subdir.mk>' >> ${WRKSRC}/${FLAVOR}/Makefile
+	# Copy in additional licenses files.
+.for _f in ${DISTFILES_FLAVOR_lic}
+	${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g}
 .endfor
 
 # Internal hack we should probably upstream.
 # Add WHENCE file next to license where it makes sense despite not being a license.
 _USES_stage+=	881:post-install-license
 post-install-license:
-	${INSTALL_DATA} ${WRKSRC}/WHENCE ${STAGEDIR}${_LICENSE_DIR}/
-.for _f in ${DISTFILES_lic}
-	${INSTALL_DATA} ${WRKSRC}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} \
+	${INSTALL_DATA} ${WRKSRC}/${FLAVOR}/WHENCE ${STAGEDIR}${_LICENSE_DIR}/
+.for _f in ${DISTFILES_FLAVOR_lic}
+	${INSTALL_DATA} ${WRKSRC}/${FLAVOR}/fw/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g} \
 		${STAGEDIR}${_LICENSE_DIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g}
 .endfor
 
 .include <bsd.port.pre.mk>
 
-MAKE_ENV+=	FWSRCDIR=${WRKSRC}/fw/${FWSUBDIR}
+MAKE_ENV+=	FWSRCDIR=${WRKSRC}/${FLAVOR}/fw
 MAKE_FLAGS+=	-C ${WRKSRC}/${FLAVOR}
 
-# Add firmware files.
-.for _f in ${DISTFILES_fw}
+# Add firmware files to plist.
+.for _f in ${DISTFILES_FLAVOR}
 PLIST_FILES+=	${KMODDIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}.ko
 .endfor
-# Record extra license files.
+# Record extra licenses files in plist.
 PLIST_FILES+=	${_LICENSE_DIR}/WHENCE
-.for _f in ${DISTFILES_lic}
+.for _f in ${DISTFILES_FLAVOR_lic}
*** 464 LINES SKIPPED ***