From 6866d771f7d4ad7a8edc4541648af1c78d5871dd Mon Sep 17 00:00:00 2001 From: Ting-Ying Li Date: Fri, 6 Aug 2021 05:05:25 -0500 Subject: [PATCH 067/296] brcmfmac: Revise channel info for WPA3 external SAE Revise the returned value of dcmd "BRCMF_C_GET_CHANNEL" to get the hw_channel from firmware "channel_info" structure. Signed-off-by: Ting-Ying Li --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 9fc9a943a305..6e7f362e4eea 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -5655,6 +5655,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, struct brcmf_mf_params_le *mf_params; u32 mf_params_len; s32 timeout; + u32 hw_channel; brcmf_dbg(TRACE, "Enter\n"); @@ -5715,13 +5716,16 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, /* Add the channel. Use the one specified as parameter if any or * the current one (got from the firmware) otherwise */ - if (chan) + if (chan) { freq = chan->center_freq; - else + chan_nr = ieee80211_frequency_to_channel(freq); + af_params->channel = cpu_to_le32(chan_nr); + } else { brcmf_fil_cmd_int_get(vif->ifp, BRCMF_C_GET_CHANNEL, - &freq); - chan_nr = ieee80211_frequency_to_channel(freq); - af_params->channel = cpu_to_le32(chan_nr); + &hw_channel); + af_params->channel = hw_channel; + } + af_params->dwell_time = cpu_to_le32(params->wait); memcpy(action_frame->data, &buf[DOT11_MGMT_HDR_LEN], le16_to_cpu(action_frame->len)); @@ -5754,13 +5758,16 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, mf_params->len = cpu_to_le16(len - DOT11_MGMT_HDR_LEN); mf_params->frame_control = mgmt->frame_control; - if (chan) + if (chan) { freq = chan->center_freq; - else + chan_nr = ieee80211_frequency_to_channel(freq); + mf_params->channel = cpu_to_le32(chan_nr); + } else { brcmf_fil_cmd_int_get(vif->ifp, BRCMF_C_GET_CHANNEL, - &freq); - chan_nr = ieee80211_frequency_to_channel(freq); - mf_params->channel = cpu_to_le32(chan_nr); + &hw_channel); + mf_params->channel = hw_channel; + } + memcpy(&mf_params->da[0], &mgmt->da[0], ETH_ALEN); memcpy(&mf_params->bssid[0], &mgmt->bssid[0], ETH_ALEN); mf_params->packet_id = cpu_to_le32(*cookie); -- 2.25.1