mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 08:07:32 -04:00
qcacld-3.0: Fix to not set HT/VHT caps during 6ghz unicast probe req
In 6ghz, host should not set HT/VHT caps when sending unicast probe request. Change-Id: Ib31a08d2bda3dcba9e5f1e16107552d2ba18bcf1 CRs-Fixed: 2619300
This commit is contained in:
parent
7d4014db17
commit
68f42668f1
8 changed files with 24 additions and 25 deletions
|
|
@ -211,7 +211,7 @@ struct pe_session {
|
|||
tSirMacRateSet rateSet;
|
||||
tSirMacRateSet extRateSet;
|
||||
tSirMacHTOperatingMode htOperMode;
|
||||
uint32_t curr_op_freq;
|
||||
qdf_freq_t curr_op_freq;
|
||||
uint32_t curr_req_chan_freq;
|
||||
uint8_t LimRxedBeaconCntDuringHB;
|
||||
|
||||
|
|
|
|||
|
|
@ -1599,8 +1599,7 @@ lim_detect_change_in_ap_capabilities(struct mac_context *mac,
|
|||
lim_send_probe_req_mgmt_frame(
|
||||
mac, &pe_session->ssId,
|
||||
pe_session->bssId,
|
||||
wlan_reg_freq_to_chan(
|
||||
mac->pdev, pe_session->curr_op_freq),
|
||||
pe_session->curr_op_freq,
|
||||
pe_session->self_mac_addr,
|
||||
pe_session->dot11mode,
|
||||
NULL, NULL);
|
||||
|
|
|
|||
|
|
@ -511,14 +511,14 @@ void lim_handle_heart_beat_failure(struct mac_context *mac_ctx,
|
|||
scan_ie = &session->lim_join_req->addIEScan;
|
||||
lim_send_probe_req_mgmt_frame(mac_ctx,
|
||||
&session->ssId,
|
||||
session->bssId, curr_chan,
|
||||
session->bssId, session->curr_op_freq,
|
||||
session->self_mac_addr,
|
||||
session->dot11mode,
|
||||
&scan_ie->length, scan_ie->addIEdata);
|
||||
} else {
|
||||
lim_send_probe_req_mgmt_frame(mac_ctx,
|
||||
&session->ssId,
|
||||
session->bssId, curr_chan,
|
||||
session->bssId, session->curr_op_freq,
|
||||
session->self_mac_addr,
|
||||
session->dot11mode, NULL, NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1617,8 +1617,7 @@ static void lim_process_periodic_join_probe_req_timer(struct mac_context *mac_ct
|
|||
ssid.length = session->ssId.length;
|
||||
lim_send_probe_req_mgmt_frame(mac_ctx, &ssid,
|
||||
session->pLimMlmJoinReq->bssDescription.bssId,
|
||||
wlan_reg_freq_to_chan(mac_ctx->pdev,
|
||||
session->curr_op_freq),
|
||||
session->curr_op_freq,
|
||||
session->self_mac_addr, session->dot11mode,
|
||||
&session->lim_join_req->addIEScan.length,
|
||||
session->lim_join_req->addIEScan.addIEdata);
|
||||
|
|
|
|||
|
|
@ -2781,8 +2781,7 @@ static void lim_process_switch_channel_join_req(
|
|||
/* include additional IE if there is */
|
||||
lim_send_probe_req_mgmt_frame(mac_ctx, &ssId,
|
||||
session_entry->pLimMlmJoinReq->bssDescription.bssId,
|
||||
wlan_reg_freq_to_chan(mac_ctx->pdev,
|
||||
session_entry->curr_op_freq),
|
||||
session_entry->curr_op_freq,
|
||||
session_entry->self_mac_addr,
|
||||
session_entry->dot11mode,
|
||||
&session_entry->lim_join_req->addIEScan.length,
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ void lim_populate_mac_header(struct mac_context *mac_ctx, uint8_t *buf,
|
|||
* @mac_ctx: Pointer to Global MAC structure
|
||||
* @ssid: SSID to be sent in Probe Request frame
|
||||
* @bssid: BSSID to be sent in Probe Request frame
|
||||
* @channel: Channel # on which the Probe Request is going out
|
||||
* @chan_freq: Channel frequency on which the Probe Request is going out
|
||||
* @self_macaddr: self MAC address
|
||||
* @dot11mode: self dotllmode
|
||||
* @additional_ielen: if non-zero, include additional_ie in the Probe Request
|
||||
|
|
@ -167,7 +167,7 @@ QDF_STATUS
|
|||
lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
|
||||
tSirMacSSid *ssid,
|
||||
tSirMacAddr bssid,
|
||||
uint8_t channel,
|
||||
qdf_freq_t chan_freq,
|
||||
tSirMacAddr self_macaddr,
|
||||
uint32_t dot11mode,
|
||||
uint16_t *additional_ielen,
|
||||
|
|
@ -190,11 +190,12 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
|
|||
tDot11fIEExtCap extracted_ext_cap;
|
||||
QDF_STATUS sir_status;
|
||||
const uint8_t *qcn_ie = NULL;
|
||||
uint32_t chan_freq;
|
||||
uint8_t channel;
|
||||
|
||||
if (additional_ielen)
|
||||
addn_ielen = *additional_ielen;
|
||||
|
||||
channel = wlan_reg_freq_to_chan(mac_ctx->pdev, chan_freq);
|
||||
/*
|
||||
* The probe req should not send 11ac capabilities if band is
|
||||
* 2.4GHz, unless gEnableVhtFor24GHzBand is enabled in INI. So
|
||||
|
|
@ -266,14 +267,15 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
|
|||
txPower = (uint8_t) rrm_get_mgmt_tx_power(mac_ctx, pesession);
|
||||
populate_dot11f_wfatpc(mac_ctx, &pr.WFATPC, txPower, 0);
|
||||
|
||||
|
||||
if (pesession) {
|
||||
pesession->htCapability = IS_DOT11_MODE_HT(dot11mode);
|
||||
/* Include HT Capability IE */
|
||||
if (pesession->htCapability)
|
||||
if (pesession->htCapability &&
|
||||
!(WLAN_REG_IS_6GHZ_CHAN_FREQ(chan_freq)))
|
||||
populate_dot11f_ht_caps(mac_ctx, pesession, &pr.HTCaps);
|
||||
} else { /* !pesession */
|
||||
if (IS_DOT11_MODE_HT(dot11mode))
|
||||
if (IS_DOT11_MODE_HT(dot11mode) &&
|
||||
!(WLAN_REG_IS_6GHZ_CHAN_FREQ(chan_freq)))
|
||||
populate_dot11f_ht_caps(mac_ctx, NULL, &pr.HTCaps);
|
||||
}
|
||||
|
||||
|
|
@ -281,7 +283,8 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
|
|||
* Set channelbonding information as "disabled" when tunned to a
|
||||
* 2.4 GHz channel
|
||||
*/
|
||||
if (channel <= SIR_11B_CHANNEL_END) {
|
||||
if (channel <= SIR_11B_CHANNEL_END &&
|
||||
!(WLAN_REG_IS_6GHZ_CHAN_FREQ(chan_freq))) {
|
||||
if (mac_ctx->roam.configParam.channelBondingMode24GHz
|
||||
== PHY_SINGLE_CHANNEL_CENTERED) {
|
||||
pr.HTCaps.supportedChannelWidthSet =
|
||||
|
|
@ -295,13 +298,15 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
|
|||
if (pesession) {
|
||||
pesession->vhtCapability = IS_DOT11_MODE_VHT(dot11mode);
|
||||
/* Include VHT Capability IE */
|
||||
if (pesession->vhtCapability) {
|
||||
if (pesession->vhtCapability &&
|
||||
!(WLAN_REG_IS_6GHZ_CHAN_FREQ(chan_freq))) {
|
||||
populate_dot11f_vht_caps(mac_ctx, pesession,
|
||||
&pr.VHTCaps);
|
||||
is_vht_enabled = true;
|
||||
}
|
||||
} else {
|
||||
if (IS_DOT11_MODE_VHT(dot11mode)) {
|
||||
if (IS_DOT11_MODE_VHT(dot11mode) &&
|
||||
!(WLAN_REG_IS_6GHZ_CHAN_FREQ(chan_freq))) {
|
||||
populate_dot11f_vht_caps(mac_ctx, pesession,
|
||||
&pr.VHTCaps);
|
||||
is_vht_enabled = true;
|
||||
|
|
@ -407,8 +412,6 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
|
|||
payload += addn_ielen;
|
||||
}
|
||||
|
||||
chan_freq = wlan_reg_chan_to_freq(mac_ctx->pdev, channel);
|
||||
|
||||
/* If this probe request is sent during P2P Search State, then we need
|
||||
* to send it at OFDM rate.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -488,8 +488,8 @@ void lim_process_action_frame_no_session(struct mac_context *mac, uint8_t *pRxMe
|
|||
void lim_populate_mac_header(struct mac_context *, uint8_t *, uint8_t, uint8_t,
|
||||
tSirMacAddr, tSirMacAddr);
|
||||
QDF_STATUS lim_send_probe_req_mgmt_frame(struct mac_context *, tSirMacSSid *,
|
||||
tSirMacAddr, uint8_t, tSirMacAddr,
|
||||
uint32_t, uint16_t *, uint8_t *);
|
||||
tSirMacAddr, qdf_freq_t, tSirMacAddr,
|
||||
uint32_t, uint16_t *, uint8_t *);
|
||||
|
||||
/**
|
||||
* lim_send_probe_rsp_mgmt_frame() - Send probe response
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -908,8 +908,7 @@ static void __sch_beacon_process_for_session(struct mac_context *mac_ctx,
|
|||
*/
|
||||
if (sendProbeReq)
|
||||
lim_send_probe_req_mgmt_frame(mac_ctx, &session->ssId,
|
||||
session->bssId, wlan_reg_freq_to_chan(
|
||||
mac_ctx->pdev, session->curr_op_freq),
|
||||
session->bssId, session->curr_op_freq,
|
||||
session->self_mac_addr, session->dot11mode, NULL, NULL);
|
||||
|
||||
if ((false == mac_ctx->sap.SapDfsInfo.is_dfs_cac_timer_running)
|
||||
|
|
|
|||
Loading…
Reference in a new issue