From 3c4ba5f55438f7afd4f4b0b56f88f2bb505fd6a6 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Tue, 18 Apr 2023 14:30:20 +0000 Subject: [PATCH] mt76: add module build framework and man pages Add framework to build if_mt7915 and if_mt7921 with LinuxKPI as well as initial man pages for the two mt76 chipset drivers. MFC after: 2 months --- share/man/man4/mt7915.4 | 100 +++++++++++++++++++++++++++++++ share/man/man4/mt7921.4 | 100 +++++++++++++++++++++++++++++++ sys/modules/mt76/Makefile | 7 +++ sys/modules/mt76/Makefile.inc | 30 ++++++++++ sys/modules/mt76/core/Makefile | 26 ++++++++ sys/modules/mt76/mt7915/Makefile | 24 ++++++++ sys/modules/mt76/mt7921/Makefile | 30 ++++++++++ 7 files changed, 317 insertions(+) create mode 100644 share/man/man4/mt7915.4 create mode 100644 share/man/man4/mt7921.4 create mode 100644 sys/modules/mt76/Makefile create mode 100644 sys/modules/mt76/Makefile.inc create mode 100644 sys/modules/mt76/core/Makefile create mode 100644 sys/modules/mt76/mt7915/Makefile create mode 100644 sys/modules/mt76/mt7921/Makefile diff --git a/share/man/man4/mt7915.4 b/share/man/man4/mt7915.4 new file mode 100644 index 000000000000..0bb82959d488 --- /dev/null +++ b/share/man/man4/mt7915.4 @@ -0,0 +1,100 @@ +.\"- +.\" Copyright (c) 2023 Bjoern A. Zeeb +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd April 18, 2023 +.Dt MT7915 4 +.Os +.Sh NAME +.Nm mt7915 +.Nd MediaTek IEEE 802.11ax wireless network driver +.Sh SYNOPSIS +The driver will auto-load without any user interaction using +.Xr devmatch 8 +if enabled in +.Xr rc.conf 5 . +.Pp +Only if auto-loading is explicitly disabled, place the following +lines in +.Xr rc.conf 5 +to manually load the driver as a module at boot time: +.Bd -literal -offset indent +kld_list="${kld_list} if_mt7915" +.Ed +.Pp +The driver should automatically load any +firmware needed for the particular chipset. +.Pp +It is discouraged to load the driver from +.Xr loader 8 . +.Sh DESCRIPTION +The +.Nm +driver is derived from MediaTek's Linux mt76 driver and provides support for +the following chipsets: +.Pp +.Bl -tag -width Ds -offset indent -compact +.It MediaTek MT7915E (PCIe) +.El +.Pp +This driver requires firmware to be loaded before it will work. +The package +.Pa wifi-firmware-mt76-kmod +from the +.Pa ports/net/wifi-firmware-mt76-kmod +port needs to be installed before the driver is loaded. +Otherwise no +.Xr wlan 4 +interface can be created using +.Xr ifconfig 8 . +.Pp +The driver uses the +.\" No LinuxKPI man pages so no .Xr here. +.Em linuxkpi_wlan +and +.Em linuxkpi +compat framework to bridge between the Linux and +native +.Fx +driver code as well as to the native +.Xr net80211 4 +wireless stack. +.Pp +While +.Nm +supports all 802.11 a/b/g/n/ac and ax +the compatibility code currently only supports 802.11 a/b/g modes. +Support for 802.11 n/ac is to come. +.Sh BUGS +Certainly. +.Sh SEE ALSO +.Xr wlan 4 , +.Xr ifconfig 8 , +.Xr wpa_supplicant 8 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 14.0 . diff --git a/share/man/man4/mt7921.4 b/share/man/man4/mt7921.4 new file mode 100644 index 000000000000..3cafa52779dd --- /dev/null +++ b/share/man/man4/mt7921.4 @@ -0,0 +1,100 @@ +.\"- +.\" Copyright (c) 2023 Bjoern A. Zeeb +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd April 18, 2023 +.Dt MT7921 4 +.Os +.Sh NAME +.Nm mt7921 +.Nd MediaTek IEEE 802.11ax wireless network driver +.Sh SYNOPSIS +The driver will auto-load without any user interaction using +.Xr devmatch 8 +if enabled in +.Xr rc.conf 5 . +.Pp +Only if auto-loading is explicitly disabled, place the following +lines in +.Xr rc.conf 5 +to manually load the driver as a module at boot time: +.Bd -literal -offset indent +kld_list="${kld_list} if_mt7921" +.Ed +.Pp +The driver should automatically load any +firmware needed for the particular chipset. +.Pp +It is discouraged to load the driver from +.Xr loader 8 . +.Sh DESCRIPTION +The +.Nm +driver is derived from MediaTek's Linux mt76 driver and provides support for +the following chipsets: +.Pp +.Bl -tag -width Ds -offset indent -compact +.It MediaTek MT7921E (PCIe) +.El +.Pp +This driver requires firmware to be loaded before it will work. +The package +.Pa wifi-firmware-mt76-kmod +from the +.Pa ports/net/wifi-firmware-mt76-kmod +port needs to be installed before the driver is loaded. +Otherwise no +.Xr wlan 4 +interface can be created using +.Xr ifconfig 8 . +.Pp +The driver uses the +.\" No LinuxKPI man pages so no .Xr here. +.Em linuxkpi_wlan +and +.Em linuxkpi +compat framework to bridge between the Linux and +native +.Fx +driver code as well as to the native +.Xr net80211 4 +wireless stack. +.Pp +While +.Nm +supports all 802.11 a/b/g/n/ac and ax +the compatibility code currently only supports 802.11 a/b/g modes. +Support for 802.11 n/ac is to come. +.Sh BUGS +Certainly. +.Sh SEE ALSO +.Xr wlan 4 , +.Xr ifconfig 8 , +.Xr wpa_supplicant 8 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 14.0 . diff --git a/sys/modules/mt76/Makefile b/sys/modules/mt76/Makefile new file mode 100644 index 000000000000..013219337952 --- /dev/null +++ b/sys/modules/mt76/Makefile @@ -0,0 +1,7 @@ +# $FreeBSD$ + +SUBDIR= core +SUBDIR+= mt7915 +SUBDIR+= mt7921 + +.include diff --git a/sys/modules/mt76/Makefile.inc b/sys/modules/mt76/Makefile.inc new file mode 100644 index 000000000000..5e3e05dab59c --- /dev/null +++ b/sys/modules/mt76/Makefile.inc @@ -0,0 +1,30 @@ +# $FreeBSD$ + +# Common information shared by all submodule builds. + +COMMONDIR= ${SRCTOP}/sys/contrib/dev/mediatek/mt76 + +.PATH: ${COMMONDIR} + +WITH_CONFIG_PM= 0 +WITH_DEBUGFS= 0 + +# Other +SRCS+= ${LINUXKPI_GENSRCS} +SRCS+= opt_wlan.h opt_inet6.h opt_inet.h + +# Helpful after fresh imports. +#CFLAGS+= -ferror-limit=0 + +.if defined(WITH_CONFIG_PM) && ${WITH_CONFIG_PM} > 0 +CFLAGS+= -DCONFIG_PM=${WITH_CONFIG_PM} +.endif + +.if defined(WITH_DEBUGFS) && ${WITH_DEBUGFS} > 0 +CFLAGS+= -DCONFIG_MAC80211_DEBUGFS=${WITH_DEBUGFS} +.endif + +CFLAGS+= -I${COMMONDIR} +CFLAGS+= ${LINUXKPI_INCLUDES} + +# end diff --git a/sys/modules/mt76/core/Makefile b/sys/modules/mt76/core/Makefile new file mode 100644 index 000000000000..52f5c1b20284 --- /dev/null +++ b/sys/modules/mt76/core/Makefile @@ -0,0 +1,26 @@ +# $FreeBSD$ + +KMOD= mt76_core + +# Basic stuff. +SRCS= mac80211.c mmio.c util.c dma.c eeprom.c tx.c agg-rx.c mcu.c +#SRCS+= trace.c + +# Bus stuff. +SRCS+= pci.c +#SRCS+= usb.c # usb_trace.c +#SRCS+= sdio.c sdio_txrx.c + +# Connac-Lib stuff. +SRCS+= mt76_connac_mac.c mt76_connac_mcu.c + +# MT76x02-Lib stuff (we don't need; that's for older chipsets not yet supported) + +.if defined(WITH_DEBUGFS) && ${WITH_DEBUGFS} > 0 +SRCS+= debugfs.c +.endif + +CFLAGS+= -DKBUILD_MODNAME='"mt76_core"' +CFLAGS+= -DCONFIG_MAC80211_DEBUGFS=${WITH_DEBUGFS} + +.include diff --git a/sys/modules/mt76/mt7915/Makefile b/sys/modules/mt76/mt7915/Makefile new file mode 100644 index 000000000000..d4bc68d53782 --- /dev/null +++ b/sys/modules/mt76/mt7915/Makefile @@ -0,0 +1,24 @@ +# $FreeBSD$ + +DEVDIR= ${SRCTOP}/sys/contrib/dev/mediatek/mt76/mt7915 + +.PATH: ${DEVDIR} + +KMOD= if_mt7915 + +# Common stuff. +SRCS= init.c main.c mac.c mcu.c mmio.c eeprom.c +SRCS+= pci.c dma.c + +# SOC+6E stuff. +#SRCS+= soc.c + +.if defined(WITH_DEBUGFS) && ${WITH_DEBUGFS} > 0 +SRCS+= debugfs.c +CFLAGS+= -DCONFIG_MT7915_DEBUGFS=${WITH_DEBUGFS} +.endif + +CFLAGS+= -DKBUILD_MODNAME='"mt7915"' +CFLAGS+= -I${DEVDIR} + +.include diff --git a/sys/modules/mt76/mt7921/Makefile b/sys/modules/mt76/mt7921/Makefile new file mode 100644 index 000000000000..25d5ef8e9da5 --- /dev/null +++ b/sys/modules/mt76/mt7921/Makefile @@ -0,0 +1,30 @@ +# $FreeBSD$ + +DEVDIR= ${SRCTOP}/sys/contrib/dev/mediatek/mt76/mt7921 + +.PATH: ${DEVDIR} + +KMOD= if_mt7921 + +# Common stuff. +SRCS= init.c main.c mac.c mcu.c +#SRCS+= trace.c + +# PCI stuff. +SRCS+= pci.c pci_mac.c pci_mcu.c dma.c + +# USB stuff. +#SRCS+= usb.c usb_mac.c + +# SDIO stuff. +#SRCS+= sdio.c sdio_mac.c sdio_mcu.c + +.if defined(WITH_DEBUGFS) && ${WITH_DEBUGFS} > 0 +SRCS+= debugfs.c +CFLAGS+= -DCONFIG_MT7921_DEBUGFS=${WITH_DEBUGFS} +.endif + +CFLAGS+= -DKBUILD_MODNAME='"mt7921"' +CFLAGS+= -I${DEVDIR} + +.include