From 7493637f2e2fa429d9c8712218de1154f0cbf93a Mon Sep 17 00:00:00 2001 From: Isaac Hermida Date: Thu, 29 Sep 2022 12:40:15 +0200 Subject: [PATCH] kernel-module-qualcomm: revert to driver qcacld-2.0 Verbatim copy of the recipes in DEY-3.2, using command: git restore -s dey-3.2/master -- meta-digi-arm/recipes-kernel/kernel-module-qualcomm Signed-off-by: Isaac Hermida Signed-off-by: Javier Viguera --- .../kernel-module-qualcomm.bb | 110 +++++-------- ...n-fix-buid-issue-for-Rome-SDIO-inter.patch | 115 -------------- ...cacld-3.0-disable-warnings-as-errors.patch | 25 --- ...n-fix-build-issue-enabling-debug-for.patch | 49 ------ ...2-qcacld-3.0-support-ROME-SDIO-build.patch | 34 ---- ...n-fix-panic_notifier_list-undeclared.patch | 28 ---- ...ry-to-get-MACs-from-device-tree-entr.patch | 148 ------------------ ...-cmn-fix-sdio-error-on-unload-driver.patch | 29 ---- ...roper-check-to-include-qcom-iommu-ut.patch | 27 ---- ...dule-parameter-to-enable-p2p-support.patch | 51 ------ ...-3.0-use-cfg80211_register_netdevice.patch | 47 ------ ...07-qcacld-3.0-use-ndo_siocdevprivate.patch | 84 ---------- .../kernel-module-qualcomm/81-qcom-wifi.rules | 4 +- .../kernel-module-qualcomm/qualcomm.sh | 73 +++++++++ 14 files changed, 111 insertions(+), 713 deletions(-) delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0001-qca-wifi-host-cmn-fix-buid-issue-for-Rome-SDIO-inter.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0001-qcacld-3.0-disable-warnings-as-errors.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0002-qca-wifi-host-cmn-fix-build-issue-enabling-debug-for.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0002-qcacld-3.0-support-ROME-SDIO-build.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0003-qca-wifi-host-cmn-fix-panic_notifier_list-undeclared.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0003-qcacld-3.0-cfg-try-to-get-MACs-from-device-tree-entr.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0004-qca-wifi-host-cmn-fix-sdio-error-on-unload-driver.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0004-qcacld-3.0-Add-proper-check-to-include-qcom-iommu-ut.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0005-qcacld-3.0-module-parameter-to-enable-p2p-support.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0006-qcacld-3.0-use-cfg80211_register_netdevice.patch delete mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0007-qcacld-3.0-use-ndo_siocdevprivate.patch create mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb index 1aa06625c..7240a332d 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb @@ -1,122 +1,84 @@ -# Copyright (C) 2016-2022 Digi International. +# Copyright (C) 2016-2021 Digi International. SUMMARY = "Qualcomm's wireless driver for qca65xx" -DESCRIPTION = "qcacld-3.0 module" +DESCRIPTION = "qcacld-2.0 module" LICENSE = "ISC" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/ISC;md5=f3b90e78ea0cffb20bf5cca7947a896d" # Reference Qualcomm tag/version -PV = "v5.2.0.237G" +PV = "v4.0.11.213X" -QCACLD_SRCBRANCH = "wlan-cld3.driver.lnx.2.0.r51-rel" -QCA_WIFI_HOST_CMN_SRCBRANCH = "wlan-cmn.driver.lnx.2.0.r51-rel" -FW_API_SRCBRANCH = "wlan-api.lnx.1.0.c21.2" -MDM_INIT_SRCBRANCH = "wlan-tools.lnx.1.0.c21.2" +SRCBRANCH = "qca65X4/master" +SRCREV = "${AUTOREV}" + +QCOM_GIT_URI = "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_MTK_GIT}/linux/qcacld-2.0.git;protocol=ssh', '${DIGI_GITHUB_GIT}/qcacld-2.0.git;protocol=https', d)}" SRC_URI = " \ - git://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0.git;protocol=https;branch=${QCACLD_SRCBRANCH};name=qcacld \ - git://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/qca-wifi-host-cmn.git;protocol=https;branch=${QCA_WIFI_HOST_CMN_SRCBRANCH};destsuffix=qca-wifi-host-cmn;name=qca-wifi-host \ - git://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/fw-api.git;protocol=https;branch=${FW_API_SRCBRANCH};destsuffix=fw-api;name=fw-api \ - git://git.codelinaro.org/clo/le/qcom-opensource/mdm-init.git;protocol=https;branch=${MDM_INIT_SRCBRANCH};destsuffix=mdm-init;name=mdm-init \ - file://0001-qcacld-3.0-disable-warnings-as-errors.patch \ - file://0002-qcacld-3.0-support-ROME-SDIO-build.patch \ - file://0003-qcacld-3.0-cfg-try-to-get-MACs-from-device-tree-entr.patch \ - file://0004-qcacld-3.0-Add-proper-check-to-include-qcom-iommu-ut.patch \ - file://0005-qcacld-3.0-module-parameter-to-enable-p2p-support.patch \ - file://0006-qcacld-3.0-use-cfg80211_register_netdevice.patch \ - file://0007-qcacld-3.0-use-ndo_siocdevprivate.patch \ - file://0001-qca-wifi-host-cmn-fix-buid-issue-for-Rome-SDIO-inter.patch;patchdir=${WORKDIR}/qca-wifi-host-cmn; \ - file://0002-qca-wifi-host-cmn-fix-build-issue-enabling-debug-for.patch;patchdir=${WORKDIR}/qca-wifi-host-cmn; \ - file://0003-qca-wifi-host-cmn-fix-panic_notifier_list-undeclared.patch;patchdir=${WORKDIR}/qca-wifi-host-cmn; \ - file://0004-qca-wifi-host-cmn-fix-sdio-error-on-unload-driver.patch;patchdir=${WORKDIR}/qca-wifi-host-cmn; \ + ${QCOM_GIT_URI};branch=${SRCBRANCH} \ " -# Tag 'CHSS.LNX_FSL.5.0-01200-QCA6574AUARMSDIOHZ' in all repos -SRCREV_qcacld = "f1dae2986ae58c68ea740e2c505be9c369547916" -SRCREV_qca-wifi-host = "ca5e999f4f692a45ae9974a7ad92726deaf7497f" -SRCREV_fw-api = "62b94874003ef7aced22bba1a076c1e4b5d5a9a9" -SRCREV_mdm-init = "3fb3bcb9f054eeeb1083bd4f6dbaf733061c5af3" - -inherit module - -DEPENDS = "virtual/kernel" - # Selects whether the interface is SDIO or PCI QUALCOMM_WIFI_INTERFACE ?= "sdio" -QUALCOMM_WIFI_INTERFACE:ccimx8x = "pci" +QUALCOMM_WIFI_INTERFACE_ccimx8x = "pci" -WLAN_CONFIG_INI = "${@oe.utils.conditional('QUALCOMM_WIFI_INTERFACE', 'sdio' , \ - 'QCA6574AU.LE.2.2.1_Rome_SDIO_qcacld-3.0.ini', \ - 'QCA6574AU.LE.2.2.1_Rome_PCIe_qcacld-3.0.ini', d)}" - -SRC_URI:append = " \ +SRC_URI_append = " \ file://81-qcom-wifi.rules \ + file://qualcomm.sh \ " FILES_SDIO = " \ file://modprobe-qualcomm.conf \ " -SRC_URI:append = "${@oe.utils.conditional('QUALCOMM_WIFI_INTERFACE', 'sdio' , '${FILES_SDIO}', '', d)}" +SRC_URI_append = "${@oe.utils.conditional('QUALCOMM_WIFI_INTERFACE', 'sdio' , '${FILES_SDIO}', '', d)}" S = "${WORKDIR}/git" -WLAN_MODULE_NAME ?= "wlan" - -EXTRA_OEMAKE += "CONFIG_WLAN_FEATURE_11W=y \ - CONFIG_LINUX_QCMBR=y \ - CONFIG_QCA_CLD_WLAN_PROFILE=qca6174 \ - CONFIG_WLAN_DISABLE_EXPORT_SYMBOL=y \ - MODNAME=${WLAN_MODULE_NAME} \ -" +inherit module +EXTRA_OEMAKE += "CONFIG_LINUX_QCMBR=y WLAN_OPEN_SOURCE=1" +# Explicity state it is not a QC platform, if not the driver will try to remap +# memory that is not allowed in ARMv6 (kernel commit +# 309caa9cc6ff39d261264ec4ff10e29489afc8f8) +EXTRA_OEMAKE += "CONFIG_NON_QC_PLATFORM=y" +# Flag to compile the debug version (1 - enabled, rest of values - disabled) +EXTRA_OEMAKE += "BUILD_DEBUG_VERSION=0" # Flags for SDIO interface with wifi FLAGS_SDIO = "CONFIG_CLD_HL_SDIO_CORE=y" EXTRA_OEMAKE += "${@oe.utils.conditional('QUALCOMM_WIFI_INTERFACE', 'sdio' , '${FLAGS_SDIO}', '', d)}" - # Flags for PCI interface with wifi -FLAGS_PCI = "CONFIG_ROME_IF=pci" +FLAGS_PCI = "CONFIG_ROME_IF=pci CONFIG_HIF_PCI=1 CONFIG_ATH_PCIE_ACCESS_DEBUG=1 CONFIG_ATH_PCIE_MAX_PERF=1" EXTRA_OEMAKE += "${@oe.utils.conditional('QUALCOMM_WIFI_INTERFACE', 'pci' , '${FLAGS_PCI}', '', d)}" +# Flags required for QCA6574 +EXTRA_OEMAKE_append_ccimx8x = " CONFIG_ARCH_MSM=n CONFIG_ARCH_QCOM=n CONFIG_ATH_11AC_TXCOMPACT=1" -# Flag to compile the debug version (y - enabled, n - disabled) -EXTRA_OEMAKE += "BUILD_DEBUG_VERSION=n" - -# Flag to define the maximum vdevs interfaces -EXTRA_OEMAKE += "CONFIG_WLAN_MAX_VDEVS=4" - -do_compile:prepend() { +do_compile_prepend() { export BUILD_VER=${PV} } -do_install:append() { +do_install_prepend_ccimx6ul() { + sed -i -e "s/gVhtTxMCS=2/gVhtTxMCS=0/g" ${WORKDIR}/git/firmware_bin/WCNSS_qcom_cfg.ini +} + +do_install_append() { if [ "${QUALCOMM_WIFI_INTERFACE}" = "sdio" ]; then install -d ${D}${sysconfdir}/modprobe.d install -m 0644 ${WORKDIR}/modprobe-qualcomm.conf ${D}${sysconfdir}/modprobe.d/qualcomm.conf fi install -d ${D}${base_libdir}/firmware/wlan/ - install -m 0644 ${WORKDIR}/mdm-init/wlan_standalone/${WLAN_CONFIG_INI} ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini - # Set regulatory STRICT mode - sed -i -e "s/gRegulatoryChangeCountry=1/gRegulatoryChangeCountry=0/g" ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini - # Disable SIFS Burst support - sed -i -e "s/gEnableSifsBurst=1/gEnableSifsBurst=0/g" ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini - # Enable channel bonding on 2.4GHz band - sed -i -e "/^#Channel Bonding/a gChannelBondingMode24GHz=1" ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini - # Disable 802.11d support - sed -i -e "s/g11dSupportEnabled=1/g11dSupportEnabled=0/g" ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini - + install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_cfg.dat ${D}${base_libdir}/firmware/wlan/cfg.dat + install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_qcom_cfg.ini ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini + install -d ${D}${sysconfdir}/udev/scripts + install -m 0755 ${WORKDIR}/qualcomm.sh ${D}${sysconfdir}/udev/scripts/ install -d ${D}${sysconfdir}/udev/rules.d install -m 0644 ${WORKDIR}/81-qcom-wifi.rules ${D}${sysconfdir}/udev/rules.d/ } -do_install:append:ccimx6ul() { - # Set MCS value to MCS0-7 - sed -i -e "s/gVhtTxMCS=2/gVhtTxMCS=0/g" ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini -} - -FILES:${PN} += " \ - ${@oe.utils.conditional('QUALCOMM_WIFI_INTERFACE', 'sdio' , '${sysconfdir}/modprobe.d/qualcomm.conf', '', d)} \ +FILES_${PN} += " \ + ${sysconfdir}/modprobe.d/qualcomm.conf \ ${sysconfdir}/udev/ \ + ${base_libdir}/firmware/wlan/cfg.dat \ ${base_libdir}/firmware/wlan/qcom_cfg.ini \ " diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0001-qca-wifi-host-cmn-fix-buid-issue-for-Rome-SDIO-inter.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0001-qca-wifi-host-cmn-fix-buid-issue-for-Rome-SDIO-inter.patch deleted file mode 100644 index 14a17d680..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0001-qca-wifi-host-cmn-fix-buid-issue-for-Rome-SDIO-inter.patch +++ /dev/null @@ -1,115 +0,0 @@ -From: Xueqiang Gong -Date: Fri, 1 Apr 2022 15:52:16 +0800 -Subject: [PATCH] qca-wifi-host-cmn: fix buid issue for Rome SDIO interface - -Change-Id: I0df0490bf9150cc3f57f27f9818dccf98831a615 -Signed-off-by: Xueqiang Gong ---- - hif/src/dispatcher/multibus.c | 5 +++++ - hif/src/hif_main.c | 4 ++++ - hif/src/sdio/hif_sdio_dev.h | 2 +- - hif/src/sdio/if_sdio.h | 2 +- - hif/src/sdio/native_sdio/include/hif_internal.h | 4 ++-- - hif/src/sdio/native_sdio/src/hif.c | 2 +- - hif/src/sdio/transfer/mailbox.h | 2 +- - 7 files changed, 15 insertions(+), 6 deletions(-) - -diff --git a/hif/src/dispatcher/multibus.c b/hif/src/dispatcher/multibus.c -index 06e70f01d39c..f9b2b6bb3ea8 100644 ---- a/hif/src/dispatcher/multibus.c -+++ b/hif/src/dispatcher/multibus.c -@@ -34,6 +34,11 @@ - #include "dummy.h" - #include "qdf_module.h" - -+#ifdef HIF_SDIO -+#include "hif_exec.h" -+#endif -+ -+ - /** - * hif_initialize_default_ops() - initializes default operations values - * -diff --git a/hif/src/hif_main.c b/hif/src/hif_main.c -index b5140cc1e58e..a6b4d438ab77 100644 ---- a/hif/src/hif_main.c -+++ b/hif/src/hif_main.c -@@ -972,7 +972,11 @@ void hif_close(struct hif_opaque_softc *hif_ctx) - } - - hif_uninit_rri_on_ddr(scn); -+#if (defined(HIF_PCI) || defined(HIF_SNOC) || defined(HIF_AHB) || \ -+ defined(HIF_IPCI)) - hif_cleanup_static_buf_to_target(scn); -+#endif -+ - hif_cpuhp_unregister(scn); - - hif_bus_close(scn); -diff --git a/hif/src/sdio/hif_sdio_dev.h b/hif/src/sdio/hif_sdio_dev.h -index 7ee6582e6aa8..544a57e4381a 100644 ---- a/hif/src/sdio/hif_sdio_dev.h -+++ b/hif/src/sdio/hif_sdio_dev.h -@@ -157,7 +157,7 @@ QDF_STATUS hif_enable_func(struct hif_softc *ol_sc, struct hif_sdio_dev *device, - QDF_STATUS hif_disable_func(struct hif_sdio_dev *device, - struct sdio_func *func, - bool reset); --A_STATUS hif_sdio_probe(struct hif_softc *ol_sc, -+QDF_STATUS hif_sdio_probe(struct hif_softc *ol_sc, - struct sdio_func *func, - struct hif_sdio_dev *device); - #endif /* HIF_SDIO_DEV_H_ */ -diff --git a/hif/src/sdio/if_sdio.h b/hif/src/sdio/if_sdio.h -index a71e61ecb325..c5ad71b0c062 100644 ---- a/hif/src/sdio/if_sdio.h -+++ b/hif/src/sdio/if_sdio.h -@@ -67,7 +67,7 @@ static inline void athdiag_procfs_remove(void) - } - #endif - --#define DMA_MAPPING_ERROR(dev, addr) dma_mapping_error((dev), (addr)) -+//#define DMA_MAPPING_ERROR(dev, addr) dma_mapping_error((dev), (addr)) - - int ath_sdio_probe(void *context, void *hif_handle); - void ath_sdio_remove(void *context, void *hif_handle); -diff --git a/hif/src/sdio/native_sdio/include/hif_internal.h b/hif/src/sdio/native_sdio/include/hif_internal.h -index 41001c848ae9..e5c7df088241 100644 ---- a/hif/src/sdio/native_sdio/include/hif_internal.h -+++ b/hif/src/sdio/native_sdio/include/hif_internal.h -@@ -419,8 +419,8 @@ void hif_sdio_quirk_write_cccr(struct hif_softc *ol_sc, struct sdio_func *func); - int hif_sdio_quirk_mod_strength(struct hif_softc *ol_sc, - struct sdio_func *func); - int hif_sdio_quirk_async_intr(struct hif_softc *ol_sc, struct sdio_func *func); --int hif_sdio_set_bus_speed(struct hif_softc *ol_sc, struct sdio_func *func); --int hif_sdio_set_bus_width(struct hif_softc *ol_sc, struct sdio_func *func); -+QDF_STATUS hif_sdio_set_bus_speed(struct hif_softc *ol_sc, struct sdio_func *func); -+QDF_STATUS hif_sdio_set_bus_width(struct hif_softc *ol_sc, struct sdio_func *func); - QDF_STATUS hif_sdio_func_disable(struct hif_sdio_dev *device, - struct sdio_func *func, - bool reset); -diff --git a/hif/src/sdio/native_sdio/src/hif.c b/hif/src/sdio/native_sdio/src/hif.c -index 9ca2e21ca724..d52eee248a3e 100644 ---- a/hif/src/sdio/native_sdio/src/hif.c -+++ b/hif/src/sdio/native_sdio/src/hif.c -@@ -348,7 +348,7 @@ QDF_STATUS hif_sdio_probe(struct hif_softc *ol_sc, - pld_hif_sdio_get_virt_ramdump_mem(&func->dev, - &scn->ramdump_size); - if (!scn->ramdump_base || !scn->ramdump_size) { -- hf_err("Failed ramdump res alloc - base:%s, len:%lu", -+ hif_err("Failed ramdump res alloc - base:%s, len:%lu", - scn->ramdump_base ? "ok" : "null", - scn->ramdump_size); - } else { -diff --git a/hif/src/sdio/transfer/mailbox.h b/hif/src/sdio/transfer/mailbox.h -index 3e5913215241..36f3e9860ac6 100644 ---- a/hif/src/sdio/transfer/mailbox.h -+++ b/hif/src/sdio/transfer/mailbox.h -@@ -20,7 +20,7 @@ - - - #ifndef _MAILBOX_H_ --#define _MAILBOX_H__ -+#define _MAILBOX_H_ - - #include "a_debug.h" - #include "hif_sdio_dev.h" diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0001-qcacld-3.0-disable-warnings-as-errors.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0001-qcacld-3.0-disable-warnings-as-errors.patch deleted file mode 100644 index fe89e573a..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0001-qcacld-3.0-disable-warnings-as-errors.patch +++ /dev/null @@ -1,25 +0,0 @@ -From: Javier Viguera -Date: Mon, 13 Jun 2022 17:39:29 +0200 -Subject: [PATCH] qcacld-3.0: disable warnings as errors - -Building the kernel module under Yocto (with new version of GCC -compiler) is failing because '-Werror' is converting compilation -warnings into errors. - -Signed-off-by: Javier Viguera ---- - Kbuild | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/Kbuild b/Kbuild -index ad086656cca2..50c01ef223c1 100644 ---- a/Kbuild -+++ b/Kbuild -@@ -2804,7 +2804,6 @@ ccflags-y += $(INCS) - - cppflags-y += -DANI_OS_TYPE_ANDROID=6 \ - -Wall\ -- -Werror\ - -D__linux__ - - cppflags-$(CONFIG_PTT_SOCK_SVC_ENABLE) += -DPTT_SOCK_SVC_ENABLE diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0002-qca-wifi-host-cmn-fix-build-issue-enabling-debug-for.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0002-qca-wifi-host-cmn-fix-build-issue-enabling-debug-for.patch deleted file mode 100644 index 3fdb0b2db..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0002-qca-wifi-host-cmn-fix-build-issue-enabling-debug-for.patch +++ /dev/null @@ -1,49 +0,0 @@ -From: Arturo Buzarra -Date: Tue, 17 May 2022 15:50:32 +0200 -Subject: [PATCH] qca-wifi-host-cmn: fix build issue enabling debug for SDIO - interface - -Signed-off-by: Arturo Buzarra ---- - hif/src/sdio/native_sdio/src/dev_quirks.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/hif/src/sdio/native_sdio/src/dev_quirks.c b/hif/src/sdio/native_sdio/src/dev_quirks.c -index a94ec61d0b62..b5e70a51ddcf 100644 ---- a/hif/src/sdio/native_sdio/src/dev_quirks.c -+++ b/hif/src/sdio/native_sdio/src/dev_quirks.c -@@ -267,8 +267,9 @@ void hif_sdio_quirk_write_cccr(struct hif_softc *ol_sc, struct sdio_func *func) - err); - else - hif_info("%s Write CCCR 0x%02X to 0x%02X OK", -+ __func__, - (unsigned int)writecccr1, -- writecccr1value); -+ (unsigned int)writecccr1value); - } - - if (writecccr2) { -@@ -281,6 +282,7 @@ void hif_sdio_quirk_write_cccr(struct hif_softc *ol_sc, struct sdio_func *func) - err); - else - hif_info("%s Write CCCR 0x%02X to 0x%02X OK", -+ __func__, - (unsigned int)writecccr2, - (unsigned int)writecccr2value); - } -@@ -294,6 +296,7 @@ void hif_sdio_quirk_write_cccr(struct hif_softc *ol_sc, struct sdio_func *func) - err); - else - hif_info("%s Write CCCR 0x%02X to 0x%02X OK", -+ __func__, - (unsigned int)writecccr3, - (unsigned int)writecccr3value); - } -@@ -307,6 +310,7 @@ void hif_sdio_quirk_write_cccr(struct hif_softc *ol_sc, struct sdio_func *func) - err); - else - hif_info("%s Write CCCR 0x%02X to 0x%02X OK", -+ __func__, - (unsigned int)writecccr4, - (unsigned int)writecccr4value); - } diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0002-qcacld-3.0-support-ROME-SDIO-build.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0002-qcacld-3.0-support-ROME-SDIO-build.patch deleted file mode 100644 index 3956af460..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0002-qcacld-3.0-support-ROME-SDIO-build.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Xueqiang Gong -Date: Fri, 1 Apr 2022 15:37:06 +0800 -Subject: [PATCH] qcacld-3.0: support ROME SDIO build - -Change-Id: Ifb642aaac6a3da212b0720737e9685b9ea9179ce -Signed-off-by: Xueqiang Gong ---- - configs/qca6174_defconfig | 2 +- - core/mac/src/sys/legacy/src/utils/src/parser_api.c | 0 - core/sme/inc/csr_api.h | 0 - 3 files changed, 1 insertion(+), 1 deletion(-) - mode change 100755 => 100644 core/mac/src/sys/legacy/src/utils/src/parser_api.c - mode change 100755 => 100644 core/sme/inc/csr_api.h - -diff --git a/configs/qca6174_defconfig b/configs/qca6174_defconfig -index fac64fddf009..b9145ba7cb07 100644 ---- a/configs/qca6174_defconfig -+++ b/configs/qca6174_defconfig -@@ -391,8 +391,8 @@ endif - ifeq ($(CONFIG_ROME_IF),sdio) - CONFIG_HIF_SDIO := y - CONFIG_TX_DESC_HI_PRIO_RESERVE := y -- CONFIG_PER_VDEV_TX_DESC_POOL := y - CONFIG_FEATURE_HL_GROUP_CREDIT_FLOW_CONTROL := y -+ CONFIG_TGT_NUM_MSDU_DESC := 0 - endif - - ifeq ($(CONFIG_ROME_IF),snoc) -diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c -old mode 100755 -new mode 100644 -diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h -old mode 100755 -new mode 100644 diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0003-qca-wifi-host-cmn-fix-panic_notifier_list-undeclared.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0003-qca-wifi-host-cmn-fix-panic_notifier_list-undeclared.patch deleted file mode 100644 index 0ab7c6f08..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0003-qca-wifi-host-cmn-fix-panic_notifier_list-undeclared.patch +++ /dev/null @@ -1,28 +0,0 @@ -From: Javier Viguera -Date: Mon, 13 Jun 2022 17:49:45 +0200 -Subject: [PATCH] qca-wifi-host-cmn: fix panic_notifier_list undeclared build - failure - -On kernels >= 5.14 a new header file include is needed. Otherwise the -build fails with: "error: 'panic_notifier_list' undeclared" - -Signed-off-by: Javier Viguera ---- - utils/logging/src/wlan_logging_sock_svc.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/utils/logging/src/wlan_logging_sock_svc.c b/utils/logging/src/wlan_logging_sock_svc.c -index a1266fed817d..e40779e032dd 100644 ---- a/utils/logging/src/wlan_logging_sock_svc.c -+++ b/utils/logging/src/wlan_logging_sock_svc.c -@@ -36,6 +36,10 @@ - #include - #include - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0) -+#include -+#endif -+ - #ifdef CNSS_GENL - #include - #endif diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0003-qcacld-3.0-cfg-try-to-get-MACs-from-device-tree-entr.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0003-qcacld-3.0-cfg-try-to-get-MACs-from-device-tree-entr.patch deleted file mode 100644 index 60a8241e3..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0003-qcacld-3.0-cfg-try-to-get-MACs-from-device-tree-entr.patch +++ /dev/null @@ -1,148 +0,0 @@ -From: Arturo Buzarra -Date: Wed, 18 May 2022 10:58:20 +0200 -Subject: [PATCH] qcacld-3.0: cfg: try to get MACs from device tree entries - before reading 'wlan_mac.bin' file - -This commits adds support to read the MAC addresses from symbolic link files -('wlan_macX' files inside 'wlan' directory) pointing to device tree MAC entries -('/proc/device-tree/wireless/mac-addressX'). -If this read fails, the 'wlan/wlan_mac.bin' file contents are parsed. - -This change avoids the dynamic creation of the 'wlan_mac.bin' configuration file -in runtime, especially for Android. - -https://onedigi.atlassian.net/browse/ADK4A-1585 -https://onedigi.atlassian.net/browse/DEL-7916 - -Signed-off-by: Isaac Hermida -Signed-off-by: Tatiana Leon -(based on qcacld-2.0 0a92f5d9e8df644de74e74f152ed6ff3dd8d3369) -Signed-off-by: Arturo Buzarra ---- - core/hdd/inc/wlan_hdd_cfg.h | 1 + - core/hdd/inc/wlan_hdd_misc.h | 2 ++ - core/hdd/src/wlan_hdd_cfg.c | 65 ++++++++++++++++++++++++++++++++++++ - core/hdd/src/wlan_hdd_main.c | 6 ++++ - 4 files changed, 74 insertions(+) - -diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h -index 36aa010db916..1527aaf87e12 100644 ---- a/core/hdd/inc/wlan_hdd_cfg.h -+++ b/core/hdd/inc/wlan_hdd_cfg.h -@@ -278,6 +278,7 @@ struct hdd_config { - */ - eCsrRoamWmmUserModeType hdd_to_csr_wmm_mode(uint8_t mode); - -+QDF_STATUS hdd_update_mac_from_dt(struct hdd_context *hdd_ctx); - QDF_STATUS hdd_update_mac_config(struct hdd_context *hdd_ctx); - QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx); - QDF_STATUS hdd_set_policy_mgr_user_cfg(struct hdd_context *hdd_ctx); -diff --git a/core/hdd/inc/wlan_hdd_misc.h b/core/hdd/inc/wlan_hdd_misc.h -index b105df1b3a98..6d9bf450efe1 100644 ---- a/core/hdd/inc/wlan_hdd_misc.h -+++ b/core/hdd/inc/wlan_hdd_misc.h -@@ -44,9 +44,11 @@ - #ifdef MSM_PLATFORM - #define WLAN_INI_FILE "wlan/qca_cld/" PREFIX "WCNSS_qcom_cfg.ini" - #define WLAN_MAC_FILE "wlan/qca_cld/" PREFIX "wlan_mac.bin" -+#define WLAN_MAC_DT_FILE "wlan/qca_cld/" PREFIX "wlan_mac" - #else - #define WLAN_INI_FILE "wlan/" PREFIX "qcom_cfg.ini" - #define WLAN_MAC_FILE "wlan/" PREFIX "wlan_mac.bin" -+#define WLAN_MAC_DT_FILE "wlan/" PREFIX "wlan_mac" - #endif /* MSM_PLATFORM */ - - #endif /* WLAN_HDD_MISC_H */ -diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c -index b12e42c74c69..c921a9364242 100644 ---- a/core/hdd/src/wlan_hdd_cfg.c -+++ b/core/hdd/src/wlan_hdd_cfg.c -@@ -199,6 +199,71 @@ int hdd_firmware_request_nowarn(const struct firmware **fw, - } - #endif - -+/** -+ * hdd_update_mac_from_dt() - update MAC address from device tree -+ * @hdd_ctx: the pointer to hdd context -+ * -+ * It overwrites the MAC address if device tree entries exist. -+ * -+ * Return: QDF_STATUS_SUCCESS if the MAC address is found from device tree -+ * and overwritten, otherwise QDF_STATUS_E_INVAL -+ */ -+QDF_STATUS hdd_update_mac_from_dt(struct hdd_context *hdd_ctx) -+{ -+ int status, i = 0; -+ const struct firmware *fw = NULL; -+ char fName[20]; -+ int max_mac_addr = QDF_MAX_CONCURRENCY_PERSONA; -+ tSirMacAddr custom_mac_addr; -+ -+ QDF_STATUS qdf_status = QDF_STATUS_SUCCESS; -+ -+ for (i = 0; i < max_mac_addr; i++) -+ { -+ sprintf(fName, WLAN_MAC_DT_FILE "%d", i); -+ -+ status = hdd_firmware_request_nowarn(&fw, fName, -+ hdd_ctx->parent_dev); -+ if (!status && fw && fw->data && fw->size) -+ { -+ /* Successfully read mac from device tree */ -+ qdf_mem_copy((uint8_t *)&hdd_ctx->provisioned_mac_addr[i].bytes[0], -+ fw->data, QDF_MAC_ADDR_SIZE); -+ hdd_ctx->num_provisioned_addr++; -+ } -+ else -+ { -+ hdd_err("Reading MAC address from device tree failed (%s)", fName); -+ status = 1; -+ } -+ release_firmware(fw); -+ fw = NULL; -+ -+ /* Only fail if the first MAC cannot be read. */ -+ if (status && i == 0) { -+ qdf_status = QDF_STATUS_E_FAILURE; -+ goto dt_exit; -+ } -+ } -+ -+ if (hdd_ctx->num_provisioned_addr != 0 && hdd_ctx->num_provisioned_addr <= max_mac_addr) { -+ hdd_info("%d MAC addresses provided from device tree", hdd_ctx->num_provisioned_addr); -+ } else { -+ hdd_err("invalid number of MAC address provided, nMac = %d", hdd_ctx->num_provisioned_addr); -+ qdf_status = QDF_STATUS_E_INVAL; -+ goto dt_exit; -+ } -+ -+ qdf_mem_copy(&custom_mac_addr, -+ &hdd_ctx->provisioned_mac_addr[0].bytes[0], -+ sizeof(tSirMacAddr)); -+ -+ sme_set_custom_mac_addr(custom_mac_addr); -+ -+dt_exit: -+ return qdf_status; -+} -+ - /** - * hdd_update_mac_config() - update MAC address from cfg file - * @hdd_ctx: the pointer to hdd context -diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c -index 0043de21f10a..03138b61ce5d 100644 ---- a/core/hdd/src/wlan_hdd_main.c -+++ b/core/hdd/src/wlan_hdd_main.c -@@ -13590,6 +13590,12 @@ static int hdd_initialize_mac_address(struct hdd_context *hdd_ctx) - return ret; - } - -+ status = hdd_update_mac_from_dt(hdd_ctx); -+ if (QDF_IS_STATUS_SUCCESS(status)) { -+ hdd_info("using MAC address from device tree"); -+ return 0; -+ } -+ - status = hdd_update_mac_config(hdd_ctx); - if (QDF_IS_STATUS_SUCCESS(status)) { - hdd_info("using MAC address from wlan_mac.bin"); diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0004-qca-wifi-host-cmn-fix-sdio-error-on-unload-driver.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0004-qca-wifi-host-cmn-fix-sdio-error-on-unload-driver.patch deleted file mode 100644 index 1205a9411..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0004-qca-wifi-host-cmn-fix-sdio-error-on-unload-driver.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: Isaac Hermida -Date: Mon, 18 Jul 2022 09:41:51 +0200 -Subject: [PATCH] sdio: fix sdio error on unload driver - -macro TARGET_DUMP_FOR_NON_QC_PLATFORM does not exist, and that code does not -apply for our platform, so remove that to avoid unload driver error. - -https://onedigi.atlassian.net/browse/DEL-7986 - -Signed-off-by: Isaac Hermida ---- - hif/src/sdio/native_sdio/src/hif.c | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/hif/src/sdio/native_sdio/src/hif.c b/hif/src/sdio/native_sdio/src/hif.c -index d52eee248a3e..d4804070f500 100644 ---- a/hif/src/sdio/native_sdio/src/hif.c -+++ b/hif/src/sdio/native_sdio/src/hif.c -@@ -893,10 +893,6 @@ static A_STATUS hif_sdio_remove(void *context, void *hif_handle) - - athdiag_procfs_remove(); - --#ifndef TARGET_DUMP_FOR_NON_QC_PLATFORM -- iounmap(scn->ramdump_base); --#endif -- - HIF_EXIT(); - - return 0; diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0004-qcacld-3.0-Add-proper-check-to-include-qcom-iommu-ut.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0004-qcacld-3.0-Add-proper-check-to-include-qcom-iommu-ut.patch deleted file mode 100644 index 060c4898f..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0004-qcacld-3.0-Add-proper-check-to-include-qcom-iommu-ut.patch +++ /dev/null @@ -1,27 +0,0 @@ -From: Yue Ma -Date: Wed, 30 Jun 2021 17:22:34 -0700 -Subject: [PATCH] qcacld-3.0: Add proper check to include qcom-iommu-util.h - -qcom-iommu-util.h is a QCOM only file for MSM platforms, so only -include it when MSM_PLATFORM is defined to avoid build issues -from other non-QCOM platforms like X86. - -Change-Id: I5f32fbe05abe4d7aff451031f0859f774ce1c507 -CRs-fixed: 3721214 ---- - core/cds/src/cds_api.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c -index d135759ac426..4fddb614889d 100644 ---- a/core/cds/src/cds_api.c -+++ b/core/cds/src/cds_api.c -@@ -36,7 +36,7 @@ - #include "wlan_hdd_power.h" - #include "wlan_hdd_tsf.h" - #include --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) && defined(MSM_PLATFORM) - #include - #endif - #include diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0005-qcacld-3.0-module-parameter-to-enable-p2p-support.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0005-qcacld-3.0-module-parameter-to-enable-p2p-support.patch deleted file mode 100644 index 120b19fc0..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0005-qcacld-3.0-module-parameter-to-enable-p2p-support.patch +++ /dev/null @@ -1,51 +0,0 @@ -From: Isaac Hermida -Date: Wed, 22 Jun 2022 10:51:01 +0200 -Subject: [PATCH] add a module parameter to enable p2p support - -enable or disable the P2P support based on the enable_p2p module -parameter. - -(partial cherry-pick of dbdf5ff9a3f9c6ae0a153395c382384b3dfc7738 -in qcacld-2.0) - -https://onedigi.atlassian.net/browse/DEL-7986 -https://onedigi.atlassian.net/browse/DEL-6503 - -Signed-off-by: Isaac Hermida ---- - core/hdd/src/wlan_hdd_main.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c -index 03138b61ce5d..a866a90110f6 100644 ---- a/core/hdd/src/wlan_hdd_main.c -+++ b/core/hdd/src/wlan_hdd_main.c -@@ -271,6 +271,10 @@ static struct attribute *attrs[] = { - #endif - #endif - -+#ifdef WLAN_OPEN_P2P_INTERFACE -+static int enable_p2p = -1; -+#endif -+ - /* the Android framework expects this param even though we don't use it */ - #define BUF_LEN 20 - static char fwpath_buffer[BUF_LEN]; -@@ -15005,6 +15009,10 @@ static QDF_STATUS hdd_open_p2p_interface(struct hdd_context *hdd_ctx) - bool p2p_dev_addr_admin; - bool is_p2p_locally_administered = false; - -+ hdd_info("P2P interface %s", enable_p2p == 1 ? "enabled" : "disabled"); -+ if (enable_p2p != 1) -+ return QDF_STATUS_SUCCESS; -+ - cfg_p2p_get_device_addr_admin(hdd_ctx->psoc, &p2p_dev_addr_admin); - - if (p2p_dev_addr_admin) { -@@ -19521,3 +19529,6 @@ static const struct kernel_param_ops timer_multiplier_ops = { - - module_param_cb(timer_multiplier, &timer_multiplier_ops, NULL, 0644); - -+#ifdef WLAN_OPEN_P2P_INTERFACE -+module_param(enable_p2p, int, S_IRUSR | S_IRGRP | S_IROTH); -+#endif diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0006-qcacld-3.0-use-cfg80211_register_netdevice.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0006-qcacld-3.0-use-cfg80211_register_netdevice.patch deleted file mode 100644 index e92016f6a..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0006-qcacld-3.0-use-cfg80211_register_netdevice.patch +++ /dev/null @@ -1,47 +0,0 @@ -From: Alan Chen -Date: Thu, 17 Feb 2022 13:30:20 -0800 -Subject: [PATCH] qcacld-3.0: Use cfg80211_register_netdevice() for kernel - 5.12+ - -For Kernel 5.12+ in order to be in line with cfg80211 changes -in upstream code, use cfg80211_register_netdevice() and -cfg80211_unregister_netdevice() when request to register device is -coming from add virtual interface. - -(partial cherry pick from commit 40a7b4a2f97c7f2dc62944963a72f0f0c64d83c6) - -https://onedigi.atlassian.net/browse/DEL-7986 - -Signed-off-by: Isaac Hermida ---- - core/hdd/src/wlan_hdd_main.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c -index a866a90110f6..235b53cbb94c 100644 ---- a/core/hdd/src/wlan_hdd_main.c -+++ b/core/hdd/src/wlan_hdd_main.c -@@ -5577,7 +5577,11 @@ static QDF_STATUS hdd_register_interface(struct hdd_adapter *adapter, bool rtnl_ - } - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) -+ ret = cfg80211_register_netdevice(dev); -+#else - ret = register_netdevice(dev); -+#endif - if (ret) { - hdd_err("register_netdevice(%s) failed, err = 0x%x", - dev->name, ret); -@@ -6289,7 +6293,11 @@ static void hdd_cleanup_adapter(struct hdd_context *hdd_ctx, - - if (test_bit(NET_DEVICE_REGISTERED, &adapter->event_flags)) { - if (rtnl_held) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) -+ cfg80211_unregister_netdevice(dev); -+#else - unregister_netdevice(dev); -+#endif - else - unregister_netdev(dev); - /* diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0007-qcacld-3.0-use-ndo_siocdevprivate.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0007-qcacld-3.0-use-ndo_siocdevprivate.patch deleted file mode 100644 index 24a8c78d3..000000000 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0007-qcacld-3.0-use-ndo_siocdevprivate.patch +++ /dev/null @@ -1,84 +0,0 @@ -From: Isaac Hermida -Date: Wed, 17 Aug 2022 19:02:13 +0200 -Subject: [PATCH] use ndo_siocdevprivate instead for kernel 5.15+ - -See kernel commits - b9067f5dc4a07c8e24e01a1b277c6722d91be39e - a554bf96b49db4c208e305ae92546422e9489380 - -This solves the FTM mode in kernel 5.15+ - -Signed-off-by: Isaac Hermida ---- - core/hdd/src/wlan_hdd_hostapd.c | 4 ++++ - core/hdd/src/wlan_hdd_ioctl.c | 6 +++++- - core/hdd/src/wlan_hdd_ioctl.h | 6 +++++- - core/hdd/src/wlan_hdd_main.c | 4 ++++ - 4 files changed, 18 insertions(+), 2 deletions(-) - -diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c -index 2f35e9c5e7e3..2da3202deae6 100644 ---- a/core/hdd/src/wlan_hdd_hostapd.c -+++ b/core/hdd/src/wlan_hdd_hostapd.c -@@ -3534,7 +3534,11 @@ const struct net_device_ops net_ops_struct = { - .ndo_tx_timeout = hdd_softap_tx_timeout, - .ndo_get_stats = hdd_get_stats, - .ndo_set_mac_address = hdd_hostapd_set_mac_address, -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) -+ .ndo_siocdevprivate = hdd_ioctl, -+#else - .ndo_do_ioctl = hdd_ioctl, -+#endif - .ndo_change_mtu = hdd_hostapd_change_mtu, - .ndo_select_queue = hdd_select_queue, - }; -diff --git a/core/hdd/src/wlan_hdd_ioctl.c b/core/hdd/src/wlan_hdd_ioctl.c -index b9edfc990f89..b4adf00a29c0 100644 ---- a/core/hdd/src/wlan_hdd_ioctl.c -+++ b/core/hdd/src/wlan_hdd_ioctl.c -@@ -7617,7 +7617,11 @@ exit: - * - * Return: 0 on success, non-zero on error - */ --int hdd_ioctl(struct net_device *net_dev, struct ifreq *ifr, int cmd) -+int hdd_ioctl(struct net_device *net_dev, struct ifreq *ifr, -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) -+ void __user *data, -+#endif -+ int cmd) - { - struct osif_vdev_sync *vdev_sync; - int errno; -diff --git a/core/hdd/src/wlan_hdd_ioctl.h b/core/hdd/src/wlan_hdd_ioctl.h -index 042942ef14ae..578778192376 100644 ---- a/core/hdd/src/wlan_hdd_ioctl.h -+++ b/core/hdd/src/wlan_hdd_ioctl.h -@@ -25,7 +25,11 @@ - - extern struct sock *cesium_nl_srv_sock; - --int hdd_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); -+int hdd_ioctl(struct net_device *dev, struct ifreq *ifr, -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) -+ void __user *, -+#endif -+ int cmd); - int wlan_hdd_set_mc_rate(struct hdd_adapter *adapter, int target_rate); - - /** -diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c -index 235b53cbb94c..6e13104dada2 100644 ---- a/core/hdd/src/wlan_hdd_main.c -+++ b/core/hdd/src/wlan_hdd_main.c -@@ -5367,7 +5367,11 @@ static const struct net_device_ops wlan_drv_ops = { - .ndo_set_features = hdd_set_features, - .ndo_tx_timeout = hdd_tx_timeout, - .ndo_get_stats = hdd_get_stats, -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) -+ .ndo_siocdevprivate = hdd_ioctl, -+#else - .ndo_do_ioctl = hdd_ioctl, -+#endif - .ndo_set_mac_address = hdd_set_mac_address, - .ndo_select_queue = hdd_select_queue, - .ndo_set_rx_mode = hdd_set_multicast_list, diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/81-qcom-wifi.rules b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/81-qcom-wifi.rules index 92706c426..b717ebf0b 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/81-qcom-wifi.rules +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/81-qcom-wifi.rules @@ -1,4 +1,4 @@ # Load Qualcomm wireless module (sdio) -SUBSYSTEM=="sdio", ACTION=="add", ENV{MODALIAS}=="sdio:c00v0271d050A", RUN="/sbin/modprobe wlan" +SUBSYSTEM=="sdio", ACTION=="add", ENV{MODALIAS}=="sdio:c00v0271d050A", RUN="/etc/udev/scripts/qualcomm.sh" # Load Qualcomm wireless module (pci) -SUBSYSTEM=="pci", ACTION=="add", ENV{MODALIAS}=="pci:v0000168Cd0000003Esv*sd*bc*sc*i*", RUN="/sbin/modprobe wlan" +SUBSYSTEM=="pci", ACTION=="add", ENV{MODALIAS}=="pci:v0000168Cd0000003Esv*sd*bc*sc*i*", RUN="/etc/udev/scripts/qualcomm.sh" diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh new file mode 100644 index 000000000..813f9bd61 --- /dev/null +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/qualcomm.sh @@ -0,0 +1,73 @@ +#!/bin/sh +# +# Copyright (c) 2017,2018 Digi International Inc. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at http://mozilla.org/MPL/2.0/. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +# At this point of the boot (udev script), the system log (syslog) is not +# available yet, so use the kernel log buffer from userspace. +log() { + printf "<$1>qca65x4: $2\n" >/dev/kmsg +} + +# Get the permissions of the filesystem containing the given path +get_filesystem_access() { + [ -z "${1}" ] && return + + fs_device="$(df ${1} | awk 'NR==2 { print $1 }')" + fs_access="$(awk -v dev="${fs_device}" '$0 ~ dev { print substr($4,1,2) }' < /proc/mounts)" + echo ${fs_access} +} + +# Get the mount point of the filesystem containing the given path +get_filesystem_mount_point() { + [ -z "${1}" ] && return + + fs_device="$(df ${1} | awk 'NR==2 { print $1 }')" + fs_mount_point="$(awk -v dev="${fs_device}" '$0 ~ dev { print $2 }' < /proc/mounts)" + echo ${fs_mount_point} +} + +# Remount the filesystem containing the given path as 'read-write' if it was +# mounted as 'read-only'. +set_filesystem_rw_access() { + [ -z "${1}" ] && return + + if [ "$(get_filesystem_access ${1})" = "ro" ]; then + mount -o remount,rw $(get_filesystem_mount_point ${1}) + fi +} + +# Do nothing if the wireless node does not exist on the device tree +[ -d "/proc/device-tree/wireless" ] || exit 0 + +# Do nothing if the module is already loaded +grep -qws 'wlan' /proc/modules && exit 0 + +FS_ORIGINAL_ACCESS="$(get_filesystem_access ${FIRMWARE_DIR})" + +# Load the wireless module with the params defined in modprobe.d/qualcomm.conf +# and reduce the console log level to avoid debug messages at boot time +LOGLEVEL="$(sed -ne 's,^kernel.printk[^=]*=[[:blank:]]*\(.*\)$,\1,g;T;p' /etc/sysctl.conf 2>/dev/null)" +[ -n "${LOGLEVEL}" ] && sysctl -q -w kernel.printk="${LOGLEVEL}" +modprobe wlan + +# Verify the interface is present +[ -d "/sys/class/net/wlan0" ] || log "3" "[ERROR] Loading wlan module" + +# Restore the filesystem with the original access permissions if it has been +# changed inside the script. +if [ "$(get_filesystem_access ${FIRMWARE_DIR})" != "${FS_ORIGINAL_ACCESS}" ]; then + mount -o remount,${FS_ORIGINAL_ACCESS} $(get_filesystem_mount_point ${FIRMWARE_DIR}) +fi