qcacld-3.0: Implement LFR2 and reassoc for new vdev SM
LFR2 uses ft reassoc, whose process is different from general connect. 1.ft reassoc, normal reassoc and assoc, all of 3 need deliver event WLAN_VDEV_SM_EV_START to SM, but need different handler. 2.ft reassoc send vdev start when add bss, not switch channel. Change-Id: Ieefbcf0a28867be3c8a86d9a912143857c54fe06 CRs-Fixed: 2334194
This commit is contained in:

committed by
nshrivas

orang tua
0079d3e2b1
melakukan
d3474e05ad
@@ -26,6 +26,18 @@
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
#include "include/wlan_vdev_mlme.h"
|
||||
|
||||
/**
|
||||
* enum vdev_assoc_type - VDEV associate/reassociate type
|
||||
* @VDEV_ASSOC: associate
|
||||
* @VDEV_REASSOC: reassociate
|
||||
* @VDEV_FT_REASSOC: fast reassociate
|
||||
*/
|
||||
enum vdev_assoc_type {
|
||||
VDEV_ASSOC,
|
||||
VDEV_REASSOC,
|
||||
VDEV_FT_REASSOC
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mlme_legacy_priv - VDEV MLME legacy priv object
|
||||
* @chan_switch_in_progress: flag to indicate that channel switch is in progress
|
||||
@@ -33,12 +45,14 @@
|
||||
* in progress
|
||||
* @vdev_start_failed: flag to indicate that vdev start failed.
|
||||
* @connection_fail: flag to indicate connection failed
|
||||
* @assoc_type: vdev associate/reassociate type
|
||||
*/
|
||||
struct mlme_legacy_priv {
|
||||
bool chan_switch_in_progress;
|
||||
bool hidden_ssid_restart_in_progress;
|
||||
bool vdev_start_failed;
|
||||
bool connection_fail;
|
||||
enum vdev_assoc_type assoc_type;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -144,5 +158,24 @@ bool mlme_get_vdev_start_failed(struct wlan_objmgr_vdev *vdev);
|
||||
* Return: true or false
|
||||
*/
|
||||
bool mlme_is_vdev_in_beaconning_mode(enum QDF_OPMODE vdev_opmode);
|
||||
|
||||
/**
|
||||
* mlme_set_assoc_type() - set associate type
|
||||
* @vdev: vdev pointer
|
||||
* @assoc_type: type to be set
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS mlme_set_assoc_type(struct wlan_objmgr_vdev *vdev,
|
||||
enum vdev_assoc_type assoc_type);
|
||||
|
||||
/**
|
||||
* mlme_get_assoc_type() - get associate type
|
||||
* @vdev: vdev pointer
|
||||
*
|
||||
* Return: associate type
|
||||
*/
|
||||
enum vdev_assoc_type mlme_get_assoc_type(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -541,6 +541,41 @@ bool mlme_is_connection_fail(struct wlan_objmgr_vdev *vdev)
|
||||
return mlme_priv->connection_fail;
|
||||
}
|
||||
|
||||
QDF_STATUS mlme_set_assoc_type(struct wlan_objmgr_vdev *vdev,
|
||||
enum vdev_assoc_type assoc_type)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
mlme_err("vdev component object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
mlme_priv = (struct mlme_legacy_priv *)vdev_mlme->legacy_vdev_ptr;
|
||||
|
||||
mlme_priv->assoc_type = assoc_type;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
enum vdev_assoc_type mlme_get_assoc_type(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
mlme_err("vdev component object is NULL");
|
||||
return false;
|
||||
}
|
||||
|
||||
mlme_priv = (struct mlme_legacy_priv *)vdev_mlme->legacy_vdev_ptr;
|
||||
|
||||
return mlme_priv->assoc_type;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
mlme_set_vdev_start_failed(struct wlan_objmgr_vdev *vdev, bool val)
|
||||
{
|
||||
|
Reference in New Issue
Block a user