diff --git a/Documentation/devicetree/bindings/staging/net/wireless/silabs,wfx.yaml b/Documentation/devicetree/bindings/net/wireless/silabs,wfx.yaml
similarity index 98%
rename from Documentation/devicetree/bindings/staging/net/wireless/silabs,wfx.yaml
rename to Documentation/devicetree/bindings/net/wireless/silabs,wfx.yaml
index 105725a127ab..f5a531738d93 100644
--- a/Documentation/devicetree/bindings/staging/net/wireless/silabs,wfx.yaml
+++ b/Documentation/devicetree/bindings/net/wireless/silabs,wfx.yaml
@@ -3,7 +3,7 @@
 %YAML 1.2
 ---
 
-$id: http://devicetree.org/schemas/staging/net/wireless/silabs,wfx.yaml#
+$id: http://devicetree.org/schemas/net/wireless/silabs,wfx.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Silicon Labs WFxxx devicetree bindings
diff --git a/MAINTAINERS b/MAINTAINERS
index 65227f6aabd0..d6a14f876c6c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -17652,8 +17652,8 @@ F:	drivers/platform/x86/touchscreen_dmi.c
 SILICON LABS WIRELESS DRIVERS (for WFxxx series)
 M:	Jérôme Pouiller <jerome.pouiller@silabs.com>
 S:	Supported
-F:	Documentation/devicetree/bindings/staging/net/wireless/silabs,wfx.yaml
-F:	drivers/staging/wfx/
+F:	Documentation/devicetree/bindings/net/wireless/silabs,wfx.yaml
+F:	drivers/net/wireless/silabs/wfx/
 
 SILICON MOTION SM712 FRAME BUFFER DRIVER
 M:	Sudip Mukherjee <sudipm.mukherjee@gmail.com>
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 7add2002ff4c..e78ff7af6517 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -31,6 +31,7 @@ source "drivers/net/wireless/microchip/Kconfig"
 source "drivers/net/wireless/ralink/Kconfig"
 source "drivers/net/wireless/realtek/Kconfig"
 source "drivers/net/wireless/rsi/Kconfig"
+source "drivers/net/wireless/silabs/Kconfig"
 source "drivers/net/wireless/st/Kconfig"
 source "drivers/net/wireless/ti/Kconfig"
 source "drivers/net/wireless/zydas/Kconfig"
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index 80b324499786..76885e5f0ea7 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -16,6 +16,7 @@ obj-$(CONFIG_WLAN_VENDOR_MICROCHIP) += microchip/
 obj-$(CONFIG_WLAN_VENDOR_RALINK) += ralink/
 obj-$(CONFIG_WLAN_VENDOR_REALTEK) += realtek/
 obj-$(CONFIG_WLAN_VENDOR_RSI) += rsi/
+obj-$(CONFIG_WLAN_VENDOR_SILABS) += silabs/
 obj-$(CONFIG_WLAN_VENDOR_ST) += st/
 obj-$(CONFIG_WLAN_VENDOR_TI) += ti/
 obj-$(CONFIG_WLAN_VENDOR_ZYDAS) += zydas/
diff --git a/drivers/net/wireless/silabs/Kconfig b/drivers/net/wireless/silabs/Kconfig
new file mode 100644
index 000000000000..6262a799bf36
--- /dev/null
+++ b/drivers/net/wireless/silabs/Kconfig
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: GPL-2.0
+
+config WLAN_VENDOR_SILABS
+	bool "Silicon Laboratories devices"
+	default y
+	help
+	  If you have a wireless card belonging to this class, say Y.
+
+	  Note that the answer to this question doesn't directly affect the
+	  kernel: saying N will just cause the configurator to skip all the
+	  questions about these cards. If you say Y, you will be asked for
+	  your specific card in the following questions.
+
+if WLAN_VENDOR_SILABS
+
+source "drivers/net/wireless/silabs/wfx/Kconfig"
+
+endif # WLAN_VENDOR_SILABS
diff --git a/drivers/net/wireless/silabs/Makefile b/drivers/net/wireless/silabs/Makefile
new file mode 100644
index 000000000000..c2263ee21006
--- /dev/null
+++ b/drivers/net/wireless/silabs/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_WFX)      += wfx/
diff --git a/drivers/staging/wfx/Kconfig b/drivers/net/wireless/silabs/wfx/Kconfig
similarity index 100%
rename from drivers/staging/wfx/Kconfig
rename to drivers/net/wireless/silabs/wfx/Kconfig
diff --git a/drivers/staging/wfx/Makefile b/drivers/net/wireless/silabs/wfx/Makefile
similarity index 100%
rename from drivers/staging/wfx/Makefile
rename to drivers/net/wireless/silabs/wfx/Makefile
diff --git a/drivers/staging/wfx/bh.c b/drivers/net/wireless/silabs/wfx/bh.c
similarity index 100%
rename from drivers/staging/wfx/bh.c
rename to drivers/net/wireless/silabs/wfx/bh.c
diff --git a/drivers/staging/wfx/bh.h b/drivers/net/wireless/silabs/wfx/bh.h
similarity index 100%
rename from drivers/staging/wfx/bh.h
rename to drivers/net/wireless/silabs/wfx/bh.h
diff --git a/drivers/staging/wfx/bus.h b/drivers/net/wireless/silabs/wfx/bus.h
similarity index 100%
rename from drivers/staging/wfx/bus.h
rename to drivers/net/wireless/silabs/wfx/bus.h
diff --git a/drivers/staging/wfx/bus_sdio.c b/drivers/net/wireless/silabs/wfx/bus_sdio.c
similarity index 100%
rename from drivers/staging/wfx/bus_sdio.c
rename to drivers/net/wireless/silabs/wfx/bus_sdio.c
diff --git a/drivers/staging/wfx/bus_spi.c b/drivers/net/wireless/silabs/wfx/bus_spi.c
similarity index 100%
rename from drivers/staging/wfx/bus_spi.c
rename to drivers/net/wireless/silabs/wfx/bus_spi.c
diff --git a/drivers/staging/wfx/data_rx.c b/drivers/net/wireless/silabs/wfx/data_rx.c
similarity index 100%
rename from drivers/staging/wfx/data_rx.c
rename to drivers/net/wireless/silabs/wfx/data_rx.c
diff --git a/drivers/staging/wfx/data_rx.h b/drivers/net/wireless/silabs/wfx/data_rx.h
similarity index 100%
rename from drivers/staging/wfx/data_rx.h
rename to drivers/net/wireless/silabs/wfx/data_rx.h
diff --git a/drivers/staging/wfx/data_tx.c b/drivers/net/wireless/silabs/wfx/data_tx.c
similarity index 100%
rename from drivers/staging/wfx/data_tx.c
rename to drivers/net/wireless/silabs/wfx/data_tx.c
diff --git a/drivers/staging/wfx/data_tx.h b/drivers/net/wireless/silabs/wfx/data_tx.h
similarity index 100%
rename from drivers/staging/wfx/data_tx.h
rename to drivers/net/wireless/silabs/wfx/data_tx.h
diff --git a/drivers/staging/wfx/debug.c b/drivers/net/wireless/silabs/wfx/debug.c
similarity index 100%
rename from drivers/staging/wfx/debug.c
rename to drivers/net/wireless/silabs/wfx/debug.c
diff --git a/drivers/staging/wfx/debug.h b/drivers/net/wireless/silabs/wfx/debug.h
similarity index 100%
rename from drivers/staging/wfx/debug.h
rename to drivers/net/wireless/silabs/wfx/debug.h
diff --git a/drivers/staging/wfx/fwio.c b/drivers/net/wireless/silabs/wfx/fwio.c
similarity index 100%
rename from drivers/staging/wfx/fwio.c
rename to drivers/net/wireless/silabs/wfx/fwio.c
diff --git a/drivers/staging/wfx/fwio.h b/drivers/net/wireless/silabs/wfx/fwio.h
similarity index 100%
rename from drivers/staging/wfx/fwio.h
rename to drivers/net/wireless/silabs/wfx/fwio.h
diff --git a/drivers/staging/wfx/hif_api_cmd.h b/drivers/net/wireless/silabs/wfx/hif_api_cmd.h
similarity index 100%
rename from drivers/staging/wfx/hif_api_cmd.h
rename to drivers/net/wireless/silabs/wfx/hif_api_cmd.h
diff --git a/drivers/staging/wfx/hif_api_general.h b/drivers/net/wireless/silabs/wfx/hif_api_general.h
similarity index 100%
rename from drivers/staging/wfx/hif_api_general.h
rename to drivers/net/wireless/silabs/wfx/hif_api_general.h
diff --git a/drivers/staging/wfx/hif_api_mib.h b/drivers/net/wireless/silabs/wfx/hif_api_mib.h
similarity index 100%
rename from drivers/staging/wfx/hif_api_mib.h
rename to drivers/net/wireless/silabs/wfx/hif_api_mib.h
diff --git a/drivers/staging/wfx/hif_rx.c b/drivers/net/wireless/silabs/wfx/hif_rx.c
similarity index 100%
rename from drivers/staging/wfx/hif_rx.c
rename to drivers/net/wireless/silabs/wfx/hif_rx.c
diff --git a/drivers/staging/wfx/hif_rx.h b/drivers/net/wireless/silabs/wfx/hif_rx.h
similarity index 100%
rename from drivers/staging/wfx/hif_rx.h
rename to drivers/net/wireless/silabs/wfx/hif_rx.h
diff --git a/drivers/staging/wfx/hif_tx.c b/drivers/net/wireless/silabs/wfx/hif_tx.c
similarity index 100%
rename from drivers/staging/wfx/hif_tx.c
rename to drivers/net/wireless/silabs/wfx/hif_tx.c
diff --git a/drivers/staging/wfx/hif_tx.h b/drivers/net/wireless/silabs/wfx/hif_tx.h
similarity index 100%
rename from drivers/staging/wfx/hif_tx.h
rename to drivers/net/wireless/silabs/wfx/hif_tx.h
diff --git a/drivers/staging/wfx/hif_tx_mib.c b/drivers/net/wireless/silabs/wfx/hif_tx_mib.c
similarity index 100%
rename from drivers/staging/wfx/hif_tx_mib.c
rename to drivers/net/wireless/silabs/wfx/hif_tx_mib.c
diff --git a/drivers/staging/wfx/hif_tx_mib.h b/drivers/net/wireless/silabs/wfx/hif_tx_mib.h
similarity index 100%
rename from drivers/staging/wfx/hif_tx_mib.h
rename to drivers/net/wireless/silabs/wfx/hif_tx_mib.h
diff --git a/drivers/staging/wfx/hwio.c b/drivers/net/wireless/silabs/wfx/hwio.c
similarity index 100%
rename from drivers/staging/wfx/hwio.c
rename to drivers/net/wireless/silabs/wfx/hwio.c
diff --git a/drivers/staging/wfx/hwio.h b/drivers/net/wireless/silabs/wfx/hwio.h
similarity index 100%
rename from drivers/staging/wfx/hwio.h
rename to drivers/net/wireless/silabs/wfx/hwio.h
diff --git a/drivers/staging/wfx/key.c b/drivers/net/wireless/silabs/wfx/key.c
similarity index 100%
rename from drivers/staging/wfx/key.c
rename to drivers/net/wireless/silabs/wfx/key.c
diff --git a/drivers/staging/wfx/key.h b/drivers/net/wireless/silabs/wfx/key.h
similarity index 100%
rename from drivers/staging/wfx/key.h
rename to drivers/net/wireless/silabs/wfx/key.h
diff --git a/drivers/staging/wfx/main.c b/drivers/net/wireless/silabs/wfx/main.c
similarity index 100%
rename from drivers/staging/wfx/main.c
rename to drivers/net/wireless/silabs/wfx/main.c
diff --git a/drivers/staging/wfx/main.h b/drivers/net/wireless/silabs/wfx/main.h
similarity index 100%
rename from drivers/staging/wfx/main.h
rename to drivers/net/wireless/silabs/wfx/main.h
diff --git a/drivers/staging/wfx/queue.c b/drivers/net/wireless/silabs/wfx/queue.c
similarity index 100%
rename from drivers/staging/wfx/queue.c
rename to drivers/net/wireless/silabs/wfx/queue.c
diff --git a/drivers/staging/wfx/queue.h b/drivers/net/wireless/silabs/wfx/queue.h
similarity index 100%
rename from drivers/staging/wfx/queue.h
rename to drivers/net/wireless/silabs/wfx/queue.h
diff --git a/drivers/staging/wfx/scan.c b/drivers/net/wireless/silabs/wfx/scan.c
similarity index 100%
rename from drivers/staging/wfx/scan.c
rename to drivers/net/wireless/silabs/wfx/scan.c
diff --git a/drivers/staging/wfx/scan.h b/drivers/net/wireless/silabs/wfx/scan.h
similarity index 100%
rename from drivers/staging/wfx/scan.h
rename to drivers/net/wireless/silabs/wfx/scan.h
diff --git a/drivers/staging/wfx/sta.c b/drivers/net/wireless/silabs/wfx/sta.c
similarity index 100%
rename from drivers/staging/wfx/sta.c
rename to drivers/net/wireless/silabs/wfx/sta.c
diff --git a/drivers/staging/wfx/sta.h b/drivers/net/wireless/silabs/wfx/sta.h
similarity index 100%
rename from drivers/staging/wfx/sta.h
rename to drivers/net/wireless/silabs/wfx/sta.h
diff --git a/drivers/staging/wfx/traces.h b/drivers/net/wireless/silabs/wfx/traces.h
similarity index 100%
rename from drivers/staging/wfx/traces.h
rename to drivers/net/wireless/silabs/wfx/traces.h
diff --git a/drivers/staging/wfx/wfx.h b/drivers/net/wireless/silabs/wfx/wfx.h
similarity index 100%
rename from drivers/staging/wfx/wfx.h
rename to drivers/net/wireless/silabs/wfx/wfx.h
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index d1ce500c0319..1cface7e28c2 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -90,6 +90,5 @@ source "drivers/staging/fieldbus/Kconfig"
 
 source "drivers/staging/qlge/Kconfig"
 
-source "drivers/staging/wfx/Kconfig"
 
 endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 82e912a7586f..6a04e9b423f3 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -35,4 +35,3 @@ obj-$(CONFIG_SOC_MT7621)	+= mt7621-dts/
 obj-$(CONFIG_XIL_AXIS_FIFO)	+= axis-fifo/
 obj-$(CONFIG_FIELDBUS_DEV)     += fieldbus/
 obj-$(CONFIG_QLGE)		+= qlge/
-obj-$(CONFIG_WFX)		+= wfx/
diff --git a/drivers/staging/wfx/TODO b/drivers/staging/wfx/TODO
deleted file mode 100644
index 1b4bc2af94b6..000000000000
--- a/drivers/staging/wfx/TODO
+++ /dev/null
@@ -1,6 +0,0 @@
-This is a list of things that need to be done to get this driver out of the
-staging directory.
-
-  - As suggested by Felix, rate control could be improved following this idea:
-        https://lore.kernel.org/lkml/3099559.gv3Q75KnN1@pc-42/
-
