qcacld-3.0: Move wait for key timer to mlme priv vdev

Move wait for key timer logic to mlme priv vdev. Thus host handles
wait for key per vdev.

Change-Id: Idfc7e7e17ec631a0a364c75b1bac992f1a4d1872
CRs-Fixed: 2870707
Esse commit está contido em:
Abhishek Ambure
2021-01-30 12:18:24 +05:30
commit de snandini
commit 780908d5be
8 arquivos alterados com 354 adições e 211 exclusões

Ver arquivo

@@ -282,6 +282,15 @@ struct mlme_connect_info {
#endif
};
/** struct wait_for_key_timer - wait for key timer object
* @vdev: Pointer to vdev
* @timer: timer for wati for key
*/
struct wait_for_key_timer {
struct wlan_objmgr_vdev *vdev;
qdf_mc_timer_t timer;
};
/**
* struct mlme_legacy_priv - VDEV MLME legacy priv object
* @chan_switch_in_progress: flag to indicate that channel switch is in progress
@@ -312,6 +321,7 @@ struct mlme_connect_info {
* @he_sta_obsspd: he_sta_obsspd
* @rso_cfg: per vdev RSO config to be sent to FW
* @connect_info: mlme connect information
* @wait_key_timer: wait key timer
*/
struct mlme_legacy_priv {
bool chan_switch_in_progress;
@@ -347,6 +357,7 @@ struct mlme_legacy_priv {
struct rso_config rso_cfg;
#endif
struct mlme_connect_info connect_info;
struct wait_for_key_timer wait_key_timer;
};
/**

Ver arquivo

@@ -1174,6 +1174,32 @@ static inline void mlme_free_fils_info(struct mlme_connect_info *connect_info)
{}
#endif
static
void mlme_init_wait_for_key_timer(struct wlan_objmgr_vdev *vdev,
struct wait_for_key_timer *wait_key_timer)
{
QDF_STATUS status;
if (!vdev || !wait_key_timer) {
mlme_err("vdev or wait for key is NULL");
return;
}
wait_key_timer->vdev = vdev;
status = qdf_mc_timer_init(&wait_key_timer->timer, QDF_TIMER_TYPE_SW,
cm_wait_for_key_time_out_handler,
wait_key_timer);
if (QDF_IS_STATUS_ERROR(status))
mlme_err("cannot allocate memory for WaitForKey time out timer");
}
static
void mlme_deinit_wait_for_key_timer(struct wait_for_key_timer *wait_key_timer)
{
qdf_mc_timer_stop(&wait_key_timer->timer);
qdf_mc_timer_destroy(&wait_key_timer->timer);
}
static void mlme_ext_handler_destroy(struct vdev_mlme_obj *vdev_mlme)
{
if (!vdev_mlme || !vdev_mlme->ext_vdev_ptr)
@@ -1186,6 +1212,7 @@ static void mlme_ext_handler_destroy(struct vdev_mlme_obj *vdev_mlme)
wlan_cm_rso_config_deinit(vdev_mlme->vdev,
&vdev_mlme->ext_vdev_ptr->rso_cfg);
#endif
mlme_deinit_wait_for_key_timer(&vdev_mlme->ext_vdev_ptr->wait_key_timer);
mlme_free_fils_info(&vdev_mlme->ext_vdev_ptr->connect_info);
qdf_mem_free(vdev_mlme->ext_vdev_ptr);
vdev_mlme->ext_vdev_ptr = NULL;
@@ -1215,6 +1242,9 @@ QDF_STATUS vdevmgr_mlme_ext_hdl_create(struct vdev_mlme_obj *vdev_mlme)
wlan_cm_rso_config_init(vdev_mlme->vdev,
&vdev_mlme->ext_vdev_ptr->rso_cfg);
#endif
mlme_init_wait_for_key_timer(vdev_mlme->vdev,
&vdev_mlme->ext_vdev_ptr->wait_key_timer);
sme_get_vdev_type_nss(wlan_vdev_mlme_get_opmode(vdev_mlme->vdev),
&vdev_mlme->proto.generic.nss_2g,
&vdev_mlme->proto.generic.nss_5g);