Merge "qcacld-3.0: Unpause data queue after SAP SSID setting" into wlan-cld3.driver.lnx.1.1-dev
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
7329f35b8e
@@ -4194,8 +4194,13 @@ static void __lim_process_sme_hide_ssid(tpAniSirGlobal pMac, uint32_t *pMsgBuf)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the session entry */
|
if (psessionEntry->ssidHidden != pUpdateParams->ssidHidden) {
|
||||||
psessionEntry->ssidHidden = pUpdateParams->ssidHidden;
|
/* Update the session entry */
|
||||||
|
psessionEntry->ssidHidden = pUpdateParams->ssidHidden;
|
||||||
|
} else {
|
||||||
|
lim_log(pMac, LOG1, FL("Same config already present!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Send vdev restart */
|
/* Send vdev restart */
|
||||||
lim_send_vdev_restart(pMac, psessionEntry, pUpdateParams->sessionId);
|
lim_send_vdev_restart(pMac, psessionEntry, pUpdateParams->sessionId);
|
||||||
|
@@ -859,6 +859,8 @@ int wma_vdev_start_resp_handler(void *handle, uint8_t *cmd_param_info,
|
|||||||
wma->interfaces[resp_event->vdev_id].mac_id);
|
wma->interfaces[resp_event->vdev_id].mac_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iface = &wma->interfaces[resp_event->vdev_id];
|
||||||
|
|
||||||
if ((resp_event->vdev_id <= wma->max_bssid) &&
|
if ((resp_event->vdev_id <= wma->max_bssid) &&
|
||||||
(qdf_atomic_read
|
(qdf_atomic_read
|
||||||
(&wma->interfaces[resp_event->vdev_id].vdev_restart_params.hidden_ssid_restart_in_progress))
|
(&wma->interfaces[resp_event->vdev_id].vdev_restart_params.hidden_ssid_restart_in_progress))
|
||||||
@@ -880,6 +882,15 @@ int wma_vdev_start_resp_handler(void *handle, uint8_t *cmd_param_info,
|
|||||||
vdev_restart_params.
|
vdev_restart_params.
|
||||||
hidden_ssid_restart_in_progress, 0);
|
hidden_ssid_restart_in_progress, 0);
|
||||||
wma->interfaces[resp_event->vdev_id].vdev_up = true;
|
wma->interfaces[resp_event->vdev_id].vdev_up = true;
|
||||||
|
/*
|
||||||
|
* Unpause TX queue in SAP case while configuring hidden ssid
|
||||||
|
* enable or disable, else the data path is paused forever
|
||||||
|
* causing data packets(starting from DHCP offer) to get stuck
|
||||||
|
*/
|
||||||
|
ol_txrx_vdev_unpause(iface->handle,
|
||||||
|
OL_TXQ_PAUSE_REASON_VDEV_STOP);
|
||||||
|
iface->pause_bitmap &= ~(1 << PAUSE_TYPE_HOST);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
req_msg = wma_find_vdev_req(wma, resp_event->vdev_id,
|
req_msg = wma_find_vdev_req(wma, resp_event->vdev_id,
|
||||||
@@ -900,7 +911,6 @@ int wma_vdev_start_resp_handler(void *handle, uint8_t *cmd_param_info,
|
|||||||
wma_find_mcc_ap(wma, resp_event->vdev_id, true);
|
wma_find_mcc_ap(wma, resp_event->vdev_id, true);
|
||||||
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
||||||
|
|
||||||
iface = &wma->interfaces[resp_event->vdev_id];
|
|
||||||
if (req_msg->msg_type == WMA_CHNL_SWITCH_REQ) {
|
if (req_msg->msg_type == WMA_CHNL_SWITCH_REQ) {
|
||||||
tpSwitchChannelParams params =
|
tpSwitchChannelParams params =
|
||||||
(tpSwitchChannelParams) req_msg->user_data;
|
(tpSwitchChannelParams) req_msg->user_data;
|
||||||
@@ -1345,6 +1355,17 @@ int wma_vdev_stop_resp_handler(void *handle, uint8_t *cmd_param_info,
|
|||||||
&& (wma->interfaces[resp_event->vdev_id].sub_type == 0))) {
|
&& (wma->interfaces[resp_event->vdev_id].sub_type == 0))) {
|
||||||
WMA_LOGE("%s: vdev stop event recevied for hidden ssid set using IOCTL ",
|
WMA_LOGE("%s: vdev stop event recevied for hidden ssid set using IOCTL ",
|
||||||
__func__);
|
__func__);
|
||||||
|
|
||||||
|
req_msg = wma_fill_vdev_req(wma, resp_event->vdev_id,
|
||||||
|
WMA_HIDDEN_SSID_VDEV_RESTART,
|
||||||
|
WMA_TARGET_REQ_TYPE_VDEV_START, resp_event,
|
||||||
|
WMA_VDEV_START_REQUEST_TIMEOUT);
|
||||||
|
if (!req_msg) {
|
||||||
|
WMA_LOGE("%s: Failed to fill vdev request, vdev_id %d",
|
||||||
|
__func__, resp_event->vdev_id);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
wma_hidden_ssid_vdev_restart_on_vdev_stop(wma,
|
wma_hidden_ssid_vdev_restart_on_vdev_stop(wma,
|
||||||
resp_event->vdev_id);
|
resp_event->vdev_id);
|
||||||
}
|
}
|
||||||
@@ -2539,6 +2560,9 @@ error0:
|
|||||||
iface = &wma->interfaces[tgt_req->vdev_id];
|
iface = &wma->interfaces[tgt_req->vdev_id];
|
||||||
iface->vdev_up = false;
|
iface->vdev_up = false;
|
||||||
wma_ocb_set_config_resp(wma, QDF_STATUS_E_TIMEOUT);
|
wma_ocb_set_config_resp(wma, QDF_STATUS_E_TIMEOUT);
|
||||||
|
} else if (tgt_req->msg_type == WMA_HIDDEN_SSID_VDEV_RESTART) {
|
||||||
|
WMA_LOGE("Hidden ssid vdev restart Timed Out; vdev_id: %d, type = %d",
|
||||||
|
tgt_req->vdev_id, tgt_req->type);
|
||||||
}
|
}
|
||||||
free_tgt_req:
|
free_tgt_req:
|
||||||
qdf_mc_timer_destroy(&tgt_req->event_timeout);
|
qdf_mc_timer_destroy(&tgt_req->event_timeout);
|
||||||
|
@@ -2710,6 +2710,7 @@ void wma_hidden_ssid_vdev_restart(tp_wma_handle wma_handle,
|
|||||||
tHalHiddenSsidVdevRestart *pReq)
|
tHalHiddenSsidVdevRestart *pReq)
|
||||||
{
|
{
|
||||||
struct wma_txrx_node *intr = wma_handle->interfaces;
|
struct wma_txrx_node *intr = wma_handle->interfaces;
|
||||||
|
struct wma_target_req *msg;
|
||||||
|
|
||||||
if ((pReq->sessionId !=
|
if ((pReq->sessionId !=
|
||||||
intr[pReq->sessionId].vdev_restart_params.vdev_id)
|
intr[pReq->sessionId].vdev_restart_params.vdev_id)
|
||||||
@@ -2723,6 +2724,16 @@ void wma_hidden_ssid_vdev_restart(tp_wma_handle wma_handle,
|
|||||||
qdf_atomic_set(&intr[pReq->sessionId].vdev_restart_params.
|
qdf_atomic_set(&intr[pReq->sessionId].vdev_restart_params.
|
||||||
hidden_ssid_restart_in_progress, 1);
|
hidden_ssid_restart_in_progress, 1);
|
||||||
|
|
||||||
|
msg = wma_fill_vdev_req(wma_handle, pReq->sessionId,
|
||||||
|
WMA_HIDDEN_SSID_VDEV_RESTART,
|
||||||
|
WMA_TARGET_REQ_TYPE_VDEV_STOP, pReq,
|
||||||
|
WMA_VDEV_STOP_REQUEST_TIMEOUT);
|
||||||
|
if (!msg) {
|
||||||
|
WMA_LOGE("%s: Failed to fill vdev restart request for vdev_id %d",
|
||||||
|
__func__, pReq->sessionId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* vdev stop -> vdev restart -> vdev up */
|
/* vdev stop -> vdev restart -> vdev up */
|
||||||
WMA_LOGD("%s, vdev_id: %d, pausing tx_ll_queue for VDEV_STOP",
|
WMA_LOGD("%s, vdev_id: %d, pausing tx_ll_queue for VDEV_STOP",
|
||||||
__func__, pReq->sessionId);
|
__func__, pReq->sessionId);
|
||||||
@@ -2734,6 +2745,8 @@ void wma_hidden_ssid_vdev_restart(tp_wma_handle wma_handle,
|
|||||||
WMA_LOGE("%s: %d Failed to send vdev stop", __func__, __LINE__);
|
WMA_LOGE("%s: %d Failed to send vdev stop", __func__, __LINE__);
|
||||||
qdf_atomic_set(&intr[pReq->sessionId].vdev_restart_params.
|
qdf_atomic_set(&intr[pReq->sessionId].vdev_restart_params.
|
||||||
hidden_ssid_restart_in_progress, 0);
|
hidden_ssid_restart_in_progress, 0);
|
||||||
|
wma_remove_vdev_req(wma_handle, pReq->sessionId,
|
||||||
|
WMA_TARGET_REQ_TYPE_VDEV_STOP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user