From 0f0c33998c1f7cb66f9c0f4d900bca1edb2ffd59 Mon Sep 17 00:00:00 2001 From: Sherry Sun Date: Wed, 13 Sep 2023 18:55:37 +0800 Subject: [PATCH] mxm_wifiex: fix L6.6 kernel next tree build errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When build wifi driver based on L6.6 kernel next tree, will observe the following build errors. These errors caused by kernel patch 076fc8775daf("wifi: cfg80211: remove wdev mutex"), it removes mtx from struct wireless_dev and uses wiphy mutex instead. CC [M] /work/mwifiex/mxm_wifiex/wlan_src/mlinux/moal_main.o /work/mwifiex/mxm_wifiex/wlan_src/mlinux/moal_main.c: In function ‘woal_evt_work_queue’: /work/mwifiex/mxm_wifiex/wlan_src/mlinux/moal_main.c:11361:47: error: ‘struct wireless_dev’ has no member named ‘mtx’ 11361 | mutex_lock(&priv->wdev->mtx); | ^~ /work/mwifiex/mxm_wifiex/wlan_src/mlinux/moal_main.c:11364:49: error: ‘struct wireless_dev’ has no member named ‘mtx’ 11364 | mutex_unlock(&priv->wdev->mtx); | ^~ make[3]: *** [scripts/Makefile.build:243: /work/mwifiex/mxm_wifiex/wlan_src/mlinux/moal_main.o] Error 1 make[2]: *** [/work/linux-upstream-next/Makefile:1913: /work/mwifiex/mxm_wifiex/wlan_src] Error 2 make[1]: *** [Makefile:234: __sub-make] Error 2 make[1]: Leaving directory '/work/linux-upstream-next' make: *** [Makefile:598: default] Error 2 Signed-off-by: Sherry Sun --- mxm_wifiex/wlan_src/mlinux/moal_cfg80211.c | 8 ++++++-- mxm_wifiex/wlan_src/mlinux/moal_main.c | 8 +++++++- mxm_wifiex/wlan_src/mlinux/moal_sta_cfg80211.c | 13 ++++++++++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/mxm_wifiex/wlan_src/mlinux/moal_cfg80211.c b/mxm_wifiex/wlan_src/mlinux/moal_cfg80211.c index 75009a7..fcd0429 100644 --- a/mxm_wifiex/wlan_src/mlinux/moal_cfg80211.c +++ b/mxm_wifiex/wlan_src/mlinux/moal_cfg80211.c @@ -5076,7 +5076,9 @@ void woal_cfg80211_notify_channel(moal_private *priv, #if KERNEL_VERSION(3, 8, 0) <= CFG80211_VERSION_CODE if (MLAN_STATUS_SUCCESS == woal_chandef_create(priv, &chandef, pchan_info)) { -#if KERNEL_VERSION(3, 14, 0) <= CFG80211_VERSION_CODE +#if KERNEL_VERSION(6, 6, 0) <= CFG80211_VERSION_CODE + wiphy_lock(priv->wdev->wiphy); +#elif KERNEL_VERSION(3, 14, 0) <= CFG80211_VERSION_CODE mutex_lock(&priv->wdev->mtx); #endif #if CFG80211_VERSION_CODE >= KERNEL_VERSION(6, 3, 0) @@ -5089,7 +5091,9 @@ void woal_cfg80211_notify_channel(moal_private *priv, #else cfg80211_ch_switch_notify(priv->netdev, &chandef); #endif -#if KERNEL_VERSION(3, 14, 0) <= CFG80211_VERSION_CODE +#if KERNEL_VERSION(6, 6, 0) <= CFG80211_VERSION_CODE + wiphy_unlock(priv->wdev->wiphy); +#elif KERNEL_VERSION(3, 14, 0) <= CFG80211_VERSION_CODE mutex_unlock(&priv->wdev->mtx); #endif priv->channel = pchan_info->channel; diff --git a/mxm_wifiex/wlan_src/mlinux/moal_main.c b/mxm_wifiex/wlan_src/mlinux/moal_main.c index d30f692..6cbc41a 100644 --- a/mxm_wifiex/wlan_src/mlinux/moal_main.c +++ b/mxm_wifiex/wlan_src/mlinux/moal_main.c @@ -11356,7 +11356,13 @@ t_void woal_evt_work_queue(struct work_struct *work) break; case WOAL_EVENT_RX_MGMT_PKT: #if defined(UAP_CFG80211) || defined(STA_CFG80211) -#if CFG80211_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) +#if CFG80211_VERSION_CODE >= KERNEL_VERSION(6, 6, 0) + priv = evt->priv; + wiphy_lock(priv->wdev->wiphy); + cfg80211_rx_mlme_mgmt(priv->netdev, evt->evt.event_buf, + evt->evt.event_len); + wiphy_unlock(priv->wdev->wiphy); +#elif CFG80211_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) priv = evt->priv; mutex_lock(&priv->wdev->mtx); cfg80211_rx_mlme_mgmt(priv->netdev, evt->evt.event_buf, diff --git a/mxm_wifiex/wlan_src/mlinux/moal_sta_cfg80211.c b/mxm_wifiex/wlan_src/mlinux/moal_sta_cfg80211.c index 95dd39d..5a01b3d 100644 --- a/mxm_wifiex/wlan_src/mlinux/moal_sta_cfg80211.c +++ b/mxm_wifiex/wlan_src/mlinux/moal_sta_cfg80211.c @@ -2656,10 +2656,17 @@ void woal_host_mlme_process_assoc_resp(moal_private *priv, resp.req_ies = assoc_req_buf; resp.req_ies_len = assoc_info->assoc_req_len; +#if CFG80211_VERSION_CODE >= KERNEL_VERSION(6, 6, 0) + wiphy_lock(priv->wdev->wiphy); + cfg80211_rx_assoc_resp(priv->netdev, + &resp); + wiphy_unlock(priv->wdev->wiphy); +#else mutex_lock(&priv->wdev->mtx); cfg80211_rx_assoc_resp(priv->netdev, &resp); mutex_unlock(&priv->wdev->mtx); +#endif #else #if CFG80211_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) mutex_lock(&priv->wdev->mtx); @@ -9652,7 +9659,11 @@ void woal_host_mlme_disconnect(moal_private *priv, u16 reason_code, u8 *sa) } if (GET_BSS_ROLE(priv) != MLAN_BSS_ROLE_UAP) { -#if CFG80211_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) +#if CFG80211_VERSION_CODE >= KERNEL_VERSION(6, 6, 0) + wiphy_lock(priv->wdev->wiphy); + cfg80211_rx_mlme_mgmt(priv->netdev, frame_buf, 26); + wiphy_unlock(priv->wdev->wiphy); +#elif CFG80211_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) mutex_lock(&priv->wdev->mtx); cfg80211_rx_mlme_mgmt(priv->netdev, frame_buf, 26); mutex_unlock(&priv->wdev->mtx);