mirror of
https://github.com/shenmintao/aic8800d80.git
synced 2026-09-26 17:44:16 +00:00
27af5ad added the CFG80211_VERSION make variable for OpenWrt builds that
use a newer mac80211 backport than the target kernel, but it is only
described in a Makefile comment. Document how to pass it from an OpenWrt
package Makefile, link the notes from the installation steps, and add
the build script and the kernel/backports combinations verified for
issue #94.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
68 lines
2.8 KiB
Markdown
68 lines
2.8 KiB
Markdown
# Building with OpenWrt backports
|
|
|
|
OpenWrt's target kernel and wireless stack can have different versions.
|
|
For example, [issue #94](https://github.com/shenmintao/aic8800d80/issues/94)
|
|
uses Linux **6.12.94** with **backports 6.18.26** on OpenWrt 25.12.5.
|
|
The Ubuntu build host's kernel version is not used to select these APIs.
|
|
|
|
## Package Makefile
|
|
|
|
Pass `CFG80211_VERSION=6.18.26` to the kernel make invocation for that
|
|
combination. Use the `PKG_VERSION` from your OpenWrt
|
|
`package/kernel/mac80211/Makefile`, in `major.minor.patch` format. Keep the
|
|
backports include paths and symbol versions from the same build:
|
|
|
|
```make
|
|
NOSTDINC_FLAGS := \
|
|
$(KERNEL_NOSTDINC_FLAGS) \
|
|
-I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \
|
|
-I$(STAGING_DIR)/usr/include/mac80211-backport \
|
|
-I$(STAGING_DIR)/usr/include/mac80211/uapi \
|
|
-I$(STAGING_DIR)/usr/include/mac80211 \
|
|
-include backport/backport.h
|
|
|
|
define Build/Compile
|
|
+$(KERNEL_MAKE) $(PKG_JOBS) \
|
|
M="$(PKG_BUILD_DIR)/drivers/aic8800" \
|
|
KBUILD_EXTRA_SYMBOLS="$(LINUX_DIR)/../symvers/mac80211.symvers" \
|
|
NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
|
|
CFG80211_VERSION=6.18.26 \
|
|
modules
|
|
endef
|
|
```
|
|
|
|
The package must depend on `kmod-cfg80211` so its headers and symbol versions
|
|
are staged before this driver is built. Keep any additional dependencies,
|
|
firmware installation rules and module packaging rules your device needs.
|
|
Update the package's pinned source revision to one containing this fix, or
|
|
apply the fix as an OpenWrt package patch, then clean and rebuild the package:
|
|
|
|
```sh
|
|
make package/kernel/aic8800d80/clean
|
|
make package/kernel/aic8800d80/compile V=sc -j1
|
|
```
|
|
|
|
Changing `CFG80211_VERSION` alone does not update the driver source or the
|
|
wireless headers. The value must match the actual wireless stack; do not set
|
|
it to the host kernel version or redefine `LINUX_VERSION_CODE`.
|
|
|
|
## Compatibility scope
|
|
|
|
The override selects the wireless API changes since Linux 6.12, including
|
|
monitor-channel callbacks, radio/link arguments, radar notifications and
|
|
newer cfg80211 callbacks. Timer, USB, memory-management and module namespace
|
|
checks continue to use the target kernel version. Older target kernels with
|
|
newer backports may need additional wireless API adaptations.
|
|
|
|
Leave `CFG80211_VERSION` unset when building against the kernel's own wireless
|
|
stack, as on a regular Ubuntu/Debian installation. The driver then uses the
|
|
kernel version as before. Hardware revision still determines whether to use
|
|
`main` or `legacy-mcu1`; a wireless API mismatch does not change that choice.
|
|
|
|
The feeds/Kconfig duplicate definitions and recursive dependencies also
|
|
reported in issue #94 belong to the OpenWrt build configuration and require
|
|
separate investigation.
|
|
|
|
See the [build regression recipe](tests/openwrt-backports/README.md) for
|
|
the tested kernel/backports combinations and a script to repeat the build.
|