qcacld-3.0: Add candidate validation to the if_mgr

Add the API to validate the BSS before roaming to it. This API will check
if other vdevs are already connected to the BSS, if concurrency is allowed,
and if channel is allowed for the current HW mode.
Keep the new changes under the interface_mgr feature flag.

Change-Id: I280e95b0a30c08fe4037295330628b79d22acf5f
CRs-fixed: 2774543
This commit is contained in:
Lincoln Tran
2020-09-10 17:50:33 -07:00
committed by snandini
parent c89446a515
commit 53f7903389
3 changed files with 149 additions and 3 deletions

View File

@@ -25,6 +25,7 @@
#include "wlan_objmgr_pdev_obj.h"
#include "wlan_objmgr_vdev_obj.h"
#include "wlan_policy_mgr_api.h"
#include "wlan_if_mgr_public_struct.h"
#include "wlan_if_mgr_roam.h"
/**
@@ -40,6 +41,19 @@ struct change_roam_state_arg {
uint8_t curr_vdev_id;
};
/**
* struct bssid_search_arg - Contains candidate validation arguments
* @peer_addr: MAC address of the BSS
* @vdev_id: virtual device ID
*
* This structure is used to pass the candidate validation information to the
* callback
*/
struct bssid_search_arg {
struct qdf_mac_addr peer_addr;
uint8_t vdev_id;
};
/**
* if_mgr_enable_roaming() - interface manager enable roaming
* @vdev: vdev object
@@ -106,4 +120,19 @@ QDF_STATUS if_mgr_enable_roaming_after_p2p_disconnect(
struct wlan_objmgr_pdev *pdev,
enum wlan_cm_rso_control_requestor requestor);
/**
* if_mgr_validate_candidate() - validate candidate event handler
* @vdev: vdev object
* @event_data: Interface mgr event data
*
* This function will validate the candidate to see if it is a suitable option
* for roaming to.
*
* Context: It should run in thread context
*
* Return: QDF_STATUS
*/
QDF_STATUS if_mgr_validate_candidate(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
#endif