From 8603b7643b9025bf88dd55165ec808c4cea144e3 Mon Sep 17 00:00:00 2001 From: Krzysztof Kozlowski Date: Thu, 5 Jul 2018 20:58:12 +0200 Subject: kernel_wireless_regdb: Add class for embedding regulatory data into older kernel Linux 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. Signed-off-by: Krzysztof Kozlowski Signed-off-by: Khem Raj --- .../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 diff --git a/meta-networking/classes/kernel_wireless_regdb.bbclass b/meta-networking/classes/kernel_wireless_regdb.bbclass new file mode 100644 index 0000000000..1238172bd4 --- /dev/null +++ b/meta-networking/classes/kernel_wireless_regdb.bbclass @@ -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 diff --git a/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.05.31.bb b/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.05.31.bb index 2ae9e85427..d1c8d56759 100644 --- a/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.05.31.bb +++ b/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.05.31.bb @@ -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" -- cgit 1.2.3-korg