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
This commit is contained in:
Bjoern A. Zeeb 2023-04-18 14:30:20 +00:00
parent 6c92544d7c
commit 3c4ba5f554
7 changed files with 317 additions and 0 deletions

100
share/man/man4/mt7915.4 Normal file
View File

@ -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 .

100
share/man/man4/mt7921.4 Normal file
View File

@ -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 .

View File

@ -0,0 +1,7 @@
# $FreeBSD$
SUBDIR= core
SUBDIR+= mt7915
SUBDIR+= mt7921
.include <bsd.subdir.mk>

View File

@ -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

View File

@ -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 <bsd.kmod.mk>

View File

@ -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 <bsd.kmod.mk>

View File

@ -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 <bsd.kmod.mk>