aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2023-04-09 01:29:48 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2023-04-22 15:21:22 +0000
commit3082cab3f868c1f7538d5221080703d891a2d0a6 (patch)
tree117337c9924fe1c61ed7b5c57a6a55da536ee077
parentdf687223708c10e34034276da12e005ec9610e11 (diff)
downloadports-3082cab3f868c1f7538d5221080703d891a2d0a6.tar.gz
ports-3082cab3f868c1f7538d5221080703d891a2d0a6.zip
net/wifi-firmware-*: add framework and firmware for various WiFi chipsets
Add a "base port framework" to fetch (WiFi) firmware and license files from the linux-firmware.git repository and an accompanying FreeBSD build kmod framework tarball (for now; we might do without that in the future). Add child ports for Realtek rtw88 and rtw89, Mediatek mt76, and Atheros ath10k and ath11k firmware as a start. This is a beginning in order to stop bloating src.git and the installed kernels with lots of MB of firmware files whereas usually only one vebdor/chipset/flavor is needed. Before fully switching more infrastructure needs to be in place but this is the first and most important step. PR: 270742 Reviewed by: lwhsu Approved by: lwhsu (ports) Differential Revision: https://reviews.freebsd.org/D39487
-rw-r--r--net/wifi-firmware-ath10k-kmod/Makefile88
-rw-r--r--net/wifi-firmware-ath10k-kmod/distinfo79
-rw-r--r--net/wifi-firmware-ath10k-kmod/pkg-descr3
-rw-r--r--net/wifi-firmware-ath11k-kmod/Makefile105
-rw-r--r--net/wifi-firmware-ath11k-kmod/distinfo23
-rw-r--r--net/wifi-firmware-ath11k-kmod/pkg-descr3
-rw-r--r--net/wifi-firmware-base/Makefile80
-rw-r--r--net/wifi-firmware-mt76-kmod/Makefile31
-rw-r--r--net/wifi-firmware-mt76-kmod/distinfo27
-rw-r--r--net/wifi-firmware-mt76-kmod/pkg-descr5
-rw-r--r--net/wifi-firmware-rtw88-kmod/Makefile34
-rw-r--r--net/wifi-firmware-rtw88-kmod/distinfo19
-rw-r--r--net/wifi-firmware-rtw88-kmod/pkg-descr7
-rw-r--r--net/wifi-firmware-rtw89-kmod/Makefile28
-rw-r--r--net/wifi-firmware-rtw89-kmod/distinfo13
-rw-r--r--net/wifi-firmware-rtw89-kmod/pkg-descr6
16 files changed, 551 insertions, 0 deletions
diff --git a/net/wifi-firmware-ath10k-kmod/Makefile b/net/wifi-firmware-ath10k-kmod/Makefile
new file mode 100644
index 000000000000..2355138b86ef
--- /dev/null
+++ b/net/wifi-firmware-ath10k-kmod/Makefile
@@ -0,0 +1,88 @@
+BASEDIR= ${.CURDIR}/../wifi-firmware-base
+
+FWDRV= ath10k
+FWSUBDIR= ath10k
+FWDRV_VERSION= 20230310
+
+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
+
+DISTFILES_QCA6174_hw21= \
+ ${FWSUBDIR}/QCA6174/hw2.1/board.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/QCA6174/hw2.1/board-2.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/QCA6174/hw2.1/firmware-5.bin${DISTURL_SUFFIX}
+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} \
+ ${FWSUBDIR}/QCA6174/hw3.0/board-2.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= \
+ ${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} \
+ ${FWSUBDIR}/QCA9377/hw1.0/board-2.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= \
+ ${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= \
+ ${FWSUBDIR}/QCA9887/hw1.0/board.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/QCA9887/hw1.0/firmware-5.bin${DISTURL_SUFFIX}
+DISTFILES_QCA9887_hw10_lic= \
+ ${FWSUBDIR}/QCA9887/hw1.0/notice_ath10k_firmware-5.txt${DISTURL_SUFFIX}
+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= \
+ ${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}
+
+.include "${BASEDIR}/Makefile"
diff --git a/net/wifi-firmware-ath10k-kmod/distinfo b/net/wifi-firmware-ath10k-kmod/distinfo
new file mode 100644
index 000000000000..8754538f31e3
--- /dev/null
+++ b/net/wifi-firmware-ath10k-kmod/distinfo
@@ -0,0 +1,79 @@
+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
diff --git a/net/wifi-firmware-ath10k-kmod/pkg-descr b/net/wifi-firmware-ath10k-kmod/pkg-descr
new file mode 100644
index 000000000000..bd34d0f79466
--- /dev/null
+++ b/net/wifi-firmware-ath10k-kmod/pkg-descr
@@ -0,0 +1,3 @@
+Firmware files for QCA WiFi NICs supported by the ath10k driver.
+
+Currently only provides firmware for the PCI chipsets.
diff --git a/net/wifi-firmware-ath11k-kmod/Makefile b/net/wifi-firmware-ath11k-kmod/Makefile
new file mode 100644
index 000000000000..1f70ff0b7833
--- /dev/null
+++ b/net/wifi-firmware-ath11k-kmod/Makefile
@@ -0,0 +1,105 @@
+BASEDIR= ${.CURDIR}/../wifi-firmware-base
+
+FWDRV= ath11k
+FWSUBDIR= ath11k
+FWDRV_VERSION= 20230310
+
+# 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
+
+DISTFILES_QCA6390_hw20= \
+ ${FWSUBDIR}/QCA6390/hw2.0/board-2.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/QCA6390/hw2.0/amss.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/QCA6390/hw2.0/m3.bin${DISTURL_SUFFIX}
+DISTFILES_QCA6390_hw20_lic= \
+ ${FWSUBDIR}/QCA6390/hw2.0/Notice.txt${DISTURL_SUFFIX}
+DISTFILES_QCN9074_hw10= \
+ ${FWSUBDIR}/QCN9074/hw1.0/board-2.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/QCN9074/hw1.0/amss.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/QCN9074/hw1.0/m3.bin${DISTURL_SUFFIX}
+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} \
+ ${FWSUBDIR}/WCN6855/hw2.0/amss.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/WCN6855/hw2.0/m3.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}
+
+.include "${BASEDIR}/Makefile"
diff --git a/net/wifi-firmware-ath11k-kmod/distinfo b/net/wifi-firmware-ath11k-kmod/distinfo
new file mode 100644
index 000000000000..2cb520db6f6e
--- /dev/null
+++ b/net/wifi-firmware-ath11k-kmod/distinfo
@@ -0,0 +1,23 @@
+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
diff --git a/net/wifi-firmware-ath11k-kmod/pkg-descr b/net/wifi-firmware-ath11k-kmod/pkg-descr
new file mode 100644
index 000000000000..d05c109adec6
--- /dev/null
+++ b/net/wifi-firmware-ath11k-kmod/pkg-descr
@@ -0,0 +1,3 @@
+Firmware files for QCA WiFi NICs supported by the ath11k driver.
+
+Currently only provides firmware for the PCI chipsets.
diff --git a/net/wifi-firmware-base/Makefile b/net/wifi-firmware-base/Makefile
new file mode 100644
index 000000000000..ede79959f009
--- /dev/null
+++ b/net/wifi-firmware-base/Makefile
@@ -0,0 +1,80 @@
+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
+WWW?= https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/${FWSUBDIR}
+
+LICENSE_NAME?= firmware license (${FWDRV})
+LICENSE_FILE?= ${WRKSRC}/${LICENSE}
+LICENSE_PERMS?= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept
+
+EXTRACT_SUFX=
+DISTURL_SUFFIX= ?h=${PORTVERSION}
+
+# Sanity checks
+.if !defined(FWDRV) || !defined(FWSUBDIR) || !defined(FWSUBS) || \
+ !defined(FWDRV_VERSION) || !defined(LICENSE) || \
+ !defined(DISTFILES_fw) || !defined(DISTFILES_lic)
+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.
+DISTFILES= \
+ ${DISTFILES_fw} \
+ ${DISTFILES_lic} \
+ ${LICENSE}${DISTURL_SUFFIX} \
+ WHENCE${DISTURL_SUFFIX} \
+ modules_${FWDRV}fw_${PORTVERSION}.tar.gz:mkbuild
+
+DIST_SUBDIR= linux-firmware/${FWDRV}fw
+EXTRACT_ONLY= modules_${FWDRV}fw_${PORTVERSION}.tar.gz
+
+ONLY_FOR_ARCHS= aarch64 amd64 i386
+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@}
+.endfor
+.for _f in ${DISTFILES_lic}
+ ${CP} ${DISTDIR}/${DIST_SUBDIR}/${_f} ${WRKSRC}/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} \
+ ${STAGEDIR}${_LICENSE_DIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g}
+.endfor
+
+.include <bsd.port.pre.mk>
+
+MAKE_ENV+= FWSRCDIR=${WRKSRC}/fw/${FWSUBDIR}
+MAKE_FLAGS+= -C ${WRKSRC}/${FLAVOR}
+
+# Add firmware files.
+.for _f in ${DISTFILES_fw}
+PLIST_FILES+= ${KMODDIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,.,_,g:S,-,_,g:S,/,_,g}.ko
+.endfor
+# Record extra license files.
+PLIST_FILES+= ${_LICENSE_DIR}/WHENCE
+.for _f in ${DISTFILES_lic}
+PLIST_FILES+= ${_LICENSE_DIR}/${_f:C@(^[^?]*)${DISTURL_SUFFIX:Q}@\1@:S,/,_,g}
+.endfor
+
+.include <bsd.port.post.mk>
diff --git a/net/wifi-firmware-mt76-kmod/Makefile b/net/wifi-firmware-mt76-kmod/Makefile
new file mode 100644
index 000000000000..cb75f071f4f3
--- /dev/null
+++ b/net/wifi-firmware-mt76-kmod/Makefile
@@ -0,0 +1,31 @@
+BASEDIR= ${.CURDIR}/../wifi-firmware-base
+
+FWDRV= mt76
+FWSUBDIR= mediatek
+FWDRV_VERSION= 20230310
+
+LICENSE= LICENCE.mediatek
+LICENSE_NAME= Mediatek firmware license (${FWDRV})
+
+FWSUBS= \
+ mt7915 \
+ mt7921
+
+DISTFILES_mt7915= \
+ ${FWSUBDIR}/mt7915_wa.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/mt7915_wm.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/mt7915_rom_patch.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/mt7916_wa.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/mt7916_wm.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/mt7916_rom_patch.bin${DISTURL_SUFFIX}
+DISTFILES_mt7921= \
+ ${FWSUBDIR}/WIFI_RAM_CODE_MT7961_1.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/WIFI_MT7961_patch_mcu_1_2_hdr.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/WIFI_RAM_CODE_MT7922_1.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/WIFI_MT7922_patch_mcu_1_1_hdr.bin${DISTURL_SUFFIX}
+DISTFILES_fw= \
+ ${DISTFILES_mt7915} \
+ ${DISTFILES_mt7921}
+DISTFILES_lic=
+
+.include "${BASEDIR}/Makefile"
diff --git a/net/wifi-firmware-mt76-kmod/distinfo b/net/wifi-firmware-mt76-kmod/distinfo
new file mode 100644
index 000000000000..6f6b08221e3e
--- /dev/null
+++ b/net/wifi-firmware-mt76-kmod/distinfo
@@ -0,0 +1,27 @@
+TIMESTAMP = 1680648994
+SHA256 (linux-firmware/mt76fw/mediatek/mt7915_wa.bin?h=20230310) = c28a3279fcdbd22f3ae34fa5c2adef3617015d1142b46ba8fa388beda7d968a0
+SIZE (linux-firmware/mt76fw/mediatek/mt7915_wa.bin?h=20230310) = 116160
+SHA256 (linux-firmware/mt76fw/mediatek/mt7915_wm.bin?h=20230310) = 93ada741ec11b8a8c12dde51dd1c54e05ef860a9d0c79cebea0a8c3089aa550c
+SIZE (linux-firmware/mt76fw/mediatek/mt7915_wm.bin?h=20230310) = 1260960
+SHA256 (linux-firmware/mt76fw/mediatek/mt7915_rom_patch.bin?h=20230310) = 89fae20235b31400abc5558200d66951a119801ff4a5d6e19d3550cadc7a75d8
+SIZE (linux-firmware/mt76fw/mediatek/mt7915_rom_patch.bin?h=20230310) = 144544
+SHA256 (linux-firmware/mt76fw/mediatek/mt7916_wa.bin?h=20230310) = 34c376dd0ed8e56d4a71818a28d6b905e3b6c1bad3fe3ea0f37ad38072d8527a
+SIZE (linux-firmware/mt76fw/mediatek/mt7916_wa.bin?h=20230310) = 507856
+SHA256 (linux-firmware/mt76fw/mediatek/mt7916_wm.bin?h=20230310) = 3af39d1154e5fc2eacff0df7ba28a069d744f1450307bcfd61d7ffcc3a2a72a1
+SIZE (linux-firmware/mt76fw/mediatek/mt7916_wm.bin?h=20230310) = 1710384
+SHA256 (linux-firmware/mt76fw/mediatek/mt7916_rom_patch.bin?h=20230310) = 220e626d775a7d6b09aac3e50ede1da90fdf3b202841ae22ce62d082cc3fbf6b
+SIZE (linux-firmware/mt76fw/mediatek/mt7916_rom_patch.bin?h=20230310) = 8672
+SHA256 (linux-firmware/mt76fw/mediatek/WIFI_RAM_CODE_MT7961_1.bin?h=20230310) = 385dce8fecaac95d147930e1db4dccb07caed5f5637f4e8b372decd5b7aad95b
+SIZE (linux-firmware/mt76fw/mediatek/WIFI_RAM_CODE_MT7961_1.bin?h=20230310) = 719732
+SHA256 (linux-firmware/mt76fw/mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin?h=20230310) = 66315a851d7c3e16218583b0d6cef3e675f9d93131f038f0da24af2365f0a3b8
+SIZE (linux-firmware/mt76fw/mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin?h=20230310) = 92192
+SHA256 (linux-firmware/mt76fw/mediatek/WIFI_RAM_CODE_MT7922_1.bin?h=20230310) = 57e5e0fab21300b9e4a5aee9569ae802ea5d482ac345d0c9af64e707c9accb31
+SIZE (linux-firmware/mt76fw/mediatek/WIFI_RAM_CODE_MT7922_1.bin?h=20230310) = 826740
+SHA256 (linux-firmware/mt76fw/mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin?h=20230310) = a07cda02d2aec04ec9827c9f899a8d65785ad23a5a7d5d4ce7c2664a0d80fe86
+SIZE (linux-firmware/mt76fw/mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin?h=20230310) = 137632
+SHA256 (linux-firmware/mt76fw/LICENCE.mediatek?h=20230310) = a90d3f66704d85889945fec5525ea77622549da83aced1aac99828383f8f1805
+SIZE (linux-firmware/mt76fw/LICENCE.mediatek?h=20230310) = 561
+SHA256 (linux-firmware/mt76fw/WHENCE?h=20230310) = 866f14018cd82a4465cd13a278bec2f0750ca3e5b03c34082a16458ebd464d64
+SIZE (linux-firmware/mt76fw/WHENCE?h=20230310) = 203894
+SHA256 (linux-firmware/mt76fw/modules_mt76fw_20230310.tar.gz) = 6b0f335a85146e79a99d6c02207597b64d3bc1f3487efb03993a621ed081f49e
+SIZE (linux-firmware/mt76fw/modules_mt76fw_20230310.tar.gz) = 23040
diff --git a/net/wifi-firmware-mt76-kmod/pkg-descr b/net/wifi-firmware-mt76-kmod/pkg-descr
new file mode 100644
index 000000000000..0ffe4b6de313
--- /dev/null
+++ b/net/wifi-firmware-mt76-kmod/pkg-descr
@@ -0,0 +1,5 @@
+Firmware files for Mediatek WiFi NICs supported by the mt76 driver.
+
+Currently provides firmware for the following sub-drivers:
+- mt7915
+- mt7921
diff --git a/net/wifi-firmware-rtw88-kmod/Makefile b/net/wifi-firmware-rtw88-kmod/Makefile
new file mode 100644
index 000000000000..01eed314d6be
--- /dev/null
+++ b/net/wifi-firmware-rtw88-kmod/Makefile
@@ -0,0 +1,34 @@
+BASEDIR= ${.CURDIR}/../wifi-firmware-base
+
+FWDRV= rtw88
+FWSUBDIR= rtw88
+FWDRV_VERSION= 20230310
+
+LICENSE= LICENCE.rtlwifi_firmware.txt
+LICENSE_NAME= Realtek firmware license (${FWDRV})
+
+FWSUBS= \
+ rtw8723d \
+ rtw8822b \
+ rtw8821c \
+ rtw8822c
+
+DISTFILES_rtw8723d= \
+ ${FWSUBDIR}/rtw8723d_fw.bin${DISTURL_SUFFIX}
+DISTFILES_rtw8822b= \
+ ${FWSUBDIR}/rtw8822b_fw.bin${DISTURL_SUFFIX}
+DISTFILES_rtw8821c= \
+ ${FWSUBDIR}/rtw8821c_fw.bin${DISTURL_SUFFIX}
+DISTFILES_rtw8822c= \
+ ${FWSUBDIR}/rtw8822c_fw.bin${DISTURL_SUFFIX} \
+ ${FWSUBDIR}/rtw8822c_wow_fw.bin${DISTURL_SUFFIX}
+DISTFILES_fw= \
+ ${DISTFILES_rtw8723d} \
+ ${DISTFILES_rtw8822b} \
+ ${DISTFILES_rtw8821c} \
+ ${DISTFILES_rtw8822c}
+
+DISTFILES_lic= \
+ ${FWSUBDIR}/README${DISTURL_SUFFIX}
+
+.include "${BASEDIR}/Makefile"
diff --git a/net/wifi-firmware-rtw88-kmod/distinfo b/net/wifi-firmware-rtw88-kmod/distinfo
new file mode 100644
index 000000000000..13ea9f13c3d3
--- /dev/null
+++ b/net/wifi-firmware-rtw88-kmod/distinfo
@@ -0,0 +1,19 @@
+TIMESTAMP = 1681002726
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8723d_fw.bin?h=20230310) = 9c64e079815a333a3f7b731be7cc0be65206ebc883891659dc8ff5ed36a5e2f5
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8723d_fw.bin?h=20230310) = 28884
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822b_fw.bin?h=20230310) = 378ff7b43ae7da18a0311175abc351a1758d25ce553b44f3c5694758efbea84c
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8822b_fw.bin?h=20230310) = 150984
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8821c_fw.bin?h=20230310) = 2ef409bc418549fcf294061dd0cae1fc22fd9da79b60524950b25de18732f3f0
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8821c_fw.bin?h=20230310) = 139472
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822c_fw.bin?h=20230310) = cde8207b3eeaa7252af929301abf196c565327ecedd387e64459f23c89a7098c
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8822c_fw.bin?h=20230310) = 202552
+SHA256 (linux-firmware/rtw88fw/rtw88/rtw8822c_wow_fw.bin?h=20230310) = 6717fc6ff426a74571ac4f04cd9698fb2f356012c05c58aa64cf21ceb6b958a2
+SIZE (linux-firmware/rtw88fw/rtw88/rtw8822c_wow_fw.bin?h=20230310) = 145224
+SHA256 (linux-firmware/rtw88fw/rtw88/README?h=20230310) = 483fed8b35fadae40a539cdd619797a44dbcf8aa254b7298629771960e90630e
+SIZE (linux-firmware/rtw88fw/rtw88/README?h=20230310) = 1087
+SHA256 (linux-firmware/rtw88fw/LICENCE.rtlwifi_firmware.txt?h=20230310) = a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e
+SIZE (linux-firmware/rtw88fw/LICENCE.rtlwifi_firmware.txt?h=20230310) = 2115
+SHA256 (linux-firmware/rtw88fw/WHENCE?h=20230310) = 866f14018cd82a4465cd13a278bec2f0750ca3e5b03c34082a16458ebd464d64
+SIZE (linux-firmware/rtw88fw/WHENCE?h=20230310) = 203894
+SHA256 (linux-firmware/rtw88fw/modules_rtw88fw_20230310.tar.gz) = c889a8b439e189fb34825700110ab634e4a283b8f154a3396518c87fdba627ae
+SIZE (linux-firmware/rtw88fw/modules_rtw88fw_20230310.tar.gz) = 12800
diff --git a/net/wifi-firmware-rtw88-kmod/pkg-descr b/net/wifi-firmware-rtw88-kmod/pkg-descr
new file mode 100644
index 000000000000..7648756cc451
--- /dev/null
+++ b/net/wifi-firmware-rtw88-kmod/pkg-descr
@@ -0,0 +1,7 @@
+Firmware files for Realtek WiFi NICs supported by the rtw88 driver.
+
+Currently supported chipsets:
+- RTL8822BE
+- RTL8821CE
+- RTL8822CE
+- RTL8723DE
diff --git a/net/wifi-firmware-rtw89-kmod/Makefile b/net/wifi-firmware-rtw89-kmod/Makefile
new file mode 100644
index 000000000000..6f88b11697a2
--- /dev/null
+++ b/net/wifi-firmware-rtw89-kmod/Makefile
@@ -0,0 +1,28 @@
+BASEDIR= ${.CURDIR}/../wifi-firmware-base
+
+FWDRV= rtw89
+FWSUBDIR= rtw89
+FWDRV_VERSION= 20230310
+
+LICENSE= LICENCE.rtlwifi_firmware.txt
+LICENSE_NAME= Realtek firmware license (${FWDRV})
+
+FWSUBS= \
+ rtw8852a \
+ rtw8852b \
+ rtw8852c
+
+DISTFILES_rtw8852a= \
+ ${FWSUBDIR}/rtw8852a_fw.bin${DISTURL_SUFFIX}
+DISTFILES_rtw8852b= \
+ ${FWSUBDIR}/rtw8852b_fw.bin${DISTURL_SUFFIX}
+DISTFILES_rtw8852c= \
+ ${FWSUBDIR}/rtw8852c_fw.bin${DISTURL_SUFFIX}
+DISTFILES_fw= \
+ ${DISTFILES_rtw8852a} \
+ ${DISTFILES_rtw8852b} \
+ ${DISTFILES_rtw8852c}
+
+DISTFILES_lic=
+
+.include "${BASEDIR}/Makefile"
diff --git a/net/wifi-firmware-rtw89-kmod/distinfo b/net/wifi-firmware-rtw89-kmod/distinfo
new file mode 100644
index 000000000000..729f79aa45f5
--- /dev/null
+++ b/net/wifi-firmware-rtw89-kmod/distinfo
@@ -0,0 +1,13 @@
+TIMESTAMP = 1681001995
+SHA256 (linux-firmware/rtw89fw/rtw89/rtw8852a_fw.bin?h=20230310) = c3dc625eefc631280e3e3359514a71ecb99c5c6a3bc768f127e8e00d8f26db85
+SIZE (linux-firmware/rtw89fw/rtw89/rtw8852a_fw.bin?h=20230310) = 1423232
+SHA256 (linux-firmware/rtw89fw/rtw89/rtw8852b_fw.bin?h=20230310) = da3731580a9f9280ea5e4d91e98314381bb6c310c8043d30ee5770b2faa856fe
+SIZE (linux-firmware/rtw89fw/rtw89/rtw8852b_fw.bin?h=20230310) = 1188488
+SHA256 (linux-firmware/rtw89fw/rtw89/rtw8852c_fw.bin?h=20230310) = 256c0a1bab637b22cae529ada70892d10f65a680a240a57d946a4d96980e4b12
+SIZE (linux-firmware/rtw89fw/rtw89/rtw8852c_fw.bin?h=20230310) = 1532656
+SHA256 (linux-firmware/rtw89fw/LICENCE.rtlwifi_firmware.txt?h=20230310) = a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e
+SIZE (linux-firmware/rtw89fw/LICENCE.rtlwifi_firmware.txt?h=20230310) = 2115
+SHA256 (linux-firmware/rtw89fw/WHENCE?h=20230310) = 866f14018cd82a4465cd13a278bec2f0750ca3e5b03c34082a16458ebd464d64
+SIZE (linux-firmware/rtw89fw/WHENCE?h=20230310) = 203894
+SHA256 (linux-firmware/rtw89fw/modules_rtw89fw_20230310.tar.gz) = 12989358e849dc910ff4a5ec839f02a8c238d68374536e74ae75a97f8de9bee5
+SIZE (linux-firmware/rtw89fw/modules_rtw89fw_20230310.tar.gz) = 9728
diff --git a/net/wifi-firmware-rtw89-kmod/pkg-descr b/net/wifi-firmware-rtw89-kmod/pkg-descr
new file mode 100644
index 000000000000..1e5d12c43e58
--- /dev/null
+++ b/net/wifi-firmware-rtw89-kmod/pkg-descr
@@ -0,0 +1,6 @@
+Firmware files for Realtek WiFi NICs supported by the rtw89 driver.
+
+Currently supported chipsets:
+- 8852a
+- 8852b
+- 8852c