Add static/embedded wireless regulatory data
v5 cover Add static/embedded wireless regulatory data
Hi,
Changes since v4:
1. Extend kernel_wireless_regdb.bbclass description (suggested by Khem Raj).
2. Use '-D' for install (suggested by Khem Raj).
Changes since v3:
1. Re-order patches, start with version bump.
2. Add patch 2/3 for new kernel (since v4.15 embedding regulatory data has changed).
Changes since v2:
1. Rebase on sumo.
2. Fix task order - run do_kernel_add_regdb task after do_configure.
Changes since v1:
1. Remove debugging echo.
Best regards,
Krzysztof
Krzysztof Kozlowski (3):
wireless-regdb: Bump version to latest upstream 2018.05.31
wireless-regdb: Add wireless-regdb-static package with static
regulatory data
kernel_wireless_regdb: Add class for embedding regulatory data into
older kernel
.../classes/kernel_wireless_regdb.bbclass | 20 +++++++++++ .../wireless-regdb/wireless-regdb_2016.06.10.bb | 20 ----------- .../wireless-regdb/wireless-regdb_2018.05.31.bb | 42 ++++++++++++++++++++++ 3 files changed, 62 insertions(+), 20 deletions(-) create mode 100644 meta-networking/classes/kernel_wireless_regdb.bbclass delete mode 100644 meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2016.06.10.bb create mode 100644 meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.05.31.bb
Signature · 1 line
2.14.1
PATCH v5 1/3 wireless-regdb: Bump version to latest upstream 2018.05.31
Bump the wireless-regdb recipe to use newest wireless regulatory database.
---
.../{wireless-regdb_2016.06.10.bb => wireless-regdb_2018.05.31.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-connectivity/wireless-regdb/{wireless-regdb_2016.06.10.bb => wireless-regdb_2018.05.31.bb} (82%)meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.05.31.bb renamed from meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2016.06.10.bb +2 -2
@@ -5,8 +5,8 @@ LICENSE = "ISC" LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c" SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz" -SRC_URI[md5sum] = "d282cce92b6e692e8673e2bd97adf33b" -SRC_URI[sha256sum] = "cfedf1c3521b3c8f32602f25ed796e96e687c3441a00e7c050fedf7fd4f1b8b7" +SRC_URI[md5sum] = "0cbbdc21186c76cf58aba01b03f3dc5b" +SRC_URI[sha256sum] = "e1dfbc3b97771373077f430c3c05082fae883145b37db5b2cfd12c56676fbe7b" inherit bin_package
Signature · 1 line
2.14.1
PATCH v5 2/3 wireless-regdb: Add wireless-regdb-static package with static regulatory data
In reply to Krzysztof KozlowskiSmall embedded systems might:
1. Want to get rid of daemons as much as possible (therefore be built without CRDA),
2. Not receive user-space incremental updates but an entire system upgrade (with kernel).
Linux kernel since v4.15 allows loading static regulatory data from /lib/firmware/regulatory.db.
Add additional package to wireless-regdb recipe which provides such static data.
--- .../wireless-regdb/wireless-regdb_2018.05.31.bb | 13 +++++++++++++ 1 file changed, 13 insertions(+)
meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.05.31.bb +13 -0
@@ -15,6 +15,19 @@ do_install() { install -d -m0755 ${D}${sysconfdir}/wireless-regdb/pubkeys install -m 0644 regulatory.bin ${D}${libdir}/crda/regulatory.bin install -m 0644 sforshee.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/sforshee.key.pub.pem + + install -m 0644 -D regulatory.db ${D}${nonarch_base_libdir}/firmware/regulatory.db + install -m 0644 regulatory.db.p7s ${D}${nonarch_base_libdir}/firmware/regulatory.db.p7s } +# Install static regulatory DB in /lib/firmware for kernel to load. +# This requires Linux kernel >= v4.15. +PACKAGES =+ "${PN}-static" +RCONFLICTS_${PN} = "${PN}-static" + +FILES_${PN}-static = " \ + ${nonarch_base_libdir}/firmware/regulatory.db \ + ${nonarch_base_libdir}/firmware/regulatory.db.p7s \ +" + RSUGGESTS_${PN} = "crda"
Signature · 1 line
2.14.1
PATCH v5 3/3 kernel_wireless_regdb: Add class for embedding regulatory data into older kernel
In reply to Krzysztof KozlowskiLinux kernels before v4.15, allowed to be compiled with static regulatory database if it was put under net/wireless/db.txt.
Add kernel_wireless_regdb class which allows in such cases to embed the wireless regulatory database directly in the Linux kernel during build process.
Usage:
1. The class should be inherited by kernel recipe (e.g. in linux-yocto_%.bbappend).
2. For Linux kernels up to v4.14, build kernel with CONFIG_EXPERT and CONFIG_CFG80211_INTERNAL_REGDB.
--- .../classes/kernel_wireless_regdb.bbclass | 20 ++++++++++++++++++++ .../wireless-regdb/wireless-regdb_2018.05.31.bb | 9 +++++++++ 2 files changed, 29 insertions(+) create mode 100644 meta-networking/classes/kernel_wireless_regdb.bbclass
meta-networking/classes/kernel_wireless_regdb.bbclass new file +20 -0
@@ -0,0 +1,20 @@ +# Linux kernels before v4.15, allowed to be compiled with static +# regulatory database if it was put under net/wireless/db.txt. +# +# This class copies the regulatory plaintext database to kernel sources before +# compiling. +# +# Usage: +# 1. The class should be inherited by kernel recipe (e.g. in +# linux-yocto_%.bbappend). +# 2. For Linux kernels up to v4.14, build kernel with CONFIG_EXPERT and +# CONFIG_CFG80211_INTERNAL_REGDB. + +DEPENDS += "wireless-regdb-native" + +SRCTREECOVEREDTASKS += "do_kernel_add_regdb" +do_kernel_add_regdb() { + cp ${STAGING_LIBDIR_NATIVE}/crda/db.txt ${S}/net/wireless/db.txt +} +do_kernel_add_regdb[dirs] = "${S}" +addtask kernel_add_regdb before do_build after do_configure
meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.05.31.bb +9 -0
@@ -22,6 +22,7 @@ do_install() { # Install static regulatory DB in /lib/firmware for kernel to load. # This requires Linux kernel >= v4.15. +# For kernel <= v4.14, inherit the kernel_wireless_regdb.bbclass in kernel's recipe. PACKAGES =+ "${PN}-static" RCONFLICTS_${PN} = "${PN}-static"
@@ -30,4 +31,12 @@ FILES_${PN}-static = " \ ${nonarch_base_libdir}/firmware/regulatory.db.p7s \ " +# Native users might want to use the source of regulatory DB. +# This is for example used by Linux kernel <= v4.14 and kernel_wireless_regdb.bbclass. +do_install_append_class-native() { + install -m 0644 -D db.txt ${D}${libdir}/crda/db.txt +} + RSUGGESTS_${PN} = "crda" + +BBCLASSEXTEND = "native"
Signature · 1 line
2.14.1