From c9df6d01a10d8740789e9bfa91da209ef3290d23 Mon Sep 17 00:00:00 2001 From: Bala Venkatesh Date: Mon, 27 Aug 2018 11:42:21 +0530 Subject: [PATCH] qcacld-3.0: Add SAP CFG ITEMS Part 1 Add support for the mlme cfg SAP items in mlme component Change-Id: I7b97ec14d0e328f8abe8585927da1947e5d181d8 CRs-Fixed: 2313045 --- mlme/core/src/wlan_mlme_main.c | 36 ++ mlme/dispatcher/inc/cfg_mlme.h | 4 +- mlme/dispatcher/inc/cfg_mlme_sap.h | 480 ++++++++++++++++++ mlme/dispatcher/inc/wlan_mlme_public_struct.h | 31 ++ 4 files changed, 550 insertions(+), 1 deletion(-) create mode 100644 mlme/dispatcher/inc/cfg_mlme_sap.h diff --git a/mlme/core/src/wlan_mlme_main.c b/mlme/core/src/wlan_mlme_main.c index 15cf920119..889dd412f2 100644 --- a/mlme/core/src/wlan_mlme_main.c +++ b/mlme/core/src/wlan_mlme_main.c @@ -163,6 +163,41 @@ static void mlme_update_sap_protection_cfg(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_IGNORE_PEER_HT_MODE); } +static void mlme_update_sap_cfg(struct wlan_objmgr_psoc *psoc, + struct wlan_mlme_cfg_sap *sap_cfg) +{ + sap_cfg->beacon_interval = cfg_default(CFG_BEACON_INTERVAL); + sap_cfg->dtim_interval = cfg_default(CFG_DTIM_PERIOD); + sap_cfg->listen_interval = cfg_default(CFG_LISTEN_INTERVAL); + sap_cfg->sap_11g_policy = cfg_default(CFG_11G_ONLY_POLICY); + sap_cfg->assoc_sta_limit = cfg_default(CFG_ASSOC_STA_LIMIT); + sap_cfg->enable_lte_coex = cfg_get(psoc, CFG_INI_ENABLE_LTE_COEX); + sap_cfg->rmc_action_period_freq = + cfg_default(CFG_RMC_ACTION_PERIOD_FREQUENCY); + sap_cfg->rate_tx_mgmt = cfg_get(psoc, CFG_INI_RATE_FOR_TX_MGMT); + sap_cfg->rate_tx_mgmt_2g = cfg_get(psoc, CFG_INI_RATE_FOR_TX_MGMT_2G); + sap_cfg->rate_tx_mgmt_5g = cfg_get(psoc, CFG_INI_RATE_FOR_TX_MGMT_5G); + sap_cfg->tele_bcn_wakeup_en = cfg_get(psoc, CFG_INI_TELE_BCN_WAKEUP_EN); + sap_cfg->tele_bcn_max_li = cfg_get(psoc, CFG_INI_TELE_BCN_MAX_LI); + sap_cfg->sap_get_peer_info = cfg_get(psoc, CFG_INI_SAP_GET_PEER_INFO); + sap_cfg->sap_allow_all_chan_param_name = + cfg_get(psoc, CFG_INI_SAP_ALLOW_ALL_CHANNEL_PARAM); + sap_cfg->sap_max_no_peers = cfg_get(psoc, CFG_INI_SAP_MAX_NO_PEERS); + sap_cfg->sap_max_offload_peers = + cfg_get(psoc, CFG_INI_SAP_MAX_OFFLOAD_PEERS); + sap_cfg->sap_max_offload_reorder_buffs = + cfg_get(psoc, CFG_INI_SAP_MAX_OFFLOAD_REORDER_BUFFS); + sap_cfg->sap_ch_switch_beacon_cnt = + cfg_get(psoc, CFG_INI_SAP_CH_SWITCH_BEACON_CNT); + sap_cfg->sap_ch_switch_mode = cfg_get(psoc, CFG_INI_SAP_CH_SWITCH_MODE); + sap_cfg->sap_internal_restart_name = + cfg_get(psoc, CFG_INI_SAP_INTERNAL_RESTART_NAME); + sap_cfg->chan_switch_hostapd_rate_enabled_name = + cfg_get(psoc, CFG_INI_CHAN_SWITCH_HOSTAPD_RATE_ENABLED_NAME); + sap_cfg->reduced_beacon_interval = + cfg_get(psoc, CFG_INI_REDUCED_BEACON_INTERVAL); +} + QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) { struct wlan_mlme_psoc_obj *mlme_obj; @@ -180,6 +215,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) mlme_update_rates_in_cfg(psoc, &mlme_cfg->rates); mlme_update_sap_protection_cfg(psoc, &mlme_cfg->sap_protection_cfg); mlme_init_chainmask_cfg(psoc, &mlme_cfg->chainmask_cfg); + mlme_update_sap_cfg(psoc, &mlme_cfg->sap_cfg); return status; } diff --git a/mlme/dispatcher/inc/cfg_mlme.h b/mlme/dispatcher/inc/cfg_mlme.h index f876a92a21..5285bb5fea 100644 --- a/mlme/dispatcher/inc/cfg_mlme.h +++ b/mlme/dispatcher/inc/cfg_mlme.h @@ -28,12 +28,14 @@ #include "cfg_mlme_vht_caps.h" #include "cfg_mlme_rates.h" #include "cfg_sap_protection.h" +#include "cfg_mlme_sap.h" #define CFG_MLME_ALL \ CFG_CHAINMASK_ALL \ CFG_HT_CAPS_ALL \ CFG_VHT_CAPS_ALL \ CFG_RATES_ALL \ - CFG_SAP_PROTECTION_ALL + CFG_SAP_PROTECTION_ALL \ + CFG_SAP_ALL #endif /* __CFG_MLME_H */ diff --git a/mlme/dispatcher/inc/cfg_mlme_sap.h b/mlme/dispatcher/inc/cfg_mlme_sap.h new file mode 100644 index 0000000000..888c51f6e6 --- /dev/null +++ b/mlme/dispatcher/inc/cfg_mlme_sap.h @@ -0,0 +1,480 @@ +/* + * Copyright (c) 2012-2018 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 copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/** + * DOC: This file contains centralized definitions of converged configuration. + */ + +#ifndef __CFG_MLME_SAP_H +#define __CFG_MLME_SAP_H + +#define CFG_SSID CFG_STRING( \ + "cfg_ssid", \ + 0, \ + 32, \ + "1,2,3,4,5,6,7,8,9,0", \ + "CFG_SSID") + +#define CFG_BEACON_INTERVAL CFG_UINT( \ + "cfg_beacon_interval", \ + 0, \ + 65535, \ + 100, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_BEACON_INTERVAL") + +#define CFG_DTIM_PERIOD CFG_UINT( \ + "cfg_dtim_period", \ + 0, \ + 65535, \ + 1, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_DTIM_PERIOD") + +#define CFG_LISTEN_INTERVAL CFG_UINT( \ + "cfg_listen_interval", \ + 0, \ + 65535, \ + 1, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_LISTEN_INTERVAL") + +#define CFG_11G_ONLY_POLICY CFG_UINT( \ + "cfg_11g_only_policy", \ + 0, \ + 1, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_11G_ONLY_POLICY") + +#define CFG_ASSOC_STA_LIMIT CFG_UINT( \ + "cfg_beacon_interval", \ + 1, \ + 32, \ + 10, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_ASSOC_STA_LIMIT") + +/* + * + * cfg_enable_lte_coex - enable LTE COEX + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to enable LTE COEX + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_ENABLE_LTE_COEX CFG_INI_BOOL( \ + "cfg_enable_lte_coex", \ + 0, \ + "CFG_ENABLE_LTE_COEX") + +#define CFG_RMC_ACTION_PERIOD_FREQUENCY CFG_UINT( \ + "cfg_rcm_action_period_frequency", \ + 100, \ + 1000, \ + 300, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_RMC_ACTION_PERIOD_FREQUENCY") + +/* + * + * cfg_rate_for_tx_mgmt - Set rate for tx mgmt + * @Min: 0 + * @Max: 0xFF + * @Default: 0xFF + * + * This ini is used to set rate for tx mgmt + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_RATE_FOR_TX_MGMT CFG_INI_UINT( \ + "cfg_rate_for_tx_mgmt", \ + 0, \ + 0xFF, \ + 0xFF, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_INI_RATE_FOR_TX_MGMT") + +/* + * + * cfg_rate_for_tx_mgmt_2g - Set rate for tx mgmt 2g + * @Min: 0 + * @Max: 255 + * @Default: 255 + * + * This ini is used to set rate for tx mgmt 2g + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_RATE_FOR_TX_MGMT_2G CFG_INI_UINT( \ + "cfg_rate_for_tx_mgmt_2g", \ + 0, \ + 255, \ + 255, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_INI_RATE_FOR_TX_MGMT_2G") + +/* + * + * cfg_rate_for_tx_mgmt_5g - Set rate for tx mgmt 5g + * @Min: 0 + * @Max: 255 + * @Default: 255 + * + * This ini is used to set rate for tx mgmt 5g + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_RATE_FOR_TX_MGMT_5G CFG_INI_UINT( \ + "cfg_rate_for_tx_mgmt_5g", \ + 0, \ + 255, \ + 255, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_INI_RATE_FOR_TX_MGMT_5G") + +/* + * + * gTelescopicBeaconWakeupEn - Set teles copic beacon wakeup + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to set default teles copic beacon wakeup + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ +#define CFG_INI_TELE_BCN_WAKEUP_EN CFG_INI_BOOL( \ + "gTelescopicBeaconWakeupEn", \ + 0, \ + "CFG_TELE_BCN_WAKEUP_EN") + +/* + * + * telescopicBeaconMaxListenInterval - Set teles scopic beacon max listen value + * @Min: 0 + * @Max: 7 + * @Default: 5 + * + * This ini is used to set teles scopic beacon max listen interval value + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_TELE_BCN_MAX_LI CFG_INI_UINT( \ + "telescopicBeaconMaxListenInterval", \ + 0, \ + 7, \ + 5, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_TELE_BCN_MAX_LI") + +/* + * + * gSapGetPeerInfo - Enable/Disable remote peer info query support + * @Min: 0 - Disable remote peer info query support + * @Max: 1 - Enable remote peer info query support + * @Default: 0 + * + * This ini is used to enable/disable remote peer info query support + * + * Usage: External + * + * + */ + #define CFG_INI_SAP_GET_PEER_INFO CFG_INI_BOOL( \ + "gSapGetPeerInfo", \ + 0, \ + "CFG_INI_SAP_GET_PEER_INFO") + +/* + * + * gSapAllowAllChannel - Sap allow all channels + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to allow all channels for SAP + * + * Related: None + * + * Supported Feature: SAP + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_SAP_ALLOW_ALL_CHANNEL_PARAM CFG_INI_BOOL( \ + "gSapAllowAllChannel", \ + 0, \ + "CFG_INI_SAP_ALLOW_ALL_CHANNEL_PARAM") + +/* + * + * gSoftApMaxPeers - Set Max peers connected for SAP + * @Min: 1 + * @Max: 32 + * @Default: 32 + * + * This ini is used to set Max peers connected for SAP + * + * Related: None + * + * Supported Feature: SAP + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_SAP_MAX_NO_PEERS CFG_INI_UINT( \ + "gSoftApMaxPeers", \ + 1, \ + 32, \ + 32, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_INI_SAP_MAX_NO_PEERS") + +/* + * + * gMaxOffloadPeers - Set max offload peers + * @Min: 2 + * @Max: 5 + * @Default: 2 + * + * This ini is used to set default teles copic beacon wakeup + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_SAP_MAX_OFFLOAD_PEERS CFG_INI_UINT( \ + "gMaxOffloadPeers", \ + 2, \ + 5, \ + 2, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_INI_SAP_MAX_OFFLOAD_PEERS") + +/* + * + * gMaxOffloadReorderBuffs - Set max offload reorder buffs + * @Min: 0 + * @Max: 3 + * @Default: 2 + * + * This ini is used to set max offload reorder buffs + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_SAP_MAX_OFFLOAD_REORDER_BUFFS CFG_INI_UINT( \ + "gMaxOffloadReorderBuffs", \ + 0, \ + 3, \ + 2, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_INI_SAP_MAX_OFFLOAD_REORDER_BUFFS") + +/* + * + * g_sap_chanswitch_beacon_cnt - Set channel switch beacon count + * @Min: 1 + * @Max: 10 + * @Default: 10 + * + * This ini is used to set channel switch beacon count + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_SAP_CH_SWITCH_BEACON_CNT CFG_INI_UINT( \ + "g_sap_chanswitch_beacon_cnt", \ + 1, \ + 10, \ + 10, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_INI_SAP_CH_SWITCH_BEACON_CNT") + +/* + * + * g_sap_chanswitch_mode - channel switch mode + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini is used to configure channel switch mode + * + * Related: none + * + * Usage: External + * + * + */ +#define CFG_INI_SAP_CH_SWITCH_MODE CFG_INI_BOOL( \ + "g_sap_chanswitch_mode", \ + 1, \ + "CFG_INI_SAP_CH_SWITCH_MODE") + +/* + * + * gEnableSapInternalRestart - Sap internal restart name + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini is used for sap internal restart name + * + * Related: None + * + * Supported Feature: SAP + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_SAP_INTERNAL_RESTART_NAME CFG_INI_BOOL( \ + "gEnableSapInternalRestart", \ + 1, \ + "CFG_SAP_INTERNAL_RESTART_NAME") + +/* + * + * gChanSwitchHostapdRateEnabled - Enable channale switch hostapd rate + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to enable channale switch hostapd rate + * + * Related: None + * + * Supported Feature: SAP + * + * Usage: Internal/External + * + * + */ + #define CFG_INI_CHAN_SWITCH_HOSTAPD_RATE_ENABLED_NAME CFG_INI_BOOL( \ + "gChanSwitchHostapdRateEnabled", \ + 0, \ + "CFG_INI_CHAN_SWITCH_HOSTAPD_RATE_ENABLED_NAME") + +/* + * gReducedBeaconInterval - beacon interval reduced + * @Min: 0 + * @Max: 100 + * @Default: 0 + * + * This ini is used to reduce beacon interval before channel + * switch (when val great than 0, or the feature is disabled). + * It would reduce the downtime on the STA side which is + * waiting for beacons from the AP to resume back transmission. + * Switch back the beacon_interval to its original value after + * channel switch based on the timeout. + * + * Related: none + * + * Usage: External + * + * + */ +#define CFG_INI_REDUCED_BEACON_INTERVAL CFG_INI_UINT( \ + "gReducedBeaconInterval", \ + 0, \ + 100, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "CFG_INI_REDUCED_BEACON_INTERVAL") + + #define CFG_SAP_ALL \ + CFG(CFG_SSID) \ + CFG(CFG_BEACON_INTERVAL) \ + CFG(CFG_DTIM_PERIOD) \ + CFG(CFG_LISTEN_INTERVAL) \ + CFG(CFG_11G_ONLY_POLICY) \ + CFG(CFG_ASSOC_STA_LIMIT) \ + CFG(CFG_INI_ENABLE_LTE_COEX) \ + CFG(CFG_RMC_ACTION_PERIOD_FREQUENCY) \ + CFG(CFG_INI_RATE_FOR_TX_MGMT) \ + CFG(CFG_INI_RATE_FOR_TX_MGMT_2G) \ + CFG(CFG_INI_RATE_FOR_TX_MGMT_5G) \ + CFG(CFG_INI_TELE_BCN_WAKEUP_EN) \ + CFG(CFG_INI_TELE_BCN_MAX_LI) \ + CFG(CFG_INI_SAP_GET_PEER_INFO) \ + CFG(CFG_INI_SAP_ALLOW_ALL_CHANNEL_PARAM) \ + CFG(CFG_INI_SAP_MAX_NO_PEERS) \ + CFG(CFG_INI_SAP_MAX_OFFLOAD_PEERS) \ + CFG(CFG_INI_SAP_MAX_OFFLOAD_REORDER_BUFFS) \ + CFG(CFG_INI_SAP_CH_SWITCH_BEACON_CNT) \ + CFG(CFG_INI_SAP_CH_SWITCH_MODE) \ + CFG(CFG_INI_SAP_INTERNAL_RESTART_NAME) \ + CFG(CFG_INI_CHAN_SWITCH_HOSTAPD_RATE_ENABLED_NAME) \ + CFG(CFG_INI_REDUCED_BEACON_INTERVAL) + +#endif /* __CFG_MLME_SAP_H */ diff --git a/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 318542da0e..69445a08fb 100644 --- a/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -86,6 +86,36 @@ struct wlan_mlme_ht_caps { struct mlme_ht_capabilities_info ht_cap_info; }; +/** + * struct wlan_mlme_ - HT Capabilities related config items + * @ht_cap_info: HT capabilities Info Structure + */ +struct wlan_mlme_cfg_sap { + uint8_t cfg_ssid[32]; + uint16_t beacon_interval; + uint16_t dtim_interval; + uint16_t listen_interval; + bool sap_11g_policy; + uint8_t assoc_sta_limit; + bool enable_lte_coex; + uint16_t rmc_action_period_freq; + uint8_t rate_tx_mgmt; + uint8_t rate_tx_mgmt_2g; + uint8_t rate_tx_mgmt_5g; + bool tele_bcn_wakeup_en; + uint8_t tele_bcn_max_li; + bool sap_get_peer_info; + bool sap_allow_all_chan_param_name; + uint8_t sap_max_no_peers; + uint8_t sap_max_offload_peers; + uint8_t sap_max_offload_reorder_buffs; + uint8_t sap_ch_switch_beacon_cnt; + bool sap_ch_switch_mode; + bool sap_internal_restart_name; + bool chan_switch_hostapd_rate_enabled_name; + uint8_t reduced_beacon_interval; +}; + struct wlan_mlme_vht_caps { /* VHT related configs */ }; @@ -163,6 +193,7 @@ struct wlan_mlme_cfg { struct wlan_mlme_rates rates; struct wlan_mlme_sap_protection sap_protection_cfg; struct wlan_mlme_chainmask chainmask_cfg; + struct wlan_mlme_cfg_sap sap_cfg; }; #endif