|
@@ -68,6 +68,7 @@
|
|
|
#include "wlan_qct_sys.h"
|
|
|
#include <wlan_scan_ucfg_api.h>
|
|
|
#include <wlan_blm_api.h>
|
|
|
+#include <lim_assoc_utils.h>
|
|
|
|
|
|
#define ASCII_SPACE_CHARACTER 0x20
|
|
|
|
|
@@ -3663,16 +3664,6 @@ QDF_STATUS lim_tx_complete(void *context, qdf_nbuf_t buf, bool free)
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
-static void lim_ht_width_switch_cback(struct mac_context *mac,
|
|
|
- QDF_STATUS status, uint32_t *data,
|
|
|
- struct pe_session *pe_session)
|
|
|
-{
|
|
|
- pe_debug("status %d for ht width switch for vdev %d", status,
|
|
|
- pe_session->smeSessionId);
|
|
|
- if (QDF_IS_STATUS_SUCCESS(status))
|
|
|
- lim_switch_channel_vdev_started(pe_session);
|
|
|
-}
|
|
|
-
|
|
|
static void lim_ht_switch_chnl_params(struct pe_session *pe_session)
|
|
|
{
|
|
|
uint8_t center_freq = 0;
|
|
@@ -3700,14 +3691,23 @@ static void lim_ht_switch_chnl_params(struct pe_session *pe_session)
|
|
|
else
|
|
|
ch_width = CH_WIDTH_20MHZ;
|
|
|
}
|
|
|
+ pe_session->gLimChannelSwitch.primaryChannel = primary_channel;
|
|
|
+ pe_session->curr_req_chan_freq = pe_session->curr_op_freq;
|
|
|
+ pe_session->ch_center_freq_seg0 = center_freq;
|
|
|
+ pe_session->gLimChannelSwitch.ch_center_freq_seg0 = center_freq;
|
|
|
+ pe_session->gLimChannelSwitch.sw_target_freq = center_freq;
|
|
|
+ pe_session->ch_width = ch_width;
|
|
|
+ pe_session->gLimChannelSwitch.ch_width = ch_width;
|
|
|
+ pe_session->gLimChannelSwitch.sec_ch_offset =
|
|
|
+ pe_session->htSecondaryChannelOffset;
|
|
|
+ pe_session->gLimChannelSwitch.ch_center_freq_seg1 = 0;
|
|
|
|
|
|
- /* notify HAL */
|
|
|
- pe_debug("HT IE changed: Primary Channel: %d Secondary Channel Offset: %d Channel Width: %d",
|
|
|
+ pe_debug("HT IE changed: Primary Channel: %d center chan: %d Channel Width: %d",
|
|
|
primary_channel, center_freq,
|
|
|
pe_session->htRecommendedTxWidthSet);
|
|
|
pe_session->channelChangeReasonCode =
|
|
|
LIM_SWITCH_CHANNEL_HT_WIDTH;
|
|
|
- mac->lim.gpchangeChannelCallback = lim_ht_width_switch_cback;
|
|
|
+ mac->lim.gpchangeChannelCallback = lim_switch_channel_cback;
|
|
|
mac->lim.gpchangeChannelData = NULL;
|
|
|
|
|
|
lim_send_switch_chnl_params(mac, pe_session);
|
|
@@ -3777,15 +3777,15 @@ void lim_update_sta_run_time_ht_switch_chnl_params(struct mac_context *mac,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ if (lim_is_roam_synch_in_progress(pe_session)) {
|
|
|
+ pe_debug("Roaming in progress, ignore HT IE BW update");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (pe_session->htSecondaryChannelOffset !=
|
|
|
(uint8_t) pHTInfo->secondaryChannelOffset
|
|
|
|| pe_session->htRecommendedTxWidthSet !=
|
|
|
(uint8_t) pHTInfo->recommendedTxWidthSet) {
|
|
|
- pe_session->gLimChannelSwitch.primaryChannel =
|
|
|
- pHTInfo->primaryChannel;
|
|
|
- pe_session->gLimChannelSwitch.sw_target_freq =
|
|
|
- wlan_reg_legacy_chan_to_freq(mac->pdev,
|
|
|
- pHTInfo->primaryChannel);
|
|
|
pe_session->htSecondaryChannelOffset =
|
|
|
(ePhyChanBondState) pHTInfo->secondaryChannelOffset;
|
|
|
pe_session->htRecommendedTxWidthSet =
|