From 548efe4f6fd5a60c0b1f91a26cf54f3488b7bb31 Mon Sep 17 00:00:00 2001 From: Isaac Hermida Date: Thu, 18 Aug 2022 09:06:59 +0200 Subject: [PATCH] kernel-module-qualcomm: use siocdevprivate for privates ioctls Fix the way to register custom ioctls for kernel 5.15+. Signed-off-by: Isaac Hermida --- .../kernel-module-qualcomm.bb | 1 + ...07-qcacld-3.0-use-ndo_siocdevprivate.patch | 84 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0007-qcacld-3.0-use-ndo_siocdevprivate.patch 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 5c679c474..1aa06625c 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 @@ -24,6 +24,7 @@ SRC_URI = " \ 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; \ 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 new file mode 100644 index 000000000..24a8c78d3 --- /dev/null +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0007-qcacld-3.0-use-ndo_siocdevprivate.patch @@ -0,0 +1,84 @@ +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,