qcacld-3.0: Add self bss roam check for connnect cmd
Add self bss roam check in roam invoke cmd handler, If ini enable_self_bss_roam is 0, don't permit to roam to current connected bss, just keep current connection. Change-Id: I7fe724e26d15bcc008957829e4e3384c60b58773 CRs-Fixed: 3069587
This commit is contained in:

committed by
Madan Koyyalamudi

parent
4b35a94b79
commit
22dd408968
@@ -2790,6 +2790,17 @@ wlan_mlme_get_idle_roam_min_rssi(struct wlan_objmgr_psoc *psoc, uint32_t *val);
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_mlme_get_idle_roam_band(struct wlan_objmgr_psoc *psoc, uint32_t *val);
|
||||
|
||||
/**
|
||||
* wlan_mlme_get_self_bss_roam() - Get self bss roam enable status
|
||||
* @psoc: pointer to psoc object
|
||||
* @enable_self_bss_roam: Pointer to self bss roam enable status
|
||||
*
|
||||
* Return: QDF Status
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_mlme_get_self_bss_roam(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *enable_self_bss_roam);
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
|
||||
|
@@ -4462,6 +4462,25 @@ wlan_mlme_get_idle_roam_band(struct wlan_objmgr_psoc *psoc, uint32_t *val)
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wlan_mlme_get_self_bss_roam(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *enable_self_bss_roam)
|
||||
{
|
||||
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||
|
||||
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||
|
||||
if (!mlme_obj) {
|
||||
*enable_self_bss_roam =
|
||||
cfg_get(psoc, CFG_LFR3_ENABLE_SELF_BSS_ROAM);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
*enable_self_bss_roam = mlme_obj->cfg.lfr.enable_self_bss_roam;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS
|
||||
|
@@ -5072,6 +5072,7 @@ cm_send_roam_invoke_req(struct cnx_mgr *cm_ctx, struct cm_req *req)
|
||||
struct roam_invoke_req *roam_invoke_req = NULL;
|
||||
wlan_cm_id cm_id;
|
||||
uint8_t vdev_id;
|
||||
uint8_t enable_self_bss_roam = false;
|
||||
|
||||
if (!req)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
@@ -5097,6 +5098,14 @@ cm_send_roam_invoke_req(struct cnx_mgr *cm_ctx, struct cm_req *req)
|
||||
}
|
||||
|
||||
wlan_vdev_get_bss_peer_mac(cm_ctx->vdev, &connected_bssid);
|
||||
wlan_mlme_get_self_bss_roam(psoc, &enable_self_bss_roam);
|
||||
if (!enable_self_bss_roam &&
|
||||
qdf_is_macaddr_equal(&roam_req->req.bssid, &connected_bssid)) {
|
||||
mlme_err(CM_PREFIX_FMT "self bss roam disabled",
|
||||
CM_PREFIX_REF(vdev_id, cm_id));
|
||||
status = QDF_STATUS_E_FAILURE;
|
||||
goto roam_err;
|
||||
}
|
||||
|
||||
roam_invoke_req = qdf_mem_malloc(sizeof(*roam_invoke_req));
|
||||
if (!roam_invoke_req) {
|
||||
|
Reference in New Issue
Block a user