qcacld-3.0: Update host DBS policy manager in roaming operations

Firmware DBS mode is updated during firmware based roaming. Same change
is reflected in the host policy manager. Process hw_mode TLV in roam sync
indication event. Update cds concurrency policy after roaming. Handle
exceptions for ROAM_ABORT and HO_FAIL conditions.

Change-Id: I826c6766f73441256e5946d3167966e645f23430
CRs-Fixed: 1044336
This commit is contained in:
Naveen Rawat
2016-07-14 12:22:56 -07:00
committed by qcabuildsw
parent 5387b81ed9
commit 8cc23b0d9a
10 changed files with 172 additions and 115 deletions

View File

@@ -635,13 +635,10 @@ static inline void cds_force_sap_on_scc(eCsrRoamResult roam_result,
#endif /* FEATURE_WLAN_FORCE_SAP_SCC */
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
void cds_check_concurrent_intf_and_restart_sap(
hdd_station_ctx_t *hdd_sta_ctx,
hdd_adapter_t *adapter);
void cds_check_concurrent_intf_and_restart_sap(hdd_adapter_t *adapter);
#else
static inline void cds_check_concurrent_intf_and_restart_sap(
hdd_station_ctx_t *hdd_sta_ctx,
hdd_adapter_t *adapter)
hdd_adapter_t *adapter)
{
}
@@ -798,7 +795,7 @@ QDF_STATUS qdf_wait_for_connection_update(void);
QDF_STATUS qdf_reset_connection_update(void);
QDF_STATUS qdf_set_connection_update(void);
QDF_STATUS qdf_init_connection_update(void);
QDF_STATUS cds_stop_start_opportunistic_timer(void);
QDF_STATUS cds_restart_opportunistic_timer(bool check_state);
QDF_STATUS cds_modify_sap_pcl_based_on_mandatory_channel(uint8_t *pcl_list_org,
uint8_t *weight_list_org,
uint32_t *pcl_len_org);
@@ -833,4 +830,8 @@ bool cds_is_hw_mode_change_after_vdev_up(void);
void cds_dump_connection_status_info(void);
uint32_t cds_mode_specific_connection_count(enum cds_con_mode mode,
uint32_t *list);
void cds_hw_mode_transition_cb(uint32_t old_hw_mode_index,
uint32_t new_hw_mode_index,
uint32_t num_vdev_mac_entries,
struct sir_vdev_mac_map *vdev_mac_map);
#endif /* __CDS_CONCURRENCY_H */

View File

@@ -2512,10 +2512,10 @@ static void cds_pdev_set_hw_mode_cb(uint32_t status,
*
* Return: None
*/
static void cds_hw_mode_transition_cb(uint32_t old_hw_mode_index,
uint32_t new_hw_mode_index,
uint32_t num_vdev_mac_entries,
struct sir_vdev_mac_map *vdev_mac_map)
void cds_hw_mode_transition_cb(uint32_t old_hw_mode_index,
uint32_t new_hw_mode_index,
uint32_t num_vdev_mac_entries,
struct sir_vdev_mac_map *vdev_mac_map)
{
QDF_STATUS status;
struct sir_hw_mode_params hw_mode;
@@ -6275,14 +6275,11 @@ QDF_STATUS cds_next_actions(uint32_t session_id,
return status;
}
/**
* if already in DBS no need to request DBS or if already in
* non dbs no need request for non dbs again. Might be needed
* if already in DBS no need to request DBS. Might be needed
* to extend the logic when multiple dbs HW mode is available
*/
if ((((CDS_DBS_DOWNGRADE == action) || (CDS_DBS == action))
&& hw_mode.dbs_cap) ||
(((CDS_SINGLE_MAC_UPGRADE == action) ||
(CDS_SINGLE_MAC == action)) && !hw_mode.dbs_cap)) {
&& hw_mode.dbs_cap)) {
cds_err("driver is already in %s mode, no further action needed",
(hw_mode.dbs_cap) ? "dbs" : "non dbs");
return QDF_STATUS_E_ALREADY;
@@ -7043,17 +7040,18 @@ static void cds_check_sta_ap_concurrent_ch_intf(void *data)
}
}
/**
* cds_check_concurrent_intf_and_restart_sap() - Check concurrent change intf
* @hdd_sta_ctx: Pointer to HDD STA context
* @adapter: Pointer to HDD adapter
*
* Checks the concurrent change interface and restarts SAP
* Return: None
*/
void cds_check_concurrent_intf_and_restart_sap(hdd_station_ctx_t *hdd_sta_ctx,
hdd_adapter_t *adapter)
void cds_check_concurrent_intf_and_restart_sap(hdd_adapter_t *adapter)
{
hdd_context_t *hdd_ctx;
hdd_station_ctx_t *hdd_sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
if (!hdd_ctx) {
@@ -8199,13 +8197,17 @@ enum cds_conc_next_action cds_get_current_pref_hw_mode(void)
}
/**
* cds_stop_start_opportunistic_timer() - Start and stop the opportunistic timer
* cds_restart_opportunistic_timer() - Restarts opportunistic timer
* @check_state: check timer state if this flag is set, else restart
* irrespective of state
*
* Stops and starts the opportunistic timer for DBS_OPPORTUNISTIC_TIME seconds
* Restarts opportunistic timer for DBS_OPPORTUNISTIC_TIME seconds.
* Check if current state is RUNNING if check_state is set, else
* restart the timer irrespective of state.
*
* Return: QDF_STATUS
*/
QDF_STATUS cds_stop_start_opportunistic_timer(void)
QDF_STATUS cds_restart_opportunistic_timer(bool check_state)
{
QDF_STATUS status = QDF_STATUS_E_FAILURE;
p_cds_contextType cds_ctx;
@@ -8216,6 +8218,11 @@ QDF_STATUS cds_stop_start_opportunistic_timer(void)
return status;
}
if (check_state &&
QDF_TIMER_STATE_RUNNING !=
cds_ctx->dbs_opportunistic_timer.state)
return status;
qdf_mc_timer_stop(&cds_ctx->dbs_opportunistic_timer);
status = qdf_mc_timer_start(
@@ -8852,7 +8859,7 @@ QDF_STATUS cds_set_hw_mode_on_channel_switch(uint8_t session_id)
* as well.
*/
if (action == CDS_SINGLE_MAC_UPGRADE) {
qdf_status = cds_stop_start_opportunistic_timer();
qdf_status = cds_restart_opportunistic_timer(false);
if (QDF_IS_STATUS_SUCCESS(qdf_status))
cds_info("opportunistic timer for MCC upgrade");
goto done;

View File

@@ -2482,8 +2482,7 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
#endif
hdd_info("check for SAP restart");
cds_check_concurrent_intf_and_restart_sap(pHddStaCtx,
pAdapter);
cds_check_concurrent_intf_and_restart_sap(pAdapter);
DPTRACE(qdf_dp_trace_mgmt_pkt(QDF_DP_TRACE_MGMT_PACKET_RECORD,
pAdapter->sessionId,
@@ -4738,19 +4737,6 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
FL("hdd_ReassocScenario set to: %d, due to eCSR_ROAM_FT_START, session: %d"),
pHddStaCtx->hdd_ReassocScenario, pAdapter->sessionId);
break;
case eCSR_ROAM_DISABLE_QUEUES:
hdd_info("Disabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_NETIF_TX_DISABLE,
WLAN_CONTROL_PATH);
break;
case eCSR_ROAM_ENABLE_QUEUES:
hdd_info("Enabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_WAKE_ALL_NETIF_QUEUE,
WLAN_CONTROL_PATH);
break;
case eCSR_ROAM_SHOULD_ROAM:
/* notify apps that we can't pass traffic anymore */
hddLog(LOG1, FL("Disabling queues"));
@@ -5034,6 +5020,22 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
hdd_ndp_event_handler(pAdapter, pRoamInfo, roamId, roamStatus,
roamResult);
break;
case eCSR_ROAM_START:
hdd_info("Process ROAM_START from firmware");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_NETIF_TX_DISABLE,
WLAN_CONTROL_PATH);
cds_set_connection_in_progress(true);
cds_restart_opportunistic_timer(true);
break;
case eCSR_ROAM_ABORT:
hdd_info("Firmware aborted roaming operation, previous connection is still valid");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_WAKE_ALL_NETIF_QUEUE,
WLAN_CONTROL_PATH);
cds_set_connection_in_progress(false);
break;
default:
break;
}

View File

@@ -6075,37 +6075,12 @@ int wlan_hdd_set_channel(struct wiphy *wiphy,
case NL80211_CHAN_HT20:
case NL80211_CHAN_NO_HT:
smeConfig.csrConfig.obssEnabled = false;
if (channel <= 14)
smeConfig.csrConfig.
channelBondingMode24GHz =
eCSR_INI_SINGLE_CHANNEL_CENTERED;
else
smeConfig.csrConfig.
channelBondingMode5GHz =
eCSR_INI_SINGLE_CHANNEL_CENTERED;
sap_config->sec_ch = 0;
break;
case NL80211_CHAN_HT40MINUS:
if (channel <= 14)
smeConfig.csrConfig.
channelBondingMode24GHz =
eCSR_INI_DOUBLE_CHANNEL_HIGH_PRIMARY;
else
smeConfig.csrConfig.
channelBondingMode5GHz =
eCSR_INI_DOUBLE_CHANNEL_HIGH_PRIMARY;
sap_config->sec_ch = sap_config->channel - 4;
break;
case NL80211_CHAN_HT40PLUS:
if (channel <= 14)
smeConfig.csrConfig.
channelBondingMode24GHz =
eCSR_INI_DOUBLE_CHANNEL_LOW_PRIMARY;
else
smeConfig.csrConfig.
channelBondingMode5GHz =
eCSR_INI_DOUBLE_CHANNEL_LOW_PRIMARY;
sap_config->sec_ch = sap_config->channel + 4;
break;
default:

View File

@@ -193,14 +193,16 @@ typedef enum {
* enum sir_roam_op_code - Operation to be done by the callback.
* @SIR_ROAM_SYNCH_PROPAGATION: Propagate the new BSS info after roaming.
* @SIR_ROAMING_DEREGISTER_STA: Deregister the old STA after roaming.
* @SIR_ROAMING_TX_QUEUE_DISABLE: Disable the network queues while roaming.
* @SIR_ROAMING_TX_QUEUE_ENABLE: Enable back the n/w queues in case roam fails.
* @SIR_ROAMING_START: Firmware started roaming operation
* @SIR_ROAMING_ABORT: Firmware aborted roaming operation, still connected.
* @SIR_ROAM_SYNCH_COMPLETE: Roam sync propagation is complete.
*/
enum sir_roam_op_code {
SIR_ROAM_SYNCH_PROPAGATION = 1,
SIR_ROAMING_DEREGISTER_STA,
SIR_ROAMING_TX_QUEUE_DISABLE,
SIR_ROAMING_TX_QUEUE_ENABLE,
SIR_ROAMING_START,
SIR_ROAMING_ABORT,
SIR_ROAM_SYNCH_COMPLETE,
};
/**
* Module ID definitions.
@@ -4153,6 +4155,7 @@ typedef struct sSirSmeRoamOffloadSynchInd {
void *add_bss_params;
tpSirSmeJoinRsp join_rsp;
uint16_t aid;
struct sir_hw_mode_trans_ind hw_mode_trans_ind;
} roam_offload_synch_ind;
#ifdef WLAN_FEATURE_ROAM_OFFLOAD

View File

@@ -505,11 +505,11 @@ typedef enum {
/* Channel sw update notification */
eCSR_ROAM_DFS_CHAN_SW_NOTIFY,
eCSR_ROAM_EXT_CHG_CHNL_IND,
eCSR_ROAM_DISABLE_QUEUES,
eCSR_ROAM_ENABLE_QUEUES,
eCSR_ROAM_STA_CHANNEL_SWITCH,
eCSR_ROAM_NDP_STATUS_UPDATE,
eCSR_ROAM_UPDATE_SCAN_RESULT,
eCSR_ROAM_START,
eCSR_ROAM_ABORT,
} eRoamCmdStatus;
/* comment inside indicates what roaming callback gets */

View File

@@ -18778,6 +18778,7 @@ void csr_process_ho_fail_ind(tpAniSirGlobal pMac, void *pMsgBuf)
sessionId);
return;
}
cds_set_connection_in_progress(false);
csr_roam_synch_clean_up(pMac, sessionId);
csr_roaming_report_diag_event(pMac, NULL,
eCSR_REASON_ROAM_HO_FAIL);
@@ -19501,18 +19502,41 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx,
eCSR_ROAM_FT_START, eSIR_SME_SUCCESS);
sme_release_global_lock(&mac_ctx->sme);
return;
case SIR_ROAMING_TX_QUEUE_DISABLE:
case SIR_ROAMING_START:
csr_roam_call_callback(mac_ctx, session_id, NULL, 0,
eCSR_ROAM_DISABLE_QUEUES, eSIR_SME_SUCCESS);
eCSR_ROAM_START, eSIR_SME_SUCCESS);
sme_release_global_lock(&mac_ctx->sme);
return;
case SIR_ROAMING_TX_QUEUE_ENABLE:
case SIR_ROAMING_ABORT:
csr_roam_call_callback(mac_ctx, session_id, NULL, 0,
eCSR_ROAM_ENABLE_QUEUES, eSIR_SME_SUCCESS);
eCSR_ROAM_ABORT, eSIR_SME_SUCCESS);
sme_release_global_lock(&mac_ctx->sme);
return;
case SIR_ROAM_SYNCH_PROPAGATION:
break;
case SIR_ROAM_SYNCH_COMPLETE:
/*
* Following operations need to be done once roam sync
* completion is sent to FW, hence called here:
* 1) Firmware has already updated DBS policy. Update connection
* table in the host driver.
* 2) Force SCC switch if needed
* 3) Set connection in progress = false
*/
/* first update connection info from wma interface */
cds_update_connection_info(session_id);
/* then update remaining parameters from roam sync ctx */
sms_log(mac_ctx, LOGE, FL("Update DBS hw mode"));
cds_hw_mode_transition_cb(
roam_synch_data->hw_mode_trans_ind.old_hw_mode_index,
roam_synch_data->hw_mode_trans_ind.new_hw_mode_index,
roam_synch_data->hw_mode_trans_ind.num_vdev_mac_entries,
roam_synch_data->hw_mode_trans_ind.vdev_mac_map);
cds_set_connection_in_progress(false);
session->roam_synch_in_progress = false;
cds_check_concurrent_intf_and_restart_sap(session->pContext);
sme_release_global_lock(&mac_ctx->sme);
return;
default:
sms_log(mac_ctx, LOGE, FL("LFR3: callback reason %d"), reason);
sme_release_global_lock(&mac_ctx->sme);
@@ -19737,6 +19761,7 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx,
("NO CSR_IS_WAIT_FOR_KEY -> csr_roam_link_up"));
csr_roam_link_up(mac_ctx, conn_profile->bssid);
}
session->fRoaming = false;
session->roam_synch_in_progress = false;
qdf_mem_free(roam_info->pbFrames);

View File

@@ -296,4 +296,9 @@ bool wma_is_p2p_lo_capable(void);
QDF_STATUS wma_p2p_lo_start(struct sir_p2p_lo_start *params);
QDF_STATUS wma_p2p_lo_stop(u_int32_t vdev_id);
QDF_STATUS wma_get_wakelock_stats(struct sir_wake_lock_stats *wake_lock_stats);
void wma_process_pdev_hw_mode_trans_ind(void *wma,
wmi_pdev_hw_mode_transition_event_fixed_param *fixed_param,
wmi_pdev_set_hw_mode_response_vdev_mac_entry *vdev_mac_entry,
struct sir_hw_mode_trans_ind *hw_mode_trans_ind);
#endif

View File

@@ -2488,6 +2488,66 @@ fail:
return QDF_STATUS_E_FAILURE;
}
/**
* wma_process_pdev_hw_mode_trans_ind() - Process HW mode transition info
*
* @handle: WMA handle
* @fixed_param: Event fixed parameters
* @vdev_mac_entry - vdev mac entry
* @hw_mode_trans_ind - Buffer to store parsed information
*
* Parses fixed_param, vdev_mac_entry and fills in the information into
* hw_mode_trans_ind and wma
*
* Return: None
*/
void wma_process_pdev_hw_mode_trans_ind(void *handle,
wmi_pdev_hw_mode_transition_event_fixed_param *fixed_param,
wmi_pdev_set_hw_mode_response_vdev_mac_entry *vdev_mac_entry,
struct sir_hw_mode_trans_ind *hw_mode_trans_ind)
{
uint32_t i;
tp_wma_handle wma = (tp_wma_handle) handle;
hw_mode_trans_ind->old_hw_mode_index = fixed_param->old_hw_mode_index;
hw_mode_trans_ind->new_hw_mode_index = fixed_param->new_hw_mode_index;
hw_mode_trans_ind->num_vdev_mac_entries =
fixed_param->num_vdev_mac_entries;
WMA_LOGI("%s: old_hw_mode_index:%d new_hw_mode_index:%d entries=%d",
__func__, fixed_param->old_hw_mode_index,
fixed_param->new_hw_mode_index,
fixed_param->num_vdev_mac_entries);
/* Store the vdev-mac map in WMA and send to policy manager */
for (i = 0; i < fixed_param->num_vdev_mac_entries; i++) {
uint32_t vdev_id, mac_id, pdev_id;
vdev_id = vdev_mac_entry[i].vdev_id;
pdev_id = vdev_mac_entry[i].pdev_id;
if (pdev_id == WMI_PDEV_ID_SOC) {
WMA_LOGE("%s: soc level id received for mac id)",
__func__);
QDF_BUG(0);
return;
}
mac_id = WMA_PDEV_TO_MAC_MAP(vdev_mac_entry[i].pdev_id);
WMA_LOGI("%s: vdev_id:%d mac_id:%d",
__func__, vdev_id, mac_id);
hw_mode_trans_ind->vdev_mac_map[i].vdev_id = vdev_id;
hw_mode_trans_ind->vdev_mac_map[i].mac_id = mac_id;
wma_update_intf_hw_mode_params(vdev_id, mac_id,
fixed_param->new_hw_mode_index);
}
wma->old_hw_mode_index = fixed_param->old_hw_mode_index;
wma->new_hw_mode_index = fixed_param->new_hw_mode_index;
WMA_LOGI("%s: Updated: old_hw_mode_index:%d new_hw_mode_index:%d",
__func__, wma->old_hw_mode_index, wma->new_hw_mode_index);
}
/**
* wma_pdev_hw_mode_transition_evt_handler() - HW mode transition evt handler
* @handle: WMI handle
@@ -2505,7 +2565,6 @@ static int wma_pdev_hw_mode_transition_evt_handler(void *handle,
uint8_t *event,
uint32_t len)
{
uint32_t i;
WMI_PDEV_HW_MODE_TRANSITION_EVENTID_param_tlvs *param_buf;
wmi_pdev_hw_mode_transition_event_fixed_param *wmi_event;
wmi_pdev_set_hw_mode_response_vdev_mac_entry *vdev_mac_entry;
@@ -2532,46 +2591,10 @@ static int wma_pdev_hw_mode_transition_evt_handler(void *handle,
}
wmi_event = param_buf->fixed_param;
hw_mode_trans_ind->old_hw_mode_index = wmi_event->old_hw_mode_index;
hw_mode_trans_ind->new_hw_mode_index = wmi_event->new_hw_mode_index;
hw_mode_trans_ind->num_vdev_mac_entries =
wmi_event->num_vdev_mac_entries;
WMA_LOGI("%s: old_hw_mode_index:%d new_hw_mode_index:%d entries=%d",
__func__, wmi_event->old_hw_mode_index,
wmi_event->new_hw_mode_index, wmi_event->num_vdev_mac_entries);
vdev_mac_entry =
param_buf->wmi_pdev_set_hw_mode_response_vdev_mac_mapping;
/* Store the vdev-mac map in WMA and prepare to send to HDD */
for (i = 0; i < wmi_event->num_vdev_mac_entries; i++) {
uint32_t vdev_id, mac_id, pdev_id;
vdev_id = vdev_mac_entry[i].vdev_id;
pdev_id = vdev_mac_entry[i].pdev_id;
if (pdev_id == WMI_PDEV_ID_SOC) {
WMA_LOGE("%s: soc level id received for mac id)",
__func__);
QDF_BUG(0);
return QDF_STATUS_E_FAILURE;
}
mac_id = WMA_PDEV_TO_MAC_MAP(vdev_mac_entry[i].pdev_id);
WMA_LOGI("%s: vdev_id:%d mac_id:%d",
__func__, vdev_id, mac_id);
hw_mode_trans_ind->vdev_mac_map[i].vdev_id = vdev_id;
hw_mode_trans_ind->vdev_mac_map[i].mac_id = mac_id;
wma_update_intf_hw_mode_params(vdev_id, mac_id,
wmi_event->new_hw_mode_index);
}
wma->old_hw_mode_index = wmi_event->old_hw_mode_index;
wma->new_hw_mode_index = wmi_event->new_hw_mode_index;
WMA_LOGI("%s: Updated: old_hw_mode_index:%d new_hw_mode_index:%d",
__func__, wma->old_hw_mode_index, wma->new_hw_mode_index);
wma_process_pdev_hw_mode_trans_ind(wma, wmi_event, vdev_mac_entry,
hw_mode_trans_ind);
/* Pass the message to PE */
wma_send_msg(wma, SIR_HAL_PDEV_HW_MODE_TRANS_IND,
(void *) hw_mode_trans_ind, 0);

View File

@@ -2155,6 +2155,13 @@ void wma_fill_roam_synch_buffer(tp_wma_handle wma,
QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_WMA, QDF_TRACE_LEVEL_DEBUG,
key->replay_counter, SIR_REPLAY_CTR_LEN);
}
if (param_buf->hw_mode_transition_fixed_param)
wma_process_pdev_hw_mode_trans_ind(wma,
param_buf->hw_mode_transition_fixed_param,
param_buf->wmi_pdev_set_hw_mode_response_vdev_mac_mapping,
&roam_synch_ind_ptr->hw_mode_trans_ind);
else
WMA_LOGD(FL("hw_mode transition fixed param is NULL"));
}
/**
@@ -2284,8 +2291,7 @@ int wma_roam_synch_event_handler(void *handle, uint8_t *event,
}
qdf_mem_zero(roam_synch_ind_ptr, len);
wma_fill_roam_synch_buffer(wma, roam_synch_ind_ptr, param_buf);
/* 24 byte MAC header and 12 byte to ssid IE */
/* 24 byte MAC header and 12 byte to ssid IE */
if (roam_synch_ind_ptr->beaconProbeRespLength >
(SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET)) {
ie_len = roam_synch_ind_ptr->beaconProbeRespLength -
@@ -2308,6 +2314,16 @@ int wma_roam_synch_event_handler(void *handle, uint8_t *event,
wma->csr_roam_synch_cb((tpAniSirGlobal)wma->mac_context,
roam_synch_ind_ptr, bss_desc_ptr, SIR_ROAM_SYNCH_PROPAGATION);
wma_process_roam_synch_complete(wma, synch_event->vdev_id);
/* update freq and channel width */
wma->interfaces[synch_event->vdev_id].mhz =
roam_synch_ind_ptr->chan_freq;
if (roam_synch_ind_ptr->join_rsp)
wma->interfaces[synch_event->vdev_id].chan_width =
roam_synch_ind_ptr->join_rsp->vht_channel_width;
wma->csr_roam_synch_cb((tpAniSirGlobal)wma->mac_context,
roam_synch_ind_ptr, bss_desc_ptr, SIR_ROAM_SYNCH_COMPLETE);
wma->interfaces[synch_event->vdev_id].roam_synch_delay =
qdf_get_system_timestamp() - roam_synch_received;
WMA_LOGD("LFR3: roam_synch_delay:%d",
@@ -5789,9 +5805,9 @@ int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf,
return -ENOMEM;
}
if (wmi_event->notif == WMI_ROAM_NOTIF_ROAM_START)
op_code = SIR_ROAMING_TX_QUEUE_DISABLE;
op_code = SIR_ROAMING_START;
if (wmi_event->notif == WMI_ROAM_NOTIF_ROAM_ABORT)
op_code = SIR_ROAMING_TX_QUEUE_ENABLE;
op_code = SIR_ROAMING_ABORT;
roam_synch_data->roamedVdevId = wmi_event->vdev_id;
wma_handle->csr_roam_synch_cb(
(tpAniSirGlobal)wma_handle->mac_context,