1
0

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:
Qun Zhang
2022-02-10 18:08:15 +08:00
cometido por Madan Koyyalamudi
ascendente 257d0fd308
cometimento eed1953b12
7 ficheiros modificados com 108 adições e 8 eliminações

Ver ficheiro

@@ -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,
};
/**