qcacld-3.0: Add start/stop bss changes in interface mgr
- Add start/stop bss event processing - Add WLAN_INTERFACE_IF_MGR flag Change-Id: I472a4534ee7bf95a10058595c85ec89eaf411670 CRs-Fixed: 2759981
This commit is contained in:

committed by
snandini

parent
cef57d4f47
commit
a7c313b997
@@ -29,14 +29,34 @@
|
||||
|
||||
/**
|
||||
* if_mgr_enable_roaming() - interface manager enable roaming
|
||||
*
|
||||
* Interface manager emable roaming
|
||||
*
|
||||
* @vdev: vdev object
|
||||
* @pdev: pdev object
|
||||
* @requestor: RSO disable requestor
|
||||
*
|
||||
* Interface manager api to enable roaming for all other active vdev id's
|
||||
*
|
||||
* Context: It should run in thread context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_enable_roaming(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_objmgr_pdev *pdev);
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
enum wlan_cm_rso_control_requestor requestor);
|
||||
|
||||
/**
|
||||
* if_mgr_disable_roaming() - interface manager disable roaming
|
||||
* @vdev: vdev object
|
||||
* @pdev: pdev object
|
||||
* @requestor: RSO disable requestor
|
||||
*
|
||||
* Interface manager api to disable roaming for all other active vdev id's
|
||||
*
|
||||
* Context: It should run in thread context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_disable_roaming(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
enum wlan_cm_rso_control_requestor requestor);
|
||||
|
||||
#endif
|
||||
|
@@ -22,9 +22,20 @@
|
||||
#include "wlan_objmgr_vdev_obj.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_if_mgr_roam.h"
|
||||
#include "wlan_cm_roam_api.h"
|
||||
#include "wlan_if_mgr_main.h"
|
||||
#include "wlan_p2p_ucfg_api.h"
|
||||
|
||||
QDF_STATUS if_mgr_enable_roaming(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_objmgr_pdev *pdev)
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
enum wlan_cm_rso_control_requestor requestor)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS if_mgr_disable_roaming(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
enum wlan_cm_rso_control_requestor requestor)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -21,9 +21,105 @@
|
||||
#include "wlan_objmgr_vdev_obj.h"
|
||||
#include "wlan_if_mgr_public_struct.h"
|
||||
#include "wlan_if_mgr_ap.h"
|
||||
#include "wlan_if_mgr_roam.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_if_mgr_main.h"
|
||||
#include "wlan_p2p_cfg_api.h"
|
||||
|
||||
QDF_STATUS wlan_process_ap_start_bss(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
QDF_STATUS if_mgr_ap_start_bss(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
if (!pdev)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!psoc)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
if (policy_mgr_is_hw_mode_change_in_progress(psoc)) {
|
||||
if (!QDF_IS_STATUS_SUCCESS(
|
||||
policy_mgr_wait_for_connection_update(psoc))) {
|
||||
ifmgr_err("qdf wait for event failed!!");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if (policy_mgr_is_sta_active_connection_exists(psoc))
|
||||
/* Disable Roaming on all vdev's before starting bss */
|
||||
if_mgr_disable_roaming(vdev, pdev, RSO_START_BSS);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
if_mgr_ap_start_bss_complete(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
if (!pdev)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!psoc)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
/*
|
||||
* Due to audio share glitch with P2P GO due
|
||||
* to roam scan on concurrent interface, disable
|
||||
* roaming if "p2p_disable_roam" ini is enabled.
|
||||
* Donot re-enable roaming again on other STA interface
|
||||
* if p2p GO is active on any vdev.
|
||||
*/
|
||||
if (cfg_p2p_is_roam_config_disabled(psoc) &&
|
||||
wlan_vdev_mlme_get_opmode(vdev) == QDF_P2P_GO_MODE) {
|
||||
ifmgr_debug("p2p go mode, keep roam disabled");
|
||||
} else {
|
||||
/* Enable Roaming after start bss in case of failure/success */
|
||||
if_mgr_enable_roaming(vdev, pdev, RSO_START_BSS);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS if_mgr_ap_stop_bss(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
if_mgr_ap_stop_bss_complete(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
if (!pdev)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!psoc)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
/*
|
||||
* Due to audio share glitch with P2P GO due
|
||||
* to roam scan on concurrent interface, disable
|
||||
* roaming if "p2p_disable_roam" ini is enabled.
|
||||
* Re-enable roaming on other STA interface if p2p GO
|
||||
* is active on any vdev.
|
||||
*/
|
||||
if (cfg_p2p_is_roam_config_disabled(psoc) &&
|
||||
wlan_vdev_mlme_get_opmode(vdev) == QDF_P2P_GO_MODE) {
|
||||
ifmgr_debug("p2p go disconnected enable roam");
|
||||
if_mgr_enable_roaming(vdev, pdev, RSO_START_BSS);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@@ -24,8 +24,8 @@
|
||||
#include "nan_ucfg_api.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
|
||||
QDF_STATUS wlan_process_connect_start(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
QDF_STATUS if_mgr_connect_start(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
uint8_t sta_cnt, sap_cnt;
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
@@ -67,8 +67,8 @@ QDF_STATUS wlan_process_connect_start(struct wlan_objmgr_vdev *vdev,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS wlan_process_connect_complete(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
QDF_STATUS if_mgr_connect_complete(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
Reference in New Issue
Block a user