From 539d3bfb538cf77e241e1f91dc4fbd461c308d18 Mon Sep 17 00:00:00 2001 From: Srinivas Dasari Date: Fri, 6 Jan 2023 01:24:59 +0530 Subject: [PATCH] qcacmn: Add APIs to set and get acs_mode in vdev mlme obj To support fixed channel SAP in unsafe channels, driver needs to cache and retrieve SAP start mode i.e. ACS or fixed. Add a new param is_acs_mode to vdev_mlme_mgmt_ap and APIs to set and get the same through vdev. Change-Id: Ib274b95be66e774b15f4687a02ed7fef6bf21056 CRs-Fixed: 3381401 --- umac/mlme/include/wlan_vdev_mlme.h | 2 ++ .../dispatcher/inc/wlan_vdev_mgr_ucfg_api.h | 13 ++++++++- .../dispatcher/inc/wlan_vdev_mgr_utils_api.h | 19 +++++++++++- .../dispatcher/src/wlan_vdev_mgr_ucfg_api.c | 7 +++++ .../dispatcher/src/wlan_vdev_mgr_utils_api.c | 29 ++++++++++++++++++- 5 files changed, 67 insertions(+), 3 deletions(-) diff --git a/umac/mlme/include/wlan_vdev_mlme.h b/umac/mlme/include/wlan_vdev_mlme.h index 1d248a840a..da224072b6 100644 --- a/umac/mlme/include/wlan_vdev_mlme.h +++ b/umac/mlme/include/wlan_vdev_mlme.h @@ -435,6 +435,7 @@ struct wlan_vdev_aid_mgr { * @max_chan_switch_time: Max channel switch time in milliseconds. * @last_bcn_ts_ms: Timestamp (in milliseconds) of the last beacon sent on the * CSA triggered channel. + * @is_acs_mode: True if SAP is started in ACS mode */ struct vdev_mlme_mgmt_ap { bool hidden_ssid; @@ -442,6 +443,7 @@ struct vdev_mlme_mgmt_ap { struct wlan_vdev_aid_mgr *aid_mgr; uint32_t max_chan_switch_time; unsigned long last_bcn_ts_ms; + bool is_acs_mode; }; /** diff --git a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h index dc97267e71..7d0b7af2d4 100644 --- a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h +++ b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 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 @@ -243,4 +243,15 @@ QDF_STATUS ucfg_vdev_mgr_cdp_vdev_attach(struct wlan_objmgr_vdev *vdev); */ QDF_STATUS ucfg_vdev_mgr_cdp_vdev_detach(struct wlan_objmgr_vdev *vdev); #endif + +/** + * ucfg_util_vdev_mgr_set_acs_mode_for_vdev() - ucfg API to set SAP start mode + * @vdev: pointer to vdev object + * @is_acs_mode: Carries true if SAP is started in ACS + * + * Return: None + */ +void +ucfg_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev, + bool is_acs_mode); #endif /* __WLAN_VDEV_MLME_UCFG_H__ */ diff --git a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_utils_api.h b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_utils_api.h index 508e204c66..ddda7257d3 100644 --- a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_utils_api.h +++ b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_utils_api.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2019 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 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 @@ -171,6 +171,23 @@ void wlan_util_vdev_mgr_set_cac_timeout_for_vdev(struct wlan_objmgr_vdev *vdev, uint32_t new_chan_cac_ms); #endif /* MOBILE_DFS_SUPPORT */ +/** + * wlan_util_vdev_mgr_set_acs_mode_for_vdev() - set if the SAP is started in ACS + * @vdev: Pointer to vdev object. + * @is_acs_mode: Indicates true if the SAP is started in ACS + * + * Return: void + */ +void wlan_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev, + bool is_acs_mode); + +/** + * wlan_util_vdev_mgr_get_acs_mode_for_vdev() - Get the SAP start mode + * @vdev: Pointer to vdev object. + * + * Return: true if the SAP is started in ACS + */ +bool wlan_util_vdev_mgr_get_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev); #ifdef WLAN_FEATURE_11BE_MLO /** * wlan_util_vdev_mgr_quiet_offload() - set quiet status for given link diff --git a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_ucfg_api.c b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_ucfg_api.c index 3c766b4b8a..3e0cb86d19 100644 --- a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_ucfg_api.c +++ b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_ucfg_api.c @@ -206,3 +206,10 @@ QDF_STATUS ucfg_vdev_mgr_cdp_vdev_detach(struct wlan_objmgr_vdev *vdev) qdf_export_symbol(ucfg_vdev_mgr_cdp_vdev_detach); #endif + +void +ucfg_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev, + bool is_acs_mode) +{ + wlan_util_vdev_mgr_set_acs_mode_for_vdev(vdev, is_acs_mode); +} diff --git a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c index 85abb38911..c00fd48074 100644 --- a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c +++ b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 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 @@ -761,6 +761,33 @@ void wlan_util_vdev_mgr_set_cac_timeout_for_vdev(struct wlan_objmgr_vdev *vdev, } #endif /* MOBILE_DFS_SUPPORT */ +void wlan_util_vdev_mgr_set_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev, + bool is_acs_mode) +{ + struct vdev_mlme_obj *vdev_mlme; + + vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev); + if (!vdev_mlme) { + mlme_err("vdev_mlme is null"); + return; + } + + vdev_mlme->mgmt.ap.is_acs_mode = is_acs_mode; +} + +bool wlan_util_vdev_mgr_get_acs_mode_for_vdev(struct wlan_objmgr_vdev *vdev) +{ + struct vdev_mlme_obj *vdev_mlme; + + vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev); + if (!vdev_mlme) { + mlme_err("vdev_mlme is null"); + return false; + } + + return vdev_mlme->mgmt.ap.is_acs_mode; +} + QDF_STATUS wlan_util_vdev_mgr_get_csa_channel_switch_time( struct wlan_objmgr_vdev *vdev, uint32_t *chan_switch_time)