qcacld-3.0: Update LFR2 self reassoc failure processing
Update LFR2 self reassoc failure processing: 1. remove lim_send_switch_chnl_params() from lim_restore_pre_reassoc_state() when self reassoc failure to avoid this race condition: one one hand host let FW do restart, and on the other hand VDEV sm transition to stop state. Otherwise VDEV sm cannot handle EV_START_RESP event correcly. 2. register .mlme_vdev_sta_disconn_start callback with cleanupTrigger eLIM_HOST_DISASSOC. 3. when self reassoc fail, notify reassoc failure reason to CM SM so that CM SM can trigger CM_DISCONNECT_REQ, then invoke .mlme_vdev_sta_disconn_start doing cleanup action. Change-Id: Icb68202e9f72fcbe3e0e4d3e9006a65a73123692 CRs-Fixed: 3109987
Este cometimento está contido em:

cometido por
Madan Koyyalamudi

ascendente
257d0fd308
cometimento
eed1953b12
@@ -347,6 +347,27 @@ static QDF_STATUS sta_mlme_vdev_stop_send(struct vdev_mlme_obj *vdev_mlme,
|
||||
return lim_sta_mlme_vdev_stop_send(vdev_mlme, data_len, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* sta_mlme_vdev_sta_disconnect_start() - MLME vdev disconnect send callback
|
||||
* @vdev_mlme: vdev mlme object
|
||||
* @event_data_len: event data length
|
||||
* @event_data: event data
|
||||
*
|
||||
* This function is called to trigger the vdev stop to firmware when
|
||||
* reassoc failure
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static QDF_STATUS
|
||||
sta_mlme_vdev_sta_disconnect_start(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t data_len, void *data)
|
||||
{
|
||||
mlme_legacy_debug("vdev id = %d ",
|
||||
vdev_mlme->vdev->vdev_objmgr.vdev_id);
|
||||
return lim_sta_mlme_vdev_sta_disconnect_start(vdev_mlme, data_len,
|
||||
data);
|
||||
}
|
||||
|
||||
/**
|
||||
* vdevmgr_mlme_stop_continue() - MLME vdev stop send callback
|
||||
* @vdev_mlme: vdev mlme object
|
||||
@@ -1812,6 +1833,8 @@ static QDF_STATUS ap_mlme_vdev_csa_complete(struct vdev_mlme_obj *vdev_mlme)
|
||||
* MLME down operation
|
||||
* @mlme_vdev_notify_down_complete: callback to notify VDEV MLME on moving
|
||||
* to INIT state
|
||||
* @mlme_vdev_sta_disconn_start callback to trigger vdev stop to
|
||||
* firmware when resaaoc failure
|
||||
*/
|
||||
static struct vdev_mlme_ops sta_mlme_ops = {
|
||||
.mlme_vdev_start_send = sta_mlme_vdev_start_send,
|
||||
@@ -1829,6 +1852,7 @@ static struct vdev_mlme_ops sta_mlme_ops = {
|
||||
.mlme_vdev_notify_down_complete = vdevmgr_notify_down_complete,
|
||||
.mlme_vdev_ext_stop_rsp = vdevmgr_vdev_stop_rsp_handle,
|
||||
.mlme_vdev_ext_start_rsp = vdevmgr_vdev_start_rsp_handle,
|
||||
.mlme_vdev_sta_disconn_start = sta_mlme_vdev_sta_disconnect_start,
|
||||
};
|
||||
|
||||
/**
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador