qcacmn: Add if_mgr support to handle STA CSA

Add if_mgr support to handle STA CSA complete notification and
SAP CSA Started and complete notification.
Before CSA vdev restart on SAP side, disable TDLS off channel.
After CSA, check if TDLS is allowed for the current concurrency
and take action accordingly.

Change-Id: Icbadb898f5b468717f74f92a0993c05b59719205
CRs-Fixed: 3445113
Dieser Commit ist enthalten in:
Pragaspathi Thilagaraj
2023-03-22 19:38:35 +05:30
committet von Madan Koyyalamudi
Ursprung 3e8ff635aa
Commit 4c252e1598
5 geänderte Dateien mit 49 neuen und 21 gelöschten Zeilen

Datei anzeigen

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. 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,9 +81,8 @@ if_mgr_ap_stop_bss(struct wlan_objmgr_vdev *vdev,
QDF_STATUS
if_mgr_ap_stop_bss_complete(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
#ifdef WLAN_FEATURE_P2P_P2P_STA
/**
* if_mgr_csa_complete() - CSA event complete handler
* if_mgr_ap_csa_complete() - CSA event complete handler
* @vdev: vdev object
* @event_data: Interface mgr event data
*
@@ -94,16 +93,18 @@ if_mgr_ap_stop_bss_complete(struct wlan_objmgr_vdev *vdev,
* Return: QDF_STATUS
*/
QDF_STATUS
if_mgr_csa_complete(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
#else
static inline QDF_STATUS
if_mgr_csa_complete(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data)
{
return QDF_STATUS_SUCCESS;
}
#endif
if_mgr_ap_csa_complete(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
/**
* if_mgr_ap_csa_start() - CSA start handler for SAP/P2P_GO
* @vdev: Pointer to vdev object
* @event_data: Interface manager event data
*
* Return: QDF_STATUS
*/
QDF_STATUS if_mgr_ap_csa_start(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
#if defined WLAN_MBSS
/**

Datei anzeigen

@@ -48,7 +48,9 @@
* @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
* @WLAN_IF_MGR_EV_CSA_COMPLETE: Event to handle csa complete
* @WLAN_IF_MGR_EV_AP_CSA_START: Event to handle CSA start
* @WLAN_IF_MGR_EV_AP_CSA_COMPLETE: Event to handle csa complete
* @WLAN_IF_MGR_EV_STA_CSA_COMPLETE: Event to handle STA/P2P_CLI CSA completion
* @WLAN_IF_MGR_EV_MAX: Max event
*/
enum wlan_if_mgr_evt {
@@ -69,8 +71,10 @@ enum wlan_if_mgr_evt {
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_CSA_COMPLETE = 17,
WLAN_IF_MGR_EV_MAX = 18,
WLAN_IF_MGR_EV_AP_CSA_START = 17,
WLAN_IF_MGR_EV_AP_CSA_COMPLETE = 18,
WLAN_IF_MGR_EV_STA_CSA_COMPLETE = 19,
WLAN_IF_MGR_EV_MAX = 20,
};
/**

Datei anzeigen

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. 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
@@ -93,4 +94,18 @@ QDF_STATUS if_mgr_disconnect_complete(struct wlan_objmgr_vdev *vdev,
QDF_STATUS if_mgr_validate_candidate(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
/**
* if_mgr_sta_csa_complete() - CSA event complete handler
* @vdev: vdev object
* @event_data: Interface mgr event data
*
* Interface manager csa complete event handler
*
* Context: It should run in thread context
*
* Return: QDF_STATUS
*/
QDF_STATUS
if_mgr_sta_csa_complete(struct wlan_objmgr_vdev *vdev,
struct if_mgr_event_data *event_data);
#endif

Datei anzeigen

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. 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
@@ -50,7 +50,9 @@ const char *if_mgr_get_event_str(enum wlan_if_mgr_evt event)
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);
CASE_RETURN_STRING(WLAN_IF_MGR_EV_CSA_COMPLETE);
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_CSA_START);
CASE_RETURN_STRING(WLAN_IF_MGR_EV_AP_CSA_COMPLETE);
CASE_RETURN_STRING(WLAN_IF_MGR_EV_STA_CSA_COMPLETE);
default:
return "Unknown";
}
@@ -155,8 +157,14 @@ QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
case WLAN_IF_MGR_EV_VALIDATE_CANDIDATE:
status = if_mgr_validate_candidate(vdev, event_data);
break;
case WLAN_IF_MGR_EV_CSA_COMPLETE:
status = if_mgr_csa_complete(vdev, event_data);
case WLAN_IF_MGR_EV_AP_CSA_START:
status = if_mgr_ap_csa_start(vdev, event_data);
break;
case WLAN_IF_MGR_EV_AP_CSA_COMPLETE:
status = if_mgr_ap_csa_complete(vdev, event_data);
break;
case WLAN_IF_MGR_EV_STA_CSA_COMPLETE:
status = if_mgr_sta_csa_complete(vdev, event_data);
break;
default:
status = if_mgr_deliver_mbss_event(vdev, event, event_data);