qcacmn: Add new events to the interface manager
Add new events to the interfaces manager for the following which requires inter vdev co-ordination 1. ACS 2. HT40 scan These event are sent to the MBSS frameworkfor inter VDEV co-ordination. Add a string array ro represent interface manage events. Add API to retrieve string from interface manager events. Change-Id: I397621a432da70156e34f46f75fd6c0e8d0a7b53 CRs-Fixed: 2963147
This commit is contained in:

committed by
Madan Koyyalamudi

orang tua
e831cf3415
melakukan
c893f06069
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -81,4 +81,175 @@ QDF_STATUS
|
||||
if_mgr_ap_stop_bss_complete(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
#endif
|
||||
#if defined WLAN_MBSS
|
||||
/**
|
||||
* if_mgr_ap_start_acs() - ACS start event handler
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles the ACS start event for interface
|
||||
* manager
|
||||
*
|
||||
* Context: It can run in process/tasklet context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_ap_start_acs(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
/**
|
||||
* if_mgr_ap_stop_acs() - ACS stop event handler
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles the ACS stop event for interface
|
||||
* manager
|
||||
*
|
||||
* Context: It can run in process/tasklet context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_ap_stop_acs(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
/**
|
||||
* if_mgr_ap_done_acs() - ACS done event handler
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles the ACS stop event for interface
|
||||
* manager
|
||||
*
|
||||
* Context: It can run in process/tasklet context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_ap_done_acs(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
/**
|
||||
* if_mgr_ap_cancel_acs() - ACS cancel event handler
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles the ACS cancel event for interface
|
||||
* manager
|
||||
*
|
||||
* Context: It can run in process/tasklet context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_ap_cancel_acs(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
/**
|
||||
* if_mgr_ap_start_ht40() - HT40 scan start event handler
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles the HT40 scan start event for interface
|
||||
* manager
|
||||
*
|
||||
* Context: It can run in process/tasklet context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_ap_start_ht40(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
/**
|
||||
* if_mgr_ap_stop_ht40() - HT40 scan stop event handler
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles the HT40 scan stop event for interface
|
||||
* manager
|
||||
*
|
||||
* Context: It can run in process/tasklet context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_ap_stop_ht40(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
/**
|
||||
* if_mgr_ap_done_ht40() - HT40 scan done event handler
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles the HT40 scan done event for interface
|
||||
* manager
|
||||
*
|
||||
* Context: It can run in process/tasklet context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_ap_done_ht40(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
/**
|
||||
* if_mgr_ap_cancel_ht40() - HT40 scan cancel event handler
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles the HT40 scan cancel event for interface
|
||||
* manager
|
||||
*
|
||||
* Context: It can run in process/tasklet context
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_ap_cancel_ht40(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
if_mgr_ap_start_acs(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
if_mgr_ap_stop_acs(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
if_mgr_ap_cancel_acs(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
if_mgr_ap_start_ht40(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
if_mgr_ap_stop_ht40(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
if_mgr_ap_done_ht40(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
if_mgr_ap_cancel_ht40(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif /* WLAN_MBSS */
|
||||
#endif /* _WLAN_IF_MGR_AP_H_ */
|
||||
|
||||
|
@@ -38,14 +38,39 @@
|
||||
QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
|
||||
enum wlan_if_mgr_evt event,
|
||||
struct if_mgr_event_data *event_data);
|
||||
/**
|
||||
* if_mgr_get_event_str() - get event string
|
||||
* @event: interface manager event
|
||||
*
|
||||
* Return: Interface event string
|
||||
*/
|
||||
const char *if_mgr_get_event_str(enum wlan_if_mgr_evt event);
|
||||
|
||||
/**
|
||||
* if_mgr_deliver_mbss_event() - interface mgr MBSS event handler
|
||||
* @vdev: vdev object
|
||||
* @event: interface mangaer event
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS if_mgr_deliver_mbss_event(struct wlan_objmgr_vdev *vdev,
|
||||
enum wlan_if_mgr_evt event,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
#else
|
||||
static inline
|
||||
QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
|
||||
enum wlan_if_mgr_evt event,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline const char *if_mgr_get_event_str(enum wlan_if_mgr_evt event)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
#endif /* WLAN_FEATURE_INTERFACE_MGR */
|
||||
#endif
|
||||
|
@@ -39,6 +39,14 @@
|
||||
* @WLAN_IF_MGR_EV_AP_START_BSS_COMPLETE:Event to handle start bss complete
|
||||
* @WLAN_IF_MGR_EV_AP_STOP_BSS:Event to handle stop bss request
|
||||
* @WLAN_IF_MGR_EV_AP_STOP_BSS_COMPLETE:Event to stop bss complete
|
||||
* WLAN_IF_MGR_EV_AP_START_ACS: Event to handle ACS start
|
||||
* WLAN_IF_MGR_EV_AP_STOP_ACS: Event to handle ACS stop
|
||||
* WLAN_IF_MGR_EV_AP_DONE_ACS: Event to handle ACS completion
|
||||
* WLAN_IF_MGR_EV_AP_CANCEL_ACS: Event to handle ACS cancel
|
||||
* WLAN_IF_MGR_EV_AP_START_HT40: Event to handle HT40 scan start
|
||||
* WLAN_IF_MGR_EV_AP_STOP_HT40: Event to handle HT40 scan stop
|
||||
* WLAN_IF_MGR_EV_AP_DONE_HT40: Event to handle HT40 scan completion
|
||||
* WLAN_IF_MGR_EV_AP_CANCEL_HT40: Event to handle HT40 scan cancel
|
||||
*/
|
||||
enum wlan_if_mgr_evt {
|
||||
WLAN_IF_MGR_EV_CONNECT_START = 0,
|
||||
@@ -50,7 +58,15 @@ enum wlan_if_mgr_evt {
|
||||
WLAN_IF_MGR_EV_AP_START_BSS_COMPLETE = 6,
|
||||
WLAN_IF_MGR_EV_AP_STOP_BSS = 7,
|
||||
WLAN_IF_MGR_EV_AP_STOP_BSS_COMPLETE = 8,
|
||||
WLAN_IF_MGR_EV_MAX = 9,
|
||||
WLAN_IF_MGR_EV_AP_START_ACS = 9,
|
||||
WLAN_IF_MGR_EV_AP_STOP_ACS = 10,
|
||||
WLAN_IF_MGR_EV_AP_DONE_ACS = 11,
|
||||
WLAN_IF_MGR_EV_AP_CANCEL_ACS = 12,
|
||||
WLAN_IF_MGR_EV_AP_START_HT40 = 13,
|
||||
WLAN_IF_MGR_EV_AP_STOP_HT40 = 14,
|
||||
WLAN_IF_MGR_EV_AP_DONE_HT40 = 15,
|
||||
WLAN_IF_MGR_EV_AP_CANCEL_HT40 = 16,
|
||||
WLAN_IF_MGR_EV_MAX = 17,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -70,10 +86,12 @@ struct validate_bss_data {
|
||||
* @status: qdf status used to indicate if connect,disconnect,
|
||||
* start bss,stop bss event is success/failure.
|
||||
* @validate_bss_info: struct to hold the validate candidate information
|
||||
* @data: event data
|
||||
*/
|
||||
struct if_mgr_event_data {
|
||||
QDF_STATUS status;
|
||||
struct validate_bss_data validate_bss_info;
|
||||
void *data;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -78,4 +78,19 @@ QDF_STATUS if_mgr_disconnect_start(struct wlan_objmgr_vdev *vdev,
|
||||
QDF_STATUS if_mgr_disconnect_complete(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data);
|
||||
|
||||
/**
|
||||
* if_mgr_validate_candidate() - Validate the selected candidate
|
||||
* @vdev: vdev object
|
||||
* @event_data: Interface mgr event data
|
||||
*
|
||||
* This function handles candidate validation as part of connection
|
||||
* manager
|
||||
*
|
||||
* 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
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -22,7 +22,94 @@
|
||||
#include "wlan_if_mgr_sta.h"
|
||||
#include "wlan_if_mgr_ap.h"
|
||||
#include "wlan_if_mgr_main.h"
|
||||
#if !defined WLAN_MBSS
|
||||
#include "wlan_if_mgr_roam.h"
|
||||
#endif
|
||||
|
||||
const char *if_mgr_get_event_str(enum wlan_if_mgr_evt event)
|
||||
{
|
||||
if (event > WLAN_IF_MGR_EV_MAX)
|
||||
return "";
|
||||
|
||||
switch (event) {
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_CONNECT_START);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_CONNECT_COMPLETE);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_DISCONNECT_START);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_DISCONNECT_COMPLETE);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_VALIDATE_CANDIDATE);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_START_BSS);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_START_BSS_COMPLETE);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_STOP_BSS);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_STOP_BSS_COMPLETE);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_START_ACS);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_STOP_ACS);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_DONE_ACS);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_CANCEL_ACS);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_START_HT40);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_STOP_HT40);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_DONE_HT40);
|
||||
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_CANCEL_HT40);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
#if defined WLAN_MBSS
|
||||
QDF_STATUS if_mgr_deliver_mbss_event(struct wlan_objmgr_vdev *vdev,
|
||||
enum wlan_if_mgr_evt event,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
switch (event) {
|
||||
case WLAN_IF_MGR_EV_AP_START_ACS:
|
||||
status = if_mgr_ap_start_acs(vdev, event_data);
|
||||
break;
|
||||
case WLAN_IF_MGR_EV_AP_STOP_ACS:
|
||||
status = if_mgr_ap_stop_acs(vdev, event_data);
|
||||
break;
|
||||
case WLAN_IF_MGR_EV_AP_CANCEL_ACS:
|
||||
status = if_mgr_ap_cancel_acs(vdev, event_data);
|
||||
break;
|
||||
case WLAN_IF_MGR_EV_AP_DONE_ACS:
|
||||
status = if_mgr_ap_done_acs(vdev, event_data);
|
||||
break;
|
||||
case WLAN_IF_MGR_EV_AP_START_HT40:
|
||||
status = if_mgr_ap_start_ht40(vdev, event_data);
|
||||
break;
|
||||
case WLAN_IF_MGR_EV_AP_STOP_HT40:
|
||||
status = if_mgr_ap_stop_ht40(vdev, event_data);
|
||||
break;
|
||||
case WLAN_IF_MGR_EV_AP_DONE_HT40:
|
||||
status = if_mgr_ap_done_ht40(vdev, event_data);
|
||||
break;
|
||||
case WLAN_IF_MGR_EV_AP_CANCEL_HT40:
|
||||
status = if_mgr_ap_cancel_ht40(vdev, event_data);
|
||||
break;
|
||||
default:
|
||||
status = QDF_STATUS_E_INVAL;
|
||||
ifmgr_err("Invalid event");
|
||||
break;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
#else
|
||||
QDF_STATUS if_mgr_deliver_mbss_event(struct wlan_objmgr_vdev *vdev,
|
||||
enum wlan_if_mgr_evt event,
|
||||
struct if_mgr_event_data *event_data)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
|
||||
switch (event) {
|
||||
default:
|
||||
status = QDF_STATUS_E_INVAL;
|
||||
ifmgr_err("Invalid event");
|
||||
break;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
|
||||
enum wlan_if_mgr_evt event,
|
||||
@@ -35,7 +122,8 @@ QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
|
||||
if (!psoc)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
ifmgr_debug("IF MGR event received: %d", event);
|
||||
ifmgr_debug("IF MGR event received: %s(%d)",
|
||||
if_mgr_get_event_str(event), event);
|
||||
|
||||
switch (event) {
|
||||
case WLAN_IF_MGR_EV_CONNECT_START:
|
||||
@@ -66,9 +154,7 @@ QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
|
||||
status = if_mgr_validate_candidate(vdev, event_data);
|
||||
break;
|
||||
default:
|
||||
status = QDF_STATUS_E_INVAL;
|
||||
ifmgr_err("Invalid event");
|
||||
break;
|
||||
status = if_mgr_deliver_mbss_event(vdev, event, event_data);
|
||||
}
|
||||
|
||||
return status;
|
||||
|
Reference in New Issue
Block a user