diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2014-04-23 08:38:56 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-04-23 08:38:56 -0700 |
| commit | d12bdf22113b954d7632f14f4b404062af863af4 (patch) | |
| tree | b090e6bfe8c56bb20440afaffc9995436cf31f54 | |
| parent | 1e545c6e660ea631a937b0eeadde65b340374068 (diff) | |
| parent | 120970190c260998f82a59340718f6c10983fc65 (diff) | |
Merge "Release 1.0.0.97 QCACLD WLAN Driver"
67 files changed, 2122 insertions, 2885 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index 00624ae5117a..c951fb53b731 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -305,6 +305,16 @@ typedef enum #define CFG_DOT11_MODE_DEFAULT eHDD_DOT11_MODE_11n #endif +#define CFG_SAP_DOT11_MODE_NAME "gSapDot11Mode" +#define CFG_SAP_DOT11_MODE_MIN eHDD_DOT11_MODE_AUTO +#ifdef WLAN_FEATURE_11AC +#define CFG_SAP_DOT11_MODE_MAX eHDD_DOT11_MODE_11ac +#define CFG_SAP_DOT11_MODE_DEFAULT eHDD_DOT11_MODE_11ac +#else +#define CFG_SAP_DOT11_MODE_MAX eHDD_DOT11_MODE_11b_ONLY +#define CFG_SAP_DOT11_MODE_DEFAULT eHDD_DOT11_MODE_11n +#endif + #define CFG_CHANNEL_BONDING_MODE_24GHZ_NAME "gChannelBondingMode24GHz" #define CFG_CHANNEL_BONDING_MODE_MIN WNI_CFG_CHANNEL_BONDING_MODE_STAMIN #define CFG_CHANNEL_BONDING_MODE_MAX WNI_CFG_CHANNEL_BONDING_MODE_STAMAX @@ -1382,6 +1392,11 @@ typedef enum #define CFG_ENABLE_HOST_ARPOFFLOAD_MAX ( 1 ) #define CFG_ENABLE_HOST_ARPOFFLOAD_DEFAULT ( 0 ) +#define CFG_ENABLE_HOST_SSDP_NAME "ssdp" +#define CFG_ENABLE_HOST_SSDP_MIN ( 0 ) +#define CFG_ENABLE_HOST_SSDP_MAX ( 1 ) +#define CFG_ENABLE_HOST_SSDP_DEFAULT ( 1 ) + #define CFG_ENABLE_HOST_NSOFFLOAD_NAME "hostNSOffload" #define CFG_ENABLE_HOST_NSOFFLOAD_MIN ( 0 ) #define CFG_ENABLE_HOST_NSOFFLOAD_MAX ( 1 ) @@ -1987,6 +2002,11 @@ typedef enum #define CFG_TDLS_EXTERNAL_CONTROL_MIN (0) #define CFG_TDLS_EXTERNAL_CONTROL_MAX (1) #define CFG_TDLS_EXTERNAL_CONTROL_DEFAULT (0) + +#define CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE "gEnableTDLSOffChannel" +#define CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MIN (0) +#define CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MAX (1) +#define CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_DEFAULT (0) #endif #ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE @@ -2683,6 +2703,7 @@ typedef struct v_BOOL_t bSingleTidRc; v_U8_t mcastBcastFilterSetting; v_BOOL_t fhostArpOffload; + v_BOOL_t ssdp; #ifdef FEATURE_WLAN_SCAN_PNO v_BOOL_t PnoOffload; #endif @@ -2805,6 +2826,7 @@ typedef struct v_U32_t fTDLSPuapsdInactivityTimer; v_U32_t fTDLSRxFrameThreshold; v_BOOL_t fTDLSExternalControl; + v_U32_t fEnableTDLSOffChannel; #endif #ifdef WLAN_SOFTAP_VSTA_FEATURE v_BOOL_t fEnableVSTASupport; @@ -2923,6 +2945,7 @@ typedef struct v_BOOL_t allowDFSChannelRoam; v_BOOL_t debugP2pRemainOnChannel; + eHddDot11Mode sapDot11Mode; } hdd_config_t; /*--------------------------------------------------------------------------- Function declarations and documenation diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h index ae0949510eb5..e492d50a307b 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg80211.h +++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h @@ -97,6 +97,8 @@ #endif #endif +#define MAX_CHANNEL (MAX_2_4GHZ_CHANNEL + NUM_5GHZ_CHANNELS) + typedef struct { u8 element_id; u8 len; diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h index 9afb22b77ef3..a6ddfa4fcb32 100644 --- a/CORE/HDD/inc/wlan_hdd_main.h +++ b/CORE/HDD/inc/wlan_hdd_main.h @@ -619,6 +619,7 @@ typedef struct hdd_remain_on_chan_ctx v_U32_t p2pRemOnChanTimeStamp; vos_timer_t hdd_remain_on_chan_timer; action_pkt_buffer_t action_pkt_buff; + v_BOOL_t hdd_remain_on_chan_cancel_in_progress; }hdd_remain_on_chan_ctx_t; typedef enum{ diff --git a/CORE/HDD/inc/wlan_hdd_tdls.h b/CORE/HDD/inc/wlan_hdd_tdls.h index f4361b12e30a..b6bbb94de292 100644 --- a/CORE/HDD/inc/wlan_hdd_tdls.h +++ b/CORE/HDD/inc/wlan_hdd_tdls.h @@ -171,6 +171,11 @@ typedef struct _hddTdlsPeer_t { tANI_U8 uapsdQueues; tANI_U8 maxSp; tANI_U8 isBufSta; + tANI_U8 isOffChannelSupported; + tANI_U8 supported_channels_len; + tANI_U8 supported_channels[SIR_MAC_MAX_SUPP_CHANNELS]; + tANI_U8 supported_oper_classes_len; + tANI_U8 supported_oper_classes[SIR_MAC_MAX_SUPP_OPER_CLASSES]; #ifndef QCA_WIFI_2_0 vos_timer_t peerIdleTimer; #endif @@ -230,9 +235,9 @@ int wlan_hdd_tdls_recv_discovery_resp(hdd_adapter_t *pAdapter, u8 *mac); int wlan_hdd_tdls_set_peer_caps(hdd_adapter_t *pAdapter, u8 *mac, - tANI_U8 uapsdQueues, - tANI_U8 maxSp, - tANI_BOOLEAN isBufSta); + tCsrStaParams *StaParams, + tANI_BOOLEAN isBufSta, + tANI_BOOLEAN isOffChannelSupported); int wlan_hdd_tdls_set_rssi(hdd_adapter_t *pAdapter, u8 *mac, tANI_S8 rxRssi); diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index bdb947681221..639b7b2e5135 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -648,76 +648,76 @@ REG_TABLE_ENTRY g_registry_table[] = (void *)CFG_AP_COUNTRY_CODE_DEFAULT ), REG_VARIABLE( CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer, - hdd_config_t, apRandomBssidEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_AP_ENABLE_RANDOM_BSSID_DEFAULT, - CFG_AP_ENABLE_RANDOM_BSSID_MIN, - CFG_AP_ENABLE_RANDOM_BSSID_MAX ), + hdd_config_t, apRandomBssidEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_AP_ENABLE_RANDOM_BSSID_DEFAULT, + CFG_AP_ENABLE_RANDOM_BSSID_MIN, + CFG_AP_ENABLE_RANDOM_BSSID_MAX ), REG_VARIABLE( CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer, - hdd_config_t, apProtEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT, - CFG_AP_ENABLE_PROTECTION_MODE_MIN, - CFG_AP_ENABLE_PROTECTION_MODE_MAX ), + hdd_config_t, apProtEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT, + CFG_AP_ENABLE_PROTECTION_MODE_MIN, + CFG_AP_ENABLE_PROTECTION_MODE_MAX ), REG_VARIABLE( CFG_AP_PROTECTION_MODE_NAME, WLAN_PARAM_HexInteger, - hdd_config_t, apProtection, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_AP_PROTECTION_MODE_DEFAULT, - CFG_AP_PROTECTION_MODE_MIN, - CFG_AP_PROTECTION_MODE_MAX ), + hdd_config_t, apProtection, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_AP_PROTECTION_MODE_DEFAULT, + CFG_AP_PROTECTION_MODE_MIN, + CFG_AP_PROTECTION_MODE_MAX ), REG_VARIABLE( CFG_AP_OBSS_PROTECTION_MODE_NAME, WLAN_PARAM_Integer, - hdd_config_t, apOBSSProtEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_AP_OBSS_PROTECTION_MODE_DEFAULT, - CFG_AP_OBSS_PROTECTION_MODE_MIN, - CFG_AP_OBSS_PROTECTION_MODE_MAX ), + hdd_config_t, apOBSSProtEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_AP_OBSS_PROTECTION_MODE_DEFAULT, + CFG_AP_OBSS_PROTECTION_MODE_MIN, + CFG_AP_OBSS_PROTECTION_MODE_MAX ), REG_VARIABLE( CFG_AP_STA_SECURITY_SEPERATION_NAME, WLAN_PARAM_Integer, - hdd_config_t, apDisableIntraBssFwd, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_AP_STA_SECURITY_SEPERATION_DEFAULT, - CFG_AP_STA_SECURITY_SEPERATION_MIN, - CFG_AP_STA_SECURITY_SEPERATION_MAX ), + hdd_config_t, apDisableIntraBssFwd, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_AP_STA_SECURITY_SEPERATION_DEFAULT, + CFG_AP_STA_SECURITY_SEPERATION_MIN, + CFG_AP_STA_SECURITY_SEPERATION_MAX ), REG_VARIABLE( CFG_FRAMES_PROCESSING_TH_MODE_NAME, WLAN_PARAM_Integer, - hdd_config_t, MinFramesProcThres, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_FRAMES_PROCESSING_TH_DEFAULT, - CFG_FRAMES_PROCESSING_TH_MIN, - CFG_FRAMES_PROCESSING_TH_MAX ), + hdd_config_t, MinFramesProcThres, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_FRAMES_PROCESSING_TH_DEFAULT, + CFG_FRAMES_PROCESSING_TH_MIN, + CFG_FRAMES_PROCESSING_TH_MAX ), - REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_START_CHANNEL , WLAN_PARAM_Integer, + REG_VARIABLE( CFG_SAP_CHANNEL_SELECT_START_CHANNEL , WLAN_PARAM_Integer, hdd_config_t, apStartChannelNum, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_SAP_CHANNEL_SELECT_START_CHANNEL_DEFAULT, CFG_SAP_CHANNEL_SELECT_START_CHANNEL_MIN, CFG_SAP_CHANNEL_SELECT_START_CHANNEL_MAX ), - REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_END_CHANNEL , WLAN_PARAM_Integer, + REG_VARIABLE( CFG_SAP_CHANNEL_SELECT_END_CHANNEL , WLAN_PARAM_Integer, hdd_config_t, apEndChannelNum, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_SAP_CHANNEL_SELECT_END_CHANNEL_DEFAULT, CFG_SAP_CHANNEL_SELECT_END_CHANNEL_MIN, CFG_SAP_CHANNEL_SELECT_END_CHANNEL_MAX ), - REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_OPERATING_BAND , WLAN_PARAM_Integer, + REG_VARIABLE( CFG_SAP_CHANNEL_SELECT_OPERATING_BAND , WLAN_PARAM_Integer, hdd_config_t, apOperatingBand, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_DEFAULT, CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_MIN, CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_MAX ), - REG_VARIABLE(CFG_SAP_AUTO_CHANNEL_SELECTION_NAME , WLAN_PARAM_Integer, + REG_VARIABLE( CFG_SAP_AUTO_CHANNEL_SELECTION_NAME , WLAN_PARAM_Integer, hdd_config_t, apAutoChannelSelection, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_SAP_AUTO_CHANNEL_SELECTION_DEFAULT, CFG_SAP_AUTO_CHANNEL_SELECTION_MIN, CFG_SAP_AUTO_CHANNEL_SELECTION_MAX ), - REG_VARIABLE(CFG_ENABLE_LTE_COEX , WLAN_PARAM_Integer, + REG_VARIABLE( CFG_ENABLE_LTE_COEX , WLAN_PARAM_Integer, hdd_config_t, enableLTECoex, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_ENABLE_LTE_COEX_DEFAULT, @@ -752,7 +752,7 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_GO_LINK_MONITOR_PERIOD_MIN, CFG_GO_LINK_MONITOR_PERIOD_MAX), - REG_VARIABLE(CFG_DISABLE_PACKET_FILTER , WLAN_PARAM_Integer, + REG_VARIABLE( CFG_DISABLE_PACKET_FILTER , WLAN_PARAM_Integer, hdd_config_t, disablePacketFilter, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_DISABLE_PACKET_FILTER_DEFAULT, @@ -1084,55 +1084,56 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT, CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN, CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX), + REG_DYNAMIC_VARIABLE( CFG_ESE_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer, - hdd_config_t, isEseIniFeatureEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ESE_FEATURE_ENABLED_DEFAULT, - CFG_ESE_FEATURE_ENABLED_MIN, - CFG_ESE_FEATURE_ENABLED_MAX, - cbNotifySetEseFeatureEnabled, 0 ), + hdd_config_t, isEseIniFeatureEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ESE_FEATURE_ENABLED_DEFAULT, + CFG_ESE_FEATURE_ENABLED_MIN, + CFG_ESE_FEATURE_ENABLED_MAX, + cbNotifySetEseFeatureEnabled, 0 ), #endif // FEATURE_WLAN_ESE #ifdef FEATURE_WLAN_LFR // flag to turn ON/OFF Legacy Fast Roaming REG_DYNAMIC_VARIABLE( CFG_LFR_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer, - hdd_config_t, isFastRoamIniFeatureEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LFR_FEATURE_ENABLED_DEFAULT, - CFG_LFR_FEATURE_ENABLED_MIN, - CFG_LFR_FEATURE_ENABLED_MAX, - NotifyIsFastRoamIniFeatureEnabled, 0 ), + hdd_config_t, isFastRoamIniFeatureEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LFR_FEATURE_ENABLED_DEFAULT, + CFG_LFR_FEATURE_ENABLED_MIN, + CFG_LFR_FEATURE_ENABLED_MAX, + NotifyIsFastRoamIniFeatureEnabled, 0 ), /* flag to turn ON/OFF Motion assistance for Legacy Fast Roaming */ REG_DYNAMIC_VARIABLE( CFG_LFR_MAWC_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer, - hdd_config_t, MAWCEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LFR_MAWC_FEATURE_ENABLED_DEFAULT, - CFG_LFR_MAWC_FEATURE_ENABLED_MIN, - CFG_LFR_MAWC_FEATURE_ENABLED_MAX, - NotifyIsMAWCIniFeatureEnabled, 0 ), + hdd_config_t, MAWCEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LFR_MAWC_FEATURE_ENABLED_DEFAULT, + CFG_LFR_MAWC_FEATURE_ENABLED_MIN, + CFG_LFR_MAWC_FEATURE_ENABLED_MAX, + NotifyIsMAWCIniFeatureEnabled, 0 ), #endif // FEATURE_WLAN_LFR #if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR) // flag to turn ON/OFF 11r and ESE FastTransition REG_DYNAMIC_VARIABLE( CFG_FAST_TRANSITION_ENABLED_NAME, WLAN_PARAM_Integer, - hdd_config_t, isFastTransitionEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_FAST_TRANSITION_ENABLED_NAME_DEFAULT, - CFG_FAST_TRANSITION_ENABLED_NAME_MIN, - CFG_FAST_TRANSITION_ENABLED_NAME_MAX, - cbNotifySetFastTransitionEnabled, 0 ), + hdd_config_t, isFastTransitionEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_FAST_TRANSITION_ENABLED_NAME_DEFAULT, + CFG_FAST_TRANSITION_ENABLED_NAME_MIN, + CFG_FAST_TRANSITION_ENABLED_NAME_MAX, + cbNotifySetFastTransitionEnabled, 0 ), /* Variable to specify the delta/difference between the RSSI of current AP * and roamable AP while roaming */ REG_DYNAMIC_VARIABLE( CFG_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer, - hdd_config_t, RoamRssiDiff, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_RSSI_DIFF_DEFAULT, - CFG_ROAM_RSSI_DIFF_MIN, - CFG_ROAM_RSSI_DIFF_MAX, - cbNotifySetRoamRssiDiff, 0), + hdd_config_t, RoamRssiDiff, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_RSSI_DIFF_DEFAULT, + CFG_ROAM_RSSI_DIFF_MIN, + CFG_ROAM_RSSI_DIFF_MAX, + cbNotifySetRoamRssiDiff, 0), REG_DYNAMIC_VARIABLE( CFG_IMMEDIATE_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer, hdd_config_t, nImmediateRoamRssiDiff, @@ -1152,12 +1153,12 @@ REG_TABLE_ENTRY g_registry_table[] = #endif #ifdef FEATURE_WLAN_OKC REG_DYNAMIC_VARIABLE( CFG_OKC_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer, - hdd_config_t, isOkcIniFeatureEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_OKC_FEATURE_ENABLED_DEFAULT, - CFG_OKC_FEATURE_ENABLED_MIN, - CFG_OKC_FEATURE_ENABLED_MAX, - cbNotifySetOkcFeatureEnabled, 0 ), + hdd_config_t, isOkcIniFeatureEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_OKC_FEATURE_ENABLED_DEFAULT, + CFG_OKC_FEATURE_ENABLED_MIN, + CFG_OKC_FEATURE_ENABLED_MAX, + cbNotifySetOkcFeatureEnabled, 0 ), #endif #ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD REG_DYNAMIC_VARIABLE( CFG_ROAM_SCAN_OFFLOAD_ENABLED, WLAN_PARAM_Integer, @@ -1909,12 +1910,12 @@ REG_TABLE_ENTRY g_registry_table[] = #ifdef WLAN_FEATURE_NEIGHBOR_ROAMING REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_SCAN_TIMER_PERIOD_NAME, WLAN_PARAM_Integer, - hdd_config_t, nNeighborScanPeriod, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT, - CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MIN, - CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX, - cbNotifySetNeighborScanPeriod, 0 ), + hdd_config_t, nNeighborScanPeriod, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT, + CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MIN, + CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX, + cbNotifySetNeighborScanPeriod, 0 ), REG_VARIABLE( CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer, hdd_config_t, nNeighborReassocRssiThreshold, @@ -1924,28 +1925,28 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_MAX ), REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer, - hdd_config_t, nNeighborLookupRssiThreshold, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_DEFAULT, - CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MIN, - CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MAX, - cbNotifySetNeighborLookupRssiThreshold, 0 ), + hdd_config_t, nNeighborLookupRssiThreshold, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_DEFAULT, + CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MIN, + CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MAX, + cbNotifySetNeighborLookupRssiThreshold, 0 ), REG_DYNAMIC_VARIABLE( CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_NAME, WLAN_PARAM_Integer, - hdd_config_t, nOpportunisticThresholdDiff, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_DEFAULT, - CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MIN, - CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MAX, - cbNotifySetOpportunisticScanThresholdDiff, 0 ), + hdd_config_t, nOpportunisticThresholdDiff, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_DEFAULT, + CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MIN, + CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MAX, + cbNotifySetOpportunisticScanThresholdDiff, 0 ), REG_DYNAMIC_VARIABLE( CFG_ROAM_RESCAN_RSSI_DIFF_NAME, WLAN_PARAM_Integer, - hdd_config_t, nRoamRescanRssiDiff, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_RESCAN_RSSI_DIFF_DEFAULT, - CFG_ROAM_RESCAN_RSSI_DIFF_MIN, - CFG_ROAM_RESCAN_RSSI_DIFF_MAX, - cbNotifySetRoamRescanRssiDiff, 0 ), + hdd_config_t, nRoamRescanRssiDiff, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_RESCAN_RSSI_DIFF_DEFAULT, + CFG_ROAM_RESCAN_RSSI_DIFF_MIN, + CFG_ROAM_RESCAN_RSSI_DIFF_MAX, + cbNotifySetRoamRescanRssiDiff, 0 ), REG_VARIABLE_STRING( CFG_NEIGHBOR_SCAN_CHAN_LIST_NAME, WLAN_PARAM_String, hdd_config_t, neighborScanChanList, @@ -1953,20 +1954,20 @@ REG_TABLE_ENTRY g_registry_table[] = (void *)CFG_NEIGHBOR_SCAN_CHAN_LIST_DEFAULT ), REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_NAME, WLAN_PARAM_Integer, - hdd_config_t, nNeighborScanMinChanTime, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_DEFAULT, - CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MIN, - CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MAX, - cbNotifySetNeighborScanMinChanTime, 0 ), + hdd_config_t, nNeighborScanMinChanTime, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_DEFAULT, + CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MIN, + CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MAX, + cbNotifySetNeighborScanMinChanTime, 0 ), REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_NAME, WLAN_PARAM_Integer, - hdd_config_t, nNeighborScanMaxChanTime, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_DEFAULT, - CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MIN, - CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MAX, - cbNotifySetNeighborScanMaxChanTime, 0 ), + hdd_config_t, nNeighborScanMaxChanTime, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_DEFAULT, + CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MIN, + CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MAX, + cbNotifySetNeighborScanMaxChanTime, 0 ), REG_VARIABLE( CFG_11R_NEIGHBOR_REQ_MAX_TRIES_NAME, WLAN_PARAM_Integer, hdd_config_t, nMaxNeighborReqTries, @@ -1976,12 +1977,12 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MAX), REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_NAME, WLAN_PARAM_Integer, - hdd_config_t, nNeighborResultsRefreshPeriod, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_DEFAULT, - CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MIN, - CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MAX, - cbNotifySetNeighborResultsRefreshPeriod, 0 ), + hdd_config_t, nNeighborResultsRefreshPeriod, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_DEFAULT, + CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MIN, + CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MAX, + cbNotifySetNeighborResultsRefreshPeriod, 0 ), REG_DYNAMIC_VARIABLE( CFG_EMPTY_SCAN_REFRESH_PERIOD_NAME, WLAN_PARAM_Integer, hdd_config_t, nEmptyScanRefreshPeriod, @@ -1992,28 +1993,28 @@ REG_TABLE_ENTRY g_registry_table[] = cbNotifySetEmptyScanRefreshPeriod, 0 ), REG_DYNAMIC_VARIABLE( CFG_ROAM_BMISS_FIRST_BCNT_NAME, WLAN_PARAM_Integer, - hdd_config_t, nRoamBmissFirstBcnt, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_BMISS_FIRST_BCNT_DEFAULT, - CFG_ROAM_BMISS_FIRST_BCNT_MIN, - CFG_ROAM_BMISS_FIRST_BCNT_MAX, - cbNotifySetRoamBmissFirstBcnt, 0 ), + hdd_config_t, nRoamBmissFirstBcnt, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_BMISS_FIRST_BCNT_DEFAULT, + CFG_ROAM_BMISS_FIRST_BCNT_MIN, + CFG_ROAM_BMISS_FIRST_BCNT_MAX, + cbNotifySetRoamBmissFirstBcnt, 0 ), REG_DYNAMIC_VARIABLE( CFG_ROAM_BMISS_FINAL_BCNT_NAME, WLAN_PARAM_Integer, - hdd_config_t, nRoamBmissFinalBcnt, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_BMISS_FINAL_BCNT_DEFAULT, - CFG_ROAM_BMISS_FINAL_BCNT_MIN, - CFG_ROAM_BMISS_FINAL_BCNT_MAX, - cbNotifySetRoamBmissFinalBcnt, 0 ), + hdd_config_t, nRoamBmissFinalBcnt, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_BMISS_FINAL_BCNT_DEFAULT, + CFG_ROAM_BMISS_FINAL_BCNT_MIN, + CFG_ROAM_BMISS_FINAL_BCNT_MAX, + cbNotifySetRoamBmissFinalBcnt, 0 ), REG_DYNAMIC_VARIABLE( CFG_ROAM_BEACON_RSSI_WEIGHT_NAME, WLAN_PARAM_Integer, - hdd_config_t, nRoamBeaconRssiWeight, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_BEACON_RSSI_WEIGHT_DEFAULT, - CFG_ROAM_BEACON_RSSI_WEIGHT_MIN, - CFG_ROAM_BEACON_RSSI_WEIGHT_MAX, - cbNotifySetRoamBeaconRssiWeight, 0 ), + hdd_config_t, nRoamBeaconRssiWeight, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_BEACON_RSSI_WEIGHT_DEFAULT, + CFG_ROAM_BEACON_RSSI_WEIGHT_MIN, + CFG_ROAM_BEACON_RSSI_WEIGHT_MAX, + cbNotifySetRoamBeaconRssiWeight, 0 ), #endif /* WLAN_FEATURE_NEIGHBOR_ROAMING */ REG_VARIABLE( CFG_QOS_WMM_BURST_SIZE_DEFN_NAME , WLAN_PARAM_Integer, @@ -2037,6 +2038,13 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_ENABLE_HOST_ARPOFFLOAD_MIN, CFG_ENABLE_HOST_ARPOFFLOAD_MAX ), + REG_VARIABLE( CFG_ENABLE_HOST_SSDP_NAME, WLAN_PARAM_Integer, + hdd_config_t, ssdp, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_HOST_SSDP_DEFAULT, + CFG_ENABLE_HOST_SSDP_MIN, + CFG_ENABLE_HOST_SSDP_MAX ), + REG_VARIABLE( CFG_ENABLE_HOST_NSOFFLOAD_NAME, WLAN_PARAM_Integer, hdd_config_t, fhostNSOffload, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -2095,18 +2103,18 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_VALIDATE_SCAN_LIST_MAX ), REG_VARIABLE( CFG_NULLDATA_AP_RESP_TIMEOUT_NAME, WLAN_PARAM_Integer, - hdd_config_t, nNullDataApRespTimeout, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_NULLDATA_AP_RESP_TIMEOUT_DEFAULT, - CFG_NULLDATA_AP_RESP_TIMEOUT_MIN, - CFG_NULLDATA_AP_RESP_TIMEOUT_MAX ), + hdd_config_t, nNullDataApRespTimeout, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_NULLDATA_AP_RESP_TIMEOUT_DEFAULT, + CFG_NULLDATA_AP_RESP_TIMEOUT_MIN, + CFG_NULLDATA_AP_RESP_TIMEOUT_MAX ), REG_VARIABLE( CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer, - hdd_config_t, apDataAvailPollPeriodInMs, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT, - CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN, - CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ), + hdd_config_t, apDataAvailPollPeriodInMs, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT, + CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN, + CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ), REG_VARIABLE( CFG_ENABLE_BTAMP_NAME, WLAN_PARAM_Integer, hdd_config_t, enableBtAmp, @@ -2123,6 +2131,7 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_BT_AMP_PREFERRED_CHANNEL_MIN, CFG_BT_AMP_PREFERRED_CHANNEL_MAX ), #endif //WLAN_BTAMP_FEATURE + REG_VARIABLE( CFG_BAND_CAPABILITY_NAME, WLAN_PARAM_Integer, hdd_config_t, nBandCapability, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -2131,53 +2140,54 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_BAND_CAPABILITY_MAX ), REG_VARIABLE( CFG_ENABLE_BEACON_EARLY_TERMINATION_NAME, WLAN_PARAM_Integer, - hdd_config_t, fEnableBeaconEarlyTermination, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_BEACON_EARLY_TERMINATION_DEFAULT, - CFG_ENABLE_BEACON_EARLY_TERMINATION_MIN, - CFG_ENABLE_BEACON_EARLY_TERMINATION_MAX ), + hdd_config_t, fEnableBeaconEarlyTermination, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_BEACON_EARLY_TERMINATION_DEFAULT, + CFG_ENABLE_BEACON_EARLY_TERMINATION_MIN, + CFG_ENABLE_BEACON_EARLY_TERMINATION_MAX ), + /* CFG_VOS_TRACE_ENABLE Parameters */ REG_VARIABLE( CFG_VOS_TRACE_ENABLE_BAP_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableBAP, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableBAP, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_TL_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableTL, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableTL, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_WDI_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableWDI, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableWDI, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_HDD_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableHDD, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableHDD, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SME_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableSME, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableSME, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_PE_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnablePE, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnablePE, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_PMC_NAME, WLAN_PARAM_Integer, hdd_config_t, vosTraceEnablePMC, @@ -2187,733 +2197,740 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_WDA_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableWDA, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableWDA, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SYS_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableSYS, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableSYS, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_VOSS_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableVOSS, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableVOSS, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SAP_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableSAP, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableSAP, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_VOS_TRACE_ENABLE_HDD_SAP_NAME, WLAN_PARAM_Integer, - hdd_config_t, vosTraceEnableHDDSAP, - VAR_FLAGS_OPTIONAL, - CFG_VOS_TRACE_ENABLE_DEFAULT, - CFG_VOS_TRACE_ENABLE_MIN, - CFG_VOS_TRACE_ENABLE_MAX ), + hdd_config_t, vosTraceEnableHDDSAP, + VAR_FLAGS_OPTIONAL, + CFG_VOS_TRACE_ENABLE_DEFAULT, + CFG_VOS_TRACE_ENABLE_MIN, + CFG_VOS_TRACE_ENABLE_MAX ), /* note that since the default value is out of range we cannot enable range check, otherwise we get a system log message */ REG_VARIABLE( CFG_WDI_TRACE_ENABLE_DAL_NAME, WLAN_PARAM_Integer, - hdd_config_t, wdiTraceEnableDAL, - VAR_FLAGS_OPTIONAL, - CFG_WDI_TRACE_ENABLE_DEFAULT, - CFG_WDI_TRACE_ENABLE_MIN, - CFG_WDI_TRACE_ENABLE_MAX ), + hdd_config_t, wdiTraceEnableDAL, + VAR_FLAGS_OPTIONAL, + CFG_WDI_TRACE_ENABLE_DEFAULT, + CFG_WDI_TRACE_ENABLE_MIN, + CFG_WDI_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_WDI_TRACE_ENABLE_CTL_NAME, WLAN_PARAM_Integer, - hdd_config_t, wdiTraceEnableCTL, - VAR_FLAGS_OPTIONAL, - CFG_WDI_TRACE_ENABLE_DEFAULT, - CFG_WDI_TRACE_ENABLE_MIN, - CFG_WDI_TRACE_ENABLE_MAX ), + hdd_config_t, wdiTraceEnableCTL, + VAR_FLAGS_OPTIONAL, + CFG_WDI_TRACE_ENABLE_DEFAULT, + CFG_WDI_TRACE_ENABLE_MIN, + CFG_WDI_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_WDI_TRACE_ENABLE_DAT_NAME, WLAN_PARAM_Integer, - hdd_config_t, wdiTraceEnableDAT, - VAR_FLAGS_OPTIONAL, - CFG_WDI_TRACE_ENABLE_DEFAULT, - CFG_WDI_TRACE_ENABLE_MIN, - CFG_WDI_TRACE_ENABLE_MAX ), + hdd_config_t, wdiTraceEnableDAT, + VAR_FLAGS_OPTIONAL, + CFG_WDI_TRACE_ENABLE_DEFAULT, + CFG_WDI_TRACE_ENABLE_MIN, + CFG_WDI_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_WDI_TRACE_ENABLE_PAL_NAME, WLAN_PARAM_Integer, - hdd_config_t, wdiTraceEnablePAL, - VAR_FLAGS_OPTIONAL, - CFG_WDI_TRACE_ENABLE_DEFAULT, - CFG_WDI_TRACE_ENABLE_MIN, - CFG_WDI_TRACE_ENABLE_MAX ), + hdd_config_t, wdiTraceEnablePAL, + VAR_FLAGS_OPTIONAL, + CFG_WDI_TRACE_ENABLE_DEFAULT, + CFG_WDI_TRACE_ENABLE_MIN, + CFG_WDI_TRACE_ENABLE_MAX ), REG_VARIABLE( CFG_TELE_BCN_TRANS_LI_NAME, WLAN_PARAM_Integer, - hdd_config_t, nTeleBcnTransListenInterval, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TELE_BCN_TRANS_LI_DEFAULT, - CFG_TELE_BCN_TRANS_LI_MIN, - CFG_TELE_BCN_TRANS_LI_MAX ), + hdd_config_t, nTeleBcnTransListenInterval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TELE_BCN_TRANS_LI_DEFAULT, + CFG_TELE_BCN_TRANS_LI_MIN, + CFG_TELE_BCN_TRANS_LI_MAX ), REG_VARIABLE( CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer, - hdd_config_t, nTeleBcnTransLiNumIdleBeacons, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_DEFAULT, - CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MIN, - CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MAX ), + hdd_config_t, nTeleBcnTransLiNumIdleBeacons, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_DEFAULT, + CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MIN, + CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MAX ), REG_VARIABLE( CFG_TELE_BCN_MAX_LI_NAME, WLAN_PARAM_Integer, - hdd_config_t, nTeleBcnMaxListenInterval, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TELE_BCN_MAX_LI_DEFAULT, - CFG_TELE_BCN_MAX_LI_MIN, - CFG_TELE_BCN_MAX_LI_MAX ), + hdd_config_t, nTeleBcnMaxListenInterval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TELE_BCN_MAX_LI_DEFAULT, + CFG_TELE_BCN_MAX_LI_MIN, + CFG_TELE_BCN_MAX_LI_MAX ), REG_VARIABLE( CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer, - hdd_config_t, nTeleBcnMaxLiNumIdleBeacons, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_DEFAULT, - CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MIN, - CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MAX ), + hdd_config_t, nTeleBcnMaxLiNumIdleBeacons, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_DEFAULT, + CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MIN, + CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MAX ), REG_VARIABLE( CFG_BCN_EARLY_TERM_WAKE_NAME, WLAN_PARAM_Integer, - hdd_config_t, bcnEarlyTermWakeInterval, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_BCN_EARLY_TERM_WAKE_DEFAULT, - CFG_BCN_EARLY_TERM_WAKE_MIN, - CFG_BCN_EARLY_TERM_WAKE_MAX ), + hdd_config_t, bcnEarlyTermWakeInterval, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BCN_EARLY_TERM_WAKE_DEFAULT, + CFG_BCN_EARLY_TERM_WAKE_MIN, + CFG_BCN_EARLY_TERM_WAKE_MAX ), REG_VARIABLE( CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer, - hdd_config_t, apDataAvailPollPeriodInMs, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT, - CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN, - CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ), + hdd_config_t, apDataAvailPollPeriodInMs, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT, + CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN, + CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ), REG_VARIABLE( CFG_ENABLE_CLOSE_LOOP_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableCloseLoop, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_CLOSE_LOOP_DEFAULT, - CFG_ENABLE_CLOSE_LOOP_MIN, - CFG_ENABLE_CLOSE_LOOP_MAX ), + hdd_config_t, enableCloseLoop, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_CLOSE_LOOP_DEFAULT, + CFG_ENABLE_CLOSE_LOOP_MIN, + CFG_ENABLE_CLOSE_LOOP_MAX ), REG_VARIABLE( CFG_ENABLE_BYPASS_11D_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableBypass11d, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_BYPASS_11D_DEFAULT, - CFG_ENABLE_BYPASS_11D_MIN, - CFG_ENABLE_BYPASS_11D_MAX ), + hdd_config_t, enableBypass11d, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_BYPASS_11D_DEFAULT, + CFG_ENABLE_BYPASS_11D_MIN, + CFG_ENABLE_BYPASS_11D_MAX ), REG_VARIABLE( CFG_ENABLE_DFS_CHNL_SCAN_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableDFSChnlScan, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT, - CFG_ENABLE_DFS_CHNL_SCAN_MIN, - CFG_ENABLE_DFS_CHNL_SCAN_MAX ), + hdd_config_t, enableDFSChnlScan, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT, + CFG_ENABLE_DFS_CHNL_SCAN_MIN, + CFG_ENABLE_DFS_CHNL_SCAN_MAX ), REG_VARIABLE( CFG_ENABLE_DYNAMIC_DTIM_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableDynamicDTIM, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_DYNAMIC_DTIM_DEFAULT, - CFG_ENABLE_DYNAMIC_DTIM_MIN, - CFG_ENABLE_DYNAMIC_DTIM_MAX ), + hdd_config_t, enableDynamicDTIM, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_DYNAMIC_DTIM_DEFAULT, + CFG_ENABLE_DYNAMIC_DTIM_MIN, + CFG_ENABLE_DYNAMIC_DTIM_MAX ), REG_VARIABLE( CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableAutomaticTxPowerControl, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_DEFAULT, - CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MIN, - CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MAX ), + hdd_config_t, enableAutomaticTxPowerControl, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_DEFAULT, + CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MIN, + CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MAX ), REG_VARIABLE( CFG_SHORT_GI_40MHZ_NAME, WLAN_PARAM_Integer, - hdd_config_t, ShortGI40MhzEnable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_SHORT_GI_40MHZ_DEFAULT, - CFG_SHORT_GI_40MHZ_MIN, - CFG_SHORT_GI_40MHZ_MAX ), + hdd_config_t, ShortGI40MhzEnable, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_SHORT_GI_40MHZ_DEFAULT, + CFG_SHORT_GI_40MHZ_MIN, + CFG_SHORT_GI_40MHZ_MAX ), REG_DYNAMIC_VARIABLE( CFG_REPORT_MAX_LINK_SPEED, WLAN_PARAM_Integer, - hdd_config_t, reportMaxLinkSpeed, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_REPORT_MAX_LINK_SPEED_DEFAULT, - CFG_REPORT_MAX_LINK_SPEED_MIN, - CFG_REPORT_MAX_LINK_SPEED_MAX, - NULL, 0 ), + hdd_config_t, reportMaxLinkSpeed, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_REPORT_MAX_LINK_SPEED_DEFAULT, + CFG_REPORT_MAX_LINK_SPEED_MIN, + CFG_REPORT_MAX_LINK_SPEED_MAX, + NULL, 0 ), REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_HIGH, WLAN_PARAM_SignedInteger, - hdd_config_t, linkSpeedRssiHigh, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LINK_SPEED_RSSI_HIGH_DEFAULT, - CFG_LINK_SPEED_RSSI_HIGH_MIN, - CFG_LINK_SPEED_RSSI_HIGH_MAX, - NULL, 0 ), + hdd_config_t, linkSpeedRssiHigh, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LINK_SPEED_RSSI_HIGH_DEFAULT, + CFG_LINK_SPEED_RSSI_HIGH_MIN, + CFG_LINK_SPEED_RSSI_HIGH_MAX, + NULL, 0 ), REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_MID, WLAN_PARAM_SignedInteger, - hdd_config_t, linkSpeedRssiMid, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LINK_SPEED_RSSI_MID_DEFAULT, - CFG_LINK_SPEED_RSSI_MID_MIN, - CFG_LINK_SPEED_RSSI_MID_MAX, - NULL, 0 ), + hdd_config_t, linkSpeedRssiMid, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LINK_SPEED_RSSI_MID_DEFAULT, + CFG_LINK_SPEED_RSSI_MID_MIN, + CFG_LINK_SPEED_RSSI_MID_MAX, + NULL, 0 ), REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_LOW, WLAN_PARAM_SignedInteger, - hdd_config_t, linkSpeedRssiLow, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LINK_SPEED_RSSI_LOW_DEFAULT, - CFG_LINK_SPEED_RSSI_LOW_MIN, - CFG_LINK_SPEED_RSSI_LOW_MAX, - NULL, 0 ), + hdd_config_t, linkSpeedRssiLow, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LINK_SPEED_RSSI_LOW_DEFAULT, + CFG_LINK_SPEED_RSSI_LOW_MIN, + CFG_LINK_SPEED_RSSI_LOW_MAX, + NULL, 0 ), #if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR) REG_DYNAMIC_VARIABLE( CFG_ROAM_PREFER_5GHZ, WLAN_PARAM_Integer, - hdd_config_t, nRoamPrefer5GHz, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_PREFER_5GHZ_DEFAULT, - CFG_ROAM_PREFER_5GHZ_MIN, - CFG_ROAM_PREFER_5GHZ_MAX, - cbNotifySetRoamPrefer5GHz, 0 ), + hdd_config_t, nRoamPrefer5GHz, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_PREFER_5GHZ_DEFAULT, + CFG_ROAM_PREFER_5GHZ_MIN, + CFG_ROAM_PREFER_5GHZ_MAX, + cbNotifySetRoamPrefer5GHz, 0 ), REG_DYNAMIC_VARIABLE( CFG_ROAM_INTRA_BAND, WLAN_PARAM_Integer, - hdd_config_t, nRoamIntraBand, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_INTRA_BAND_DEFAULT, - CFG_ROAM_INTRA_BAND_MIN, - CFG_ROAM_INTRA_BAND_MAX, - cbNotifySetRoamIntraBand, 0 ), - - REG_DYNAMIC_VARIABLE( CFG_ROAM_SCAN_N_PROBES, WLAN_PARAM_Integer, - hdd_config_t, nProbes, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_SCAN_N_PROBES_DEFAULT, - CFG_ROAM_SCAN_N_PROBES_MIN, - CFG_ROAM_SCAN_N_PROBES_MAX, - cbNotifySetRoamScanNProbes, 0 ), - - REG_DYNAMIC_VARIABLE( CFG_ROAM_SCAN_HOME_AWAY_TIME, WLAN_PARAM_Integer, - hdd_config_t, nRoamScanHomeAwayTime, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAM_SCAN_HOME_AWAY_TIME_DEFAULT, - CFG_ROAM_SCAN_HOME_AWAY_TIME_MIN, - CFG_ROAM_SCAN_HOME_AWAY_TIME_MAX, - cbNotifySetRoamScanHomeAwayTime, 0 ), + hdd_config_t, nRoamIntraBand, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_INTRA_BAND_DEFAULT, + CFG_ROAM_INTRA_BAND_MIN, + CFG_ROAM_INTRA_BAND_MAX, + cbNotifySetRoamIntraBand, 0 ), + + REG_DYNAMIC_VARIABLE( CFG_ROAM_SCAN_N_PROBES, WLAN_PARAM_Integer, + hdd_config_t, nProbes, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_SCAN_N_PROBES_DEFAULT, + CFG_ROAM_SCAN_N_PROBES_MIN, + CFG_ROAM_SCAN_N_PROBES_MAX, + cbNotifySetRoamScanNProbes, 0 ), + + REG_DYNAMIC_VARIABLE( CFG_ROAM_SCAN_HOME_AWAY_TIME, WLAN_PARAM_Integer, + hdd_config_t, nRoamScanHomeAwayTime, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAM_SCAN_HOME_AWAY_TIME_DEFAULT, + CFG_ROAM_SCAN_HOME_AWAY_TIME_MIN, + CFG_ROAM_SCAN_HOME_AWAY_TIME_MAX, + cbNotifySetRoamScanHomeAwayTime, 0 ), #endif REG_VARIABLE( CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME, WLAN_PARAM_Integer, - hdd_config_t, isP2pDeviceAddrAdministrated, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT, - CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN, - CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX ), + hdd_config_t, isP2pDeviceAddrAdministrated, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT, + CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN, + CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX ), REG_VARIABLE( CFG_ENABLE_MCC_ENABLED_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableMCC, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_MCC_ENABLED_DEFAULT, - CFG_ENABLE_MCC_ENABLED_MIN, - CFG_ENABLE_MCC_ENABLED_MAX ), + hdd_config_t, enableMCC, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_MCC_ENABLED_DEFAULT, + CFG_ENABLE_MCC_ENABLED_MIN, + CFG_ENABLE_MCC_ENABLED_MAX ), REG_VARIABLE( CFG_ALLOW_MCC_GO_DIFF_BI_NAME, WLAN_PARAM_Integer, - hdd_config_t, allowMCCGODiffBI, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT, - CFG_ALLOW_MCC_GO_DIFF_BI_MIN, - CFG_ALLOW_MCC_GO_DIFF_BI_MAX ), + hdd_config_t, allowMCCGODiffBI, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT, + CFG_ALLOW_MCC_GO_DIFF_BI_MIN, + CFG_ALLOW_MCC_GO_DIFF_BI_MAX ), REG_VARIABLE( CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalMitigationEnable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_MIGRATION_ENABLE_DEFAULT, - CFG_THERMAL_MIGRATION_ENABLE_MIN, - CFG_THERMAL_MIGRATION_ENABLE_MAX ), + hdd_config_t, thermalMitigationEnable, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_MIGRATION_ENABLE_DEFAULT, + CFG_THERMAL_MIGRATION_ENABLE_MIN, + CFG_THERMAL_MIGRATION_ENABLE_MAX ), #ifndef QCA_WIFI_ISOC REG_VARIABLE( CFG_THROTTLE_PERIOD_NAME, WLAN_PARAM_Integer, - hdd_config_t, throttlePeriod, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THROTTLE_PERIOD_DEFAULT, - CFG_THROTTLE_PERIOD_MIN, - CFG_THROTTLE_PERIOD_MAX ), + hdd_config_t, throttlePeriod, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THROTTLE_PERIOD_DEFAULT, + CFG_THROTTLE_PERIOD_MIN, + CFG_THROTTLE_PERIOD_MAX ), #endif REG_VARIABLE( CFG_ENABLE_MODULATED_DTIM_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableModulatedDTIM, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_MODULATED_DTIM_DEFAULT, - CFG_ENABLE_MODULATED_DTIM_MIN, - CFG_ENABLE_MODULATED_DTIM_MAX ), + hdd_config_t, enableModulatedDTIM, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_MODULATED_DTIM_DEFAULT, + CFG_ENABLE_MODULATED_DTIM_MIN, + CFG_ENABLE_MODULATED_DTIM_MAX ), REG_VARIABLE( CFG_MC_ADDR_LIST_ENABLE_NAME, WLAN_PARAM_Integer, - hdd_config_t, fEnableMCAddrList, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_MC_ADDR_LIST_ENABLE_DEFAULT, - CFG_MC_ADDR_LIST_ENABLE_MIN, - CFG_MC_ADDR_LIST_ENABLE_MAX ), + hdd_config_t, fEnableMCAddrList, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_MC_ADDR_LIST_ENABLE_DEFAULT, + CFG_MC_ADDR_LIST_ENABLE_MIN, + CFG_MC_ADDR_LIST_ENABLE_MAX ), #ifdef WLAN_FEATURE_11AC REG_VARIABLE( CFG_VHT_CHANNEL_WIDTH, WLAN_PARAM_Integer, - hdd_config_t, vhtChannelWidth, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_VHT_CHANNEL_WIDTH_DEFAULT, - CFG_VHT_CHANNEL_WIDTH_MIN, - CFG_VHT_CHANNEL_WIDTH_MAX), + hdd_config_t, vhtChannelWidth, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_VHT_CHANNEL_WIDTH_DEFAULT, + CFG_VHT_CHANNEL_WIDTH_MIN, + CFG_VHT_CHANNEL_WIDTH_MAX), REG_VARIABLE( CFG_VHT_ENABLE_RX_MCS_8_9, WLAN_PARAM_Integer, - hdd_config_t, vhtRxMCS, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_VHT_ENABLE_RX_MCS_8_9_DEFAULT, - CFG_VHT_ENABLE_RX_MCS_8_9_MIN, - CFG_VHT_ENABLE_RX_MCS_8_9_MAX), + hdd_config_t, vhtRxMCS, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_VHT_ENABLE_RX_MCS_8_9_DEFAULT, + CFG_VHT_ENABLE_RX_MCS_8_9_MIN, + CFG_VHT_ENABLE_RX_MCS_8_9_MAX), REG_VARIABLE( CFG_VHT_ENABLE_TX_MCS_8_9, WLAN_PARAM_Integer, - hdd_config_t, vhtTxMCS, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_VHT_ENABLE_TX_MCS_8_9_DEFAULT, - CFG_VHT_ENABLE_TX_MCS_8_9_MIN, - CFG_VHT_ENABLE_TX_MCS_8_9_MAX), - -REG_VARIABLE( CFG_VHT_ENABLE_RX_MCS2x2_8_9, WLAN_PARAM_Integer, - hdd_config_t, vhtRxMCS2x2, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_VHT_ENABLE_RX_MCS2x2_8_9_DEFAULT, - CFG_VHT_ENABLE_RX_MCS2x2_8_9_MIN, - CFG_VHT_ENABLE_RX_MCS2x2_8_9_MAX), - -REG_VARIABLE( CFG_VHT_ENABLE_TX_MCS2x2_8_9, WLAN_PARAM_Integer, - hdd_config_t, vhtTxMCS2x2, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_VHT_ENABLE_TX_MCS2x2_8_9_DEFAULT, - CFG_VHT_ENABLE_TX_MCS2x2_8_9_MIN, - CFG_VHT_ENABLE_TX_MCS2x2_8_9_MAX), - -REG_VARIABLE( CFG_VHT_ENABLE_2x2_CAP_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, enable2x2, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT, - CFG_VHT_ENABLE_2x2_CAP_FEATURE_MIN, - CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX ), - -REG_VARIABLE( CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, enableMuBformee, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_DEFAULT, - CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MIN, - CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MAX ), - -REG_VARIABLE( CFG_VHT_ENABLE_PAID_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, enableVhtpAid, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VHT_ENABLE_PAID_FEATURE_DEFAULT, - CFG_VHT_ENABLE_PAID_FEATURE_MIN, - CFG_VHT_ENABLE_PAID_FEATURE_MAX ), - -REG_VARIABLE( CFG_VHT_ENABLE_GID_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, enableVhtGid, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VHT_ENABLE_GID_FEATURE_DEFAULT, - CFG_VHT_ENABLE_GID_FEATURE_MIN, - CFG_VHT_ENABLE_GID_FEATURE_MAX ), + hdd_config_t, vhtTxMCS, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_VHT_ENABLE_TX_MCS_8_9_DEFAULT, + CFG_VHT_ENABLE_TX_MCS_8_9_MIN, + CFG_VHT_ENABLE_TX_MCS_8_9_MAX), + + REG_VARIABLE( CFG_VHT_ENABLE_RX_MCS2x2_8_9, WLAN_PARAM_Integer, + hdd_config_t, vhtRxMCS2x2, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_VHT_ENABLE_RX_MCS2x2_8_9_DEFAULT, + CFG_VHT_ENABLE_RX_MCS2x2_8_9_MIN, + CFG_VHT_ENABLE_RX_MCS2x2_8_9_MAX), + + REG_VARIABLE( CFG_VHT_ENABLE_TX_MCS2x2_8_9, WLAN_PARAM_Integer, + hdd_config_t, vhtTxMCS2x2, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_VHT_ENABLE_TX_MCS2x2_8_9_DEFAULT, + CFG_VHT_ENABLE_TX_MCS2x2_8_9_MIN, + CFG_VHT_ENABLE_TX_MCS2x2_8_9_MAX), + + REG_VARIABLE( CFG_VHT_ENABLE_2x2_CAP_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, enable2x2, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT, + CFG_VHT_ENABLE_2x2_CAP_FEATURE_MIN, + CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX ), + + REG_VARIABLE( CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, enableMuBformee, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_DEFAULT, + CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MIN, + CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MAX ), + + REG_VARIABLE( CFG_VHT_ENABLE_PAID_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, enableVhtpAid, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_ENABLE_PAID_FEATURE_DEFAULT, + CFG_VHT_ENABLE_PAID_FEATURE_MIN, + CFG_VHT_ENABLE_PAID_FEATURE_MAX ), + + REG_VARIABLE( CFG_VHT_ENABLE_GID_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, enableVhtGid, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_ENABLE_GID_FEATURE_DEFAULT, + CFG_VHT_ENABLE_GID_FEATURE_MIN, + CFG_VHT_ENABLE_GID_FEATURE_MAX ), #endif -REG_VARIABLE( CFG_VHT_ENABLE_1x1_TX_CHAINMASK, WLAN_PARAM_Integer, - hdd_config_t, txchainmask1x1, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VHT_ENABLE_1x1_TX_CHAINMASK_DEFAULT, - CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MIN, - CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MAX ), - -REG_VARIABLE( CFG_VHT_ENABLE_1x1_RX_CHAINMASK, WLAN_PARAM_Integer, - hdd_config_t, rxchainmask1x1, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VHT_ENABLE_1x1_RX_CHAINMASK_DEFAULT, - CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MIN, - CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MAX ), - -REG_VARIABLE( CFG_ENABLE_AMPDUPS_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, enableAmpduPs, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_AMPDUPS_FEATURE_DEFAULT, - CFG_ENABLE_AMPDUPS_FEATURE_MIN, - CFG_ENABLE_AMPDUPS_FEATURE_MAX ), - -REG_VARIABLE( CFG_HT_ENABLE_SMPS_CAP_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, enableHtSmps, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_HT_ENABLE_SMPS_CAP_FEATURE_DEFAULT, - CFG_HT_ENABLE_SMPS_CAP_FEATURE_MIN, - CFG_HT_ENABLE_SMPS_CAP_FEATURE_MAX ), - -REG_VARIABLE( CFG_HT_SMPS_CAP_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, htSmps, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_HT_SMPS_CAP_FEATURE_DEFAULT, - CFG_HT_SMPS_CAP_FEATURE_MIN, - CFG_HT_SMPS_CAP_FEATURE_MAX ), - -REG_VARIABLE( CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer, - hdd_config_t, disableDFSChSwitch, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_DISABLE_DFS_CH_SWITCH_DEFAULT, - CFG_DISABLE_DFS_CH_SWITCH_MIN, - CFG_DISABLE_DFS_CH_SWITCH_MAX ), + REG_VARIABLE( CFG_VHT_ENABLE_1x1_TX_CHAINMASK, WLAN_PARAM_Integer, + hdd_config_t, txchainmask1x1, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_ENABLE_1x1_TX_CHAINMASK_DEFAULT, + CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MIN, + CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MAX ), + + REG_VARIABLE( CFG_VHT_ENABLE_1x1_RX_CHAINMASK, WLAN_PARAM_Integer, + hdd_config_t, rxchainmask1x1, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_ENABLE_1x1_RX_CHAINMASK_DEFAULT, + CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MIN, + CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MAX ), + + REG_VARIABLE( CFG_ENABLE_AMPDUPS_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, enableAmpduPs, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_AMPDUPS_FEATURE_DEFAULT, + CFG_ENABLE_AMPDUPS_FEATURE_MIN, + CFG_ENABLE_AMPDUPS_FEATURE_MAX ), + + REG_VARIABLE( CFG_HT_ENABLE_SMPS_CAP_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, enableHtSmps, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_HT_ENABLE_SMPS_CAP_FEATURE_DEFAULT, + CFG_HT_ENABLE_SMPS_CAP_FEATURE_MIN, + CFG_HT_ENABLE_SMPS_CAP_FEATURE_MAX ), + + REG_VARIABLE( CFG_HT_SMPS_CAP_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, htSmps, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_HT_SMPS_CAP_FEATURE_DEFAULT, + CFG_HT_SMPS_CAP_FEATURE_MIN, + CFG_HT_SMPS_CAP_FEATURE_MAX ), + + REG_VARIABLE( CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer, + hdd_config_t, disableDFSChSwitch, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_DISABLE_DFS_CH_SWITCH_DEFAULT, + CFG_DISABLE_DFS_CH_SWITCH_MIN, + CFG_DISABLE_DFS_CH_SWITCH_MAX ), REG_VARIABLE( CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableFirstScan2GOnly, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_FIRST_SCAN_2G_ONLY_DEFAULT, - CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN, - CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX ), + hdd_config_t, enableFirstScan2GOnly, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_FIRST_SCAN_2G_ONLY_DEFAULT, + CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN, + CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX ), REG_VARIABLE( CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME, WLAN_PARAM_Integer, - hdd_config_t, skipDfsChnlInP2pSearch, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT, - CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN, - CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX ), + hdd_config_t, skipDfsChnlInP2pSearch, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT, + CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN, + CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX ), REG_VARIABLE( CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME, WLAN_PARAM_Integer, - hdd_config_t, ignoreDynamicDtimInP2pMode, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT, - CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN, - CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX ), + hdd_config_t, ignoreDynamicDtimInP2pMode, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT, + CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN, + CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX ), REG_VARIABLE( CFG_NUM_BUFF_ADVERT_NAME, WLAN_PARAM_Integer, - hdd_config_t,numBuffAdvert , - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_NUM_BUFF_ADVERT_DEFAULT, - CFG_NUM_BUFF_ADVERT_MIN, - CFG_NUM_BUFF_ADVERT_MAX ), + hdd_config_t,numBuffAdvert , + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_NUM_BUFF_ADVERT_DEFAULT, + CFG_NUM_BUFF_ADVERT_MIN, + CFG_NUM_BUFF_ADVERT_MAX ), REG_VARIABLE( CFG_MCC_CONFIG_PARAM_NAME, WLAN_PARAM_Integer, - hdd_config_t, configMccParam, - VAR_FLAGS_OPTIONAL, - CFG_MCC_CONFIG_PARAM_DEFAULT, - CFG_MCC_CONFIG_PARAM_MIN, - CFG_MCC_CONFIG_PARAM_MAX ), + hdd_config_t, configMccParam, + VAR_FLAGS_OPTIONAL, + CFG_MCC_CONFIG_PARAM_DEFAULT, + CFG_MCC_CONFIG_PARAM_MIN, + CFG_MCC_CONFIG_PARAM_MAX ), + REG_VARIABLE( CFG_ENABLE_RX_STBC, WLAN_PARAM_Integer, - hdd_config_t, enableRxSTBC, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_RX_STBC_DEFAULT, - CFG_ENABLE_RX_STBC_MIN, - CFG_ENABLE_RX_STBC_MAX ), -REG_VARIABLE( CFG_ENABLE_TX_STBC, WLAN_PARAM_Integer, - hdd_config_t, enableTxSTBC, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_TX_STBC_DEFAULT, - CFG_ENABLE_TX_STBC_MIN, - CFG_ENABLE_TX_STBC_MAX ), - -REG_VARIABLE( CFG_ENABLE_RX_LDPC, WLAN_PARAM_Integer, - hdd_config_t, enableRxLDPC, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_RX_LDPC_DEFAULT, - CFG_ENABLE_RX_LDPC_MIN, - CFG_ENABLE_RX_LDPC_MAX ), - -REG_VARIABLE( CFG_PPS_ENABLE_5G_EBT, WLAN_PARAM_Integer, - hdd_config_t, enable5gEBT, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_PPS_ENABLE_5G_EBT_FEATURE_DEFAULT, - CFG_PPS_ENABLE_5G_EBT_FEATURE_MIN, - CFG_PPS_ENABLE_5G_EBT_FEATURE_MAX ), + hdd_config_t, enableRxSTBC, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_RX_STBC_DEFAULT, + CFG_ENABLE_RX_STBC_MIN, + CFG_ENABLE_RX_STBC_MAX ), + + REG_VARIABLE( CFG_ENABLE_TX_STBC, WLAN_PARAM_Integer, + hdd_config_t, enableTxSTBC, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_TX_STBC_DEFAULT, + CFG_ENABLE_TX_STBC_MIN, + CFG_ENABLE_TX_STBC_MAX ), + + REG_VARIABLE( CFG_ENABLE_RX_LDPC, WLAN_PARAM_Integer, + hdd_config_t, enableRxLDPC, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_RX_LDPC_DEFAULT, + CFG_ENABLE_RX_LDPC_MIN, + CFG_ENABLE_RX_LDPC_MAX ), + + REG_VARIABLE( CFG_PPS_ENABLE_5G_EBT, WLAN_PARAM_Integer, + hdd_config_t, enable5gEBT, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_PPS_ENABLE_5G_EBT_FEATURE_DEFAULT, + CFG_PPS_ENABLE_5G_EBT_FEATURE_MIN, + CFG_PPS_ENABLE_5G_EBT_FEATURE_MAX ), #ifdef FEATURE_WLAN_TDLS REG_VARIABLE( CFG_TDLS_SUPPORT_ENABLE, WLAN_PARAM_Integer, - hdd_config_t, fEnableTDLSSupport, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_SUPPORT_ENABLE_DEFAULT, - CFG_TDLS_SUPPORT_ENABLE_MIN, - CFG_TDLS_SUPPORT_ENABLE_MAX ), + hdd_config_t, fEnableTDLSSupport, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_SUPPORT_ENABLE_DEFAULT, + CFG_TDLS_SUPPORT_ENABLE_MIN, + CFG_TDLS_SUPPORT_ENABLE_MAX ), REG_VARIABLE( CFG_TDLS_IMPLICIT_TRIGGER, WLAN_PARAM_Integer, - hdd_config_t, fEnableTDLSImplicitTrigger, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_IMPLICIT_TRIGGER_DEFAULT, - CFG_TDLS_IMPLICIT_TRIGGER_MIN, - CFG_TDLS_IMPLICIT_TRIGGER_MAX ), + hdd_config_t, fEnableTDLSImplicitTrigger, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_IMPLICIT_TRIGGER_DEFAULT, + CFG_TDLS_IMPLICIT_TRIGGER_MIN, + CFG_TDLS_IMPLICIT_TRIGGER_MAX ), REG_VARIABLE( CFG_TDLS_TX_STATS_PERIOD, WLAN_PARAM_Integer, - hdd_config_t, fTDLSTxStatsPeriod, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_TX_STATS_PERIOD_DEFAULT, - CFG_TDLS_TX_STATS_PERIOD_MIN, - CFG_TDLS_TX_STATS_PERIOD_MAX ), + hdd_config_t, fTDLSTxStatsPeriod, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_TX_STATS_PERIOD_DEFAULT, + CFG_TDLS_TX_STATS_PERIOD_MIN, + CFG_TDLS_TX_STATS_PERIOD_MAX ), REG_VARIABLE( CFG_TDLS_TX_PACKET_THRESHOLD, WLAN_PARAM_Integer, - hdd_config_t, fTDLSTxPacketThreshold, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_TX_PACKET_THRESHOLD_DEFAULT, - CFG_TDLS_TX_PACKET_THRESHOLD_MIN, - CFG_TDLS_TX_PACKET_THRESHOLD_MAX ), + hdd_config_t, fTDLSTxPacketThreshold, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_TX_PACKET_THRESHOLD_DEFAULT, + CFG_TDLS_TX_PACKET_THRESHOLD_MIN, + CFG_TDLS_TX_PACKET_THRESHOLD_MAX ), REG_VARIABLE( CFG_TDLS_DISCOVERY_PERIOD, WLAN_PARAM_Integer, - hdd_config_t, fTDLSDiscoveryPeriod, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_DISCOVERY_PERIOD_DEFAULT, - CFG_TDLS_DISCOVERY_PERIOD_MIN, - CFG_TDLS_DISCOVERY_PERIOD_MAX ), + hdd_config_t, fTDLSDiscoveryPeriod, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_DISCOVERY_PERIOD_DEFAULT, + CFG_TDLS_DISCOVERY_PERIOD_MIN, + CFG_TDLS_DISCOVERY_PERIOD_MAX ), REG_VARIABLE( CFG_TDLS_MAX_DISCOVERY_ATTEMPT, WLAN_PARAM_Integer, - hdd_config_t, fTDLSMaxDiscoveryAttempt, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_MAX_DISCOVERY_ATTEMPT_DEFAULT, - CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MIN, - CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MAX ), + hdd_config_t, fTDLSMaxDiscoveryAttempt, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_MAX_DISCOVERY_ATTEMPT_DEFAULT, + CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MIN, + CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MAX ), REG_VARIABLE( CFG_TDLS_IDLE_TIMEOUT, WLAN_PARAM_Integer, - hdd_config_t, fTDLSIdleTimeout, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_IDLE_TIMEOUT_DEFAULT, - CFG_TDLS_IDLE_TIMEOUT_MIN, - CFG_TDLS_IDLE_TIMEOUT_MAX ), + hdd_config_t, fTDLSIdleTimeout, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_IDLE_TIMEOUT_DEFAULT, + CFG_TDLS_IDLE_TIMEOUT_MIN, + CFG_TDLS_IDLE_TIMEOUT_MAX ), REG_VARIABLE( CFG_TDLS_IDLE_PACKET_THRESHOLD, WLAN_PARAM_Integer, - hdd_config_t, fTDLSIdlePacketThreshold, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_IDLE_PACKET_THRESHOLD_DEFAULT, - CFG_TDLS_IDLE_PACKET_THRESHOLD_MIN, - CFG_TDLS_IDLE_PACKET_THRESHOLD_MAX ), + hdd_config_t, fTDLSIdlePacketThreshold, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_IDLE_PACKET_THRESHOLD_DEFAULT, + CFG_TDLS_IDLE_PACKET_THRESHOLD_MIN, + CFG_TDLS_IDLE_PACKET_THRESHOLD_MAX ), REG_VARIABLE( CFG_TDLS_RSSI_HYSTERESIS, WLAN_PARAM_Integer, - hdd_config_t, fTDLSRSSIHysteresis, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_RSSI_HYSTERESIS_DEFAULT, - CFG_TDLS_RSSI_HYSTERESIS_MIN, - CFG_TDLS_RSSI_HYSTERESIS_MAX ), + hdd_config_t, fTDLSRSSIHysteresis, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_RSSI_HYSTERESIS_DEFAULT, + CFG_TDLS_RSSI_HYSTERESIS_MIN, + CFG_TDLS_RSSI_HYSTERESIS_MAX ), REG_VARIABLE( CFG_TDLS_RSSI_TRIGGER_THRESHOLD, WLAN_PARAM_SignedInteger, - hdd_config_t, fTDLSRSSITriggerThreshold, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_RSSI_TRIGGER_THRESHOLD_DEFAULT, - CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MIN, - CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MAX ), + hdd_config_t, fTDLSRSSITriggerThreshold, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_RSSI_TRIGGER_THRESHOLD_DEFAULT, + CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MIN, + CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MAX ), REG_VARIABLE( CFG_TDLS_RSSI_TEARDOWN_THRESHOLD, WLAN_PARAM_SignedInteger, - hdd_config_t, fTDLSRSSITeardownThreshold, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_DEFAULT, - CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MIN, - CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MAX ), + hdd_config_t, fTDLSRSSITeardownThreshold, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_DEFAULT, + CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MIN, + CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MAX ), #ifdef QCA_WIFI_2_0 REG_VARIABLE( CFG_TDLS_RSSI_DELTA, WLAN_PARAM_SignedInteger, - hdd_config_t, fTDLSRSSIDelta, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_RSSI_DELTA_DEFAULT, - CFG_TDLS_RSSI_DELTA_MIN, - CFG_TDLS_RSSI_DELTA_MAX ), + hdd_config_t, fTDLSRSSIDelta, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_RSSI_DELTA_DEFAULT, + CFG_TDLS_RSSI_DELTA_MIN, + CFG_TDLS_RSSI_DELTA_MAX ), #endif -REG_VARIABLE( CFG_TDLS_QOS_WMM_UAPSD_MASK_NAME , WLAN_PARAM_HexInteger, + REG_VARIABLE( CFG_TDLS_QOS_WMM_UAPSD_MASK_NAME , WLAN_PARAM_HexInteger, hdd_config_t, fTDLSUapsdMask, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_TDLS_QOS_WMM_UAPSD_MASK_DEFAULT, CFG_TDLS_QOS_WMM_UAPSD_MASK_MIN, CFG_TDLS_QOS_WMM_UAPSD_MASK_MAX ), -REG_VARIABLE( CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE, WLAN_PARAM_Integer, - hdd_config_t, fEnableTDLSBufferSta, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_DEFAULT, - CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MIN, - CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MAX ), - -REG_VARIABLE( CFG_TDLS_PUAPSD_INACTIVITY_TIME, WLAN_PARAM_Integer, - hdd_config_t, fTDLSPuapsdInactivityTimer, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_PUAPSD_INACTIVITY_TIME_DEFAULT, - CFG_TDLS_PUAPSD_INACTIVITY_TIME_MIN, - CFG_TDLS_PUAPSD_INACTIVITY_TIME_MAX ), - -REG_VARIABLE( CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD, WLAN_PARAM_Integer, - hdd_config_t, fTDLSRxFrameThreshold, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_DEFAULT, - CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MIN, - CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MAX ), - -REG_VARIABLE( CFG_TDLS_EXTERNAL_CONTROL, WLAN_PARAM_Integer, - hdd_config_t, fTDLSExternalControl, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TDLS_EXTERNAL_CONTROL_DEFAULT, - CFG_TDLS_EXTERNAL_CONTROL_MIN, - CFG_TDLS_EXTERNAL_CONTROL_MAX ), + REG_VARIABLE( CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE, WLAN_PARAM_Integer, + hdd_config_t, fEnableTDLSBufferSta, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_DEFAULT, + CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MIN, + CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MAX ), + + REG_VARIABLE( CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE, WLAN_PARAM_Integer, + hdd_config_t, fEnableTDLSOffChannel, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_DEFAULT, + CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MIN, + CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MAX ), + + REG_VARIABLE( CFG_TDLS_PUAPSD_INACTIVITY_TIME, WLAN_PARAM_Integer, + hdd_config_t, fTDLSPuapsdInactivityTimer, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_PUAPSD_INACTIVITY_TIME_DEFAULT, + CFG_TDLS_PUAPSD_INACTIVITY_TIME_MIN, + CFG_TDLS_PUAPSD_INACTIVITY_TIME_MAX ), + + REG_VARIABLE( CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD, WLAN_PARAM_Integer, + hdd_config_t, fTDLSRxFrameThreshold, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_DEFAULT, + CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MIN, + CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MAX ), + + REG_VARIABLE( CFG_TDLS_EXTERNAL_CONTROL, WLAN_PARAM_Integer, + hdd_config_t, fTDLSExternalControl, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TDLS_EXTERNAL_CONTROL_DEFAULT, + CFG_TDLS_EXTERNAL_CONTROL_MIN, + CFG_TDLS_EXTERNAL_CONTROL_MAX ), #endif #ifdef WLAN_SOFTAP_VSTA_FEATURE REG_VARIABLE( CFG_VSTA_SUPPORT_ENABLE, WLAN_PARAM_Integer, - hdd_config_t, fEnableVSTASupport, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VSTA_SUPPORT_ENABLE_DEFAULT, - CFG_VSTA_SUPPORT_ENABLE_MIN, - CFG_VSTA_SUPPORT_ENABLE_MAX ), + hdd_config_t, fEnableVSTASupport, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VSTA_SUPPORT_ENABLE_DEFAULT, + CFG_VSTA_SUPPORT_ENABLE_MIN, + CFG_VSTA_SUPPORT_ENABLE_MAX ), #endif REG_VARIABLE( CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableLpwrImgTransition, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT, - CFG_ENABLE_LPWR_IMG_TRANSITION_MIN, - CFG_ENABLE_LPWR_IMG_TRANSITION_MAX ), + hdd_config_t, enableLpwrImgTransition, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT, + CFG_ENABLE_LPWR_IMG_TRANSITION_MIN, + CFG_ENABLE_LPWR_IMG_TRANSITION_MAX ), #ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE REG_VARIABLE( CFG_ACTIVEMODE_OFFLOAD_ENABLE, WLAN_PARAM_Integer, - hdd_config_t, fEnableActiveModeOffload, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ACTIVEMODE_OFFLOAD_ENABLE_DEFAULT, - CFG_ACTIVEMODE_OFFLOAD_ENABLE_MIN, - CFG_ACTIVEMODE_OFFLOAD_ENABLE_MAX ), + hdd_config_t, fEnableActiveModeOffload, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ACTIVEMODE_OFFLOAD_ENABLE_DEFAULT, + CFG_ACTIVEMODE_OFFLOAD_ENABLE_MIN, + CFG_ACTIVEMODE_OFFLOAD_ENABLE_MAX ), #endif REG_VARIABLE( CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableLpwrImgTransition, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT, - CFG_ENABLE_LPWR_IMG_TRANSITION_MIN, - CFG_ENABLE_LPWR_IMG_TRANSITION_MAX ), + hdd_config_t, enableLpwrImgTransition, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT, + CFG_ENABLE_LPWR_IMG_TRANSITION_MIN, + CFG_ENABLE_LPWR_IMG_TRANSITION_MAX ), REG_VARIABLE( CFG_SCAN_AGING_PARAM_NAME, WLAN_PARAM_Integer, - hdd_config_t, scanAgingTimeout, - VAR_FLAGS_OPTIONAL, - CFG_SCAN_AGING_PARAM_DEFAULT, - CFG_SCAN_AGING_PARAM_MIN, - CFG_SCAN_AGING_PARAM_MAX ), + hdd_config_t, scanAgingTimeout, + VAR_FLAGS_OPTIONAL, + CFG_SCAN_AGING_PARAM_DEFAULT, + CFG_SCAN_AGING_PARAM_MIN, + CFG_SCAN_AGING_PARAM_MAX ), REG_VARIABLE( CFG_TX_LDPC_ENABLE_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, enableTxLdpc, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TX_LDPC_ENABLE_FEATURE_DEFAULT, - CFG_TX_LDPC_ENABLE_FEATURE_MIN, - CFG_TX_LDPC_ENABLE_FEATURE_MAX ), + hdd_config_t, enableTxLdpc, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TX_LDPC_ENABLE_FEATURE_DEFAULT, + CFG_TX_LDPC_ENABLE_FEATURE_MIN, + CFG_TX_LDPC_ENABLE_FEATURE_MAX ), REG_VARIABLE( CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableMCCAdaptiveScheduler, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_DEFAULT, - CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MIN, - CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MAX ), + hdd_config_t, enableMCCAdaptiveScheduler, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_DEFAULT, + CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MIN, + CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MAX ), REG_VARIABLE( CFG_ANDRIOD_POWER_SAVE_NAME, WLAN_PARAM_Integer, - hdd_config_t, isAndroidPsEn, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ANDRIOD_POWER_SAVE_DEFAULT, - CFG_ANDRIOD_POWER_SAVE_MIN, - CFG_ANDRIOD_POWER_SAVE_MAX), + hdd_config_t, isAndroidPsEn, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ANDRIOD_POWER_SAVE_DEFAULT, + CFG_ANDRIOD_POWER_SAVE_MIN, + CFG_ANDRIOD_POWER_SAVE_MAX), REG_VARIABLE( CFG_IBSS_ADHOC_CHANNEL_5GHZ_NAME, WLAN_PARAM_Integer, - hdd_config_t, AdHocChannel5G, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_IBSS_ADHOC_CHANNEL_5GHZ_DEFAULT, - CFG_IBSS_ADHOC_CHANNEL_5GHZ_MIN, - CFG_IBSS_ADHOC_CHANNEL_5GHZ_MAX), + hdd_config_t, AdHocChannel5G, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_IBSS_ADHOC_CHANNEL_5GHZ_DEFAULT, + CFG_IBSS_ADHOC_CHANNEL_5GHZ_MIN, + CFG_IBSS_ADHOC_CHANNEL_5GHZ_MAX), REG_VARIABLE( CFG_IBSS_ADHOC_CHANNEL_24GHZ_NAME, WLAN_PARAM_Integer, - hdd_config_t, AdHocChannel24G, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_IBSS_ADHOC_CHANNEL_24GHZ_DEFAULT, - CFG_IBSS_ADHOC_CHANNEL_24GHZ_MIN, - CFG_IBSS_ADHOC_CHANNEL_24GHZ_MAX), - + hdd_config_t, AdHocChannel24G, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_IBSS_ADHOC_CHANNEL_24GHZ_DEFAULT, + CFG_IBSS_ADHOC_CHANNEL_24GHZ_MIN, + CFG_IBSS_ADHOC_CHANNEL_24GHZ_MAX), #ifdef WLAN_FEATURE_11AC REG_VARIABLE( CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE, WLAN_PARAM_Integer, - hdd_config_t, enableTxBF, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT, - CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MIN, - CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX ), + hdd_config_t, enableTxBF, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT, + CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MIN, + CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX ), REG_VARIABLE( CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, WLAN_PARAM_Integer, - hdd_config_t, txBFCsnValue, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_DEFAULT, - CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MIN, - CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MAX ), - + hdd_config_t, txBFCsnValue, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_DEFAULT, + CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MIN, + CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MAX ), #endif REG_VARIABLE( CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_NAME, WLAN_PARAM_Integer, - hdd_config_t, sapAllowAllChannel, - VAR_FLAGS_OPTIONAL, - CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_DEFAULT, - CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MIN, - CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MAX ), + hdd_config_t, sapAllowAllChannel, + VAR_FLAGS_OPTIONAL, + CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_DEFAULT, + CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MIN, + CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MAX ), #ifdef WLAN_FEATURE_11AC REG_VARIABLE( CFG_DISABLE_LDPC_WITH_TXBF_AP, WLAN_PARAM_Integer, - hdd_config_t, disableLDPCWithTxbfAP, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_DISABLE_LDPC_WITH_TXBF_AP_DEFAULT, - CFG_DISABLE_LDPC_WITH_TXBF_AP_MIN, - CFG_DISABLE_LDPC_WITH_TXBF_AP_MAX ), + hdd_config_t, disableLDPCWithTxbfAP, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_DISABLE_LDPC_WITH_TXBF_AP_DEFAULT, + CFG_DISABLE_LDPC_WITH_TXBF_AP_MIN, + CFG_DISABLE_LDPC_WITH_TXBF_AP_MAX ), #endif REG_VARIABLE_STRING( CFG_LIST_OF_NON_DFS_COUNTRY_CODE, WLAN_PARAM_String, - hdd_config_t, listOfNonDfsCountryCode, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - (void *)CFG_LIST_OF_NON_DFS_COUNTRY_CODE_DEFAULT), + hdd_config_t, listOfNonDfsCountryCode, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + (void *)CFG_LIST_OF_NON_DFS_COUNTRY_CODE_DEFAULT), REG_DYNAMIC_VARIABLE( CFG_ENABLE_SSR, WLAN_PARAM_Integer, - hdd_config_t, enableSSR, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_SSR_DEFAULT, - CFG_ENABLE_SSR_MIN, - CFG_ENABLE_SSR_MAX, - cbNotifySetEnableSSR, 0 ), + hdd_config_t, enableSSR, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_SSR_DEFAULT, + CFG_ENABLE_SSR_MIN, + CFG_ENABLE_SSR_MAX, + cbNotifySetEnableSSR, 0 ), REG_VARIABLE_STRING( CFG_LIST_OF_NON_11AC_COUNTRY_CODE, WLAN_PARAM_String, - hdd_config_t, listOfNon11acCountryCode, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - (void *)CFG_LIST_OF_NON_11AC_COUNTRY_CODE_DEFAULT), + hdd_config_t, listOfNon11acCountryCode, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + (void *)CFG_LIST_OF_NON_11AC_COUNTRY_CODE_DEFAULT), - REG_VARIABLE(CFG_MAX_MEDIUM_TIME, WLAN_PARAM_Integer, - hdd_config_t, cfgMaxMediumTime, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_MAX_MEDIUM_TIME_STADEFAULT, - CFG_MAX_MEDIUM_TIME_STAMIN, - CFG_MAX_MEDIUM_TIME_STAMAX ), + REG_VARIABLE( CFG_MAX_MEDIUM_TIME, WLAN_PARAM_Integer, + hdd_config_t, cfgMaxMediumTime, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_MAX_MEDIUM_TIME_STADEFAULT, + CFG_MAX_MEDIUM_TIME_STAMIN, + CFG_MAX_MEDIUM_TIME_STAMAX ), REG_VARIABLE( CFG_ENABLE_TRAFFIC_MONITOR, WLAN_PARAM_Integer, - hdd_config_t, enableTrafficMonitor, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_TRAFFIC_MONITOR_DEFAULT, - CFG_ENABLE_TRAFFIC_MONITOR_MIN, - CFG_ENABLE_TRAFFIC_MONITOR_MAX), + hdd_config_t, enableTrafficMonitor, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_TRAFFIC_MONITOR_DEFAULT, + CFG_ENABLE_TRAFFIC_MONITOR_MIN, + CFG_ENABLE_TRAFFIC_MONITOR_MAX), REG_VARIABLE( CFG_TRAFFIC_IDLE_TIMEOUT, WLAN_PARAM_Integer, - hdd_config_t, trafficIdleTimeout, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_TRAFFIC_IDLE_TIMEOUT_DEFAULT, - CFG_TRAFFIC_IDLE_TIMEOUT_MIN, - CFG_TRAFFIC_IDLE_TIMEOUT_MAX), + hdd_config_t, trafficIdleTimeout, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TRAFFIC_IDLE_TIMEOUT_DEFAULT, + CFG_TRAFFIC_IDLE_TIMEOUT_MIN, + CFG_TRAFFIC_IDLE_TIMEOUT_MAX), #ifdef WLAN_FEATURE_11AC REG_VARIABLE( CFG_ENABLE_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer, - hdd_config_t, enableVhtFor24GHzBand, - VAR_FLAGS_OPTIONAL, - CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT, - CFG_ENABLE_VHT_FOR_24GHZ_MIN, - CFG_ENABLE_VHT_FOR_24GHZ_MAX), + hdd_config_t, enableVhtFor24GHzBand, + VAR_FLAGS_OPTIONAL, + CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT, + CFG_ENABLE_VHT_FOR_24GHZ_MIN, + CFG_ENABLE_VHT_FOR_24GHZ_MAX), #endif REG_VARIABLE( CFG_SCAN_OFFLOAD_NAME, WLAN_PARAM_Integer, - hdd_config_t, fScanOffload, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_SCAN_OFFLOAD_DEFAULT, - CFG_SCAN_OFFLOAD_DISABLE, - CFG_SCAN_OFFLOAD_ENABLE ), + hdd_config_t, fScanOffload, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_SCAN_OFFLOAD_DEFAULT, + CFG_SCAN_OFFLOAD_DISABLE, + CFG_SCAN_OFFLOAD_ENABLE ), #ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD REG_DYNAMIC_VARIABLE( CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY, WLAN_PARAM_Integer, - hdd_config_t, bFastRoamInConIniFeatureEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_DEFAULT, - CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MIN, - CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MAX, - cbNotifySetEnableFastRoamInConcurrency, 0 ), + hdd_config_t, bFastRoamInConIniFeatureEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_DEFAULT, + CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MIN, + CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MAX, + cbNotifySetEnableFastRoamInConcurrency, 0 ), #endif REG_VARIABLE( CFG_ENABLE_ADAPT_RX_DRAIN_NAME, WLAN_PARAM_Integer, @@ -3001,113 +3018,113 @@ REG_VARIABLE( CFG_TDLS_EXTERNAL_CONTROL, WLAN_PARAM_Integer, CFG_STRICT_5GHZ_PREF_BY_MARGIN_MIN, CFG_STRICT_5GHZ_PREF_BY_MARGIN_MAX ), -REG_VARIABLE( CFG_ENABLE_TCP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer, - hdd_config_t, enableTCPChkSumOffld, - VAR_FLAGS_OPTIONAL, - CFG_ENABLE_TCP_CHKSUM_OFFLOAD_DEFAULT, - CFG_ENABLE_TCP_CHKSUM_OFFLOAD_MIN, - CFG_ENABLE_TCP_CHKSUM_OFFLOAD_MAX), - -REG_VARIABLE( CFG_ENABLE_IP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer, - hdd_config_t, enableIPChecksumOffload, - VAR_FLAGS_OPTIONAL, - CFG_ENABLE_IP_CHKSUM_OFFLOAD_DEFAULT, - CFG_ENABLE_IP_CHKSUM_OFFLOAD_DISABLE, - CFG_ENABLE_IP_CHKSUM_OFFLOAD_ENABLE ), - -REG_VARIABLE( CFG_POWERSAVE_OFFLOAD_NAME, WLAN_PARAM_Integer, - hdd_config_t, enablePowersaveOffload, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_POWERSAVE_OFFLOAD_DEFAULT, - CFG_POWERSAVE_OFFLOAD_MIN, - CFG_POWERSAVE_OFFLOAD_MAX ), - -REG_VARIABLE( CFG_ENABLE_FW_UART_PRINT_NAME, WLAN_PARAM_Integer, - hdd_config_t, enablefwprint, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_FW_UART_PRINT_DEFAULT, - CFG_ENABLE_FW_UART_PRINT_DISABLE, - CFG_ENABLE_FW_UART_PRINT_ENABLE), - -REG_VARIABLE( CFG_ENABLE_FW_LOG_NAME, WLAN_PARAM_Integer, - hdd_config_t, enablefwlog, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_FW_LOG_DEFAULT, - CFG_ENABLE_FW_LOG_DISABLE, - CFG_ENABLE_FW_LOG_ENABLE), + REG_VARIABLE( CFG_ENABLE_TCP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer, + hdd_config_t, enableTCPChkSumOffld, + VAR_FLAGS_OPTIONAL, + CFG_ENABLE_TCP_CHKSUM_OFFLOAD_DEFAULT, + CFG_ENABLE_TCP_CHKSUM_OFFLOAD_MIN, + CFG_ENABLE_TCP_CHKSUM_OFFLOAD_MAX), + + REG_VARIABLE( CFG_ENABLE_IP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer, + hdd_config_t, enableIPChecksumOffload, + VAR_FLAGS_OPTIONAL, + CFG_ENABLE_IP_CHKSUM_OFFLOAD_DEFAULT, + CFG_ENABLE_IP_CHKSUM_OFFLOAD_DISABLE, + CFG_ENABLE_IP_CHKSUM_OFFLOAD_ENABLE ), + + REG_VARIABLE( CFG_POWERSAVE_OFFLOAD_NAME, WLAN_PARAM_Integer, + hdd_config_t, enablePowersaveOffload, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_POWERSAVE_OFFLOAD_DEFAULT, + CFG_POWERSAVE_OFFLOAD_MIN, + CFG_POWERSAVE_OFFLOAD_MAX ), + + REG_VARIABLE( CFG_ENABLE_FW_UART_PRINT_NAME, WLAN_PARAM_Integer, + hdd_config_t, enablefwprint, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_FW_UART_PRINT_DEFAULT, + CFG_ENABLE_FW_UART_PRINT_DISABLE, + CFG_ENABLE_FW_UART_PRINT_ENABLE), + + REG_VARIABLE( CFG_ENABLE_FW_LOG_NAME, WLAN_PARAM_Integer, + hdd_config_t, enablefwlog, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_FW_LOG_DEFAULT, + CFG_ENABLE_FW_LOG_DISABLE, + CFG_ENABLE_FW_LOG_ENABLE), #ifdef IPA_OFFLOAD -REG_VARIABLE( CFG_IPA_OFFLOAD_NAME, WLAN_PARAM_Integer, - hdd_config_t, IpaEnable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_IPA_OFFLOAD_DEFAULT, - CFG_IPA_OFFLOAD_DISABLE, - CFG_IPA_OFFLOAD_ENABLE ), - -REG_VARIABLE( CFG_IPA_IPV6_OFFLOAD_NAME, WLAN_PARAM_Integer, - hdd_config_t, IpaIPv6Enable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_IPA_IPV6_OFFLOAD_DEFAULT, - CFG_IPA_IPV6_OFFLOAD_DISABLE, - CFG_IPA_IPV6_OFFLOAD_ENABLE ), - -REG_VARIABLE( CFG_IPA_DESC_SIZE_NAME, WLAN_PARAM_Integer, - hdd_config_t, IpaDescSize, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_IPA_DESC_SIZE_DEFAULT, - CFG_IPA_DESC_SIZE_MIN, - CFG_IPA_DESC_SIZE_MAX ), - -REG_VARIABLE( CFG_IPA_PRE_FILTER_NAME, WLAN_PARAM_Integer, - hdd_config_t, IpaPreFilterEnable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_IPA_PRE_FILTER_DEFAULT, - CFG_IPA_PRE_FILTER_DISABLE, - CFG_IPA_PRE_FILTER_ENABLE ), - -REG_VARIABLE( CFG_IPA_RM_NAME, WLAN_PARAM_Integer, - hdd_config_t, IpaRMEnable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_IPA_RM_DEFAULT, - CFG_IPA_RM_DISABLE, - CFG_IPA_RM_ENABLE ), + REG_VARIABLE( CFG_IPA_OFFLOAD_NAME, WLAN_PARAM_Integer, + hdd_config_t, IpaEnable, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_IPA_OFFLOAD_DEFAULT, + CFG_IPA_OFFLOAD_DISABLE, + CFG_IPA_OFFLOAD_ENABLE ), + + REG_VARIABLE( CFG_IPA_IPV6_OFFLOAD_NAME, WLAN_PARAM_Integer, + hdd_config_t, IpaIPv6Enable, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_IPA_IPV6_OFFLOAD_DEFAULT, + CFG_IPA_IPV6_OFFLOAD_DISABLE, + CFG_IPA_IPV6_OFFLOAD_ENABLE ), + + REG_VARIABLE( CFG_IPA_DESC_SIZE_NAME, WLAN_PARAM_Integer, + hdd_config_t, IpaDescSize, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_IPA_DESC_SIZE_DEFAULT, + CFG_IPA_DESC_SIZE_MIN, + CFG_IPA_DESC_SIZE_MAX ), + + REG_VARIABLE( CFG_IPA_PRE_FILTER_NAME, WLAN_PARAM_Integer, + hdd_config_t, IpaPreFilterEnable, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_IPA_PRE_FILTER_DEFAULT, + CFG_IPA_PRE_FILTER_DISABLE, + CFG_IPA_PRE_FILTER_ENABLE ), + + REG_VARIABLE( CFG_IPA_RM_NAME, WLAN_PARAM_Integer, + hdd_config_t, IpaRMEnable, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_IPA_RM_DEFAULT, + CFG_IPA_RM_DISABLE, + CFG_IPA_RM_ENABLE ), #endif -REG_VARIABLE( CFG_P2P_LISTEN_OFFLOAD_NAME, WLAN_PARAM_Integer, - hdd_config_t, fP2pListenOffload, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_P2P_LISTEN_OFFLOAD_DEFAULT, - CFG_P2P_LISTEN_OFFLOAD_DISABLE, - CFG_P2P_LISTEN_OFFLOAD_ENABLE ), + REG_VARIABLE( CFG_P2P_LISTEN_OFFLOAD_NAME, WLAN_PARAM_Integer, + hdd_config_t, fP2pListenOffload, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_P2P_LISTEN_OFFLOAD_DEFAULT, + CFG_P2P_LISTEN_OFFLOAD_DISABLE, + CFG_P2P_LISTEN_OFFLOAD_ENABLE ), #ifdef WLAN_FEATURE_11AC -REG_VARIABLE( CFG_VHT_AMPDU_LEN_EXPONENT_NAME, WLAN_PARAM_Integer, - hdd_config_t, fVhtAmpduLenExponent, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK , - CFG_VHT_AMPDU_LEN_EXPONENT_DEFAULT, - CFG_VHT_AMPDU_LEN_EXPONENT_MIN, - CFG_VHT_AMPDU_LEN_EXPONENT_MAX), - -REG_VARIABLE( CFG_VHT_MPDU_LEN_NAME, WLAN_PARAM_Integer, - hdd_config_t, vhtMpduLen, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK , - CFG_VHT_MPDU_LEN_DEFAULT, - CFG_VHT_MPDU_LEN_MIN, - CFG_VHT_MPDU_LEN_MAX), + REG_VARIABLE( CFG_VHT_AMPDU_LEN_EXPONENT_NAME, WLAN_PARAM_Integer, + hdd_config_t, fVhtAmpduLenExponent, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK , + CFG_VHT_AMPDU_LEN_EXPONENT_DEFAULT, + CFG_VHT_AMPDU_LEN_EXPONENT_MIN, + CFG_VHT_AMPDU_LEN_EXPONENT_MAX), + + REG_VARIABLE( CFG_VHT_MPDU_LEN_NAME, WLAN_PARAM_Integer, + hdd_config_t, vhtMpduLen, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK , + CFG_VHT_MPDU_LEN_DEFAULT, + CFG_VHT_MPDU_LEN_MIN, + CFG_VHT_MPDU_LEN_MAX), #endif -REG_VARIABLE( CFG_MAX_WOW_FILTERS_NAME, WLAN_PARAM_Integer, - hdd_config_t, maxWoWFilters, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK , - CFG_MAX_WOW_FILTERS_DEFAULT, - CFG_MAX_WOW_FILTERS_MIN, - CFG_MAX_WOW_FILTERS_MAX), + REG_VARIABLE( CFG_MAX_WOW_FILTERS_NAME, WLAN_PARAM_Integer, + hdd_config_t, maxWoWFilters, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK , + CFG_MAX_WOW_FILTERS_DEFAULT, + CFG_MAX_WOW_FILTERS_MIN, + CFG_MAX_WOW_FILTERS_MAX), -REG_VARIABLE( CFG_WOW_STATUS_NAME, WLAN_PARAM_Integer, - hdd_config_t, wowEnable, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_WOW_STATUS_DEFAULT, - CFG_WOW_ENABLE_MIN, - CFG_WOW_ENABLE_MAX), + REG_VARIABLE( CFG_WOW_STATUS_NAME, WLAN_PARAM_Integer, + hdd_config_t, wowEnable, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_WOW_STATUS_DEFAULT, + CFG_WOW_ENABLE_MIN, + CFG_WOW_ENABLE_MAX), REG_VARIABLE( CFG_COALESING_IN_IBSS_NAME , WLAN_PARAM_Integer, hdd_config_t, isCoalesingInIBSSAllowed, @@ -3116,250 +3133,259 @@ REG_VARIABLE( CFG_WOW_STATUS_NAME, WLAN_PARAM_Integer, CFG_COALESING_IN_IBSS_MIN, CFG_COALESING_IN_IBSS_MAX ), -REG_VARIABLE( CFG_SAP_MAX_NO_PEERS, WLAN_PARAM_Integer, - hdd_config_t, maxNumberOfPeers, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_SAP_MAX_NO_PEERS_DEFAULT, - CFG_SAP_MAX_NO_PEERS_MIN, - CFG_SAP_MAX_NO_PEERS_MAX), + REG_VARIABLE( CFG_SAP_MAX_NO_PEERS, WLAN_PARAM_Integer, + hdd_config_t, maxNumberOfPeers, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_SAP_MAX_NO_PEERS_DEFAULT, + CFG_SAP_MAX_NO_PEERS_MIN, + CFG_SAP_MAX_NO_PEERS_MAX), #ifndef QCA_WIFI_ISOC REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL0_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalTempMinLevel0, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_TEMP_MIN_LEVEL0_DEFAULT, - CFG_THERMAL_TEMP_MIN_LEVEL0_MIN, - CFG_THERMAL_TEMP_MIN_LEVEL0_MAX ), + hdd_config_t, thermalTempMinLevel0, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_TEMP_MIN_LEVEL0_DEFAULT, + CFG_THERMAL_TEMP_MIN_LEVEL0_MIN, + CFG_THERMAL_TEMP_MIN_LEVEL0_MAX ), REG_VARIABLE( CFG_THERMAL_TEMP_MAX_LEVEL0_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalTempMaxLevel0, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_TEMP_MAX_LEVEL0_DEFAULT, - CFG_THERMAL_TEMP_MAX_LEVEL0_MIN, - CFG_THERMAL_TEMP_MAX_LEVEL0_MAX ), + hdd_config_t, thermalTempMaxLevel0, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_TEMP_MAX_LEVEL0_DEFAULT, + CFG_THERMAL_TEMP_MAX_LEVEL0_MIN, + CFG_THERMAL_TEMP_MAX_LEVEL0_MAX ), REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL1_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalTempMinLevel1, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_TEMP_MIN_LEVEL1_DEFAULT, - CFG_THERMAL_TEMP_MIN_LEVEL1_MIN, - CFG_THERMAL_TEMP_MIN_LEVEL1_MAX ), + hdd_config_t, thermalTempMinLevel1, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_TEMP_MIN_LEVEL1_DEFAULT, + CFG_THERMAL_TEMP_MIN_LEVEL1_MIN, + CFG_THERMAL_TEMP_MIN_LEVEL1_MAX ), REG_VARIABLE( CFG_THERMAL_TEMP_MAX_LEVEL1_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalTempMaxLevel1, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_TEMP_MAX_LEVEL1_DEFAULT, - CFG_THERMAL_TEMP_MAX_LEVEL1_MIN, - CFG_THERMAL_TEMP_MAX_LEVEL1_MAX ), + hdd_config_t, thermalTempMaxLevel1, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_TEMP_MAX_LEVEL1_DEFAULT, + CFG_THERMAL_TEMP_MAX_LEVEL1_MIN, + CFG_THERMAL_TEMP_MAX_LEVEL1_MAX ), REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL2_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalTempMinLevel2, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_TEMP_MIN_LEVEL2_DEFAULT, - CFG_THERMAL_TEMP_MIN_LEVEL2_MIN, - CFG_THERMAL_TEMP_MIN_LEVEL2_MAX ), + hdd_config_t, thermalTempMinLevel2, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_TEMP_MIN_LEVEL2_DEFAULT, + CFG_THERMAL_TEMP_MIN_LEVEL2_MIN, + CFG_THERMAL_TEMP_MIN_LEVEL2_MAX ), REG_VARIABLE( CFG_THERMAL_TEMP_MAX_LEVEL2_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalTempMaxLevel2, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_TEMP_MAX_LEVEL2_DEFAULT, - CFG_THERMAL_TEMP_MAX_LEVEL2_MIN, - CFG_THERMAL_TEMP_MAX_LEVEL2_MAX ), + hdd_config_t, thermalTempMaxLevel2, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_TEMP_MAX_LEVEL2_DEFAULT, + CFG_THERMAL_TEMP_MAX_LEVEL2_MIN, + CFG_THERMAL_TEMP_MAX_LEVEL2_MAX ), REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL3_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalTempMinLevel3, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_TEMP_MIN_LEVEL3_DEFAULT, - CFG_THERMAL_TEMP_MIN_LEVEL3_MIN, - CFG_THERMAL_TEMP_MIN_LEVEL3_MAX ), + hdd_config_t, thermalTempMinLevel3, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_TEMP_MIN_LEVEL3_DEFAULT, + CFG_THERMAL_TEMP_MIN_LEVEL3_MIN, + CFG_THERMAL_TEMP_MIN_LEVEL3_MAX ), REG_VARIABLE( CFG_THERMAL_TEMP_MAX_LEVEL3_NAME, WLAN_PARAM_Integer, - hdd_config_t, thermalTempMaxLevel3, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_THERMAL_TEMP_MAX_LEVEL3_DEFAULT, - CFG_THERMAL_TEMP_MAX_LEVEL3_MIN, - CFG_THERMAL_TEMP_MAX_LEVEL3_MAX ), + hdd_config_t, thermalTempMaxLevel3, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_THERMAL_TEMP_MAX_LEVEL3_DEFAULT, + CFG_THERMAL_TEMP_MAX_LEVEL3_MIN, + CFG_THERMAL_TEMP_MAX_LEVEL3_MAX ), REG_VARIABLE( CFG_SET_TXPOWER_LIMIT2G_NAME , WLAN_PARAM_Integer, - hdd_config_t, TxPower2g, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_SET_TXPOWER_LIMIT2G_DEFAULT, - CFG_SET_TXPOWER_LIMIT2G_MIN, - CFG_SET_TXPOWER_LIMIT2G_MAX ), + hdd_config_t, TxPower2g, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_SET_TXPOWER_LIMIT2G_DEFAULT, + CFG_SET_TXPOWER_LIMIT2G_MIN, + CFG_SET_TXPOWER_LIMIT2G_MAX ), REG_VARIABLE( CFG_SET_TXPOWER_LIMIT5G_NAME , WLAN_PARAM_Integer, - hdd_config_t, TxPower5g, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_SET_TXPOWER_LIMIT5G_DEFAULT, - CFG_SET_TXPOWER_LIMIT5G_MIN, - CFG_SET_TXPOWER_LIMIT5G_MAX ), + hdd_config_t, TxPower5g, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_SET_TXPOWER_LIMIT5G_DEFAULT, + CFG_SET_TXPOWER_LIMIT5G_MIN, + CFG_SET_TXPOWER_LIMIT5G_MAX ), #endif /*#ifndef QCA_WIFI_ISOC*/ REG_VARIABLE( CFG_ENABLE_DEBUG_CONNECT_ISSUE, WLAN_PARAM_Integer, - hdd_config_t, gEnableDebugLog, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_DEBUG_CONNECT_ISSUE_DEFAULT, - CFG_ENABLE_DEBUG_CONNECT_ISSUE_MIN , - CFG_ENABLE_DEBUG_CONNECT_ISSUE_MAX), + hdd_config_t, gEnableDebugLog, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_DEBUG_CONNECT_ISSUE_DEFAULT, + CFG_ENABLE_DEBUG_CONNECT_ISSUE_MIN , + CFG_ENABLE_DEBUG_CONNECT_ISSUE_MAX), REG_VARIABLE( CFG_ENABLE_RX_THREAD, WLAN_PARAM_Integer, - hdd_config_t, enableRxThread, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_RX_THREAD_DEFAULT, - CFG_ENABLE_RX_THREAD_MIN, - CFG_ENABLE_RX_THREAD_MAX), + hdd_config_t, enableRxThread, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_RX_THREAD_DEFAULT, + CFG_ENABLE_RX_THREAD_MIN, + CFG_ENABLE_RX_THREAD_MAX), + REG_VARIABLE( CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_NAME, WLAN_PARAM_Integer, - hdd_config_t, fDfsPhyerrFilterOffload, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_DEFAULT, - CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MIN, - CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MAX ), + hdd_config_t, fDfsPhyerrFilterOffload, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_DEFAULT, + CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MIN, + CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MAX ), REG_VARIABLE( CFG_ENABLE_OVERLAP_CH, WLAN_PARAM_Integer, - hdd_config_t, gEnableOverLapCh, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_ENABLE_OVERLAP_CH_DEFAULT, - CFG_ENABLE_OVERLAP_CH_MIN, - CFG_ENABLE_OVERLAP_CH_MAX ), + hdd_config_t, gEnableOverLapCh, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_ENABLE_OVERLAP_CH_DEFAULT, + CFG_ENABLE_OVERLAP_CH_MIN, + CFG_ENABLE_OVERLAP_CH_MAX ), REG_VARIABLE_STRING( CFG_ONLY_ALLOWED_CHANNELS, WLAN_PARAM_String, - hdd_config_t, acsAllowedChnls, - VAR_FLAGS_OPTIONAL, - (void *)CFG_ONLY_ALLOWED_CHANNELS_DEFAULT), + hdd_config_t, acsAllowedChnls, + VAR_FLAGS_OPTIONAL, + (void *)CFG_ONLY_ALLOWED_CHANNELS_DEFAULT), REG_VARIABLE( CFG_REG_CHANGE_DEF_COUNTRY_NAME, WLAN_PARAM_Integer, - hdd_config_t, fRegChangeDefCountry, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_REG_CHANGE_DEF_COUNTRY_DEFAULT, - CFG_REG_CHANGE_DEF_COUNTRY_MIN, - CFG_REG_CHANGE_DEF_COUNTRY_MAX), + hdd_config_t, fRegChangeDefCountry, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_REG_CHANGE_DEF_COUNTRY_DEFAULT, + CFG_REG_CHANGE_DEF_COUNTRY_MIN, + CFG_REG_CHANGE_DEF_COUNTRY_MAX), REG_VARIABLE( CFG_SAP_SCAN_BAND_PREFERENCE, WLAN_PARAM_Integer, - hdd_config_t, acsScanBandPreference, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_SAP_SCAN_BAND_PREFERENCE_DEFAULT, - CFG_SAP_SCAN_BAND_PREFERENCE_MIN, - CFG_SAP_SCAN_BAND_PREFERENCE_MAX ), + hdd_config_t, acsScanBandPreference, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_SAP_SCAN_BAND_PREFERENCE_DEFAULT, + CFG_SAP_SCAN_BAND_PREFERENCE_MIN, + CFG_SAP_SCAN_BAND_PREFERENCE_MAX ), #ifdef QCA_LL_TX_FLOW_CT REG_VARIABLE( CFG_LL_TX_LBW_FLOW_LWM, WLAN_PARAM_Integer, - hdd_config_t, TxLbwFlowLowWaterMark, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LL_TX_LBW_FLOW_LWM_DEFAULT, - CFG_LL_TX_LBW_FLOW_LWM_MIN, - CFG_LL_TX_LBW_FLOW_LWM_MAX ), + hdd_config_t, TxLbwFlowLowWaterMark, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_LBW_FLOW_LWM_DEFAULT, + CFG_LL_TX_LBW_FLOW_LWM_MIN, + CFG_LL_TX_LBW_FLOW_LWM_MAX ), REG_VARIABLE( CFG_LL_TX_LBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer, - hdd_config_t, TxLbwFlowHighWaterMarkOffset, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LL_TX_LBW_FLOW_HWM_OFFSET_DEFAULT, - CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MIN, - CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MAX ), + hdd_config_t, TxLbwFlowHighWaterMarkOffset, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_LBW_FLOW_HWM_OFFSET_DEFAULT, + CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MIN, + CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MAX ), REG_VARIABLE( CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer, - hdd_config_t, TxLbwFlowMaxQueueDepth, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_DEFAULT, - CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MIN, - CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MAX ), + hdd_config_t, TxLbwFlowMaxQueueDepth, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_DEFAULT, + CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MIN, + CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MAX ), REG_VARIABLE( CFG_LL_TX_HBW_FLOW_LWM, WLAN_PARAM_Integer, - hdd_config_t, TxHbwFlowLowWaterMark, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LL_TX_HBW_FLOW_LWM_DEFAULT, - CFG_LL_TX_HBW_FLOW_LWM_MIN, - CFG_LL_TX_HBW_FLOW_LWM_MAX ), + hdd_config_t, TxHbwFlowLowWaterMark, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_HBW_FLOW_LWM_DEFAULT, + CFG_LL_TX_HBW_FLOW_LWM_MIN, + CFG_LL_TX_HBW_FLOW_LWM_MAX ), REG_VARIABLE( CFG_LL_TX_HBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer, - hdd_config_t, TxHbwFlowHighWaterMarkOffset, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LL_TX_HBW_FLOW_HWM_OFFSET_DEFAULT, - CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MIN, - CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MAX ), + hdd_config_t, TxHbwFlowHighWaterMarkOffset, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_HBW_FLOW_HWM_OFFSET_DEFAULT, + CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MIN, + CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MAX ), REG_VARIABLE( CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer, - hdd_config_t, TxHbwFlowMaxQueueDepth, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_DEFAULT, - CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MIN, - CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MAX ), + hdd_config_t, TxHbwFlowMaxQueueDepth, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_DEFAULT, + CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MIN, + CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MAX ), #endif /* QCA_LL_TX_FLOW_CT */ - REG_VARIABLE(CFG_INITIAL_DWELL_TIME_NAME, WLAN_PARAM_Integer, - hdd_config_t, nInitialDwellTime, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_INITIAL_DWELL_TIME_DEFAULT, - CFG_INITIAL_DWELL_TIME_MIN, - CFG_INITIAL_DWELL_TIME_MAX ), + REG_VARIABLE( CFG_INITIAL_DWELL_TIME_NAME, WLAN_PARAM_Integer, + hdd_config_t, nInitialDwellTime, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_INITIAL_DWELL_TIME_DEFAULT, + CFG_INITIAL_DWELL_TIME_MIN, + CFG_INITIAL_DWELL_TIME_MAX ), REG_VARIABLE( CFG_ACS_BAND_SWITCH_THRESHOLD, WLAN_PARAM_Integer, - hdd_config_t, acsBandSwitchThreshold, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_ACS_BAND_SWITCH_THRESHOLD_DEFAULT, - CFG_ACS_BAND_SWITCH_THRESHOLD_MIN, - CFG_ACS_BAND_SWITCH_THRESHOLD_MAX ), + hdd_config_t, acsBandSwitchThreshold, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_ACS_BAND_SWITCH_THRESHOLD_DEFAULT, + CFG_ACS_BAND_SWITCH_THRESHOLD_MIN, + CFG_ACS_BAND_SWITCH_THRESHOLD_MAX ), REG_VARIABLE( CFG_ENABLE_STRICT_REGULATORY_FOR_FCC_NAME, WLAN_PARAM_Integer, - hdd_config_t, gEnableStrictRegulatoryForFCC, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_STRICT_REGULATORY_FOR_FCC_DEFAULT, - CFG_ENABLE_STRICT_REGULATORY_FOR_FCC_MIN, - CFG_ENABLE_STRICT_REGULATORY_FOR_FCC_MAX ), + hdd_config_t, gEnableStrictRegulatoryForFCC, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_STRICT_REGULATORY_FOR_FCC_DEFAULT, + CFG_ENABLE_STRICT_REGULATORY_FOR_FCC_MIN, + CFG_ENABLE_STRICT_REGULATORY_FOR_FCC_MAX ), REG_VARIABLE( CFG_SAP_MAX_OFFLOAD_PEERS, WLAN_PARAM_Integer, - hdd_config_t, apMaxOffloadPeers, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, - CFG_SAP_MAX_OFFLOAD_PEERS_DEFAULT, - CFG_SAP_MAX_OFFLOAD_PEERS_MIN, - CFG_SAP_MAX_OFFLOAD_PEERS_MAX ), + hdd_config_t, apMaxOffloadPeers, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_SAP_MAX_OFFLOAD_PEERS_DEFAULT, + CFG_SAP_MAX_OFFLOAD_PEERS_MIN, + CFG_SAP_MAX_OFFLOAD_PEERS_MAX ), REG_VARIABLE( CFG_ADVERTISE_CONCURRENT_OPERATION_NAME , WLAN_PARAM_Integer, - hdd_config_t, advertiseConcurrentOperation, - VAR_FLAGS_OPTIONAL, - CFG_ADVERTISE_CONCURRENT_OPERATION_DEFAULT, - CFG_ADVERTISE_CONCURRENT_OPERATION_MIN, - CFG_ADVERTISE_CONCURRENT_OPERATION_MAX ), + hdd_config_t, advertiseConcurrentOperation, + VAR_FLAGS_OPTIONAL, + CFG_ADVERTISE_CONCURRENT_OPERATION_DEFAULT, + CFG_ADVERTISE_CONCURRENT_OPERATION_MIN, + CFG_ADVERTISE_CONCURRENT_OPERATION_MAX ), REG_VARIABLE( CFG_ENABLE_HYSTERETIC_MODE, WLAN_PARAM_Integer, - hdd_config_t, enableHystereticMode, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_HYSTERETIC_MODE_DEFAULT, - CFG_ENABLE_HYSTERETIC_MODE_MIN, - CFG_ENABLE_HYSTERETIC_MODE_MAX ), + hdd_config_t, enableHystereticMode, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_HYSTERETIC_MODE_DEFAULT, + CFG_ENABLE_HYSTERETIC_MODE_MIN, + CFG_ENABLE_HYSTERETIC_MODE_MAX ), REG_VARIABLE( CFG_DEFAULT_RATE_INDEX_24GH, WLAN_PARAM_Integer, - hdd_config_t, defaultRateIndex24Ghz, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_DEFAULT_RATE_INDEX_24GH_DEFAULT, - CFG_DEFAULT_RATE_INDEX_24GH_MIN, - CFG_DEFAULT_RATE_INDEX_24GH_MAX ), + hdd_config_t, defaultRateIndex24Ghz, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_DEFAULT_RATE_INDEX_24GH_DEFAULT, + CFG_DEFAULT_RATE_INDEX_24GH_MIN, + CFG_DEFAULT_RATE_INDEX_24GH_MAX ), REG_VARIABLE_STRING( CFG_OVERRIDE_COUNTRY_CODE, WLAN_PARAM_String, - hdd_config_t, overrideCountryCode, - VAR_FLAGS_OPTIONAL, - (void *)CFG_OVERRIDE_COUNTRY_CODE_DEFAULT), + hdd_config_t, overrideCountryCode, + VAR_FLAGS_OPTIONAL, + (void *)CFG_OVERRIDE_COUNTRY_CODE_DEFAULT), #ifdef MEMORY_DEBUG - REG_VARIABLE(CFG_ENABLE_MEMORY_DEBUG_NAME, WLAN_PARAM_Integer, - hdd_config_t, IsMemoryDebugSupportEnabled, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_MEMORY_DEBUG_DEFAULT, - CFG_ENABLE_MEMORY_DEBUG_MIN, - CFG_ENABLE_MEMORY_DEBUG_MAX ), + REG_VARIABLE( CFG_ENABLE_MEMORY_DEBUG_NAME, WLAN_PARAM_Integer, + hdd_config_t, IsMemoryDebugSupportEnabled, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_MEMORY_DEBUG_DEFAULT, + CFG_ENABLE_MEMORY_DEBUG_MIN, + CFG_ENABLE_MEMORY_DEBUG_MAX ), #endif REG_VARIABLE( CFG_ROAMING_DFS_CHANNEL_NAME , WLAN_PARAM_Integer, - hdd_config_t, allowDFSChannelRoam, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ROAMING_DFS_CHANNEL_DEFAULT, - CFG_ROAMING_DFS_CHANNEL_MIN, - CFG_ROAMING_DFS_CHANNEL_MAX ), -REG_VARIABLE( CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME, WLAN_PARAM_Integer, - hdd_config_t, debugP2pRemainOnChannel, - VAR_FLAGS_OPTIONAL, - CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT, - CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN, - CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX ), + hdd_config_t, allowDFSChannelRoam, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ROAMING_DFS_CHANNEL_DEFAULT, + CFG_ROAMING_DFS_CHANNEL_MIN, + CFG_ROAMING_DFS_CHANNEL_MAX ), + + REG_VARIABLE( CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME, WLAN_PARAM_Integer, + hdd_config_t, debugP2pRemainOnChannel, + VAR_FLAGS_OPTIONAL, + CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT, + CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN, + CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX ), + + REG_VARIABLE( CFG_SAP_DOT11_MODE_NAME, WLAN_PARAM_Integer, + hdd_config_t, sapDot11Mode, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, + CFG_SAP_DOT11_MODE_DEFAULT, + CFG_SAP_DOT11_MODE_MIN, + CFG_SAP_DOT11_MODE_MAX ), }; /* @@ -3670,6 +3696,7 @@ static void print_hdd_cfg(hdd_context_t *pHddCtx) VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [VoReorderAgingTime] Value = [%u] ",pHddCtx->cfg_ini->VoReorderAgingTime); VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [mcastBcastFilterSetting] Value = [%u] ",pHddCtx->cfg_ini->mcastBcastFilterSetting); VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fhostArpOffload] Value = [%u] ",pHddCtx->cfg_ini->fhostArpOffload); + VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ssdp] Value = [%u] ", pHddCtx->cfg_ini->ssdp); #ifdef WLAN_FEATURE_VOWIFI_11R VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fFTResourceReqSupported] Value = [%u] ",pHddCtx->cfg_ini->fFTResourceReqSupported); #endif @@ -5195,6 +5222,15 @@ v_BOOL_t hdd_update_config_dat( hdd_context_t *pHddCtx ) fStatus = FALSE; hddLog(LOGE, "Could not pass on WNI_CFG_TDLS_RX_FRAME_THRESHOLD to CCM"); } + + if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED, + pConfig->fEnableTDLSOffChannel, NULL, + eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) + { + fStatus = FALSE; + hddLog(LOGE, "Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CCM"); + } + #endif if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_ADAPT_RX_DRAIN, diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index bb8a52444529..09cddaa8c434 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -172,6 +172,8 @@ #define WLAN_AKM_SUITE_FT_PSK 0x000FAC04 #endif +#define HDD_CHANNEL_14 14 + static const u32 hdd_cipher_suites[] = { WLAN_CIPHER_SUITE_WEP40, @@ -2104,6 +2106,8 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter, tSmeConfigParams *psmeConfig; v_BOOL_t MFPCapable; v_BOOL_t MFPRequired; + eHddDot11Mode sapDot11Mode = + (WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->sapDot11Mode; ENTER(); @@ -2444,9 +2448,9 @@ static int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter, * Otherwise, leave whatever is set in hostapd (a OR b OR g OR n mode) */ if( ((pConfig->SapHw_mode == eSAP_DOT11_MODE_11n) || (pConfig->SapHw_mode == eSAP_DOT11_MODE_11n_ONLY)) && - (((WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->dot11Mode == eHDD_DOT11_MODE_AUTO) || - ((WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->dot11Mode == eHDD_DOT11_MODE_11ac) || - ((WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY)) ) + (( sapDot11Mode == eHDD_DOT11_MODE_AUTO ) || + ( sapDot11Mode == eHDD_DOT11_MODE_11ac ) || + ( sapDot11Mode == eHDD_DOT11_MODE_11ac_ONLY )) ) { if ((WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY) pConfig->SapHw_mode = eSAP_DOT11_MODE_11ac_ONLY; @@ -3071,6 +3075,13 @@ static int wlan_hdd_change_iface_to_sta_mode(struct net_device *ndev, wdev = ndev->ieee80211_ptr; hdd_stop_adapter(pHddCtx, pAdapter); +#ifdef FEATURE_WLAN_TDLS + /* A Mutex Lock is introduced while changing the mode to + * protect the concurrent access for the Adapters by TDLS + * module. + */ + mutex_lock(&pHddCtx->tdls_lock); +#endif hdd_deinit_adapter(pHddCtx, pAdapter); wdev->iftype = type; /*Check for sub-string p2p to confirm its a p2p interface*/ @@ -3088,6 +3099,9 @@ static int wlan_hdd_change_iface_to_sta_mode(struct net_device *ndev, pHddCtx->change_iface = type; memset(&pAdapter->sessionCtx, 0, sizeof(pAdapter->sessionCtx)); hdd_set_station_ops(pAdapter->dev); +#ifdef FEATURE_WLAN_TDLS + mutex_unlock(&pHddCtx->tdls_lock); +#endif status = hdd_init_station_mode(pAdapter); wext = WLAN_HDD_GET_WEXT_STATE_PTR(pAdapter); wext->roamProfile.pAddIEScan = pAdapter->scan_info.scanAddIE.addIEdata; @@ -3458,18 +3472,7 @@ static int __wlan_hdd_cfg80211_change_iface(struct wiphy *wiphy, case NL80211_IFTYPE_STATION: case NL80211_IFTYPE_P2P_CLIENT: case NL80211_IFTYPE_ADHOC: -#ifdef FEATURE_WLAN_TDLS - - /* A Mutex Lock is introduced while changing the mode to - * protect the concurrent access for the Adapters by TDLS - * module. - */ - mutex_lock(&pHddCtx->tdls_lock); -#endif status = wlan_hdd_change_iface_to_sta_mode(ndev, type); -#ifdef FEATURE_WLAN_TDLS - mutex_unlock(&pHddCtx->tdls_lock); -#endif if (status != VOS_STATUS_SUCCESS) return status; @@ -3800,6 +3803,7 @@ static int wlan_hdd_change_station(struct wiphy *wiphy, #ifdef FEATURE_WLAN_TDLS tCsrStaParams StaParams = {0}; tANI_U8 isBufSta = 0; + tANI_U8 isOffChannelSupported = 0; #endif ENTER(); @@ -3856,6 +3860,42 @@ static int wlan_hdd_change_station(struct wiphy *wiphy, StaParams.uapsd_queues = params->uapsd_queues; StaParams.max_sp = params->max_sp; + /* Convert (first channel , number of channels) tuple to + * the total list of channels. This goes with the assumption + * that if the first channel is < 14, then the next channels + * are an incremental of 1 else an incremental of 4 till the number + * of channels. + */ + if (0 != params->supported_channels_len) + { + int i = 0, j = 0, k = 0, no_of_channels = 0; + + for (i = 0 ; i < params->supported_channels_len && + j < SIR_MAC_MAX_SUPP_CHANNELS; i += 2) + { + int wifi_chan_index; + + StaParams.supported_channels[j] = params->supported_channels[i]; + wifi_chan_index = + ((StaParams.supported_channels[j] <= HDD_CHANNEL_14 ) ? 1 : 4 ); + no_of_channels = params->supported_channels[i + 1]; + + for (k = 1; k <= no_of_channels && + j < SIR_MAC_MAX_SUPP_CHANNELS - 1; k++) + { + StaParams.supported_channels[j + 1] = + StaParams.supported_channels[j] + wifi_chan_index; + j += 1; + } + } + StaParams.supported_channels_len = j; + } + vos_mem_copy(StaParams.supported_oper_classes, + params->supported_oper_classes, + params->supported_oper_classes_len); + StaParams.supported_oper_classes_len = + params->supported_oper_classes_len; + if (0 != params->ext_capab_len) vos_mem_copy(StaParams.extn_capability, params->ext_capab, sizeof(StaParams.extn_capability)); @@ -3901,9 +3941,15 @@ static int wlan_hdd_change_station(struct wiphy *wiphy, if ((1<<4) & StaParams.extn_capability[3]) { isBufSta = 1; } + /* TDLS Channel Switching Support */ + if ((1<<6) & StaParams.extn_capability[3]) { + isOffChannelSupported = 1; + } } - status = wlan_hdd_tdls_set_peer_caps( pAdapter, mac, params->uapsd_queues, - params->max_sp, isBufSta); + status = wlan_hdd_tdls_set_peer_caps( pAdapter, mac, + &StaParams, isBufSta, + isOffChannelSupported); + if (VOS_STATUS_SUCCESS != status) { VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, "%s: wlan_hdd_tdls_set_peer_caps failed!", __func__); @@ -4760,8 +4806,6 @@ wlan_hdd_cfg80211_inform_bss_frame( hdd_adapter_t *pAdapter, struct timespec ts; #endif - ENTER(); - pHddCtx = WLAN_HDD_GET_CTX(pAdapter); status = wlan_hdd_validate_context(pHddCtx); if (0 != status) @@ -4846,6 +4890,8 @@ wlan_hdd_cfg80211_inform_bss_frame( hdd_adapter_t *pAdapter, } else { + hddLog(VOS_TRACE_LEVEL_ERROR, "%s Invalid chan_no:%d", + __func__, chan_no); kfree(mgmt); return NULL; } @@ -4867,7 +4913,7 @@ wlan_hdd_cfg80211_inform_bss_frame( hdd_adapter_t *pAdapter, */ if(chan == NULL) { - hddLog(VOS_TRACE_LEVEL_INFO, "%s chan pointer is NULL", __func__); + hddLog(VOS_TRACE_LEVEL_ERROR, "%s chan pointer is NULL", __func__); kfree(mgmt); return NULL; } @@ -4889,6 +4935,9 @@ wlan_hdd_cfg80211_inform_bss_frame( hdd_adapter_t *pAdapter, rssi = (VOS_MIN ((bss_desc->rssi + bss_desc->sinr), 0))*100; } + hddLog(VOS_TRACE_LEVEL_INFO, "%s: BSSID:" MAC_ADDRESS_STR " Channel:%d RSSI:%d", + __func__, MAC_ADDR_ARRAY(mgmt->bssid),chan->center_freq, (int)(rssi/100)); + bss_status = cfg80211_inform_bss_frame(wiphy, chan, mgmt, frame_len, rssi, GFP_KERNEL); kfree(mgmt); @@ -4981,7 +5030,8 @@ static int wlan_hdd_cfg80211_update_bss( struct wiphy *wiphy, /* no scan results */ if (NULL == pResult) { - hddLog(VOS_TRACE_LEVEL_INFO, "%s: No scan result", __func__); + hddLog(VOS_TRACE_LEVEL_INFO, "%s: No scan result Status %d", + __func__, status); return status; } @@ -5385,9 +5435,8 @@ v_BOOL_t hdd_isScanAllowed( hdd_context_t *pHddCtx ) { staMac = (v_U8_t *) &(pAdapter->macAddressCurrent.bytes[0]); hddLog(VOS_TRACE_LEVEL_ERROR, - "%s: client " MAC_ADDRESS_STR - " is in the middle of WPS/EAPOL exchange.", __func__, - MAC_ADDR_ARRAY(staMac)); + "%s: client " MAC_ADDRESS_STR " is in the middle of WPS/EAPOL exchange.", + __func__,MAC_ADDR_ARRAY(staMac)); return VOS_FALSE; } } @@ -5532,9 +5581,15 @@ int wlan_hdd_cfg80211_scan( struct wiphy *wiphy, dev, #endif request); - if(status <= 0) + if (status <= 0) { - hddLog(VOS_TRACE_LEVEL_INFO, "%s: TDLS Pending %d", __func__, status); + if (!status) + hddLog(VOS_TRACE_LEVEL_ERROR, "%s: TDLS in progress.scan rejected %d", + __func__, status); + else + hddLog(VOS_TRACE_LEVEL_ERROR, "%s: TDLS teardown is ongoing %d", + __func__, status); + return status; } #endif @@ -5547,7 +5602,7 @@ int wlan_hdd_cfg80211_scan( struct wiphy *wiphy, } if (TRUE == pHddCtx->tmInfo.tmAction.enterImps) { - hddLog(VOS_TRACE_LEVEL_WARN, + hddLog(VOS_TRACE_LEVEL_ERROR, "%s: MAX TM Level Scan not allowed", __func__); mutex_unlock(&pHddCtx->tmInfo.tmOperationLock); return -EBUSY; @@ -5588,10 +5643,10 @@ int wlan_hdd_cfg80211_scan( struct wiphy *wiphy, ( tCsrSSIDInfo *)vos_mem_malloc( request->n_ssids*sizeof(tCsrSSIDInfo)); - if(NULL == scanRequest.SSIDs.SSIDList) + if (NULL == scanRequest.SSIDs.SSIDList) { hddLog(VOS_TRACE_LEVEL_ERROR, - "memory alloc failed SSIDInfo buffer"); + "%s: memory alloc failed SSIDInfo buffer", __func__); return -ENOMEM; } @@ -5603,8 +5658,8 @@ int wlan_hdd_cfg80211_scan( struct wiphy *wiphy, vos_mem_copy(SsidInfo->SSID.ssId, &request->ssids[j].ssid[0], SsidInfo->SSID.length); SsidInfo->SSID.ssId[SsidInfo->SSID.length] = '\0'; - hddLog(VOS_TRACE_LEVEL_INFO_HIGH, "SSID number %d: %s", - j, SsidInfo->SSID.ssId); + hddLog(VOS_TRACE_LEVEL_INFO, "SSID number %d: %s", + j, SsidInfo->SSID.ssId); } /* set the scan type to active */ scanRequest.scanType = eSIR_ACTIVE_SCAN; @@ -5639,21 +5694,39 @@ int wlan_hdd_cfg80211_scan( struct wiphy *wiphy, /*TODO: scan the requested channels only*/ /*Right now scanning all the channels */ - if( request ) + if (request) { - if( request->n_channels ) + if (MAX_CHANNEL < request->n_channels) + { + hddLog(VOS_TRACE_LEVEL_WARN,"No of Scan Channels exceeded limit: %d", + request->n_channels); + request->n_channels = MAX_CHANNEL; + } + + hddLog(VOS_TRACE_LEVEL_INFO, + "No of Scan Channels: %d", request->n_channels); + + if (request->n_channels) { - channelList = vos_mem_malloc( request->n_channels ); - if( NULL == channelList ) + char chList [(request->n_channels*5)+1]; + int len; + channelList = vos_mem_malloc(request->n_channels); + if (NULL == channelList) { + hddLog(VOS_TRACE_LEVEL_ERROR, + "%s: memory alloc failed channelList", __func__); status = -ENOMEM; goto free_mem; } + for (i = 0, len = 0; i < request->n_channels ; i++ ) + { + channelList[i] = request->channels[i]->hw_value; + len += snprintf(chList+len, 5, "%d ", channelList[i]); + } - for( i = 0 ; i < request->n_channels ; i++ ) - channelList[i] = request->channels[i]->hw_value; - } + hddLog(VOS_TRACE_LEVEL_INFO, "Channel-List: %s", chList); + } scanRequest.ChannelInfo.numOfChannels = request->n_channels; scanRequest.ChannelInfo.ChannelList = channelList; @@ -5674,6 +5747,7 @@ int wlan_hdd_cfg80211_scan( struct wiphy *wiphy, if( request->n_channels != WLAN_HDD_P2P_SINGLE_CHANNEL_SCAN ) { + hddLog(VOS_TRACE_LEVEL_DEBUG, "Flushing P2P Results"); sme_ScanFlushP2PResult( WLAN_HDD_GET_HAL_CTX(pAdapter), pAdapter->sessionId ); } @@ -5766,6 +5840,12 @@ int wlan_hdd_cfg80211_scan( struct wiphy *wiphy, */ hdd_prevent_suspend(); + hddLog(VOS_TRACE_LEVEL_INFO_HIGH, + "requestType %d, scanType %d, minChnTime %d, maxChnTime %d,p2pSearch %d, skipDfsChnlIn P2pSearch %d", + scanRequest.requestType, scanRequest.scanType, + scanRequest.minChnTime, scanRequest.maxChnTime, + scanRequest.p2pSearch, scanRequest.skipDfsChnlInP2pSearch); + status = sme_ScanRequest( WLAN_HDD_GET_HAL_CTX(pAdapter), pAdapter->sessionId, &scanRequest, &scanId, &hdd_cfg80211_scan_done_callback, dev ); @@ -5777,11 +5857,15 @@ int wlan_hdd_cfg80211_scan( struct wiphy *wiphy, complete(&pScanInfo->scan_req_completion_event); if(eHAL_STATUS_RESOURCES == status) { - hddLog(VOS_TRACE_LEVEL_INFO, "%s: HO is in progress.So defer the scan by informing busy",__func__); - status = -EBUSY; - } else { - status = -EIO; + hddLog(VOS_TRACE_LEVEL_ERROR, "%s: HO is in progress.So defer the scan by informing busy", + __func__); + status = -EBUSY; + } + else + { + status = -EIO; } + hdd_allow_suspend(); goto free_mem; } diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c index 0f517f685f85..53928435a415 100644 --- a/CORE/HDD/src/wlan_hdd_early_suspend.c +++ b/CORE/HDD/src/wlan_hdd_early_suspend.c @@ -51,7 +51,6 @@ #include "halTypes.h" #include "sme_Api.h" #include <vos_api.h> -#include "vos_power.h" #include <vos_sched.h> #include <macInitApi.h> #include <wlan_qct_sys.h> @@ -110,10 +109,6 @@ static eHalStatus g_full_pwr_status; static eHalStatus g_standby_status; extern VOS_STATUS hdd_post_voss_start_config(hdd_context_t* pHddCtx); -extern VOS_STATUS vos_chipExitDeepSleepVREGHandler( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data); extern void hdd_wlan_initial_scan(hdd_context_t *pHddCtx); extern struct notifier_block hdd_netdev_notifier; @@ -325,7 +320,6 @@ VOS_STATUS hdd_enter_deep_sleep(hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter) { eHalStatus halStatus; VOS_STATUS vosStatus = VOS_STATUS_SUCCESS; - vos_call_status_type callType; long ret; //Stop the Interface TX queue. @@ -393,22 +387,6 @@ VOS_STATUS hdd_enter_deep_sleep(hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter) VOS_ASSERT(0); } - vosStatus = vos_chipAssertDeepSleep( &callType, NULL, NULL ); - if( VOS_IS_STATUS_SUCCESS( vosStatus )) - { - hddLog(VOS_TRACE_LEVEL_ERROR, - FL("vos_chipAssertDeepSleep return failed %d"), vosStatus); - VOS_ASSERT(0); - } - - //Vote off any PMIC voltage supplies - vosStatus = vos_chipPowerDown(NULL, NULL, NULL); - if( !VOS_IS_STATUS_SUCCESS( vosStatus )) - { - hddLog(VOS_TRACE_LEVEL_ERROR, "%s: vos_chipPowerDown return failed %d", - __func__, vosStatus); - VOS_ASSERT(0); - } pHddCtx->hdd_ps_state = eHDD_SUSPEND_DEEP_SLEEP; //Restore IMPS config @@ -428,15 +406,6 @@ VOS_STATUS hdd_exit_deep_sleep(hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter) eHalStatus halStatus; tANI_U32 type, subType; - //Power Up Libra WLAN card first if not already powered up - vosStatus = vos_chipPowerUp(NULL,NULL,NULL); - if (!VOS_IS_STATUS_SUCCESS(vosStatus)) - { - hddLog(VOS_TRACE_LEVEL_FATAL, "%s: WLAN not Powered Up.exiting", - __func__); - goto err_deep_sleep; - } - VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO, "%s: calling hdd_set_sme_config",__func__); vosStatus = hdd_set_sme_config( pHddCtx ); diff --git a/CORE/HDD/src/wlan_hdd_ftm.c b/CORE/HDD/src/wlan_hdd_ftm.c index eeabe6483e72..95b809da1774 100644 --- a/CORE/HDD/src/wlan_hdd_ftm.c +++ b/CORE/HDD/src/wlan_hdd_ftm.c @@ -67,7 +67,6 @@ #include "i_vos_packet.h" #include "vos_nvitem.h" #include "wlan_hdd_main.h" -#include "vos_power.h" #include "qwlan_version.h" #include "wlan_nv.h" @@ -1508,11 +1507,6 @@ int wlan_hdd_ftm_open(hdd_context_t *pHddCtx) goto err_nl_srv_init; } #endif - if (!VOS_IS_STATUS_SUCCESS(vos_chipVoteOnXOBuffer(NULL, NULL, NULL))) - { - hddLog(VOS_TRACE_LEVEL_FATAL, "%s: Failed to configure 19.2 MHz Clock", __func__); - goto err_nl_srv_init; - } #endif #ifdef HDD_SESSIONIZE @@ -1608,26 +1602,6 @@ int wlan_hdd_ftm_close(hdd_context_t *pHddCtx) wlan_ftm_stop(pHddCtx); } - //Assert Deep sleep signal now to put Libra HW in lowest power state - vosStatus = vos_chipAssertDeepSleep( NULL, NULL, NULL ); - if (!VOS_IS_STATUS_SUCCESS(vosStatus)) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s: Failed to assert deep sleep signal", __func__); - VOS_ASSERT( 0 ); - } - - //Vote off any PMIC voltage supplies - vosStatus = vos_chipPowerDown(NULL, NULL, NULL); - if (!VOS_IS_STATUS_SUCCESS(vosStatus)) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s: Failed to put HW into low power", __func__); - VOS_ASSERT( 0 ); - } - - vos_chipVoteOffXOBuffer(NULL, NULL, NULL); - #ifdef WLAN_KD_READY_NOTIFIER nl_srv_exit(pHddCtx->ptt_pid); #else diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index b9a75bba4326..e6795ce85789 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -61,7 +61,6 @@ #include <wlan_hdd_includes.h> #include <vos_api.h> #include <vos_sched.h> -#include <vos_power.h> #include <linux/etherdevice.h> #include <linux/firmware.h> #include <wcnss_api.h> @@ -567,9 +566,6 @@ static int hdd_netdev_notifier_call(struct notifier_block * nb, (strncmp(dev->name, "p2p", 3))) return NOTIFY_DONE; - if (isWDresetInProgress()) - return NOTIFY_DONE; - if (!dev->ieee80211_ptr) return NOTIFY_DONE; @@ -587,6 +583,9 @@ static int hdd_netdev_notifier_call(struct notifier_block * nb, VOS_ASSERT(0); return NOTIFY_DONE; } + if (pHddCtx->isLogpInProgress) + return NOTIFY_DONE; + hddLog(VOS_TRACE_LEVEL_INFO, "%s: %s New Net Device State = %lu", __func__, dev->name, state); @@ -8097,13 +8096,6 @@ hdd_adapter_t* hdd_open_adapter( hdd_context_t *pHddCtx, tANI_U8 session_type, if( NULL == pAdapter ) return NULL; -#ifdef FEATURE_WLAN_TDLS - /* A Mutex Lock is introduced while changing/initializing the mode to - * protect the concurrent access for the Adapters by TDLS module. - */ - mutex_lock(&pHddCtx->tdls_lock); -#endif - pAdapter->wdev.iftype = (session_type == WLAN_HDD_P2P_CLIENT) ? NL80211_IFTYPE_P2P_CLIENT: NL80211_IFTYPE_STATION; @@ -8111,9 +8103,6 @@ hdd_adapter_t* hdd_open_adapter( hdd_context_t *pHddCtx, tANI_U8 session_type, pAdapter->device_mode = session_type; status = hdd_init_station_mode( pAdapter ); -#ifdef FEATURE_WLAN_TDLS - mutex_unlock(&pHddCtx->tdls_lock); -#endif if( VOS_STATUS_SUCCESS != status ) goto err_free_netdev; @@ -9911,16 +9900,6 @@ void hdd_wlan_exit(hdd_context_t *pHddCtx) VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); } - //Assert Deep sleep signal now to put Libra HW in lowest power state - vosStatus = vos_chipAssertDeepSleep( NULL, NULL, NULL ); - VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) ); - - //Vote off any PMIC voltage supplies - vos_chipPowerDown(NULL, NULL, NULL); - - vos_chipVoteOffXOBuffer(NULL, NULL, NULL); - - //This requires pMac access, Call this before vos_close(). hdd_unregister_mcast_bcast_filter(pHddCtx); @@ -9976,19 +9955,6 @@ void hdd_wlan_exit(hdd_context_t *pHddCtx) #endif /* WLAN_KD_READY_NOTIFIER */ - /* Cancel the vote for XO Core ON. - * This is done here to ensure there is no race condition since MC, TX and WD threads have - * exited at this point - */ - hddLog(VOS_TRACE_LEVEL_WARN, "In module exit: Cancel the vote for XO Core ON" - " when WLAN is turned OFF"); - if (vos_chipVoteXOCore(NULL, NULL, NULL, VOS_FALSE) != VOS_STATUS_SUCCESS) - { - hddLog(VOS_TRACE_LEVEL_ERROR, "Could not cancel the vote for XO Core ON." - " Not returning failure." - " Power consumed will be high"); - } - hdd_close_all_adapters( pHddCtx ); #ifdef IPA_OFFLOAD @@ -10528,7 +10494,9 @@ static void hdd_bus_bw_compute_cbk(void *phddctx) "trigger level %d", vote_level_max); pHddCtx->bus_bw_triggered = 1; pHddCtx->cur_bus_bw = vote_level_max; +#ifdef CONFIG_CNSS cnss_request_bus_bandwidth(vote_level_max); +#endif } exit: @@ -10886,13 +10854,6 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc) pHddCtx->isLogpInProgress = FALSE; vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, FALSE); - status = vos_chipVoteOnXOBuffer(NULL, NULL, NULL); - if(!VOS_IS_STATUS_SUCCESS(status)) - { - hddLog(VOS_TRACE_LEVEL_FATAL, "%s: Failed to configure 19.2 MHz Clock", __func__); - goto err_wdclose; - } - #ifdef CONFIG_ENABLE_LINUX_REG status = vos_nv_open(); if (!VOS_IS_STATUS_SUCCESS(status)) @@ -10900,7 +10861,7 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc) /* NV module cannot be initialized */ hddLog( VOS_TRACE_LEVEL_FATAL, "%s: vos_nv_open failed", __func__); - goto err_clkvote; + goto err_wdclose; } #ifdef QCA_WIFI_ISOC @@ -11591,11 +11552,8 @@ err_vos_nv_close: #ifdef CONFIG_ENABLE_LINUX_REG vos_nv_close(); -err_clkvote: #endif - vos_chipVoteOffXOBuffer(NULL, NULL, NULL); - err_wdclose: if(pHddCtx->cfg_ini->fIsLogpEnabled) vos_watchdog_close(pVosContext); @@ -11667,16 +11625,6 @@ static int hdd_driver_init( void) pr_info("%s: loading driver v%s\n", WLAN_MODULE_NAME, QWLAN_VERSIONSTR TIMER_MANAGER_STR MEMORY_DEBUG_STR); - //Power Up Libra WLAN card first if not already powered up - status = vos_chipPowerUp(NULL,NULL,NULL); - if (!VOS_IS_STATUS_SUCCESS(status)) - { - hddLog(VOS_TRACE_LEVEL_FATAL, "%s: Libra WLAN not Powered Up. " - "exiting", __func__); - vos_wake_lock_destroy(&wlan_wake_lock); - return -EIO; - } - #ifdef ANI_BUS_TYPE_PCI dev = wcnss_wlan_get_device(); @@ -11779,28 +11727,10 @@ static int hdd_driver_init( void) } #endif - /* Cancel the vote for XO Core ON - * This is done here for safety purposes in case we re-initialize without turning - * it OFF in any error scenario. - */ - hddLog(VOS_TRACE_LEVEL_INFO, "In module init: Ensure Force XO Core is OFF" - " when WLAN is turned ON so Core toggles" - " unless we enter PSD"); - if (vos_chipVoteXOCore(NULL, NULL, NULL, VOS_FALSE) != VOS_STATUS_SUCCESS) - { - hddLog(VOS_TRACE_LEVEL_ERROR, "Could not cancel XO Core ON vote. Not returning failure." - " Power consumed will be high"); - } } while (0); if (0 != ret_status) { - //Assert Deep sleep signal now to put Libra HW in lowest power state - status = vos_chipAssertDeepSleep( NULL, NULL, NULL ); - VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status) ); - - //Vote off any PMIC voltage supplies - vos_chipPowerDown(NULL, NULL, NULL); #ifdef TIMER_MANAGER vos_timer_exit(); #endif @@ -12648,7 +12578,9 @@ void hdd_ch_avoid_cb } } +#ifdef CONFIG_CNSS cnss_set_wlan_unsafe_channel(hdd_ctxt->unsafe_channel_list, hdd_ctxt->unsafe_channel_count); +#endif if (hdd_ctxt->unsafe_channel_count) { hostapd_adapter = hdd_get_adapter(hdd_ctxt, WLAN_HDD_SOFTAP); diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c index 937196c17c85..c946e55b180d 100644 --- a/CORE/HDD/src/wlan_hdd_p2p.c +++ b/CORE/HDD/src/wlan_hdd_p2p.c @@ -264,12 +264,34 @@ eHalStatus wlan_hdd_remain_on_channel_callback( tHalHandle hHal, void* pCtx, void wlan_hdd_cancel_existing_remain_on_channel(hdd_adapter_t *pAdapter) { hdd_cfg80211_state_t *cfgState = WLAN_HDD_GET_CFG_STATE_PTR( pAdapter ); + hdd_remain_on_chan_ctx_t *pRemainChanCtx; int status = 0; + mutex_lock(&cfgState->remain_on_chan_ctx_lock); if(cfgState->remain_on_chan_ctx != NULL) { hddLog( LOG1, "Cancel Existing Remain on Channel"); + vos_timer_stop(&cfgState->remain_on_chan_ctx->hdd_remain_on_chan_timer); + pRemainChanCtx = cfgState->remain_on_chan_ctx; + if (pRemainChanCtx->hdd_remain_on_chan_cancel_in_progress == TRUE) + { + mutex_unlock(&cfgState->remain_on_chan_ctx_lock); + hddLog( LOG1, + "ROC timer cancellation in progress," + " wait for completion"); + status = wait_for_completion_interruptible_timeout(&pAdapter->cancel_rem_on_chan_var, + msecs_to_jiffies(WAIT_CANCEL_REM_CHAN)); + if (0 >= status) + { + hddLog( LOGE, + "%s:wait on cancel_rem_on_chan_var failed %d", + __func__, status); + } + return; + } + pRemainChanCtx->hdd_remain_on_chan_cancel_in_progress = TRUE; + mutex_unlock(&cfgState->remain_on_chan_ctx_lock); /* Wait till remain on channel ready indication before issuing cancel * remain on channel request, otherwise if remain on channel not * received and if the driver issues cancel remain on channel then lim @@ -320,7 +342,8 @@ void wlan_hdd_cancel_existing_remain_on_channel(hdd_adapter_t *pAdapter) __func__, status); } hdd_allow_suspend(); - } + } else + mutex_unlock(&cfgState->remain_on_chan_ctx_lock); } int wlan_hdd_check_remain_on_channel(hdd_adapter_t *pAdapter) @@ -370,6 +393,13 @@ void wlan_hdd_remain_on_chan_timeout(void *data) return; } + if ( TRUE == pRemainChanCtx->hdd_remain_on_chan_cancel_in_progress ) + { + hddLog( LOGE, FL("Cancellation already in progress")); + return; + } + + pRemainChanCtx->hdd_remain_on_chan_cancel_in_progress = TRUE; hddLog( LOG1,"%s: Cancel Remain on Channel on timeout", __func__); if ( ( WLAN_HDD_INFRA_STATION == pAdapter->device_mode ) || @@ -475,6 +505,7 @@ static int wlan_hdd_request_remain_on_channel( struct wiphy *wiphy, pRemainChanCtx->action_pkt_buff.freq = 0; pRemainChanCtx->action_pkt_buff.frame_ptr = NULL; pRemainChanCtx->action_pkt_buff.frame_length = 0; + pRemainChanCtx->hdd_remain_on_chan_cancel_in_progress = FALSE; /* Initialize Remain on chan timer */ vos_status = vos_timer_init(&pRemainChanCtx->hdd_remain_on_chan_timer, @@ -636,11 +667,18 @@ void hdd_remainChanReadyHandler( hdd_adapter_t *pAdapter ) vos_timer_get_system_time() - READY_EVENT_PROPOGATE_TIME; //start timer for actual duration + if(VOS_TIMER_STATE_RUNNING == + vos_timer_getCurrentState(&pRemainChanCtx->hdd_remain_on_chan_timer)) + { + hddLog( LOGE, "Timer Started before ready event!!!"); + vos_timer_stop(&pRemainChanCtx->hdd_remain_on_chan_timer); + } status = vos_timer_start(&pRemainChanCtx->hdd_remain_on_chan_timer, (pRemainChanCtx->duration + COMPLETE_EVENT_PROPOGATE_TIME)); if (status != VOS_STATUS_SUCCESS) { - hddLog( LOGE, "Remain on Channel timer start failed"); + hddLog( LOGE, "%s: Remain on Channel timer start failed", + __func__); } if( REMAIN_ON_CHANNEL_REQUEST == pRemainChanCtx->rem_on_chan_request) @@ -715,6 +753,7 @@ int wlan_hdd_cfg80211_cancel_remain_on_channel( struct wiphy *wiphy, #endif hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev); hdd_cfg80211_state_t *cfgState = WLAN_HDD_GET_CFG_STATE_PTR( pAdapter ); + hdd_remain_on_chan_ctx_t *pRemainChanCtx = cfgState->remain_on_chan_ctx; hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX( pAdapter ); int status; @@ -741,6 +780,30 @@ int wlan_hdd_cfg80211_cancel_remain_on_channel( struct wiphy *wiphy, mutex_unlock(&cfgState->remain_on_chan_ctx_lock); return -EINVAL; } + + if (NULL != cfgState->remain_on_chan_ctx) + { + vos_timer_stop(&cfgState->remain_on_chan_ctx->hdd_remain_on_chan_timer); + if (TRUE == pRemainChanCtx->hdd_remain_on_chan_cancel_in_progress) + { + mutex_unlock(&cfgState->remain_on_chan_ctx_lock); + hddLog( LOG1, + FL("ROC timer cancellation in progress," + " wait for completion")); + status = wait_for_completion_interruptible_timeout( + &pAdapter->cancel_rem_on_chan_var, + msecs_to_jiffies(WAIT_CANCEL_REM_CHAN)); + if (0 >= status) + { + hddLog( LOGE, + "%s:wait on cancel_rem_on_chan_var failed %d", + __func__, status); + } + return 0; + } + else + pRemainChanCtx->hdd_remain_on_chan_cancel_in_progress = TRUE; + } mutex_unlock(&cfgState->remain_on_chan_ctx_lock); /* wait until remain on channel ready event received @@ -840,6 +903,7 @@ int wlan_hdd_mgmt_tx( struct wiphy *wiphy, struct net_device *dev, #endif hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR( dev ); hdd_cfg80211_state_t *cfgState = WLAN_HDD_GET_CFG_STATE_PTR( pAdapter ); + hdd_remain_on_chan_ctx_t *pRemainChanCtx = cfgState->remain_on_chan_ctx; hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX( pAdapter ); tANI_U16 extendedWait = 0; tANI_U8 type = WLAN_HDD_GET_TYPE_FRM_FC(buf[0]); @@ -999,20 +1063,42 @@ int wlan_hdd_mgmt_tx( struct wiphy *wiphy, struct net_device *dev, cfgState->remain_on_chan_ctx && cfgState->current_freq == chan->center_freq ) { - if(wait) + if(VOS_TIMER_STATE_RUNNING == vos_timer_getCurrentState( + &cfgState->remain_on_chan_ctx->hdd_remain_on_chan_timer)) { vos_timer_stop(&cfgState->remain_on_chan_ctx->hdd_remain_on_chan_timer); status = vos_timer_start(&cfgState->remain_on_chan_ctx->hdd_remain_on_chan_timer, wait); if(status != VOS_STATUS_SUCCESS) { - hddLog( LOGE, "Remain on Channel timer start failed"); + hddLog( LOGE, "%s: Remain on Channel timer start failed", + __func__); } + mutex_unlock(&cfgState->remain_on_chan_ctx_lock); + goto send_frame; + } else { + + if(pRemainChanCtx->hdd_remain_on_chan_cancel_in_progress == TRUE) + { + mutex_unlock(&cfgState->remain_on_chan_ctx_lock); + hddLog(VOS_TRACE_LEVEL_INFO, + "action frame tx: waiting for completion of ROC "); + + status = wait_for_completion_interruptible_timeout( + &pAdapter->cancel_rem_on_chan_var, + msecs_to_jiffies(WAIT_CANCEL_REM_CHAN)); + if (0 >= status) + { + hddLog( LOGE, + "%s:wait on cancel_rem_on_chan_var failed %d", + __func__, status); + } + + } else + mutex_unlock(&cfgState->remain_on_chan_ctx_lock); } - mutex_unlock(&cfgState->remain_on_chan_ctx_lock); - goto send_frame; - } - mutex_unlock(&cfgState->remain_on_chan_ctx_lock); + } else + mutex_unlock(&cfgState->remain_on_chan_ctx_lock); if((cfgState->remain_on_chan_ctx != NULL) && (cfgState->current_freq == chan->center_freq) @@ -1879,12 +1965,21 @@ void hdd_indicateMgmtFrame( hdd_adapter_t *pAdapter, if(completion_done(&pAdapter->rem_on_chan_ready_event)) { - vos_timer_stop(&pRemainChanCtx->hdd_remain_on_chan_timer); - status = vos_timer_start(&pRemainChanCtx->hdd_remain_on_chan_timer, - extend_time); - if (status != VOS_STATUS_SUCCESS) + if(VOS_TIMER_STATE_RUNNING == + vos_timer_getCurrentState(&pRemainChanCtx->hdd_remain_on_chan_timer)) { - hddLog( LOGE, "Remain on Channel timer start failed"); + vos_timer_stop(&pRemainChanCtx->hdd_remain_on_chan_timer); + status = vos_timer_start( + &pRemainChanCtx->hdd_remain_on_chan_timer, + extend_time); + if (status != VOS_STATUS_SUCCESS) + { + hddLog( LOGE, "%s: Remain on Channel timer start failed", + __func__); + } + } else { + hddLog( LOG1, "%s: Rcvd action frame after timer expired", + __func__); } } else { // Buffer Packet diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c index 8e1a24e9a9a5..e1504b5f8cc0 100644 --- a/CORE/HDD/src/wlan_hdd_tdls.c +++ b/CORE/HDD/src/wlan_hdd_tdls.c @@ -659,6 +659,11 @@ int wlan_hdd_tdls_init(hdd_adapter_t *pAdapter) eHalStatus halStatus = eHAL_STATUS_FAILURE; #endif + if (NULL == pHddCtx) + return -1; + + mutex_lock(&pHddCtx->tdls_lock); + /* QCA 2.0 Discrete ANDs feature capability in cfg_ini with that * received from target, so cfg_ini gives combined intersected result */ @@ -680,6 +685,7 @@ int wlan_hdd_tdls_init(hdd_adapter_t *pAdapter) "%s TDLS not enabled (%d) or FW doesn't support", __func__, pHddCtx->cfg_ini->fEnableTDLSSupport); #endif + mutex_unlock(&pHddCtx->tdls_lock); return 0; } /* TDLS is supported only in STA / P2P Client modes, @@ -694,6 +700,7 @@ int wlan_hdd_tdls_init(hdd_adapter_t *pAdapter) */ if (0 == WLAN_HDD_IS_TDLS_SUPPORTED_ADAPTER(pAdapter)) { + mutex_unlock(&pHddCtx->tdls_lock); return 0; } /* Check for the valid pHddTdlsCtx. If valid do not further @@ -709,6 +716,7 @@ int wlan_hdd_tdls_init(hdd_adapter_t *pAdapter) if (NULL == pHddTdlsCtx) { hddLog(VOS_TRACE_LEVEL_ERROR, "%s malloc failed!", __func__); pAdapter->sessionCtx.station.pHddTdlsCtx = NULL; + mutex_unlock(&pHddCtx->tdls_lock); return -1; } /* initialize TDLS pAdater context */ @@ -792,6 +800,11 @@ int wlan_hdd_tdls_init(hdd_adapter_t *pAdapter) #endif INIT_DELAYED_WORK(&pHddCtx->tdls_scan_ctxt.tdls_scan_work, wlan_hdd_tdls_schedule_scan); + /* + * Release tdls lock before calling in SME api + * which would try to acquire sme lock. + */ + mutex_unlock(&pHddCtx->tdls_lock); #ifdef QCA_WIFI_2_0 tInfo = vos_mem_malloc(sizeof(tdlsInfo_t)); if (NULL == tInfo) @@ -1256,9 +1269,9 @@ int wlan_hdd_tdls_recv_discovery_resp(hdd_adapter_t *pAdapter, u8 *mac) int wlan_hdd_tdls_set_peer_caps(hdd_adapter_t *pAdapter, u8 *mac, - tANI_U8 uapsdQueues, - tANI_U8 maxSp, - tANI_BOOLEAN isBufSta) + tCsrStaParams *StaParams, + tANI_BOOLEAN isBufSta, + tANI_BOOLEAN isOffChannelSupported) { hddTdlsPeer_t *curr_peer; @@ -1270,9 +1283,24 @@ int wlan_hdd_tdls_set_peer_caps(hdd_adapter_t *pAdapter, return -1; } - curr_peer->uapsdQueues = uapsdQueues; - curr_peer->maxSp = maxSp; + curr_peer->uapsdQueues = StaParams->uapsd_queues; + curr_peer->maxSp = StaParams->max_sp; curr_peer->isBufSta = isBufSta; + curr_peer->isOffChannelSupported = isOffChannelSupported; + + vos_mem_copy(curr_peer->supported_channels, + StaParams->supported_channels, + StaParams->supported_channels_len); + + curr_peer->supported_channels_len = + StaParams->supported_channels_len; + + vos_mem_copy(curr_peer->supported_oper_classes, + StaParams->supported_oper_classes, + StaParams->supported_oper_classes_len); + + curr_peer->supported_oper_classes_len = + StaParams->supported_oper_classes_len; return 0; } @@ -1293,6 +1321,22 @@ int wlan_hdd_tdls_get_link_establish_params(hdd_adapter_t *pAdapter, u8 *mac, tdlsLinkEstablishParams->uapsdQueues = curr_peer->uapsdQueues; tdlsLinkEstablishParams->maxSp = curr_peer->maxSp; tdlsLinkEstablishParams->isBufSta = curr_peer->isBufSta; + tdlsLinkEstablishParams->isOffChannelSupported = + curr_peer->isOffChannelSupported; + + vos_mem_copy(tdlsLinkEstablishParams->supportedChannels, + curr_peer->supported_channels, + curr_peer->supported_channels_len); + + tdlsLinkEstablishParams->supportedChannelsLen = + curr_peer->supported_channels_len; + + vos_mem_copy(tdlsLinkEstablishParams->supportedOperClasses, + curr_peer->supported_oper_classes, + curr_peer->supported_oper_classes_len); + + tdlsLinkEstablishParams->supportedOperClassesLen = + curr_peer->supported_oper_classes_len; return 0; } diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c index 0fc0b04246f4..fa895cd0c4d4 100644 --- a/CORE/HDD/src/wlan_hdd_wext.c +++ b/CORE/HDD/src/wlan_hdd_wext.c @@ -86,7 +86,6 @@ #endif #include "wlan_hdd_power.h" #include "qwlan_version.h" -#include <vos_power.h> #include "wlan_hdd_host_offload.h" #include "wlan_hdd_keep_alive.h" #ifdef WLAN_FEATURE_PACKET_FILTERING @@ -245,8 +244,6 @@ static const hdd_freq_chan_map_t freq_chan_map[] = { {2412, 1}, {2417, 2}, /* Private ioctl for packet power save */ #define WE_PPS_5G_EBT 83 -#define WE_MTRACE_SELECTIVE_MODULE_LOG_ENABLE_CMD 84 - /* Private ioctls and their sub-ioctls */ #define WLAN_PRIV_SET_NONE_GET_INT (SIOCIWFIRSTPRIV + 1) #define WE_GET_11D_STATE 1 @@ -388,6 +385,7 @@ static const hdd_freq_chan_map_t freq_chan_map[] = { {2412, 1}, {2417, 2}, #endif #define WE_MTRACE_DUMP_CMD 8 +#define WE_MTRACE_SELECTIVE_MODULE_LOG_ENABLE_CMD 9 #ifdef FEATURE_WLAN_TDLS #undef MAX_VAR_ARGS @@ -620,7 +618,7 @@ void hdd_wlan_get_version(hdd_adapter_t *pAdapter, union iwreq_data *wrqu, tSirVersionString wcnss_SW_version; const char *pSWversion; const char *pHWversion; - v_U32_t CRMId = 0; + v_U32_t CBId = 0, CBSId = 0, CRMId = 0; #ifndef QCA_WIFI_2_0 VOS_STATUS status; tSirVersionString wcnss_HW_version; @@ -642,6 +640,8 @@ void hdd_wlan_get_version(hdd_adapter_t *pAdapter, union iwreq_data *wrqu, pHddContext->target_fw_version); pSWversion = wcnss_SW_version; + CBId = (pHddContext->target_fw_version & 0xf8000000) >> 27; + CBSId = (pHddContext->target_fw_version & 0x07000000) >> 24; CRMId = pHddContext->target_fw_version & 0x7fff; for (i = 0; i < ARRAY_SIZE(qwlan_hw_list); i++) { @@ -679,15 +679,17 @@ void hdd_wlan_get_version(hdd_adapter_t *pAdapter, union iwreq_data *wrqu, if (wrqu) { wrqu->data.length = scnprintf(extra, WE_MAX_STR_LEN, - "Host SW:%s, FW:%s BuildId:%d, HW:%s", + "Host SW:%s, FW:%d.%d.%d, HW:%s", QWLAN_VERSIONSTR, - pSWversion, + CBId, + CBSId, CRMId, pHWversion); } else { - pr_info("Host SW:%s, FW:%s BuildId:%d, HW:%s\n", + pr_info("Host SW:%s, FW:%d.%d.%d, HW:%s\n", QWLAN_VERSIONSTR, - pSWversion, + CBId, + CBSId, CRMId, pHWversion); } @@ -4691,7 +4693,6 @@ static int iw_setint_getnone(struct net_device *dev, struct iw_request_info *inf break; #endif case 14://reset wlan (power down/power up) - vos_chipReset(NULL, VOS_FALSE, NULL, NULL, VOS_CHIP_RESET_UNKNOWN_EXCEPTION); break; default: hddLog(LOGE, "Invalid arg %d in WE_SET_POWER IOCTL", set_value); @@ -4860,15 +4861,6 @@ static int iw_setint_getnone(struct net_device *dev, struct iw_request_info *inf break; } - case WE_MTRACE_SELECTIVE_MODULE_LOG_ENABLE_CMD: - { - hddLog(LOG1, "%s: SELECTIVE_MODULE_LOG %d arg1", - __func__, set_value); - vosTraceEnable(set_value); - - break; - } - case WE_ENABLE_STRICT_FCC_REG: { hdd_context_t *hddCtxt = WLAN_HDD_GET_CTX(pAdapter); @@ -7465,6 +7457,14 @@ int iw_set_var_ints_getnone(struct net_device *dev, struct iw_request_info *info } break; + case WE_MTRACE_SELECTIVE_MODULE_LOG_ENABLE_CMD: + { + hddLog(LOG1, "%s: SELECTIVE_MODULE_LOG %d arg1 %d arg2", + __func__, apps_args[0], apps_args[1]); + vosTraceEnable(apps_args[0], apps_args[1]); + } + break; + case WE_MTRACE_DUMP_CMD: { hddLog(LOG1, "%s: MTRACE_DUMP code %d session %d count %d " @@ -9796,11 +9796,6 @@ static const struct iw_priv_args we_private_args[] = { 0, "setStrictFCCreg" }, - { WE_MTRACE_SELECTIVE_MODULE_LOG_ENABLE_CMD, - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, - 0, - "setdumplog" }, - /* handlers for main ioctl */ { WLAN_PRIV_SET_INT_GET_NONE, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, @@ -10717,6 +10712,11 @@ static const struct iw_priv_args we_private_args[] = { "dump" }, /* handlers for sub-ioctl */ + { WE_MTRACE_SELECTIVE_MODULE_LOG_ENABLE_CMD, + IW_PRIV_TYPE_INT | MAX_VAR_ARGS, + 0, + "setdumplog" }, + { WE_MTRACE_DUMP_CMD, IW_PRIV_TYPE_INT | MAX_VAR_ARGS, 0, diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h index c8a09380bb23..384aab01c30b 100644 --- a/CORE/MAC/inc/aniGlobal.h +++ b/CORE/MAC/inc/aniGlobal.h @@ -668,6 +668,7 @@ typedef struct sAniSirLim #ifdef FEATURE_WLAN_TDLS tANI_U8 gLimTDLSBufStaEnabled; tANI_U8 gLimTDLSUapsdMask; + tANI_U8 gLimTDLSOffChannelEnabled; #endif @@ -1000,6 +1001,7 @@ typedef struct sMacOpenParameters * offload currently, rest bits are unused */ tANI_U8 olIniInfo; + v_BOOL_t ssdp; /* * DFS Phyerror Filtering offload status from ini * 0 indicates offload disabled diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index ca988a12c757..84812795a2b8 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -42,9 +42,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 0 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 96 +#define QWLAN_VERSION_BUILD 97 -#define QWLAN_VERSIONSTR "1.0.0.96A" +#define QWLAN_VERSIONSTR "1.0.0.97" #ifdef QCA_WIFI_2_0 diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index f5d0807041e0..8bf81bf404d1 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -4202,9 +4202,14 @@ typedef struct tANI_U8 uapsdQueues; // Peer's uapsd Queues Information tANI_U8 maxSp; // Peer's Supported Maximum Service Period tANI_U8 isBufSta; // Does Peer Support as Buffer Station. + tANI_U8 isOffChannelSupported; // Does Peer Support as TDLS Off Channel. tANI_U8 isResponder; // Is Peer a responder. tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID tSirMacAddr peerMac; + tANI_U8 supportedChannelsLen; + tANI_U8 supportedChannels[SIR_MAC_MAX_SUPP_CHANNELS]; + tANI_U8 supportedOperClassesLen; + tANI_U8 supportedOperClasses[SIR_MAC_MAX_SUPP_OPER_CLASSES]; }tSirTdlsLinkEstablishReq, *tpSirTdlsLinkEstablishReq; /* TDLS Request struct SME-->PE */ diff --git a/CORE/MAC/inc/sirMacProtDef.h b/CORE/MAC/inc/sirMacProtDef.h index 6ef52af97d93..8ebc47de24fb 100644 --- a/CORE/MAC/inc/sirMacProtDef.h +++ b/CORE/MAC/inc/sirMacProtDef.h @@ -450,6 +450,9 @@ #define SIR_MAX_NOA_DESCR 2 #define SIR_P2P_IE_HEADER_LEN 6 +#define SIR_MAC_CISCO_OUI "\x00\x40\x96" +#define SIR_MAC_CISCO_OUI_SIZE 3 + // min size of wme oui header: oui(3) + type + subtype + version #define SIR_MAC_OUI_WME_HDR_MIN 6 @@ -1681,6 +1684,8 @@ typedef struct sSirMacRpiReportIE #define SIR_MAC_MAX_SUPP_RATES 32 +#define SIR_MAC_MAX_SUPP_CHANNELS 100 +#define SIR_MAC_MAX_SUPP_OPER_CLASSES 32 #define SIR_MAC_MAX_EXTN_CAP 8 // VHT Capabilities Info diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h index b87a9172b0a6..40901c14da45 100644 --- a/CORE/MAC/inc/wniCfgAp.h +++ b/CORE/MAC/inc/wniCfgAp.h @@ -356,6 +356,7 @@ #define WNI_CFG_CURRENT_RSSI 309 #define WNI_CFG_RTT3_ENABLE 310 #define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL 311 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED 312 /* * String parameter lengths @@ -2603,10 +2604,18 @@ #define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_APMAX 1 #define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_APDEF 0 -#define CFG_PARAM_MAX_NUM 312 -#define CFG_AP_IBUF_MAX_SIZE 251 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMIN 0 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMAX 1 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STADEF 0 + +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_APMIN 0 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_APMAX 1 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_APDEF 0 + +#define CFG_PARAM_MAX_NUM 313 +#define CFG_AP_IBUF_MAX_SIZE 252 #define CFG_AP_SBUF_MAX_SIZE 3422 -#define CFG_STA_IBUF_MAX_SIZE 246 +#define CFG_STA_IBUF_MAX_SIZE 247 #define CFG_STA_SBUF_MAX_SIZE 3388 #define CFG_SEM_MAX_NUM 19 diff --git a/CORE/MAC/inc/wniCfgSta.h b/CORE/MAC/inc/wniCfgSta.h index 03d8f71951f9..39c4340ca60b 100644 --- a/CORE/MAC/inc/wniCfgSta.h +++ b/CORE/MAC/inc/wniCfgSta.h @@ -344,6 +344,7 @@ #define WNI_CFG_CURRENT_RSSI 309 #define WNI_CFG_RTT3_ENABLE 310 #define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL 311 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED 312 /* * String parameter lengths @@ -1674,8 +1675,12 @@ #define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_STAMAX 1 #define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_STADEF 0 -#define CFG_PARAM_MAX_NUM 312 -#define CFG_STA_IBUF_MAX_SIZE 246 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMIN 0 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMAX 1 +#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STADEF 0 + +#define CFG_PARAM_MAX_NUM 313 +#define CFG_STA_IBUF_MAX_SIZE 247 #define CFG_STA_SBUF_MAX_SIZE 3388 #define CFG_SEM_MAX_NUM 19 diff --git a/CORE/MAC/src/cfg/cfgParamName.c b/CORE/MAC/src/cfg/cfgParamName.c index d12f4270f536..e36a07ea637a 100644 --- a/CORE/MAC/src/cfg/cfgParamName.c +++ b/CORE/MAC/src/cfg/cfgParamName.c @@ -341,4 +341,5 @@ unsigned char *gCfgParamName[] = { (unsigned char *)"CURRENT_RSSI", (unsigned char *)"RTT3_ENABLE", (unsigned char *)"DEBUG_P2P_REMAIN_ON_CHANNEL", + (unsigned char *)"TDLS_OFF_CHANNEL_ENABLED", }; diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt index e02cde54901c..69c48d45adec 100644 --- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt +++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt @@ -4662,3 +4662,14 @@ NONE V RW NP NONE 0 1 0 + +* +* TDLS Off Channel Implementation +* +WNI_CFG_TDLS_OFF_CHANNEL_ENABLED I 4 7 +V RW NP +LIM +0 1 0 +V RW NP +LIM +0 1 0 diff --git a/CORE/MAC/src/include/dphGlobal.h b/CORE/MAC/src/include/dphGlobal.h index 37fc1f3c8b8c..b6d4e4d8bd96 100644 --- a/CORE/MAC/src/include/dphGlobal.h +++ b/CORE/MAC/src/include/dphGlobal.h @@ -611,6 +611,7 @@ typedef struct sDphHashNode #ifdef WLAN_FEATURE_11AC tANI_U8 vhtSupportedChannelWidthSet; + tANI_U8 vhtSupportedRxNss; tANI_U8 vhtBeamFormerCapable; #endif diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h index 0e60943ce69b..f9e7c418e5c0 100644 --- a/CORE/MAC/src/include/sirParams.h +++ b/CORE/MAC/src/include/sirParams.h @@ -664,6 +664,10 @@ typedef struct sSirMbMsgP2p #define SIR_HAL_DISASSOC_TX_COMP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 255) #define SIR_HAL_DEAUTH_TX_COMP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 256) +#ifdef WLAN_FEATURE_11AC +#define SIR_HAL_UPDATE_RX_NSS (SIR_HAL_ITC_MSG_TYPES_BEGIN + 257) +#endif + #define SIR_HAL_MSG_TYPES_END (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF) // CFG message types diff --git a/CORE/MAC/src/pe/include/limSession.h b/CORE/MAC/src/pe/include/limSession.h index 8ce8cf4915d9..affda82c8004 100644 --- a/CORE/MAC/src/pe/include/limSession.h +++ b/CORE/MAC/src/pe/include/limSession.h @@ -417,9 +417,12 @@ typedef struct sPESession // Added to Support BT-AMP /* Flag to indicate Chan Sw announcement is required */ tANI_U8 dfsIncludeChanSwIe; + #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH tANI_U8 cc_switch_mode; #endif + + tANI_BOOLEAN isCiscoVendorAP; }tPESession, *tpPESession; #define LIM_MAX_ACTIVE_SESSIONS 4 diff --git a/CORE/MAC/src/pe/include/rrmApi.h b/CORE/MAC/src/pe/include/rrmApi.h index f16386070cfb..c17028480a52 100644 --- a/CORE/MAC/src/pe/include/rrmApi.h +++ b/CORE/MAC/src/pe/include/rrmApi.h @@ -45,7 +45,7 @@ #define RRM_BCN_RPT_NO_BSS_INFO 0 #define RRM_BCN_RPT_MIN_RPT 1 -tANI_U8 rrmGetMinOfMaxTxPower(tPowerdBm regMax, tPowerdBm apTxPower); +tANI_U8 rrmGetMinOfMaxTxPower(tpAniSirGlobal pMac, tPowerdBm regMax, tPowerdBm apTxPower); extern tSirRetStatus rrmInitialize(tpAniSirGlobal pMac); diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c index 4aa692bdaeff..502b5f83e240 100644 --- a/CORE/MAC/src/pe/lim/limApi.c +++ b/CORE/MAC/src/pe/lim/limApi.c @@ -615,18 +615,27 @@ static tSirRetStatus __limInitConfig( tpAniSirGlobal pMac ) /* This was initially done after resume notification from HAL. Now, DAL is started before PE so this can be done here */ handleHTCapabilityandHTInfo(pMac, NULL); - if(wlan_cfgGetInt(pMac, WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP,(tANI_U32 *) &pMac->lim.disableLDPCWithTxbfAP) != eSIR_SUCCESS) + if (eSIR_SUCCESS != wlan_cfgGetInt(pMac, WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP, + (tANI_U32 *) &pMac->lim.disableLDPCWithTxbfAP)) { limLog(pMac, LOGP, FL("cfg get disableLDPCWithTxbfAP failed")); return eSIR_FAILURE; } #ifdef FEATURE_WLAN_TDLS - if(wlan_cfgGetInt(pMac, WNI_CFG_TDLS_BUF_STA_ENABLED,(tANI_U32 *) &pMac->lim.gLimTDLSBufStaEnabled) != eSIR_SUCCESS) + if (eSIR_SUCCESS != wlan_cfgGetInt(pMac, WNI_CFG_TDLS_BUF_STA_ENABLED, + (tANI_U32 *) &pMac->lim.gLimTDLSBufStaEnabled)) { limLog(pMac, LOGP, FL("cfg get LimTDLSBufStaEnabled failed")); return eSIR_FAILURE; } - if(wlan_cfgGetInt(pMac, WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK,(tANI_U32 *) &pMac->lim.gLimTDLSUapsdMask) != eSIR_SUCCESS) + if (eSIR_SUCCESS != wlan_cfgGetInt(pMac, WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK, + (tANI_U32 *) &pMac->lim.gLimTDLSUapsdMask)) + { + limLog(pMac, LOGP, FL("cfg get LimTDLSUapsdMask failed")); + return eSIR_FAILURE; + } + if (eSIR_SUCCESS != wlan_cfgGetInt(pMac, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED, + (tANI_U32 *) &pMac->lim.gLimTDLSOffChannelEnabled)) { limLog(pMac, LOGP, FL("cfg get LimTDLSUapsdMask failed")); return eSIR_FAILURE; diff --git a/CORE/MAC/src/pe/lim/limAssocUtils.c b/CORE/MAC/src/pe/lim/limAssocUtils.c index 8f7f7de51a77..b2f9bd1c3381 100644 --- a/CORE/MAC/src/pe/lim/limAssocUtils.c +++ b/CORE/MAC/src/pe/lim/limAssocUtils.c @@ -660,6 +660,7 @@ limCleanupRxPath(tpAniSirGlobal pMac, tpDphHashNode pStaDs,tpPESession psessionE limLog( pMac, LOG1, FL("**Initiate cleanup")); limAbortBackgroundScan( pMac ); + psessionEntry->isCiscoVendorAP = FALSE; if (pMac->lim.gLimAddtsSent) { @@ -2505,6 +2506,7 @@ limAddSta( if(pAddStaParams->vhtCapable) { pAddStaParams->vhtTxChannelWidthSet = pStaDs->vhtSupportedChannelWidthSet; + pAddStaParams->vhtSupportedRxNss = pStaDs->vhtSupportedRxNss; pAddStaParams->vhtTxBFCapable = #ifdef FEATURE_WLAN_TDLS (( STA_ENTRY_PEER == pStaDs->staType ) || (STA_ENTRY_TDLS_PEER == pStaDs->staType)) ? @@ -3966,6 +3968,7 @@ tSirRetStatus limStaSendAddBss( tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp, if (psessionEntry->vhtCapability && pBeaconStruct->VHTCaps.present) { pAddBssParams->staContext.vhtCapable = 1; + pAddBssParams->staContext.vhtSupportedRxNss = pStaDs->vhtSupportedRxNss; if ((pAssocRsp->VHTCaps.suBeamFormerCap || pAssocRsp->VHTCaps.muBeamformerCap) && psessionEntry->txBFIniFeatureEnabled) diff --git a/CORE/MAC/src/pe/lim/limProcessActionFrame.c b/CORE/MAC/src/pe/lim/limProcessActionFrame.c index 9437dd284b7e..00e1474ca498 100644 --- a/CORE/MAC/src/pe/lim/limProcessActionFrame.c +++ b/CORE/MAC/src/pe/lim/limProcessActionFrame.c @@ -474,8 +474,16 @@ __limProcessOperatingModeActionFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo pSta->htSupportedChannelWidthSet = eHT_CHANNEL_WIDTH_20MHZ; } limCheckVHTOpModeChange( pMac, psessionEntry, - (pOperatingModeframe->OperatingMode.chanWidth), pSta->staIndex); + (pOperatingModeframe->OperatingMode.chanWidth), + pSta->staIndex, pHdr->sa); } + + if (pSta->vhtSupportedRxNss != (pOperatingModeframe->OperatingMode.rxNSS + 1)) { + pSta->vhtSupportedRxNss = pOperatingModeframe->OperatingMode.rxNSS + 1; + limSetNssChange( pMac, psessionEntry, pSta->vhtSupportedRxNss, + pSta->staIndex, pHdr->sa); + } + vos_mem_free(pOperatingModeframe); return; } diff --git a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c index 086d974294ac..10a813263733 100644 --- a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c +++ b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c @@ -1197,6 +1197,18 @@ if (limPopulateMatchingRateSet(pMac, goto error; } +#ifdef WLAN_FEATURE_11AC + if(pAssocReq->operMode.present) + { + pStaDs->vhtSupportedRxNss = pAssocReq->operMode.rxNSS + 1; + } + else + { + pStaDs->vhtSupportedRxNss = ((pStaDs->supportedRates.vhtRxMCSMap & MCSMAPMASK2x2) + == MCSMAPMASK2x2) ? 1 : 2; + } +#endif + vos_mem_copy((tANI_U8 *) &pStaDs->mlmStaContext.propRateSet, (tANI_U8 *) &(pAssocReq->propIEinfo.propRates), pAssocReq->propIEinfo.propRates.numPropRates + 1); diff --git a/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c index 495b3ec64a81..09b00e676ea5 100644 --- a/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c +++ b/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c @@ -163,6 +163,10 @@ void limUpdateAssocStaDatas(tpAniSirGlobal pMac, tpDphHashNode pStaDs, tpSirAsso return; } +#ifdef WLAN_FEATURE_11AC + pStaDs->vhtSupportedRxNss = ((pStaDs->supportedRates.vhtRxMCSMap & MCSMAPMASK2x2) + == MCSMAPMASK2x2) ? 1 : 2; +#endif //If one of the rates is 11g rates, set the ERP mode. if ((phyMode == WNI_CFG_PHY_MODE_11G) && sirIsArate(pStaDs->supportedRates.llaRates[0] & 0x7f)) pStaDs->erpEnabled = eHAL_SET; diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c index b2e261450caa..e7a8ded819cf 100644 --- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c +++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c @@ -238,12 +238,13 @@ limDeferMsg(tpAniSirGlobal pMac, tSirMsgQ *pMsg) if (retCode == TX_SUCCESS) { - limLog(pMac, LOG1, - FL("Deferred message(0x%X) limSmeState %d (prev sme state %d) sysRole %d mlm state %d (prev mlm state %d)"), - pMsg->type, pMac->lim.gLimSmeState, pMac->lim.gLimPrevSmeState, - pMac->lim.gLimSystemRole, pMac->lim.gLimMlmState, - pMac->lim.gLimPrevMlmState); - MTRACE(macTraceMsgRx(pMac, NO_SESSION, LIM_TRACE_MAKE_RXMSG(pMsg->type, LIM_MSG_DEFERRED));) + limLog(pMac, LOG1, + FL("Deferred message(0x%X) limSmeState %d (prev sme state %d)" + " sysRole %d mlm state %d (prev mlm state %d)"), + pMsg->type, pMac->lim.gLimSmeState, pMac->lim.gLimPrevSmeState, + pMac->lim.gLimSystemRole, pMac->lim.gLimMlmState, + pMac->lim.gLimPrevMlmState); + MTRACE(macTraceMsgRx(pMac, NO_SESSION, LIM_TRACE_MAKE_RXMSG(pMsg->type, LIM_MSG_DEFERRED));) } else { diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c index 05d0b160b3f6..01895a7f6a6f 100644 --- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c @@ -180,6 +180,7 @@ __limFreshScanReqd(tpAniSirGlobal pMac, tANI_U8 returnFreshResults) } } + limLog(pMac, LOG1, FL("FreshScanReqd: %d "), validState); if( (validState) && (returnFreshResults & SIR_BG_SCAN_RETURN_FRESH_RESULTS)) @@ -1163,7 +1164,9 @@ static eHalStatus limSendHalStartScanOffloadReq(tpAniSirGlobal pMac, pMac->lim.fOffloadScanPending = 1; if (pScanReq->p2pSearch) pMac->lim.fOffloadScanP2PSearch = 1; + limLog(pMac, LOG1, FL("Processed Offload Scan Request Successfully")); + return eHAL_STATUS_SUCCESS; } @@ -1254,7 +1257,9 @@ __limProcessSmeScanReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) !pMac->lim.gScanInPowersave && !limIsSystemInActiveState(pMac))) { - limLog(pMac, LOGE, FL("SCAN is disabled or SCAN in power save is disabled and system is in power save.")); + limLog(pMac, LOGE, FL("SCAN is disabled or SCAN in power save" + " is disabled and system is in power save.")); + limSendSmeScanRsp(pMac, offsetof(tSirSmeScanRsp,bssDescription[0]), eSIR_SME_INVALID_PARAMETERS, pScanReq->sessionId, pScanReq->transactionId); return; } @@ -1356,6 +1361,7 @@ __limProcessSmeScanReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) limLog(pMac, LOG1, FL("Scan all channels as Number of channels is 0")); + // Scan all channels len = sizeof(tLimMlmScanReq) + (sizeof( pScanReq->channelList.channelNumber ) * (WNI_CFG_VALID_CHANNEL_LIST_LEN - 1)) + @@ -1511,6 +1517,8 @@ __limProcessSmeScanReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) if (pMac->fScanOffload) limFlushp2pScanResults(pMac); + limLog(pMac, LOG1, FL("Cached scan results are returned ")); + if (pScanReq->returnFreshResults & SIR_BG_SCAN_PURGE_RESUTLS) { // Discard previously cached scan results @@ -1626,6 +1634,8 @@ __limProcessSmeJoinReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) tANI_U8 smesessionId; tANI_U16 smetransactionId; tPowerdBm localPowerConstraint = 0, regMax = 0; + tANI_U16 ieLen; + v_U8_t *vendorIE; #ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM //FEATURE_WLAN_DIAG_SUPPORT //Not sending any session, since it is not created yet. The response whould have correct state. @@ -1768,6 +1778,26 @@ __limProcessSmeJoinReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) psessionEntry->limWmeEnabled = pSmeJoinReq->isWMEenabled; psessionEntry->limQosEnabled = pSmeJoinReq->isQosEnabled; + /* Store vendor specfic IE for CISCO AP */ + ieLen = (pSmeJoinReq->bssDescription.length + + sizeof( pSmeJoinReq->bssDescription.length ) - + GET_FIELD_OFFSET( tSirBssDescription, ieFields )); + + vendorIE = limGetVendorIEOuiPtr(pMac, SIR_MAC_CISCO_OUI, + SIR_MAC_CISCO_OUI_SIZE, + ((tANI_U8 *)&pSmeJoinReq->bssDescription.ieFields) , ieLen); + + if ( NULL != vendorIE ) + { + limLog(pMac, LOGE, + FL("DUT is trying to connect to Cisco AP")); + psessionEntry->isCiscoVendorAP = TRUE; + } + else + { + psessionEntry->isCiscoVendorAP = FALSE; + } + /* Copy the dot 11 mode in to the session table */ psessionEntry->dot11mode = pSmeJoinReq->dot11mode; @@ -5583,8 +5613,9 @@ limProcessSmeReqMessages(tpAniSirGlobal pMac, tpSirMsgQ pMsg) } limLog(pMac, LOGE, - FL("Error: Scan Disabled.Return with error status for SME Message %s(%d)"), - limMsgStr(pMsg->type), pMsg->type); + FL("Error: Scan Disabled." + " Return with error status for SME Message %s(%d)"), + limMsgStr(pMsg->type), pMsg->type); return bufConsumed; } diff --git a/CORE/MAC/src/pe/lim/limProcessTdls.c b/CORE/MAC/src/pe/lim/limProcessTdls.c index c5352fdf8d60..8a2cfcffe730 100644 --- a/CORE/MAC/src/pe/lim/limProcessTdls.c +++ b/CORE/MAC/src/pe/lim/limProcessTdls.c @@ -126,6 +126,10 @@ void PopulateDot11fLinkIden(tpAniSirGlobal pMac, tpPESession psessionEntry, void PopulateDot11fTdlsExtCapability(tpAniSirGlobal pMac, tDot11fIEExtCap *extCapability) ; +void PopulateDot11fTdlsOffchannelParams(tpAniSirGlobal pMac, + tpPESession psessionEntry, + tDot11fIESuppChannels *suppChannels, + tDot11fIESuppOperatingClasses *suppOperClasses); void limLogVHTCap(tpAniSirGlobal pMac, tDot11fIEVHTCaps *pDot11f); tSirRetStatus limPopulateVhtMcsSet(tpAniSirGlobal pMac, @@ -1045,6 +1049,10 @@ static tSirRetStatus limSendTdlsDisRspFrame(tpAniSirGlobal pMac, PopulateDot11fTdlsHtVhtCap( pMac, selfDot11Mode, &tdlsDisRsp.HTCaps, &tdlsDisRsp.VHTCaps, psessionEntry ); + if ( 1 == pMac->lim.gLimTDLSOffChannelEnabled ) + PopulateDot11fTdlsOffchannelParams( pMac, psessionEntry, + &tdlsDisRsp.SuppChannels, + &tdlsDisRsp.SuppOperatingClasses); /* * now we pack it. First, how much space are we going to need? */ @@ -1331,6 +1339,10 @@ tSirRetStatus limSendTdlsLinkSetupReqFrame(tpAniSirGlobal pMac, PopulateDotfTdlsVhtAID( pMac, selfDot11Mode, peerMac, &tdlsSetupReq.AID, psessionEntry ); + if ( 1 == pMac->lim.gLimTDLSOffChannelEnabled ) + PopulateDot11fTdlsOffchannelParams( pMac, psessionEntry, + &tdlsSetupReq.SuppChannels, + &tdlsSetupReq.SuppOperatingClasses); /* * now we pack it. First, how much space are we going to need? */ @@ -1756,6 +1768,10 @@ static tSirRetStatus limSendTdlsSetupRspFrame(tpAniSirGlobal pMac, PopulateDotfTdlsVhtAID( pMac, selfDot11Mode, peerMac, &tdlsSetupRsp.AID, psessionEntry ); + if ( 1 == pMac->lim.gLimTDLSOffChannelEnabled ) + PopulateDot11fTdlsOffchannelParams( pMac, psessionEntry, + &tdlsSetupRsp.SuppChannels, + &tdlsSetupRsp.SuppOperatingClasses); tdlsSetupRsp.Status.status = setupStatus ; /* @@ -4934,6 +4950,34 @@ add_sta_error: return status ; } +void PopulateDot11fTdlsOffchannelParams(tpAniSirGlobal pMac, + tpPESession psessionEntry, + tDot11fIESuppChannels *suppChannels, + tDot11fIESuppOperatingClasses *suppOperClasses) +{ + tANI_U32 numChans = WNI_CFG_VALID_CHANNEL_LIST_LEN; + tANI_U8 validChan[WNI_CFG_VALID_CHANNEL_LIST_LEN]; + tANI_U8 i; + if (wlan_cfgGetStr(pMac, WNI_CFG_VALID_CHANNEL_LIST, + validChan, &numChans) != eSIR_SUCCESS) + { + /** + * Could not get Valid channel list from CFG. + * Log error. + */ + limLog(pMac, LOGP, + FL("could not retrieve Valid channel list")); + } + suppChannels->num_bands = (tANI_U8) numChans; + + for ( i = 0U; i < suppChannels->num_bands; i++) + { + suppChannels->bands[i][0] = validChan[i]; + suppChannels->bands[i][1] = 1; + } + suppChannels->present = 1 ; + return ; +} /* * FUNCTION: Populate Link Identifier element IE * @@ -4971,7 +5015,7 @@ void PopulateDot11fTdlsExtCapability(tpAniSirGlobal pMac, { extCapability->TDLSPeerPSMSupp = PEER_PSM_SUPPORT ; extCapability->TDLSPeerUAPSDBufferSTA = pMac->lim.gLimTDLSBufStaEnabled; - extCapability->TDLSChannelSwitching = CH_SWITCH_SUPPORT ; + extCapability->TDLSChannelSwitching = pMac->lim.gLimTDLSOffChannelEnabled ; extCapability->TDLSSupport = TDLS_SUPPORT ; extCapability->TDLSProhibited = TDLS_PROHIBITED ; extCapability->TDLSChanSwitProhibited = TDLS_CH_SWITCH_PROHIBITED ; @@ -5384,7 +5428,32 @@ lim_tdls_del_sta_error: return eSIR_SUCCESS; } - +/* Intersects the two input arrays and outputs an array */ +/* For now the array length of tANI_U8 suffices */ +static void limTdlsGetIntersection(tANI_U8 *input_array1,tANI_U8 input1_length, + tANI_U8 *input_array2,tANI_U8 input2_length, + tANI_U8 *output_array,tANI_U8 *output_length) +{ + tANI_U8 i,j,k=0,flag=0; + for(i=0;i<input1_length;i++) + { + flag=0; + for(j=0;j<input2_length;j++) + { + if(input_array1[i]==input_array2[j]) + { + flag=1; + break; + } + } + if(flag==1) + { + output_array[k]=input_array1[i]; + k++; + } + } + *output_length = k; +} /* * Process Link Establishment Request from SME . */ @@ -5459,6 +5528,34 @@ tSirRetStatus limProcesSmeTdlsLinkEstablishReq(tpAniSirGlobal pMac, pMsgTdlsLinkEstablishReq->uapsdQueues = pTdlsLinkEstablishReq->uapsdQueues; pMsgTdlsLinkEstablishReq->maxSp = pTdlsLinkEstablishReq->maxSp; pMsgTdlsLinkEstablishReq->isBufsta = pTdlsLinkEstablishReq->isBufSta; + pMsgTdlsLinkEstablishReq->isOffChannelSupported = + pTdlsLinkEstablishReq->isOffChannelSupported; + pMsgTdlsLinkEstablishReq->isOffChannelSupported = 1; + + if ( 0 != pTdlsLinkEstablishReq->supportedChannelsLen) + { + tANI_U32 selfNumChans = WNI_CFG_VALID_CHANNEL_LIST_LEN; + tANI_U8 selfSupportedChannels[WNI_CFG_VALID_CHANNEL_LIST_LEN]; + if (wlan_cfgGetStr(pMac, WNI_CFG_VALID_CHANNEL_LIST, + selfSupportedChannels, &selfNumChans) != eSIR_SUCCESS) + { + /** + * Could not get Valid channel list from CFG. + * Log error. + */ + limLog(pMac, LOGP, + FL("could not retrieve Valid channel list")); + } + limTdlsGetIntersection(selfSupportedChannels, selfNumChans, + pTdlsLinkEstablishReq->supportedChannels, + pTdlsLinkEstablishReq->supportedChannelsLen, + pMsgTdlsLinkEstablishReq->validChannels, + &pMsgTdlsLinkEstablishReq->validChannelsLen); + } + vos_mem_copy(pMsgTdlsLinkEstablishReq->validOperClasses, + pTdlsLinkEstablishReq->supportedOperClasses, pTdlsLinkEstablishReq->supportedOperClassesLen); + pMsgTdlsLinkEstablishReq->validOperClassesLen = + pTdlsLinkEstablishReq->supportedOperClassesLen; msg.type = WDA_SET_TDLS_LINK_ESTABLISH_REQ; msg.reserved = 0; msg.bodyptr = pMsgTdlsLinkEstablishReq; diff --git a/CORE/MAC/src/pe/lim/limSendMessages.c b/CORE/MAC/src/pe/lim/limSendMessages.c index 0164f6de6f81..466ff6983aa4 100644 --- a/CORE/MAC/src/pe/lim/limSendMessages.c +++ b/CORE/MAC/src/pe/lim/limSendMessages.c @@ -783,6 +783,47 @@ tSirRetStatus limSendModeUpdate(tpAniSirGlobal pMac, return retCode; } +tSirRetStatus limSendRxNssUpdate(tpAniSirGlobal pMac, + tUpdateRxNss *pTempParam, + tpPESession psessionEntry ) +{ + tUpdateRxNss *pRxNss = NULL; + tSirRetStatus retCode = eSIR_SUCCESS; + tSirMsgQ msgQ; + + pRxNss = vos_mem_malloc(sizeof(tUpdateRxNss)); + if ( NULL == pRxNss ) + { + limLog( pMac, LOGP, + FL( "Unable to allocate memory during Update Rx Nss" )); + return eSIR_MEM_ALLOC_FAILED; + } + vos_mem_copy((tANI_U8 *)pRxNss, pTempParam, sizeof(tUpdateRxNss)); + msgQ.type = WDA_UPDATE_RX_NSS; + msgQ.reserved = 0; + msgQ.bodyptr = pRxNss; + msgQ.bodyval = 0; + PELOG3(limLog( pMac, LOG3, + FL( "Sending WDA_UPDATE_RX_NSS" ));) + if(NULL == psessionEntry) + { + MTRACE(macTraceMsgTx(pMac, NO_SESSION, msgQ.type)); + } + else + { + MTRACE(macTraceMsgTx(pMac, psessionEntry->peSessionId, msgQ.type)); + } + if( eSIR_SUCCESS != (retCode = wdaPostCtrlMsg( pMac, &msgQ ))) + { + vos_mem_free(pRxNss); + limLog( pMac, LOGP, + FL("Posting WDA_UPDATE_RX_NSS to WDA failed, reason=%X"), + retCode ); + } + + return retCode; +} + tSirRetStatus limSetMembership(tpAniSirGlobal pMac, tUpdateMembership *pTempParam, tpPESession psessionEntry ) diff --git a/CORE/MAC/src/pe/lim/limSendMessages.h b/CORE/MAC/src/pe/lim/limSendMessages.h index 383ff76b461a..3d0136c289c7 100644 --- a/CORE/MAC/src/pe/lim/limSendMessages.h +++ b/CORE/MAC/src/pe/lim/limSendMessages.h @@ -52,6 +52,9 @@ tSirRetStatus limSendBeaconParams(tpAniSirGlobal pMac, tSirRetStatus limSendModeUpdate(tpAniSirGlobal pMac, tUpdateVHTOpMode *tempParam, tpPESession psessionEntry ); +tSirRetStatus limSendRxNssUpdate(tpAniSirGlobal pMac, + tUpdateRxNss *tempParam, + tpPESession psessionEntry ); tANI_U32 limGetCenterChannel(tpAniSirGlobal pMac, tANI_U8 primarychanNum, diff --git a/CORE/MAC/src/pe/lim/limSmeReqUtils.c b/CORE/MAC/src/pe/lim/limSmeReqUtils.c index fdb14544e274..81439b4e249b 100644 --- a/CORE/MAC/src/pe/lim/limSmeReqUtils.c +++ b/CORE/MAC/src/pe/lim/limSmeReqUtils.c @@ -857,7 +857,7 @@ limIsSmeScanReqValid(tpAniSirGlobal pMac, tpSirSmeScanReq pScanReq) { if (pScanReq->ssId[i].length > SIR_MAC_MAX_SSID_LENGTH) { - limLog(pMac, LOGE, + limLog(pMac, LOGE, FL("Requested SSID length > SIR_MAC_MAX_SSID_LENGTH")); valid = false; goto end; @@ -868,8 +868,11 @@ limIsSmeScanReqValid(tpAniSirGlobal pMac, tpSirSmeScanReq pScanReq) limLog(pMac, LOGE, FL("Invalid BSS Type")); valid = false; } + if (limIsGroupAddr(pScanReq->bssId) && !limIsAddrBC(pScanReq->bssId)) { + limLog(pMac, LOGE, FL("Invalid BSS Type")); + valid = false; limLog(pMac, LOGE, FL("BSSID is group addr and is not Broadcast Addr")); } @@ -878,24 +881,45 @@ limIsSmeScanReqValid(tpAniSirGlobal pMac, tpSirSmeScanReq pScanReq) valid = false; limLog(pMac, LOGE, FL("Invalid Scan Type")); } + if (pScanReq->channelList.numChannels > SIR_MAX_NUM_CHANNELS) { valid = false; limLog(pMac, LOGE, FL("Number of Channels > SIR_MAX_NUM_CHANNELS")); } + if (limIsGroupAddr(pScanReq->bssId) && !limIsAddrBC(pScanReq->bssId)) + { + valid = false; + limLog(pMac, LOGE, FL("BSSID is group addr and is not Broadcast Addr")); + } + if (!(pScanReq->scanType == eSIR_PASSIVE_SCAN || pScanReq->scanType == eSIR_ACTIVE_SCAN)) + { + valid = false; + limLog(pMac, LOGE, FL("Invalid Scan Type")); + } + if (pScanReq->channelList.numChannels > SIR_MAX_NUM_CHANNELS) + { + valid = false; + limLog(pMac, LOGE, FL("Number of Channels > SIR_MAX_NUM_CHANNELS")); + } + + + /* ** check min/max channelTime range **/ if (valid) { - if ((pScanReq->scanType == eSIR_ACTIVE_SCAN) && - (pScanReq->maxChannelTime < pScanReq->minChannelTime)) - { - limLog(pMac, LOGE, FL("Max Channel Time < Min Channel Time")); - valid = false; + if ((pScanReq->scanType == eSIR_ACTIVE_SCAN) && + (pScanReq->maxChannelTime < pScanReq->minChannelTime)) + { + limLog(pMac, LOGE, FL("Max Channel Time < Min Channel Time")); + valid = false; + goto end; } - } + } + end: return valid; } /*** end limIsSmeScanReqValid() ***/ diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c index 00b22614bbd2..51b5d102685b 100644 --- a/CORE/MAC/src/pe/lim/limUtils.c +++ b/CORE/MAC/src/pe/lim/limUtils.c @@ -70,6 +70,8 @@ static tAniBool glimTriggerBackgroundScanDuringQuietBss_Status = eSIR_TRUE; //#define LIM_MAX_ACTIVE_SESSIONS 3 //defined temporarily for BT-AMP SUPPORT #define SUCCESS 1 //defined temporarily for BT-AMP +#define MAX_BA_WINDOW_SIZE_FOR_CISCO 25 + /** ------------------------------------------------------------- \fn limAssignDialogueToken \brief Assigns dialogue token. @@ -5908,7 +5910,17 @@ tSirRetStatus limPostMlmAddBAReq( tpAniSirGlobal pMac, // Requesting the ADDBA recipient to populate the size. // If ADDBA is accepted, a non-zero buffer size should // be returned in the ADDBA Rsp - pMlmAddBAReq->baBufferSize = 0; + if ((TRUE == psessionEntry->isCiscoVendorAP) && + (eHT_CHANNEL_WIDTH_80MHZ != pStaDs->htSupportedChannelWidthSet)) + { + /* Cisco AP has issues in receiving more than 25 "mpdu in ampdu" + causing very low throughput in HT40 case */ + limLog( pMac, LOGW, + FL( "Requesting ADDBA with Cisco 1225 AP, window size 25")); + pMlmAddBAReq->baBufferSize = MAX_BA_WINDOW_SIZE_FOR_CISCO; + } + else + pMlmAddBAReq->baBufferSize = 0; limLog( pMac, LOGW, FL( "Requesting an ADDBA to setup a %s BA session with STA %d for TID %d" ), @@ -7802,22 +7814,38 @@ void limPmfSaQueryTimerHandler(void *pMacGlobal, tANI_U32 param) #ifdef WLAN_FEATURE_11AC -tANI_BOOLEAN limCheckVHTOpModeChange( tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U8 chanWidth, tANI_U8 staId) +tANI_BOOLEAN limCheckVHTOpModeChange( tpAniSirGlobal pMac, tpPESession psessionEntry, + tANI_U8 chanWidth, tANI_U8 staId, tANI_U8 *peerMac) { tUpdateVHTOpMode tempParam; tempParam.opMode = chanWidth; tempParam.staId = staId; tempParam.smesessionId = psessionEntry->smeSessionId; - vos_mem_copy(tempParam.peer_mac, psessionEntry->bssId, + vos_mem_copy(tempParam.peer_mac, peerMac, sizeof(tSirMacAddr)); - limSendModeUpdate( pMac, &tempParam, psessionEntry ); return eANI_BOOLEAN_TRUE; } +tANI_BOOLEAN limSetNssChange( tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U8 rxNss, + tANI_U8 staId, tANI_U8 *peerMac) +{ + tUpdateRxNss tempParam; + + tempParam.rxNss = rxNss; + tempParam.staId = staId; + tempParam.smesessionId = psessionEntry->smeSessionId; + vos_mem_copy(tempParam.peer_mac, peerMac, + sizeof(tSirMacAddr)); + + limSendRxNssUpdate( pMac, &tempParam, psessionEntry ); + + return eANI_BOOLEAN_TRUE; +} + tANI_BOOLEAN limCheckMembershipUserPosition( tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U32 membership, tANI_U32 userPosition, tANI_U8 staId) diff --git a/CORE/MAC/src/pe/lim/limUtils.h b/CORE/MAC/src/pe/lim/limUtils.h index 99057f85cde6..5b2cb5011681 100644 --- a/CORE/MAC/src/pe/lim/limUtils.h +++ b/CORE/MAC/src/pe/lim/limUtils.h @@ -403,8 +403,10 @@ tANI_BOOLEAN limIsconnectedOnDFSChannel(tANI_U8 currentChannel); tANI_U8 limGetCurrentOperatingChannel(tpAniSirGlobal pMac); #ifdef WLAN_FEATURE_11AC -tANI_BOOLEAN limCheckVHTOpModeChange( tpAniSirGlobal pMac, - tpPESession psessionEntry, tANI_U8 chanWidth, tANI_U8 staId); +tANI_BOOLEAN limCheckVHTOpModeChange( tpAniSirGlobal pMac, tpPESession psessionEntry, + tANI_U8 chanWidth, tANI_U8 staId, tANI_U8 *peerMac); +tANI_BOOLEAN limSetNssChange( tpAniSirGlobal pMac, tpPESession psessionEntry, + tANI_U8 rxNss, tANI_U8 staId, tANI_U8 *peerMac); tANI_BOOLEAN limCheckMembershipUserPosition( tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U32 membership, tANI_U32 userPosition, tANI_U8 staId); diff --git a/CORE/MAC/src/pe/rrm/rrmApi.c b/CORE/MAC/src/pe/rrm/rrmApi.c index b8cbb9e42242..4023bf6d1944 100644 --- a/CORE/MAC/src/pe/rrm/rrmApi.c +++ b/CORE/MAC/src/pe/rrm/rrmApi.c @@ -54,7 +54,8 @@ #include "rrmApi.h" tANI_U8 -rrmGetMinOfMaxTxPower(tPowerdBm regMax, tPowerdBm apTxPower) +rrmGetMinOfMaxTxPower(tpAniSirGlobal pMac, + tPowerdBm regMax, tPowerdBm apTxPower) { tANI_U8 maxTxPower = 0; tANI_U8 txPower = VOS_MIN( regMax, (apTxPower) ); @@ -65,6 +66,9 @@ rrmGetMinOfMaxTxPower(tPowerdBm regMax, tPowerdBm apTxPower) else maxTxPower = RRM_MAX_TX_PWR_CAP; + limLog( pMac, LOG3, + "%s: regulatoryMax = %d, apTxPwr = %d, maxTxpwr = %d", + __func__, regMax, apTxPower, maxTxPower ); return maxTxPower; } @@ -86,11 +90,13 @@ rrmGetMinOfMaxTxPower(tPowerdBm regMax, tPowerdBm apTxPower) void rrmCacheMgmtTxPower ( tpAniSirGlobal pMac, tPowerdBm txPower, tpPESession pSessionEntry ) { -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, "Cache Mgmt Tx Power = %d", txPower );) -#endif + limLog( pMac, LOG3, "Cache Mgmt Tx Power = %d", txPower ); + if( pSessionEntry == NULL ) + { + limLog( pMac, LOG3, "%s: pSessionEntry is NULL", __func__); pMac->rrm.rrmPEContext.txMgmtPower = txPower; + } else pSessionEntry->txMgmtPower = txPower; } @@ -113,13 +119,12 @@ rrmCacheMgmtTxPower ( tpAniSirGlobal pMac, tPowerdBm txPower, tpPESession pSessi tPowerdBm rrmGetMgmtTxPower ( tpAniSirGlobal pMac, tpPESession pSessionEntry ) { -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, "RrmGetMgmtTxPower called" );) -#endif + limLog( pMac, LOG3, "RrmGetMgmtTxPower called" ); + if( pSessionEntry == NULL ) { - limLog( pMac, LOG3, "%s: txpower from rrmPEContext: %d", - __func__, pMac->rrm.rrmPEContext.txMgmtPower); + limLog( pMac, LOG3, "%s: txpower from rrmPEContext: %d", + __func__, pMac->rrm.rrmPEContext.txMgmtPower); return pMac->rrm.rrmPEContext.txMgmtPower; } @@ -161,9 +166,7 @@ rrmSendSetMaxTxPowerReq ( tpAniSirGlobal pMac, tPowerdBm txPower, tpPESession pS return eSIR_MEM_ALLOC_FAILED; } -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Allocated memory for pMaxTxParams...will be freed in other module") );) -#endif + /* Allocated memory for pMaxTxParams...will be freed in other module */ pMaxTxParams->power = txPower; vos_mem_copy(pMaxTxParams->bssId, pSessionEntry->bssId, sizeof(tSirMacAddr)); vos_mem_copy(pMaxTxParams->selfStaMacAddr, pSessionEntry->selfMacAddr, sizeof(tSirMacAddr)); @@ -174,7 +177,9 @@ rrmSendSetMaxTxPowerReq ( tpAniSirGlobal pMac, tPowerdBm txPower, tpPESession pS msgQ.bodyptr = pMaxTxParams; msgQ.bodyval = 0; - PELOGW(limLog(pMac, LOGW, FL( "Sending WDA_SET_MAX_TX_POWER_REQ to HAL"));) + limLog(pMac, LOG3, + FL( "Sending WDA_SET_MAX_TX_POWER_REQ with power(%d) to HAL"), + txPower); MTRACE(macTraceMsgTx(pMac, pSessionEntry->peSessionId, msgQ.type)); if( eSIR_SUCCESS != (retCode = wdaPostCtrlMsg( pMac, &msgQ ))) @@ -267,12 +272,12 @@ rrmProcessLinkMeasurementRequest( tpAniSirGlobal pMac, tpSirMacMgmtHdr pHdr; v_S7_t currentRSSI = 0; -#if defined WLAN_VOWIFI_DEBUG - PELOG1(limLog( pMac, LOG1, "Received Link measurement request");) -#endif + limLog( pMac, LOG3, "Received Link measurement request"); + if( pRxPacketInfo == NULL || pLinkReq == NULL || pSessionEntry == NULL ) { - PELOGE(limLog( pMac, LOGE, FL("Invalid parameters - Ignoring the request"));) + PELOGE(limLog( pMac, LOGE, + "%s Invalid parameters - Ignoring the request", __func__);) return eSIR_FAILURE; } pHdr = WDA_GET_RX_MAC_HEADER( pRxPacketInfo ); @@ -334,9 +339,8 @@ rrmProcessLinkMeasurementRequest( tpAniSirGlobal pMac, LinkReport.txAntenna = 0; currentRSSI = WDA_GET_RX_RSSI_DB(pRxPacketInfo); -#if defined WLAN_VOWIFI_DEBUG - PELOG1(limLog( pMac, LOG1, "Received Link report frame with %d", currentRSSI);) -#endif + limLog( pMac, LOG1, + "Received Link report frame with %d", currentRSSI); // 2008 11k spec reference: 18.4.8.5 RCPI Measurement if ((currentRSSI) <= RCPI_LOW_RSSI_VALUE) @@ -348,12 +352,9 @@ rrmProcessLinkMeasurementRequest( tpAniSirGlobal pMac, LinkReport.rsni = WDA_GET_RX_SNR(pRxPacketInfo); -#if defined WLAN_VOWIFI_DEBUG - PELOG1(limLog( pMac, LOG1, "Sending Link report frame");) -#endif - return limSendLinkReportActionFrame( pMac, &LinkReport, pHdr->sa, pSessionEntry ); - + limLog( pMac, LOG3, "Sending Link report frame"); + return limSendLinkReportActionFrame( pMac, &LinkReport, pHdr->sa, pSessionEntry ); } // -------------------------------------------------------------------- @@ -389,14 +390,13 @@ rrmProcessNeighborReportResponse( tpAniSirGlobal pMac, return status; } -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL("Neighbor report response received ") );) -#endif + limLog( pMac, LOG3, FL("Neighbor report response received ") ); // Dialog token if( pMac->rrm.rrmPEContext.DialogToken != pNeighborRep->DialogToken.token ) { - PELOGE(limLog( pMac, LOGE, "Dialog token mismatch in the received Neighbor report");) + PELOGE(limLog( pMac, LOGE, + "Dialog token mismatch in the received Neighbor report");) return eSIR_FAILURE; } if( pNeighborRep->num_NeighborReport == 0 ) @@ -416,9 +416,8 @@ rrmProcessNeighborReportResponse( tpAniSirGlobal pMac, } vos_mem_set(pSmeNeighborRpt, length, 0); -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Allocated memory for pSmeNeighborRpt...will be freed by other module") );) -#endif + + /* Allocated memory for pSmeNeighborRpt...will be freed by other module */ for( i = 0 ; i < pNeighborRep->num_NeighborReport ; i++ ) { @@ -492,10 +491,7 @@ rrmProcessNeighborReportReq( tpAniSirGlobal pMac, return eSIR_FAILURE; } -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL("Neighbor Request received ") );) - PELOGE(limLog( pMac, LOGE, "SSID present = %d ", pNeighborReq->noSSID );) -#endif + limLog( pMac, LOG1, FL("SSID present = %d "), pNeighborReq->noSSID ); vos_mem_set(&NeighborReportReq,sizeof( tSirMacNeighborReportReq ), 0); @@ -504,9 +500,7 @@ rrmProcessNeighborReportReq( tpAniSirGlobal pMac, if( NeighborReportReq.ssid_present ) { vos_mem_copy(&NeighborReportReq.ssid, &pNeighborReq->ucSSID, sizeof(tSirMacSSid)); -#if defined WLAN_VOWIFI_DEBUG PELOGE(sirDumpBuf( pMac, SIR_LIM_MODULE_ID, LOGE, (tANI_U8*) NeighborReportReq.ssid.ssId, NeighborReportReq.ssid.length );) -#endif } status = limSendNeighborReportRequestFrame( pMac, &NeighborReportReq, pNeighborReq->bssId, pSessionEntry ); @@ -576,16 +570,15 @@ rrmProcessBeaconReportReq( tpAniSirGlobal pMac, measDuration = pBeaconReq->measurement_request.Beacon.meas_duration; -#if defined WLAN_VOWIFI_DEBUG - limLog( pMac, LOGE, "maxDuration = %d sign = %d maxMeasduration = %d measDuration = %d", - maxDuration, sign, maxMeasduration, measDuration ); -#endif + limLog( pMac, LOG3, + "maxDuration = %d sign = %d maxMeasduration = %d measDuration = %d", + maxDuration, sign, maxMeasduration, measDuration ); if( maxMeasduration < measDuration ) { if( pBeaconReq->durationMandatory ) { - limLog( pMac, LOGE, "Dropping the request: duration mandatory and maxduration > measduration"); + PELOGE(limLog( pMac, LOGE, "Dropping the request: duration mandatory and maxduration > measduration");) return eRRM_REFUSED; } else @@ -607,9 +600,8 @@ rrmProcessBeaconReportReq( tpAniSirGlobal pMac, FL( "Unable to allocate memory for request IEs buffer" )); return eRRM_FAILURE; } -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Allocated memory for pElementIds") );) -#endif + limLog( pMac, LOG3, FL(" Allocated memory for pElementIds") ); + pCurrentReq->request.Beacon.reqIes.num = pBeaconReq->measurement_request.Beacon.RequestedInfo.num_requested_eids; vos_mem_copy(pCurrentReq->request.Beacon.reqIes.pElementIds, pBeaconReq->measurement_request.Beacon.RequestedInfo.requested_eids, @@ -635,9 +627,7 @@ rrmProcessBeaconReportReq( tpAniSirGlobal pMac, vos_mem_set(pSmeBcnReportReq,sizeof( tSirBeaconReportReqInd ),0); -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Allocated memory for pSmeBcnReportReq....will be freed by other module") );) -#endif + /* Allocated memory for pSmeBcnReportReq....will be freed by other modulea*/ vos_mem_copy(pSmeBcnReportReq->bssId, pSessionEntry->bssId, sizeof(tSirMacAddr)); pSmeBcnReportReq->messageType = eWNI_SME_BEACON_REPORT_REQ_IND; pSmeBcnReportReq->length = sizeof( tSirBeaconReportReqInd ); @@ -736,9 +726,8 @@ rrmFillBeaconIes( tpAniSirGlobal pMac, while ( BcnNumIes > 0 ) { len = *(pBcnIes + 1) + 2; //element id + length. -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, "EID = %d, len = %d total = %d", *pBcnIes, *(pBcnIes+1), len );) -#endif + limLog( pMac, LOG3, "EID = %d, len = %d total = %d", + *pBcnIes, *(pBcnIes+1), len ); i = 0; do @@ -746,9 +735,8 @@ rrmFillBeaconIes( tpAniSirGlobal pMac, if( ( (eids == NULL) || ( *pBcnIes == eids[i] ) ) && ( (*pNumIes) + len) < pIesMaxSize ) { -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, "Adding Eid %d, len=%d", *pBcnIes, len );) -#endif + limLog( pMac, LOG3, "Adding Eid %d, len=%d", *pBcnIes, len ); + vos_mem_copy(pIes, pBcnIes, len); pIes += len; *pNumIes += len; @@ -761,9 +749,7 @@ rrmFillBeaconIes( tpAniSirGlobal pMac, pBcnIes += len; BcnNumIes -= len; } -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, "Total length of Ies added = %d", *pNumIes );) -#endif + limLog( pMac, LOG1, "Total length of Ies added = %d", *pNumIes ); } // -------------------------------------------------------------------- @@ -792,10 +778,7 @@ rrmProcessBeaconReportXmit( tpAniSirGlobal pMac, tANI_U8 sessionId; v_U8_t flagBSSPresent = FALSE, bssDescCnt = 0; -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, "Received beacon report xmit indication");) -#endif - + limLog( pMac, LOG1, "Received beacon report xmit indication"); if (NULL == pBcnReport) { @@ -821,7 +804,7 @@ rrmProcessBeaconReportXmit( tpAniSirGlobal pMac, pBcnReport->bssId, &sessionId))) { - PELOGE(limLog(pMac, LOGE,FL("session does not exist for given bssId"));) + PELOGE(limLog(pMac, LOGE, FL("session does not exist for given bssId"));) return eSIR_FAILURE; } @@ -830,7 +813,7 @@ rrmProcessBeaconReportXmit( tpAniSirGlobal pMac, if (NULL == pReport) { - PELOGE(limLog(pMac, LOGE,FL("RRM Report is NULL, allocation failed"));) + PELOGE(limLog(pMac, LOGE, FL("RRM Report is NULL, allocation failed"));) return eSIR_FAILURE; } @@ -839,99 +822,91 @@ rrmProcessBeaconReportXmit( tpAniSirGlobal pMac, for (bssDescCnt = 0; bssDescCnt < pBcnReport->numBssDesc; bssDescCnt++) { - //Prepare the beacon report and send it to the peer. - pReport[bssDescCnt].token = pBcnReport->uDialogToken; - pReport[bssDescCnt].refused = 0; - pReport[bssDescCnt].incapable = 0; - pReport[bssDescCnt].type = SIR_MAC_RRM_BEACON_TYPE; - - //If the scan result is NULL then send report request with - //option subelement as NULL.. - if ( NULL != pBcnReport->pBssDescription[bssDescCnt] ) - { - flagBSSPresent = TRUE; - } - - //Valid response is included if the size of beacon xmit - //is == size of beacon xmit ind + ies - if ( pBcnReport->length >= sizeof( tSirBeaconReportXmitInd ) ) - { - pReport[bssDescCnt].report.beaconReport.regClass = pBcnReport->regClass; - if ( flagBSSPresent ) - { - pReport[bssDescCnt].report.beaconReport.channel = - pBcnReport->pBssDescription[bssDescCnt]->channelId; - vos_mem_copy( pReport[bssDescCnt].report.beaconReport.measStartTime, - pBcnReport->pBssDescription[bssDescCnt]->startTSF, - sizeof( pBcnReport->pBssDescription[bssDescCnt]->startTSF) ); - pReport[bssDescCnt].report.beaconReport.measDuration = - SYS_MS_TO_TU(pBcnReport->duration); - pReport[bssDescCnt].report.beaconReport.phyType = - pBcnReport->pBssDescription[bssDescCnt]->nwType; - pReport[bssDescCnt].report.beaconReport.bcnProbeRsp = 1; - pReport[bssDescCnt].report.beaconReport.rsni = - pBcnReport->pBssDescription[bssDescCnt]->sinr; - pReport[bssDescCnt].report.beaconReport.rcpi = - pBcnReport->pBssDescription[bssDescCnt]->rssi; - - pReport[bssDescCnt].report.beaconReport.antennaId = 0; - pReport[bssDescCnt].report.beaconReport.parentTSF = - pBcnReport->pBssDescription[bssDescCnt]->parentTSF; - vos_mem_copy( pReport[bssDescCnt].report.beaconReport.bssid, - pBcnReport->pBssDescription[bssDescCnt]->bssId, - sizeof(tSirMacAddr)); - } - - switch ( pCurrentReq->request.Beacon.reportingDetail ) - { - case BEACON_REPORTING_DETAIL_NO_FF_IE: - //0 No need to include any elements. -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog(pMac, LOGE, "No reporting detail requested");) -#endif - break; - case BEACON_REPORTING_DETAIL_ALL_FF_REQ_IE: - //1: Include all FFs and Requested Ies. -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog(pMac, LOGE, - "Only requested IEs in reporting detail requested");) -#endif + //Prepare the beacon report and send it to the peer. + pReport[bssDescCnt].token = pBcnReport->uDialogToken; + pReport[bssDescCnt].refused = 0; + pReport[bssDescCnt].incapable = 0; + pReport[bssDescCnt].type = SIR_MAC_RRM_BEACON_TYPE; + + //If the scan result is NULL then send report request with + //option subelement as NULL.. + if ( NULL != pBcnReport->pBssDescription[bssDescCnt] ) + { + flagBSSPresent = TRUE; + } - if ( flagBSSPresent ) - { - rrmFillBeaconIes( pMac, - (tANI_U8*) &pReport[bssDescCnt].report.beaconReport.Ies[0], - (tANI_U8*) &pReport[bssDescCnt].report.beaconReport.numIes, - BEACON_REPORT_MAX_IES, - pCurrentReq->request.Beacon.reqIes.pElementIds, - pCurrentReq->request.Beacon.reqIes.num, - pBcnReport->pBssDescription[bssDescCnt] ); - } + //Valid response is included if the size of beacon xmit + //is == size of beacon xmit ind + ies + if ( pBcnReport->length >= sizeof( tSirBeaconReportXmitInd ) ) + { + pReport[bssDescCnt].report.beaconReport.regClass = pBcnReport->regClass; + if ( flagBSSPresent ) + { + pReport[bssDescCnt].report.beaconReport.channel = + pBcnReport->pBssDescription[bssDescCnt]->channelId; + vos_mem_copy( pReport[bssDescCnt].report.beaconReport.measStartTime, + pBcnReport->pBssDescription[bssDescCnt]->startTSF, + sizeof( pBcnReport->pBssDescription[bssDescCnt]->startTSF) ); + pReport[bssDescCnt].report.beaconReport.measDuration = + SYS_MS_TO_TU(pBcnReport->duration); + pReport[bssDescCnt].report.beaconReport.phyType = + pBcnReport->pBssDescription[bssDescCnt]->nwType; + pReport[bssDescCnt].report.beaconReport.bcnProbeRsp = 1; + pReport[bssDescCnt].report.beaconReport.rsni = + pBcnReport->pBssDescription[bssDescCnt]->sinr; + pReport[bssDescCnt].report.beaconReport.rcpi = + pBcnReport->pBssDescription[bssDescCnt]->rssi; + + pReport[bssDescCnt].report.beaconReport.antennaId = 0; + pReport[bssDescCnt].report.beaconReport.parentTSF = + pBcnReport->pBssDescription[bssDescCnt]->parentTSF; + vos_mem_copy( pReport[bssDescCnt].report.beaconReport.bssid, + pBcnReport->pBssDescription[bssDescCnt]->bssId, + sizeof(tSirMacAddr)); + } - break; - case BEACON_REPORTING_DETAIL_ALL_FF_IE: - //2 / default - Include all FFs and all Ies. - default: -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog(pMac, LOGE, "Default all IEs and FFs");) -#endif - if ( flagBSSPresent ) - { - rrmFillBeaconIes( pMac, - (tANI_U8*) &pReport[bssDescCnt].report.beaconReport.Ies[0], - (tANI_U8*) &pReport[bssDescCnt].report.beaconReport.numIes, - BEACON_REPORT_MAX_IES, - NULL, 0, - pBcnReport->pBssDescription[bssDescCnt] ); - } - break; - } - } + switch ( pCurrentReq->request.Beacon.reportingDetail ) + { + case BEACON_REPORTING_DETAIL_NO_FF_IE: + //0 No need to include any elements. + limLog(pMac, LOG3, "No reporting detail requested"); + break; + case BEACON_REPORTING_DETAIL_ALL_FF_REQ_IE: + //1: Include all FFs and Requested Ies. + limLog(pMac, LOG3, + "Only requested IEs in reporting detail requested"); + + if ( flagBSSPresent ) + { + rrmFillBeaconIes( pMac, + (tANI_U8*) &pReport[bssDescCnt].report.beaconReport.Ies[0], + (tANI_U8*) &pReport[bssDescCnt].report.beaconReport.numIes, + BEACON_REPORT_MAX_IES, + pCurrentReq->request.Beacon.reqIes.pElementIds, + pCurrentReq->request.Beacon.reqIes.num, + pBcnReport->pBssDescription[bssDescCnt] ); + } + + break; + case BEACON_REPORTING_DETAIL_ALL_FF_IE: + //2 / default - Include all FFs and all Ies. + default: + limLog(pMac, LOG3, "Default all IEs and FFs"); + if ( flagBSSPresent ) + { + rrmFillBeaconIes( pMac, + (tANI_U8*) &pReport[bssDescCnt].report.beaconReport.Ies[0], + (tANI_U8*) &pReport[bssDescCnt].report.beaconReport.numIes, + BEACON_REPORT_MAX_IES, + NULL, 0, + pBcnReport->pBssDescription[bssDescCnt] ); + } + break; + } + } } -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, "Sending Action frame ");) -#endif + limLog( pMac, LOG1, "Sending Action frame with %d bss info", bssDescCnt); limSendRadioMeasureReportActionFrame( pMac, pCurrentReq->dialog_token, bssDescCnt, @@ -944,11 +919,12 @@ rrmProcessBeaconReportXmit( tpAniSirGlobal pMac, if( pBcnReport->fMeasureDone ) { - PELOGE(limLog( pMac, LOGE, "Measurement done....cleanup the context");) + limLog( pMac, LOG3, "Measurement done....cleanup the context"); + rrmCleanup(pMac); } - if( NULL != pReport) + if( NULL != pReport ) vos_mem_free(pReport); return status; @@ -980,7 +956,9 @@ void rrmProcessBeaconRequestFailure(tpAniSirGlobal pMac, tpPESession pSessionEnt pReport->incapable = 1; break; default: - PELOGE(limLog( pMac, LOGE, FL(" Beacon request processing failed no report sent with status %d "), status);); + PELOGE(limLog( pMac, LOGE, + FL(" Beacon request processing failed no report sent with status %d "), + status);); vos_mem_free(pReport); return; } @@ -989,9 +967,7 @@ void rrmProcessBeaconRequestFailure(tpAniSirGlobal pMac, tpPESession pSessionEnt pReport, peer, pSessionEntry ); vos_mem_free(pReport); -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Free memory for pReport") );) -#endif + limLog( pMac, LOG3, FL(" Free memory for pReport") ); return; } @@ -1039,21 +1015,23 @@ rrmProcessRadioMeasurementRequest( tpAniSirGlobal pMac, return eSIR_MEM_ALLOC_FAILED; } vos_mem_set(pReport, sizeof(tSirMacRadioMeasureReport),0); -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Allocated memory for pReport") );) -#endif + PELOGE(limLog( pMac, LOGE, + FL("No requestIes in the measurement request, sending incapable report"));) pReport->incapable = 1; num_report = 1; limSendRadioMeasureReportActionFrame( pMac, pRRMReq->DialogToken.token, num_report, pReport, peer, pSessionEntry ); vos_mem_free(pReport); - PELOGE(limLog( pMac, LOGE, "No requestIes in the measurement request" );) return eSIR_FAILURE; } // PF Fix if( pRRMReq->NumOfRepetitions.repetitions > 0 ) { + limLog( pMac, LOG1, + FL(" number of repetitions %d"), + pRRMReq->NumOfRepetitions.repetitions ); + //Send a report with incapable bit set. Not supporting repetitions. pReport = vos_mem_malloc(sizeof( tSirMacRadioMeasureReport )); if ( NULL == pReport ) @@ -1063,9 +1041,7 @@ rrmProcessRadioMeasurementRequest( tpAniSirGlobal pMac, return eSIR_MEM_ALLOC_FAILED; } vos_mem_set(pReport, sizeof(tSirMacRadioMeasureReport), 0); -#if defined WLAN_VOWIFI_DEBUG PELOGE(limLog( pMac, LOGE, FL(" Allocated memory for pReport") );) -#endif pReport->incapable = 1; pReport->type = pRRMReq->MeasurementRequest[0].measurement_type; num_report = 1; @@ -1095,9 +1071,9 @@ rrmProcessRadioMeasurementRequest( tpAniSirGlobal pMac, sizeof( tSirMacRadioMeasureReport ) * (pRRMReq->num_MeasurementRequest - i), 0); -#if defined WLAN_VOWIFI_DEBUG - limLog( pMac, LOGE, FL(" Allocated memory for pReport") ); -#endif + limLog( pMac, LOG3, + FL(" rrm beacon type refused of %d report in beacon table"), + num_report ); } pReport[num_report].refused = 1; @@ -1116,9 +1092,7 @@ rrmProcessRadioMeasurementRequest( tpAniSirGlobal pMac, vos_mem_free(pReport); return eSIR_MEM_ALLOC_FAILED; } -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Allocated memory for pCurrentReq") );) -#endif + limLog( pMac, LOG3, FL(" Processing Beacon Report request") ); vos_mem_set(pCurrentReq, sizeof( *pCurrentReq ), 0); pCurrentReq->dialog_token = pRRMReq->DialogToken.token; pCurrentReq->token = pRRMReq->MeasurementRequest[i].measurement_token; @@ -1148,10 +1122,9 @@ rrmProcessRadioMeasurementRequest( tpAniSirGlobal pMac, sizeof( tSirMacRadioMeasureReport ) * (pRRMReq->num_MeasurementRequest - i), 0); -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Allocated memory for pReport") );) -#endif - + limLog( pMac, LOG3, + FL(" rrm beacon type incapble of %d report "), + num_report ); } pReport[num_report].incapable = 1; pReport[num_report].type = pRRMReq->MeasurementRequest[i].measurement_type; @@ -1168,9 +1141,7 @@ end: pReport, peer, pSessionEntry ); vos_mem_free(pReport); -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Free memory for pReport") );) -#endif + limLog( pMac, LOG3, FL(" Free memory for pReport") ); } return status; @@ -1291,10 +1262,10 @@ void rrmUpdateConfig ( tpAniSirGlobal pMac, } pRRMCaps->nonOperatingChanMax =(tANI_U8) val; -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, "RRM enabled = %d OperatingChanMax = %d NonOperatingMax = %d", pMac->rrm.rrmPEContext.rrmEnable, - pRRMCaps->operatingChanMax, pRRMCaps->nonOperatingChanMax );) -#endif + limLog( pMac, LOG1, + "RRM enabled = %d OperatingChanMax = %d NonOperatingMax = %d", + pMac->rrm.rrmPEContext.rrmEnable, + pRRMCaps->operatingChanMax, pRRMCaps->nonOperatingChanMax ); } // -------------------------------------------------------------------- /** @@ -1365,15 +1336,11 @@ rrmCleanup(tpAniSirGlobal pMac) if( pMac->rrm.rrmPEContext.pCurrentReq->request.Beacon.reqIes.pElementIds ) { vos_mem_free(pMac->rrm.rrmPEContext.pCurrentReq->request.Beacon.reqIes.pElementIds); -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Free memory for pElementIds") );) -#endif + limLog( pMac, LOG4, FL(" Free memory for pElementIds") ); } vos_mem_free(pMac->rrm.rrmPEContext.pCurrentReq); -#if defined WLAN_VOWIFI_DEBUG - PELOGE(limLog( pMac, LOGE, FL(" Free memory for pCurrentReq") );) -#endif + limLog( pMac, LOG4, FL(" Free memory for pCurrentReq") ); } pMac->rrm.rrmPEContext.pCurrentReq = NULL; diff --git a/CORE/MAC/src/pe/sch/schBeaconProcess.c b/CORE/MAC/src/pe/sch/schBeaconProcess.c index 965e085bbb1d..be6e136205c7 100644 --- a/CORE/MAC/src/pe/sch/schBeaconProcess.c +++ b/CORE/MAC/src/pe/sch/schBeaconProcess.c @@ -530,7 +530,7 @@ static void __schBeaconProcessForSession( tpAniSirGlobal pMac, } limCheckVHTOpModeChange(pMac, psessionEntry, pBeacon->OperatingMode.chanWidth, - pStaDs->staIndex); + pStaDs->staIndex, pMh->sa); } } else if (psessionEntry->vhtCapability && pBeacon->VHTOperation.present) @@ -583,7 +583,7 @@ static void __schBeaconProcessForSession( tpAniSirGlobal pMac, } } limCheckVHTOpModeChange(pMac, psessionEntry, - chWidth, pStaDs->staIndex); + chWidth, pStaDs->staIndex, pMh->sa); } } } diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c index 3967385f13f8..918e9dc4a871 100644 --- a/CORE/SERVICES/BMI/ol_fw.c +++ b/CORE/SERVICES/BMI/ol_fw.c @@ -1745,16 +1745,16 @@ int ol_target_coredump(void *inst, void *memoryBlock, u_int32_t blockLength) * START = 0x00980000 * LENGTH = 0x00038000 * - * SECTION = REG - * START = 0x00000800 - * LENGTH = 0x0007F820 - * * SECTION = AXI * START = 0x000a0000 * LENGTH = 0x00018000 + * + * SECTION = REG + * START = 0x00000800 + * LENGTH = 0x0007F820 */ - while ((sectionCount < 3) && (amountRead < blockLength)) { + while ((sectionCount < 4) && (amountRead < blockLength)) { switch (sectionCount) { case 0: /* DRAM SECTION */ @@ -1767,15 +1767,17 @@ int ol_target_coredump(void *inst, void *memoryBlock, u_int32_t blockLength) readLen = IRAM_SIZE; break; case 2: - /* REG SECTION */ - pos = REGISTER_LOCATION; - /* ol_diag_read_reg_loc checks for buffer overrun */ - readLen = 0; - break; - case 3: /* AXI SECTION */ pos = AXI_LOCATION; readLen = AXI_SIZE; + printk("%s: Dumping AXI section...\n", __func__); + break; + case 3: + /* REG SECTION */ + pos = REGISTER_LOCATION; + /* ol_diag_read_reg_loc checks for buffer overrun */ + readLen = 0; + printk("%s: Dumping Register section...\n", __func__); break; } diff --git a/CORE/SERVICES/HIF/PCIe/hif_pci.c b/CORE/SERVICES/HIF/PCIe/hif_pci.c index afb77b70478f..4286c11202cf 100644 --- a/CORE/SERVICES/HIF/PCIe/hif_pci.c +++ b/CORE/SERVICES/HIF/PCIe/hif_pci.c @@ -2323,7 +2323,9 @@ HIFGetTargetId(HIF_DEVICE *hif_device) /* worker thread to recover when target does not respond over PCIe */ static void recovery_work_handler(struct work_struct *recovery) { +#ifdef CONFIG_CNSS cnss_device_self_recovery(); +#endif } static DECLARE_WORK(recovery_work, recovery_work_handler); @@ -2366,8 +2368,10 @@ HIFTargetSleepStateAdjust(A_target_id_t targid, struct hif_pci_softc *sc = hif_state->sc; +#ifdef TARGET_RECOVERY_AFTER_LINK_DOWN if (sc->recovery) return -EACCES; +#endif if (sleep_ok) { adf_os_spin_lock_irqsave(&hif_state->keep_awake_lock); @@ -2446,10 +2450,14 @@ HIFTargetSleepStateAdjust(A_target_id_t targid, A_PCI_READ32(pci_addr + PCIE_LOCAL_BASE_ADDRESS + RTC_STATE_ADDRESS)); +#ifdef TARGET_RECOVERY_AFTER_LINK_DOWN printk("%s:error, can't wakeup target\n", __func__); sc->recovery = true; schedule_work(&recovery_work); return -EACCES; +#else + VOS_BUG(0); +#endif } OS_DELAY(curr_delay); diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c index a8c810bbfa11..f4d15be08b1c 100644 --- a/CORE/SERVICES/HIF/PCIe/if_pci.c +++ b/CORE/SERVICES/HIF/PCIe/if_pci.c @@ -391,7 +391,7 @@ void dump_CE_debug_register(struct hif_pci_softc *sc) A_target_id_t targid = hif_state->targid; void __iomem *mem = sc->mem; u_int32_t val, i, j; - u_int32_t wrapper_idx[] = {1, 2, 3, 4, 5, 6, 8, 9}; + u_int32_t wrapper_idx[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; u_int32_t ce_base; A_TARGET_ACCESS_BEGIN(targid); diff --git a/CORE/SERVICES/HIF/ath_procfs.c b/CORE/SERVICES/HIF/ath_procfs.c index 658b596d798a..e37512dbc062 100644 --- a/CORE/SERVICES/HIF/ath_procfs.c +++ b/CORE/SERVICES/HIF/ath_procfs.c @@ -84,7 +84,7 @@ static ssize_t ath_procfs_diag_read(struct file *file, char __user *buf, } hif_hdl = get_hif_hdl_from_file(file); - pr_debug("rd buff 0x%p cnt %d offset 0x%x buf 0x%p\n", + pr_debug("rd buff 0x%p cnt %zu offset 0x%x buf 0x%p\n", read_buffer,count, (int)*pos, buf); @@ -123,13 +123,13 @@ static ssize_t ath_procfs_diag_write(struct file *file, const char __user *buf, return -EINVAL; } if(copy_from_user(write_buffer, buf, count)) { - vos_mem_free(write_buffer); + vos_mem_free(write_buffer); return -EFAULT; - } + } hif_hdl = get_hif_hdl_from_file(file); - pr_debug("wr buff 0x%p buf 0x%p cnt %d offset 0x%x value 0x%x\n", - write_buffer, buf, (int)count, + pr_debug("wr buff 0x%p buf 0x%p cnt %zu offset 0x%x value 0x%x\n", + write_buffer, buf, count, (int)*pos, *((A_UINT32 *)write_buffer)); if ((count == 4) && ((((A_UINT32)(*pos)) & 3) == 0)) { diff --git a/CORE/SERVICES/HTC/htc_send.c b/CORE/SERVICES/HTC/htc_send.c index da602a279f0a..26bb07c2754a 100644 --- a/CORE/SERVICES/HTC/htc_send.c +++ b/CORE/SERVICES/HTC/htc_send.c @@ -1310,6 +1310,8 @@ static HTC_PACKET *HTCLookupTxPacket(HTC_TARGET *target, HTC_ENDPOINT *pEndpoint UNLOCK_HTC_TX(target); ITERATE_OVER_LIST_ALLOW_REMOVE(&lookupQueue.QueueHead,pPacket,HTC_PACKET,ListLink) { + if (NULL == pPacket) + return NULL; /* check for removal */ if (netbuf == (adf_nbuf_t)GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket)) { /* found it */ diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index bdc22f16f6ae..506dfe8de829 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -2896,6 +2896,7 @@ VOS_STATUS WDA_open(v_VOID_t *vos_context, v_VOID_t *os_ctx, wma_handle->max_bssid = mac_params->maxBssId; wma_handle->frame_xln_reqd = mac_params->frameTransRequired; wma_handle->driver_type = mac_params->driverType; + wma_handle->ssdp = mac_params->ssdp; /* * Indicates if DFS Phyerr filtering offload @@ -2918,7 +2919,7 @@ VOS_STATUS WDA_open(v_VOID_t *vos_context, v_VOID_t *os_ctx, wma_unified_debug_print_event_handler); wma_handle->tgt_cfg_update_cb = tgt_cfg_cb; - wma_handle->dfs_radar_indication_cb = radar_ind_cb; + wma_handle->dfs_radar_indication_cb = radar_ind_cb; #ifdef QCA_WIFI_ISOC vos_status = vos_event_init(&wma_handle->cfg_nv_tx_complete); @@ -7090,8 +7091,12 @@ static int32_t wmi_unified_send_peer_assoc(tp_wma_handle wma, mcs->tx_max_rate = params->supportedRates.vhtTxHighestDataRate; mcs->tx_mcs_set = params->supportedRates.vhtTxMCSMap; - cmd->peer_nss = ((mcs->rx_mcs_set & VHT2x2MCSMASK) - == VHT2x2MCSMASK) ? 1 : 2; + if(params->vhtSupportedRxNss) { + cmd->peer_nss = params->vhtSupportedRxNss; + } else { + cmd->peer_nss = ((mcs->rx_mcs_set & VHT2x2MCSMASK) + == VHT2x2MCSMASK) ? 1 : 2; + } } intr->nss = cmd->peer_nss; @@ -12833,14 +12838,18 @@ static VOS_STATUS wma_wow_sta(tp_wma_handle wma, u_int8_t vdev_id, * Setup multicast pattern for mDNS 224.0.0.251, * SSDP 239.255.255.250 and LLMNR 224.0.0.252 */ - ret = wma_send_wow_patterns_to_fw(wma, vdev_id, - wma->wow.free_ptrn_id[wma->wow.used_free_ptrn_id++], - discvr_ptrn, sizeof(discvr_ptrn), discvr_offset, - discvr_mask, sizeof(discvr_ptrn)); - if (ret != VOS_STATUS_SUCCESS) { - WMA_LOGE("Failed to add WOW mDNS/SSDP/LLMNR pattern"); - return ret; + if (wma->ssdp) { + ret = wma_send_wow_patterns_to_fw(wma, vdev_id, + wma->wow.free_ptrn_id[wma->wow.used_free_ptrn_id++], + discvr_ptrn, sizeof(discvr_ptrn), discvr_offset, + discvr_mask, sizeof(discvr_ptrn)); + if (ret != VOS_STATUS_SUCCESS) { + WMA_LOGE("Failed to add WOW mDNS/SSDP/LLMNR pattern"); + return ret; + } } + else + WMA_LOGD("mDNS, SSDP, LLMNR patterns are disabled from ini"); /* when arp offload or ns offloaded is disabled * from ini file, configure broad cast arp pattern @@ -12857,6 +12866,7 @@ static VOS_STATUS wma_wow_sta(tp_wma_handle wma, u_int8_t vdev_id, return ret; } } + /* for NS or NDP offload packets */ if (!(wma->ol_ini_info & 0x2)) { /* Setup all NS pkt pattern */ @@ -13630,13 +13640,23 @@ static void wma_finish_scan_req(tp_wma_handle wma_handle, static void wma_process_update_opmode(tp_wma_handle wma_handle, tUpdateVHTOpMode *update_vht_opmode) { - WMA_LOGD("%s: Update Opmode", __func__); + WMA_LOGD("%s: opMode = %d", __func__, update_vht_opmode->opMode); wma_set_peer_param(wma_handle, update_vht_opmode->peer_mac, WMI_PEER_CHWIDTH, update_vht_opmode->opMode, update_vht_opmode->smesessionId); } +static void wma_process_update_rx_nss(tp_wma_handle wma_handle, + tUpdateRxNss *update_rx_nss) +{ + WMA_LOGD("%s: Rx Nss = %d", __func__, update_rx_nss->rxNss); + + wma_set_peer_param(wma_handle, update_rx_nss->peer_mac, + WMI_PEER_NSS, update_rx_nss->rxNss, + update_rx_nss->smesessionId); +} + #ifdef FEATURE_OEM_DATA_SUPPORT static void wma_start_oem_data_req(tp_wma_handle wma_handle, tStartOemDataReq *startOemDataReq) @@ -15964,6 +15984,11 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg) (tUpdateVHTOpMode *)msg->bodyptr); vos_mem_free(msg->bodyptr); break; + case WDA_UPDATE_RX_NSS: + wma_process_update_rx_nss(wma_handle, + (tUpdateRxNss *)msg->bodyptr); + vos_mem_free(msg->bodyptr); + break; #ifdef WLAN_FEATURE_11AC case WDA_UPDATE_MEMBERSHIP: wma_process_update_membership(wma_handle, @@ -17121,9 +17146,9 @@ static int wma_channel_avoid_evt_handler(void *handle, u_int8_t *event, afr_desc = (wmi_avoid_freq_range_desc *) ((void *)param_buf->avd_freq_range + freq_range_idx * sizeof(wmi_avoid_freq_range_desc)); sca_indication->avoid_freq_range[freq_range_idx].start_freq = - afr_desc->start_freq + 10; - sca_indication->avoid_freq_range[freq_range_idx].end_freq = afr_desc->end_freq - - 10; + afr_desc->start_freq; + sca_indication->avoid_freq_range[freq_range_idx].end_freq = + afr_desc->end_freq; } sme_msg.type = eWNI_SME_CH_AVOID_IND; diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 8a400e0cddcf..c3051eb9120b 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -604,6 +604,7 @@ typedef struct { * offload currently, rest bits are unused */ u_int8_t ol_ini_info; + v_BOOL_t ssdp; u_int8_t ibss_started; tSetBssKeyParams ibsskey_info; diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h index 824632973e2f..605117f4cfb8 100644 --- a/CORE/SME/inc/csrApi.h +++ b/CORE/SME/inc/csrApi.h @@ -259,6 +259,10 @@ typedef struct tagCsrStaParams tSirVHTCap VHTCap; tANI_U8 uapsd_queues; tANI_U8 max_sp; + tANI_U8 supported_channels_len; + tANI_U8 supported_channels[SIR_MAC_MAX_SUPP_CHANNELS]; + tANI_U8 supported_oper_classes_len; + tANI_U8 supported_oper_classes[SIR_MAC_MAX_SUPP_OPER_CLASSES]; }tCsrStaParams; typedef struct tagCsrScanRequest @@ -1421,7 +1425,12 @@ typedef struct tagCsrLinkEstablishParams tANI_U8 uapsdQueues; tANI_U8 maxSp; tANI_U8 isBufSta; + tANI_U8 isOffChannelSupported; tANI_U8 isResponder; + tANI_U8 supportedChannelsLen; + tANI_U8 supportedChannels[SIR_MAC_MAX_SUPP_CHANNELS]; + tANI_U8 supportedOperClassesLen; + tANI_U8 supportedOperClasses[SIR_MAC_MAX_SUPP_OPER_CLASSES]; }tCsrTdlsLinkEstablishParams; typedef struct tagCsrTdlsSendMgmt diff --git a/CORE/SME/inc/pmc.h b/CORE/SME/inc/pmc.h index 59ea1a3a4921..2d9b151fdf73 100644 --- a/CORE/SME/inc/pmc.h +++ b/CORE/SME/inc/pmc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2013 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2014 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -188,7 +188,6 @@ typedef struct sPmcInfo void *enterWowlCallbackContext;/* value to be passed as parameter to routine specified above */ tSirSmeWowlEnterParams wowlEnterParams; /* WOWL mode configuration */ tDblLinkList deferredMsgList; //The message in here are deferred and DONOT expect response from PE - tANI_BOOLEAN rfSuppliesVotedOff; //Whether RF supplies are voted off or not. #ifdef FEATURE_WLAN_SCAN_PNO preferredNetworkFoundIndCallback prefNetwFoundCB; /* routine to call for Preferred Network Found Indication */ void *preferredNetworkFoundIndCallbackContext;/* value to be passed as parameter to routine specified above */ diff --git a/CORE/SME/inc/smeInside.h b/CORE/SME/inc/smeInside.h index fe4003b3939b..55b807d1d850 100644 --- a/CORE/SME/inc/smeInside.h +++ b/CORE/SME/inc/smeInside.h @@ -124,7 +124,12 @@ typedef struct TdlsLinkEstablishInfo tANI_U8 uapsdQueues; tANI_U8 maxSp; tANI_U8 isBufSta; + tANI_U8 isOffChannelSupported; tANI_U8 isResponder; + tANI_U8 supportedChannelsLen; + tANI_U8 supportedChannels[SIR_MAC_MAX_SUPP_CHANNELS]; + tANI_U8 supportedOperClassesLen; + tANI_U8 supportedOperClasses[SIR_MAC_MAX_SUPP_OPER_CLASSES]; } tTdlsLinkEstablishCmdInfo; typedef struct TdlsAddStaInfo diff --git a/CORE/SME/src/csr/csrTdlsProcess.c b/CORE/SME/src/csr/csrTdlsProcess.c index 5ddd942c446e..c8c708bc41cb 100644 --- a/CORE/SME/src/csr/csrTdlsProcess.c +++ b/CORE/SME/src/csr/csrTdlsProcess.c @@ -254,6 +254,21 @@ VOS_STATUS csrTdlsSendLinkEstablishParams(tHalHandle hHal, tdlsLinkEstablishCmdInfo->isResponder= tdlsLinkEstablishParams->isResponder; tdlsLinkEstablishCmdInfo->maxSp= tdlsLinkEstablishParams->maxSp; tdlsLinkEstablishCmdInfo->uapsdQueues= tdlsLinkEstablishParams->uapsdQueues; + tdlsLinkEstablishCmdInfo->isOffChannelSupported = + tdlsLinkEstablishParams->isOffChannelSupported; + vos_mem_copy(tdlsLinkEstablishCmdInfo->supportedChannels, + tdlsLinkEstablishParams->supportedChannels, + tdlsLinkEstablishParams->supportedChannelsLen); + tdlsLinkEstablishCmdInfo->supportedChannelsLen = + tdlsLinkEstablishParams->supportedChannelsLen; + vos_mem_copy(tdlsLinkEstablishCmdInfo->supportedOperClasses, + tdlsLinkEstablishParams->supportedOperClasses, + tdlsLinkEstablishParams->supportedOperClassesLen); + tdlsLinkEstablishCmdInfo->supportedOperClassesLen = + tdlsLinkEstablishParams->supportedOperClassesLen; + tdlsLinkEstablishCmdInfo->isResponder= tdlsLinkEstablishParams->isResponder; + tdlsLinkEstablishCmdInfo->maxSp= tdlsLinkEstablishParams->maxSp; + tdlsLinkEstablishCmdInfo->uapsdQueues= tdlsLinkEstablishParams->uapsdQueues; tdlsLinkEstablishCmd->command = eSmeCommandTdlsLinkEstablish ; tdlsLinkEstablishCmd->u.tdlsCmd.size = sizeof(tTdlsLinkEstablishCmdInfo) ; smePushCommand(pMac, tdlsLinkEstablishCmd, FALSE) ; @@ -864,6 +879,16 @@ eHalStatus csrTdlsProcessLinkEstablish( tpAniSirGlobal pMac, tSmeCmd *cmd ) tdlsLinkEstablishCmdInfo->peerMac, sizeof(tSirMacAddr)); vos_mem_copy(tdlsLinkEstablishReq->bssid, pSession->pConnectBssDesc->bssId, sizeof (tSirMacAddr)); + vos_mem_copy(tdlsLinkEstablishReq->supportedChannels, + tdlsLinkEstablishCmdInfo->supportedChannels, + tdlsLinkEstablishCmdInfo->supportedChannelsLen); + tdlsLinkEstablishReq->supportedChannelsLen = + tdlsLinkEstablishCmdInfo->supportedChannelsLen; + vos_mem_copy(tdlsLinkEstablishReq->supportedOperClasses, + tdlsLinkEstablishCmdInfo->supportedOperClasses, + tdlsLinkEstablishCmdInfo->supportedOperClassesLen); + tdlsLinkEstablishReq->supportedOperClassesLen = + tdlsLinkEstablishCmdInfo->supportedOperClassesLen; tdlsLinkEstablishReq->isBufSta = tdlsLinkEstablishCmdInfo->isBufSta; tdlsLinkEstablishReq->isResponder= tdlsLinkEstablishCmdInfo->isResponder; tdlsLinkEstablishReq->uapsdQueues= tdlsLinkEstablishCmdInfo->uapsdQueues; diff --git a/CORE/SME/src/pmc/pmc.c b/CORE/SME/src/pmc/pmc.c index 1daa33f8a9b1..60e4e7e22020 100644 --- a/CORE/SME/src/pmc/pmc.c +++ b/CORE/SME/src/pmc/pmc.c @@ -47,7 +47,6 @@ #include "pmc.h" #include "wlan_qct_wda.h" #include "wlan_ps_wow_diag.h" -#include <vos_power.h> #include "csrInsideApi.h" static void pmcProcessDeferredMsg( tpAniSirGlobal pMac ); @@ -206,12 +205,7 @@ eHalStatus pmcEnterFullPowerState (tHalHandle hHal) return eHAL_STATUS_FAILURE; } - pmcLog(pMac, LOG1, "PMC: Enter full power done: Cancel XO Core ON vote"); - if (vos_chipVoteXOCore(NULL, NULL, NULL, VOS_FALSE) != VOS_STATUS_SUCCESS) - { - pmcLog(pMac, LOGE, "Could not cancel XO Core ON vote. Not returning failure. " - "Power consumed will be high"); - } + pmcLog(pMac, LOG1, "PMC: Enter full power done"); return eHAL_STATUS_SUCCESS; } @@ -236,8 +230,6 @@ eHalStatus pmcEnterFullPowerState (tHalHandle hHal) eHalStatus pmcEnterRequestFullPowerState (tHalHandle hHal, tRequestFullPowerReason fullPowerReason) { tpAniSirGlobal pMac = PMAC_STRUCT(hHal); - vos_call_status_type callType; - VOS_STATUS status; pmcLog(pMac, LOG2, FL("Entering pmcEnterRequestFullPowerState")); @@ -276,25 +268,6 @@ eHalStatus pmcEnterRequestFullPowerState (tHalHandle hHal, tRequestFullPowerReas /* Tell MAC to have device enter full power mode. */ case IMPS: - if ( pMac->pmc.rfSuppliesVotedOff ) - { - status = vos_chipVoteOnRFSupply(&callType, NULL, NULL); - if(VOS_STATUS_SUCCESS != status) - { - VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ) ); - return eHAL_STATUS_FAILURE; - } - - status = vos_chipVoteOnXOBuffer(&callType, NULL, NULL); - if(VOS_STATUS_SUCCESS != status) - { - VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ) ); - return eHAL_STATUS_FAILURE; - } - - pMac->pmc.rfSuppliesVotedOff = FALSE; - } - if (pmcIssueCommand( pMac, 0, eSmeCommandExitImps, NULL, 0, FALSE) != eHAL_STATUS_SUCCESS) { @@ -321,22 +294,6 @@ eHalStatus pmcEnterRequestFullPowerState (tHalHandle hHal, tRequestFullPowerReas /* Tell MAC to have device enter full power mode. */ case STANDBY: - if ( pMac->pmc.rfSuppliesVotedOff ) - { - status = vos_chipVoteOnXOBuffer(&callType, NULL, NULL); - if(VOS_STATUS_SUCCESS != status) - { - return eHAL_STATUS_FAILURE; - } - status = vos_chipVoteOnRFSupply(&callType, NULL, NULL); - if(VOS_STATUS_SUCCESS != status) - { - return eHAL_STATUS_FAILURE; - } - - pMac->pmc.rfSuppliesVotedOff = FALSE; - } - if (pmcIssueCommand(hHal, 0, eSmeCommandExitImps, NULL, 0, FALSE) != eHAL_STATUS_SUCCESS) { @@ -446,8 +403,7 @@ eHalStatus pmcEnterRequestImpsState (tHalHandle hHal) eHalStatus pmcEnterImpsState (tHalHandle hHal) { tpAniSirGlobal pMac = PMAC_STRUCT(hHal); - vos_call_status_type callType; - VOS_STATUS status; + pmcLog(pMac, LOG2, FL("Entering pmcEnterImpsState")); /* Can enter IMPS State only from Request IMPS State. */ @@ -493,24 +449,6 @@ eHalStatus pmcEnterImpsState (tHalHandle hHal) pMac->pmc.ImpsReqTimerfailCnt = 0; } - //Vote off RF supplies. Note RF supllies are not voted off if there is a - //pending request for full power already - status = vos_chipVoteOffRFSupply(&callType, NULL, NULL); - if (VOS_STATUS_SUCCESS != status ) - { - VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ) ); - return eHAL_STATUS_FAILURE; - } - - status = vos_chipVoteOffXOBuffer(&callType, NULL, NULL); - if (VOS_STATUS_SUCCESS != status) - { - VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ) ); - return eHAL_STATUS_FAILURE; - } - - pMac->pmc.rfSuppliesVotedOff= TRUE; - return eHAL_STATUS_SUCCESS; } @@ -1486,8 +1424,6 @@ eHalStatus pmcEnterRequestStandbyState (tHalHandle hHal) eHalStatus pmcEnterStandbyState (tHalHandle hHal) { tpAniSirGlobal pMac = PMAC_STRUCT(hHal); - vos_call_status_type callType; - VOS_STATUS status; pmcLog(pMac, LOG2, "PMC: entering pmcEnterStandbyState"); @@ -1510,26 +1446,6 @@ eHalStatus pmcEnterStandbyState (tHalHandle hHal) return pmcEnterRequestFullPowerState(hHal, pMac->pmc.requestFullPowerReason); } - //Note that RF supplies are not voted off if there is already a pending request - //for full power - status = vos_chipVoteOffRFSupply(&callType, NULL, NULL); - - if (VOS_STATUS_SUCCESS != status) - { - VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ) ); - return eHAL_STATUS_FAILURE; - } - - status = vos_chipVoteOffXOBuffer(&callType, NULL, NULL); - - if (VOS_STATUS_SUCCESS != status) - { - VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ) ); - return eHAL_STATUS_FAILURE; - } - - pMac->pmc.rfSuppliesVotedOff= TRUE; - return eHAL_STATUS_SUCCESS; } @@ -2206,7 +2122,6 @@ eHalStatus pmcIssueCommand( tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_BOOLEAN pmcProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand ) { eHalStatus status = eHAL_STATUS_SUCCESS; - VOS_STATUS vstatus; tANI_BOOLEAN fRemoveCmd = eANI_BOOLEAN_TRUE; do @@ -2280,14 +2195,7 @@ tANI_BOOLEAN pmcProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand ) { /* Change PMC state */ pMac->pmc.pmcState = REQUEST_BMPS; - pmcLog(pMac, LOG2, "PMC: Enter BMPS req done: Force XO Core ON"); - vstatus = vos_chipVoteXOCore(NULL, NULL, NULL, VOS_TRUE); - if ( !VOS_IS_STATUS_SUCCESS(vstatus) ) - { - pmcLog(pMac, LOGE, "Could not turn XO Core ON. Can't go to BMPS"); - } - else /* XO Core turn ON was successful */ - { + pmcLog(pMac, LOG2, "PMC: Enter BMPS req done"); /* Tell MAC to have device enter BMPS mode. */ status = pmcSendMessage(pMac, eWNI_PMC_ENTER_BMPS_REQ, NULL, 0); if ( HAL_STATUS_SUCCESS( status ) ) @@ -2297,17 +2205,6 @@ tANI_BOOLEAN pmcProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand ) else { pmcLog(pMac, LOGE, "Fail to send enter BMPS msg to PE"); - /* Cancel the vote for XO Core */ - pmcLog(pMac, LOGW, "In module init: Cancel the vote for XO CORE ON " - "since send enter bmps failed"); - if (vos_chipVoteXOCore(NULL, NULL, NULL, VOS_FALSE) != VOS_STATUS_SUCCESS) - { - pmcLog(pMac, LOGE, "Could not cancel XO Core ON vote." - "Not returning failure." - "Power consumed will be high"); - } - - } } } if( !HAL_STATUS_SUCCESS( status ) ) diff --git a/CORE/SME/src/pmc/pmcApi.c b/CORE/SME/src/pmc/pmcApi.c index 697261f15c3c..fddb5a37affd 100644 --- a/CORE/SME/src/pmc/pmcApi.c +++ b/CORE/SME/src/pmc/pmcApi.c @@ -94,7 +94,6 @@ eHalStatus pmcOpen (tHalHandle hHal) pMac->pmc.bmpsEnabled = TRUE; pMac->pmc.standbyEnabled = TRUE; pMac->pmc.wowlEnabled = TRUE; - pMac->pmc.rfSuppliesVotedOff= FALSE; vos_mem_set(&(pMac->pmc.bmpsConfig), sizeof(tPmcBmpsConfigParams), 0); vos_mem_set(&(pMac->pmc.impsConfig), sizeof(tPmcImpsConfigParams), 0); diff --git a/CORE/VOSS/inc/vos_power.h b/CORE/VOSS/inc/vos_power.h deleted file mode 100644 index 8b620b1a6d50..000000000000 --- a/CORE/VOSS/inc/vos_power.h +++ /dev/null @@ -1,601 +0,0 @@ -/* - * Copyright (c) 2014 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * 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. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -#ifndef _VOS_POWER_H_ -#define _VOS_POWER_H_ - -/*! - @file - vos_power.h - - @brief - This is the interface to VOSS power APIs using for power management - of the WLAN Libra module from the MSM PMIC. These implementation of - these APIs is very target dependent, also these APIs should only be - used when the WLAN Libra module is powered from the MSM PMIC and not - from an external independent power source - -*/ - -/*=========================================================================== - - EDIT HISTORY FOR MODULE - -This section contains comments describing changes made to the module. -Notice that changes are listed in reverse chronological order. - -$Header: $ - -when who what, where, why --------- --- ---------------------------------------------------------- -01/20/09 rg Initial creation (based on Henri's slides) -===========================================================================*/ - -/*=========================================================================== - - INCLUDE FILES - -===========================================================================*/ -#include "vos_api.h" - -/*=========================================================================== - - DEFINITIONS AND TYPES - -===========================================================================*/ -typedef enum -{ - VOS_CHIP_RESET_CMD53_FAILURE, /* Reset Chip due to CMD53 Failure */ - VOS_CHIP_RESET_FW_EXCEPTION, /* Reset Chip due to FW Failure */ - VOS_CHIP_RESET_MUTEX_READ_FAILURE, /* Reset Chip due to Mutex Read Failure */ - VOS_CHIP_RESET_MIF_EXCEPTION, /* Reset Chip due to MAC exception e.g. BMU fatal, MIF error */ - VOS_CHIP_RESET_UNKNOWN_EXCEPTION /* Reset Chip due to any other exception */ -}vos_chip_reset_reason_type; - -typedef enum -{ - VOS_CALL_SYNC, /* operation is synchronous */ - VOS_CALL_ASYNC /* operation is asynchronous */ - -} vos_call_status_type; - -typedef v_VOID_t (*vos_power_cb_type) -( - v_PVOID_t user_data, /* user cookie */ - VOS_STATUS result /* result of operation: - VOS_STATUS_SUCCESS for success - VOS_STATUS_E_FAILURE for failure */ -); - -/*=========================================================================== - - FUNCTION PROTOTYPES - -===========================================================================*/ - -/** - @brief vos_chipPowerUp() - This API will power up the Libra chip - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - The Libra SDIO core will have been initialized if the operation completes - successfully - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipPowerUp -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipPowerDown() - This API will power down the Libra chip - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipPowerDown -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipReset() - This API will reset the Libra chip - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - A hard reset will involve a powerDown followed by a PowerUp; a soft reset - can potentially be accomplished by writing to some device registers - - The Libra SDIO core will have been initialized if the operation completes - successfully - - @param status [out] : whether this operation will complete sync or async - @param soft [in] : VOS_TRUE if a soft reset is desired - VOS_FALSE for a hard reset i.e. powerDown followed by powerUp - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_NOSUPPORT - soft reset asked for but not supported - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipReset -( - vos_call_status_type* status, - v_BOOL_t soft, - vos_power_cb_type callback, - v_PVOID_t user_data, - vos_chip_reset_reason_type reason -); - -/** - @brief vos_chipVoteOnPASupply() - This API will power up the PA supply - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOnPASupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipVoteOffPASupply() - This API will vote to turn off the - PA supply. Even if we succeed in voting, there is a chance PA supply will not - be turned off. This will be treated the same as a failure. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOffPASupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipAssertDeepSleep() - This API will assert the deep - sleep signal to Libra - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipAssertDeepSleep -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipDeAssertDeepSleep() - This API will de-assert the deep sleep - signal to Libra - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipDeAssertDeepSleep -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipVoteOnRFSupply() - This API will power up the RF supply - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOnRFSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipVoteOffRFSupply() - This API will vote to turn off the - RF supply. Even if we succeed in voting, there is a chance RF supply will not - be turned off as RF rails could be shared with other modules (outside WLAN) - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOffRFSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); -/** - @brief vos_chipVoteOnBBAnalogSupply() - This API will power up the I/P voltage - used by Base band Analog. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOnBBAnalogSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipVoteOffBBAnalogSupply() - This API will vote off the BB Analog supply. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOffBBAnalogSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); -/** - @brief vos_chipVoteOnXOBuffer() - This API will vote to turn on the XO buffer from - PMIC. This API will be used when Libra uses the TCXO from PMIC on the MSM - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOnXOBuffer -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipVoteOffXOBuffer() - This API will vote off PMIC XO buffer. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOffXOBuffer -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -); - -/** - @brief vos_chipVoteXOCore() - This API will FORCE vote ON PMIC XO CORE. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - @param force_enable[in] : user supplied input for turning ON/OFF Xo Core - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteXOCore -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data, - v_BOOL_t force_enable -); - - -/** - @brief vos_chipVoteFreqFor1p3VSupply() - This API will vote for frequency for 1.3V RF supply. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - EVM issue is observed with 1.6Mhz freq for 1.3V supply in wlan standalone case. - During concurrent operation (e.g. WLAN and WCDMA) this issue is not observed. - To workaround, wlan will vote for 3.2Mhz during startup and will vote for 1.6Mhz - during exit. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - @param freq [in] : Frequency for 1.3V Supply for which WLAN driver needs to vote for. - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteFreqFor1p3VSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data, - v_U32_t freq -); - - -#endif /* _VOS_POWER_H_ */ diff --git a/CORE/VOSS/inc/vos_trace.h b/CORE/VOSS/inc/vos_trace.h index b87a41edb4fb..dab444a9a3e3 100644 --- a/CORE/VOSS/inc/vos_trace.h +++ b/CORE/VOSS/inc/vos_trace.h @@ -206,6 +206,6 @@ void vos_trace(v_U8_t module, v_U8_t code, v_U8_t session, v_U32_t data); void vosTraceRegister(VOS_MODULE_ID, tpvosTraceCb); VOS_STATUS vos_trace_spin_lock_init(void); void vosTraceInit(void); -void vosTraceEnable(v_U32_t); +void vosTraceEnable(v_U32_t, v_U8_t enable); void vosTraceDumpAll(void*, v_U8_t, v_U8_t, v_U32_t, v_U32_t); #endif diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c index d84b1cc636d2..df29bd2a10a1 100644 --- a/CORE/VOSS/src/vos_api.c +++ b/CORE/VOSS/src/vos_api.c @@ -431,6 +431,8 @@ VOS_STATUS vos_open( v_CONTEXT_t *pVosContext, v_SIZE_t hddContextSize ) */ macOpenParms.dfsPhyerrFilterOffload = pHddCtx->cfg_ini->fDfsPhyerrFilterOffload; + if (pHddCtx->cfg_ini->ssdp) + macOpenParms.ssdp = pHddCtx->cfg_ini->ssdp; #endif macOpenParms.apMaxOffloadPeers = pHddCtx->cfg_ini->apMaxOffloadPeers; diff --git a/CORE/VOSS/src/vos_power.c b/CORE/VOSS/src/vos_power.c deleted file mode 100644 index 7c05c6e0d426..000000000000 --- a/CORE/VOSS/src/vos_power.c +++ /dev/null @@ -1,676 +0,0 @@ -/* - * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * 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. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -/*! - @file - vos_power.c - - @brief - This is the interface to VOSS power APIs using for power management - of the WLAN Libra module from the MSM PMIC. These implementation of - these APIs is very target dependent, also these APIs should only be - used when the WLAN Libra module is powered from the MSM PMIC and not - from an external independent power source - -*/ - -/*=========================================================================== - - EDIT HISTORY FOR MODULE - -This section contains comments describing changes made to the module. -Notice that changes are listed in reverse chronological order. - -$Header: $ - -when who what, where, why --------- --- ---------------------------------------------------------- - -===========================================================================*/ - -/*=========================================================================== - - INCLUDE FILES - -===========================================================================*/ -#include <vos_power.h> -#include <vos_sched.h> - -//To work around issues of fail to turn WIFI back on after turning it off -#define VOS_PWR_WIFI_ON_OFF_HACK -#ifdef VOS_PWR_WIFI_ON_OFF_HACK -#define VOS_PWR_SLEEP(ms) msleep(ms) -#else -#define VOS_PWR_SLEEP(ms) -#endif - -/*=========================================================================== - - DEFINITIONS AND TYPES - -===========================================================================*/ - -#define CHIP_POWER_ON 1 -#define CHIP_POWER_OFF 0 - -// SDIO Config Cycle Clock Frequency -#define WLAN_LOW_SD_CONFIG_CLOCK_FREQ 400000 - -/*=========================================================================== - - FUNCTION PROTOTYPES - -===========================================================================*/ - -/** - @brief vos_chipPowerUp() - This API will power up the Libra chip - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - The Libra SDIO core will have been initialized if the operation completes - successfully - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipPowerUp -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipPowerDown() - This API will power down the Libra chip - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipPowerDown -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipReset() - This API will reset the Libra chip - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - A hard reset will involve a powerDown followed by a PowerUp; a soft reset - can potentially be accomplished by writing to some device registers - - The Libra SDIO core will have been initialized if the operation completes - successfully - - @param status [out] : whether this operation will complete sync or async - @param soft [in] : VOS_TRUE if a soft reset is desired - VOS_FALSE for a hard reset i.e. powerDown followed by powerUp - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_NOSUPPORT - soft reset asked for but not supported - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipReset -( - vos_call_status_type* status, - v_BOOL_t soft, - vos_power_cb_type callback, - v_PVOID_t user_data, - vos_chip_reset_reason_type reason -) -{ - VOS_STATUS vstatus; - vstatus = vos_watchdog_chip_reset(reason); - return vstatus; -} - - -/** - @brief vos_chipVoteOnPASupply() - This API will power up the PA supply - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOnPASupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - - -/** - @brief vos_chipVoteOffPASupply() - This API will vote to turn off the - PA supply. Even if we succeed in voting, there is a chance PA supply will not - be turned off. This will be treated the same as a failure. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOffPASupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - - -/** - @brief vos_chipAssertDeepSleep() - This API will assert the deep - sleep signal to Libra - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipAssertDeepSleep -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - - -/** - @brief vos_chipDeAssertDeepSleep() - This API will de-assert the deep sleep - signal to Libra - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipDeAssertDeepSleep -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipExitDeepSleepVREGHandler() - This API will initialize the required VREG - after exit from deep sleep. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipExitDeepSleepVREGHandler -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipVoteOnRFSupply() - This API will power up the RF supply - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOnRFSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipVoteOffRFSupply() - This API will vote to turn off the - RF supply. Even if we succeed in voting, there is a chance RF supply will not - be turned off as RF rails could be shared with other modules (outside WLAN) - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOffRFSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipVoteOnBBAnalogSupply() - This API will power up the I/P voltage - used by Base band Analog. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOnBBAnalogSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipVoteOffBBAnalogSupply() - This API will vote off the BB Analog supply. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOffBBAnalogSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipVoteOnXOBuffer() - This API will vote to turn on the XO buffer from - PMIC. This API will be used when Libra uses the TCXO from PMIC on the MSM - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOnXOBuffer -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipVoteOffXOBuffer() - This API will vote off PMIC XO buffer. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteOffXOBuffer -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data -) -{ - return VOS_STATUS_SUCCESS; -} - -/** - @brief vos_chipVoteXOCore - This API will vote PMIC XO Core. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - @param force_enable [in] : Force enable XO CORE or not - - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteXOCore -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data, - v_BOOL_t force_enable -) -{ - - return VOS_STATUS_SUCCESS; -} - - -/** - @brief vos_chipVoteFreqFor1p3VSupply() - This API will vote for frequency for 1.3V RF supply. - - This operation may be asynchronous. If so, the supplied callback will - be invoked when operation is complete with the result. The callback will - be called with the user supplied data. If the operation is known to be - sync, there is no need to supply a callback and user data. - - EVM issue is observed with 1.6Mhz freq for 1.3V supply in wlan standalone case. - During concurrent operation (e.g. WLAN and WCDMA) this issue is not observed. - To workaround, wlan will vote for 3.2Mhz during startup and will vote for 1.6Mhz - during exit. - - @param status [out] : whether this operation will complete sync or async - @param callback [in] : user supplied callback invoked when operation completes - @param user_data [in] : user supplied context callback is called with - @param freq [in] : Frequency for 1.3V Supply for which WLAN driver needs to vote for. - @return - VOS_STATUS_E_INVAL - status is NULL - VOS_STATUS_E_FAULT - the operation needs to complete async and a callback - and user_data has not been specified (status will be - set to VOS_CALL_ASYNC) - VOS_STATUS_E_ALREADY - operation needs to complete async but another request - is already in progress (status will be set to VOS_CALL_ASYNC) - VOS_STATUS_E_FAILURE - operation failed (status will be set appropriately) could be - because the voting algorithm decided not to power down PA - VOS_STATUS_SUCCESS - operation completed successfully if status is SYNC (will be set) - OR operation started successfully if status is ASYNC (will be set) - -*/ -VOS_STATUS vos_chipVoteFreqFor1p3VSupply -( - vos_call_status_type* status, - vos_power_cb_type callback, - v_PVOID_t user_data, - v_U32_t freq -) -{ - return VOS_STATUS_SUCCESS; -} diff --git a/CORE/VOSS/src/vos_sched.c b/CORE/VOSS/src/vos_sched.c index 32a83cfbb635..3abb6569e881 100644 --- a/CORE/VOSS/src/vos_sched.c +++ b/CORE/VOSS/src/vos_sched.c @@ -1714,11 +1714,6 @@ VOS_STATUS vos_watchdog_close ( v_PVOID_t pVosContext ) return VOS_STATUS_SUCCESS; } /* vos_watchdog_close() */ -VOS_STATUS vos_watchdog_chip_reset ( vos_chip_reset_reason_type reason ) -{ - return VOS_STATUS_SUCCESS; -} /* vos_watchdog_chip_reset() */ - /*--------------------------------------------------------------------------- \brief vos_sched_init_mqs: Initialize the vOSS Scheduler message queues The \a vos_sched_init_mqs() function initializes the vOSS Scheduler diff --git a/CORE/VOSS/src/vos_sched.h b/CORE/VOSS/src/vos_sched.h index 0b7059432611..6dc346c027ff 100644 --- a/CORE/VOSS/src/vos_sched.h +++ b/CORE/VOSS/src/vos_sched.h @@ -72,7 +72,7 @@ #ifdef WLAN_OPEN_SOURCE #include <linux/wakelock.h> #endif -#include <vos_power.h> +#include <vos_mq.h> #ifdef QCA_WIFI_2_0 #include <adf_os_types.h> #endif @@ -330,8 +330,6 @@ typedef struct _VosWatchdogContext v_BOOL_t resetInProgress; - vos_chip_reset_reason_type reason; - /* Lock for preventing multiple reset being triggered simultaneously */ spinlock_t wdLock; @@ -646,7 +644,6 @@ void vos_sched_deinit_mqs (pVosSchedContext pSchedContext); void vos_sched_flush_mc_mqs (pVosSchedContext pSchedContext); void vos_sched_flush_tx_mqs (pVosSchedContext pSchedContext); void vos_sched_flush_rx_mqs (pVosSchedContext pSchedContext); -VOS_STATUS vos_watchdog_chip_reset ( vos_chip_reset_reason_type reason ); void clearWlanResetReason(void); void vos_timer_module_init( void ); diff --git a/CORE/VOSS/src/vos_trace.c b/CORE/VOSS/src/vos_trace.c index e85e954515d9..e965d69640fa 100644 --- a/CORE/VOSS/src/vos_trace.c +++ b/CORE/VOSS/src/vos_trace.c @@ -448,10 +448,11 @@ void vos_trace_hex_dump( VOS_MODULE_ID module, VOS_TRACE_LEVEL level, /*----------------------------------------------------------------------------- \brief vosTraceEnable() - Enable MTRACE for specific modules whose bits are - set in bitmask. set the bitmask according to enum value of the modules. + set in bitmask and enable is true. if enable is false it disables MTRACE for + that module. set the bitmask according to enum value of the modules. this functions will be called when you issue ioctl as mentioned following - [iwpriv wlan0 setdumplog <value>]. + [iwpriv wlan0 setdumplog <value> <enable>]. <value> - Decimal number, i.e. 64 decimal value shows only SME module, 128 decimal value shows only PE module, 192 decimal value shows PE and SME. @@ -460,31 +461,54 @@ void vos_trace_hex_dump( VOS_MODULE_ID module, VOS_TRACE_LEVEL level, 32 [dec] = 0010 0000 [bin] <enum of HDD is 5> 64 [dec] = 0100 0000 [bin] <enum of SME is 6> 128 [dec] = 1000 0000 [bin] <enum of PE is 7> + \param - enable - can be true or false. + True implies enabling MTRACE, false implies disabling MTRACE. ---------------------------------------------------------------------------*/ -void vosTraceEnable(v_U32_t bitmask_of_moduleId) +void vosTraceEnable(v_U32_t bitmask_of_moduleId, v_U8_t enable) { int i; if (bitmask_of_moduleId) { - for (i=0; i<VOS_MODULE_ID_MAX; i++) + for (i = 0; i < VOS_MODULE_ID_MAX; i++) { - if (!((bitmask_of_moduleId >> i) & 1 )) + if (((bitmask_of_moduleId >> i) & 1 )) { - vostraceRestoreCBTable[i] = vostraceCBTable[i]; - vostraceCBTable[i] = NULL; + if (enable) + { + if (NULL != vostraceRestoreCBTable[i]) + { + vostraceCBTable[i] = vostraceRestoreCBTable[i]; + } + } + else + { + vostraceRestoreCBTable[i] = vostraceCBTable[i]; + vostraceCBTable[i] = NULL; + } } } - } - else - { - for (i=0; i<VOS_MODULE_ID_MAX; i++) + } + else + { + if (enable) { - if (NULL != vostraceRestoreCBTable[i]) + for (i = 0; i < VOS_MODULE_ID_MAX; i++) { - vostraceCBTable[i] = vostraceRestoreCBTable[i]; + if (NULL != vostraceRestoreCBTable[i]) + { + vostraceCBTable[i] = vostraceRestoreCBTable[i]; + } } } - } + else + { + for (i = 0; i < VOS_MODULE_ID_MAX; i++) + { + vostraceRestoreCBTable[i] = vostraceCBTable[i]; + vostraceCBTable[i] = NULL; + } + } + } } /*----------------------------------------------------------------------------- @@ -525,7 +549,7 @@ void vosTraceInit() void vos_trace(v_U8_t module, v_U8_t code, v_U8_t session, v_U32_t data) { tpvosTraceRecord rec = NULL; - + unsigned long flags; if (!gvosTraceData.enable) { @@ -538,7 +562,7 @@ void vos_trace(v_U8_t module, v_U8_t code, v_U8_t session, v_U32_t data) } /* Aquire the lock so that only one thread at a time can fill the ring buffer */ - spin_lock(<raceLock); + spin_lock_irqsave(<raceLock, flags); gvosTraceData.num++; @@ -582,7 +606,7 @@ void vos_trace(v_U8_t module, v_U8_t code, v_U8_t session, v_U32_t data) rec->time = vos_timer_get_system_time(); rec->module = module; gvosTraceData.numSinceLastDump ++; - spin_unlock(<raceLock); + spin_unlock_irqrestore(<raceLock, flags); } diff --git a/CORE/WDA/inc/legacy/halMsgApi.h b/CORE/WDA/inc/legacy/halMsgApi.h index 16b9b7b83034..3fdb22a20b1d 100644 --- a/CORE/WDA/inc/legacy/halMsgApi.h +++ b/CORE/WDA/inc/legacy/halMsgApi.h @@ -286,6 +286,7 @@ typedef struct #ifdef WLAN_FEATURE_11AC tANI_U8 vhtCapable; tANI_U8 vhtTxChannelWidthSet; + tANI_U8 vhtSupportedRxNss; tANI_U8 vhtTxBFCapable; tANI_U8 vhtTxMUBformeeCapable; tANI_U8 enableVhtpAid; @@ -912,6 +913,14 @@ typedef struct typedef struct { + tANI_U16 rxNss; + tANI_U16 staId; + tANI_U16 smesessionId; + tSirMacAddr peer_mac; +}tUpdateRxNss, *tpUpdateRxNss; + +typedef struct +{ tANI_U32 membership; tANI_U16 staId; tANI_U16 smesessionId; @@ -1418,6 +1427,9 @@ typedef struct sP2pPsParams tANI_U8 sessionId; }tP2pPsParams, *tpP2pPsParams; +#define HAL_MAX_SUPP_CHANNELS 128 +#define HAL_MAX_SUPP_OPER_CLASSES 32 + typedef struct sTdlsLinkEstablishParams { tANI_U16 staIdx; @@ -1425,6 +1437,13 @@ typedef struct sTdlsLinkEstablishParams tANI_U8 uapsdQueues; tANI_U8 maxSp; tANI_U8 isBufsta; + tANI_U8 isOffChannelSupported; + tANI_U8 peerCurrOperClass; + tANI_U8 selfCurrOperClass; + tANI_U8 validChannelsLen; + tANI_U8 validChannels[HAL_MAX_SUPP_CHANNELS]; + tANI_U8 validOperClassesLen; + tANI_U8 validOperClasses[HAL_MAX_SUPP_OPER_CLASSES]; tANI_U32 status; }tTdlsLinkEstablishParams, *tpTdlsLinkEstablishParams; diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h index 2d4dd03d46b0..2a68a886a534 100644 --- a/CORE/WDA/inc/wlan_qct_wda.h +++ b/CORE/WDA/inc/wlan_qct_wda.h @@ -1263,6 +1263,7 @@ tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb); #ifdef WLAN_FEATURE_11AC #define WDA_UPDATE_OP_MODE SIR_HAL_UPDATE_OP_MODE +#define WDA_UPDATE_RX_NSS SIR_HAL_UPDATE_RX_NSS #define WDA_UPDATE_MEMBERSHIP SIR_HAL_UPDATE_MEMBERSHIP #define WDA_UPDATE_USERPOS SIR_HAL_UPDATE_USERPOS #endif diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c index ee49881a4894..ece58ed9fcc2 100644 --- a/CORE/WDA/src/wlan_qct_wda.c +++ b/CORE/WDA/src/wlan_qct_wda.c @@ -1598,6 +1598,22 @@ VOS_STATUS WDA_prepareConfigTLV(v_PVOID_t pVosContext, } tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct + sizeof(tHalCfg) + tlvStruct->length) ; + + /* QWLAN_HAL_CFG_TDLS_OFF_CHANNEL_CAPABLE */ + tlvStruct->type = QWLAN_HAL_CFG_TDLS_OFF_CHANNEL_CAPABLE; + tlvStruct->length = sizeof(tANI_U32); + configDataValue = (tANI_U32 *)(tlvStruct + 1); + + if (wlan_cfgGetInt(pMac, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED, + configDataValue ) != eSIR_SUCCESS) + { + VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR, + "Failed to get value for WNI_CFG_TDLS_BUF_STA_ENABLED"); + goto handle_failure; + } + tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct + + sizeof(tHalCfg) + tlvStruct->length) ; + #endif /* QWLAN_HAL_CFG_ENABLE_ADAPTIVE_RX_DRAIN */ @@ -6821,6 +6837,21 @@ VOS_STATUS WDA_ProcessSetTdlsLinkEstablishReq(tWDA_CbContext *pWDA, pTdlsLinkEstablishParams->maxSp; wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.uIsBufSta = pTdlsLinkEstablishParams->isBufsta; + wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported = + pTdlsLinkEstablishParams->isOffChannelSupported; + + vos_mem_copy(wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.validChannels, + pTdlsLinkEstablishParams->validChannels, + pTdlsLinkEstablishParams->validChannelsLen); + + wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.validChannelsLen = + pTdlsLinkEstablishParams->validChannelsLen; + + vos_mem_copy(wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.validOperClasses, + pTdlsLinkEstablishParams->validOperClasses, + pTdlsLinkEstablishParams->validOperClassesLen); + wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.validOperClassesLen = + pTdlsLinkEstablishParams->validOperClassesLen; wdiSetTDLSLinkEstablishReqParam->wdiReqStatusCB = NULL ; /* Store msg pointer from PE, as this will be used for response */ diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h index 89f83ddfa0aa..be13cd54598c 100644 --- a/CORE/WDI/CP/inc/wlan_qct_wdi.h +++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h @@ -3335,6 +3335,9 @@ typedef struct void* pUserData; }WDI_SetP2PGONOAReqParamsType; +#define WDI_MAX_SUPP_CHANNELS 128 +#define WDI_MAX_SUPP_OPER_CLASSES 32 + typedef struct { wpt_uint16 uStaIdx; @@ -3342,6 +3345,13 @@ typedef struct wpt_uint8 uUapsdQueues; wpt_uint8 uMaxSp; wpt_uint8 uIsBufSta; + wpt_uint8 uIsOffChannelSupported; + wpt_uint8 peerCurrOperClass; + wpt_uint8 selfCurrOperClass; + wpt_uint8 validChannelsLen; + wpt_uint8 validChannels[WDI_MAX_SUPP_CHANNELS]; + wpt_uint8 validOperClassesLen; + wpt_uint8 validOperClasses[WDI_MAX_SUPP_OPER_CLASSES]; }WDI_SetTDLSLinkEstablishReqInfoType; /*--------------------------------------------------------------------------- WDI_SetTDLSLinkEstablishReqParamsType diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c index f5b2af7bb9e2..ce6e5ed685c7 100644 --- a/CORE/WDI/CP/src/wlan_qct_wdi.c +++ b/CORE/WDI/CP/src/wlan_qct_wdi.c @@ -12967,6 +12967,20 @@ WDI_ProcessTdlsLinkEstablishReq halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03); halSetTDLSLinkEstablishParams.moreDataAck = 0; halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta; + halSetTDLSLinkEstablishParams.tdlsOffChannelSupport = + pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported; + + wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels, + pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels, + pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen); + halSetTDLSLinkEstablishParams.validChannelsLen = + pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen; + + wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses, + pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses, + pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen); + halSetTDLSLinkEstablishParams.validOperClassesLen = + pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen; wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetTDLSLinkEstablishParams, @@ -624,7 +624,6 @@ VOSS_OBJS := $(VOSS_SRC_DIR)/vos_api.o \ $(VOSS_SRC_DIR)/vos_mq.o \ $(VOSS_SRC_DIR)/vos_nvitem.o \ $(VOSS_SRC_DIR)/vos_packet.o \ - $(VOSS_SRC_DIR)/vos_power.o \ $(VOSS_SRC_DIR)/vos_sched.o \ $(VOSS_SRC_DIR)/vos_threads.o \ $(VOSS_SRC_DIR)/vos_timer.o \ diff --git a/firmware_bin/WCNSS_cfg.dat b/firmware_bin/WCNSS_cfg.dat Binary files differindex 810533d48f70..875f900b2f58 100644 --- a/firmware_bin/WCNSS_cfg.dat +++ b/firmware_bin/WCNSS_cfg.dat diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini index 26edac316034..4515a893cd7f 100755 --- a/firmware_bin/WCNSS_qcom_cfg.ini +++ b/firmware_bin/WCNSS_qcom_cfg.ini @@ -462,7 +462,7 @@ gTrafficIdleTimeout=3000 gNumChanCombinedConc=60 #Enable Power Save offload -gEnablePowerSaveOffload=2 +gEnablePowerSaveOffload=1 #Enable firmware uart print gEnablefwprint=0 @@ -522,6 +522,15 @@ gEnable5gEBT=1 #Maximum number of offload peers supported # gMaxOffloadPeers=2 +# controlling the following offload patterns +# through ini parameter. Default value is 1 +# to disable set it to zero. ssdp = 0 +# Setup multicast pattern for mDNS 224.0.0.251, +# SSDP 239.255.255.250 and LLMNR 224.0.0.252 + + +ssdp = 1 + #Enable Hysteretic mode gEnableHystereticMode=1 |
