[PATCH v7 02/12] wifi: mwifiex: fixed group rekey issue for WPA3.

From: David Lin
Date: Tue Nov 28 2023 - 03:32:01 EST


If host mlme is enabled, gropu rekey offload should be disabled.

Signed-off-by: David Lin <yu-hao.lin@xxxxxxx>
---
drivers/net/wireless/marvell/mwifiex/cfg80211.c | 3 +++
drivers/net/wireless/marvell/mwifiex/main.c | 4 ++++
drivers/net/wireless/marvell/mwifiex/util.c | 7 +++++++
3 files changed, 14 insertions(+)

diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
index 40c39e4765f7..3d59e6a441b9 100644
--- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
@@ -3657,6 +3657,9 @@ static int mwifiex_set_rekey_data(struct wiphy *wiphy, struct net_device *dev,
if (!ISSUPP_FIRMWARE_SUPPLICANT(priv->adapter->fw_cap_info))
return -EOPNOTSUPP;

+ if (priv->adapter->host_mlme)
+ return 0;
+
return mwifiex_send_cmd(priv, HostCmd_CMD_GTK_REKEY_OFFLOAD_CFG,
HostCmd_ACT_GEN_SET, 0, data, true);
}
diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c
index d99127dc466e..3bebb6c37604 100644
--- a/drivers/net/wireless/marvell/mwifiex/main.c
+++ b/drivers/net/wireless/marvell/mwifiex/main.c
@@ -802,6 +802,10 @@ mwifiex_bypass_tx_queue(struct mwifiex_private *priv,
"bypass txqueue; eth type %#x, mgmt %d\n",
ntohs(eth_hdr->h_proto),
mwifiex_is_skb_mgmt_frame(skb));
+ if (ntohs(eth_hdr->h_proto) == ETH_P_PAE)
+ mwifiex_dbg(priv->adapter, MSG,
+ "key: send EAPOL to %pM\n",
+ eth_hdr->h_dest);
return true;
}

diff --git a/drivers/net/wireless/marvell/mwifiex/util.c b/drivers/net/wireless/marvell/mwifiex/util.c
index 23675c1cecae..ff1b2f162c30 100644
--- a/drivers/net/wireless/marvell/mwifiex/util.c
+++ b/drivers/net/wireless/marvell/mwifiex/util.c
@@ -482,8 +482,15 @@ mwifiex_process_mgmt_packet(struct mwifiex_private *priv,
return 0;

if (ieee80211_is_deauth(ieee_hdr->frame_control)) {
+ mwifiex_dbg(priv->adapter, MSG,
+ "auth: receive deauth from %pM\n",
+ ieee_hdr->addr3);
priv->auth_flag = 0;
priv->auth_alg = 0xFFFF;
+ } else {
+ mwifiex_dbg(priv->adapter, MSG,
+ "assoc: receive disasso from %pM\n",
+ ieee_hdr->addr3);
}
}

--
2.25.1