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
|
QDF_STATUS
|
||||||
wlan_mlme_get_idle_roam_band(struct wlan_objmgr_psoc *psoc, uint32_t *val);
|
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
|
#else
|
||||||
static inline QDF_STATUS
|
static inline QDF_STATUS
|
||||||
wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
|
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;
|
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
|
#endif
|
||||||
|
|
||||||
QDF_STATUS
|
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;
|
struct roam_invoke_req *roam_invoke_req = NULL;
|
||||||
wlan_cm_id cm_id;
|
wlan_cm_id cm_id;
|
||||||
uint8_t vdev_id;
|
uint8_t vdev_id;
|
||||||
|
uint8_t enable_self_bss_roam = false;
|
||||||
|
|
||||||
if (!req)
|
if (!req)
|
||||||
return QDF_STATUS_E_FAILURE;
|
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_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));
|
roam_invoke_req = qdf_mem_malloc(sizeof(*roam_invoke_req));
|
||||||
if (!roam_invoke_req) {
|
if (!roam_invoke_req) {
|
||||||
|
Reference in New Issue
Block a user