1 //------------------------------------------------------------------------------ 2 // <copyright file="wmi_host.h" company="Atheros"> 3 // Copyright (c) 2004-2010 Atheros Corporation. All rights reserved. 4 // 5 // 6 // Permission to use, copy, modify, and/or distribute this software for any 7 // purpose with or without fee is hereby granted, provided that the above 8 // copyright notice and this permission notice appear in all copies. 9 // 10 // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 // 18 // 19 //------------------------------------------------------------------------------ 20 //============================================================================== 21 // This file contains local definitios for the wmi host module. 22 // 23 // Author(s): ="Atheros" 24 //============================================================================== 25 #ifndef _WMI_HOST_H_ 26 #define _WMI_HOST_H_ 27 28 #include "roaming.h" 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 struct wmi_stats { 34 u32 cmd_len_err; 35 u32 cmd_id_err; 36 }; 37 38 #define SSID_IE_LEN_INDEX 13 39 40 /* Host side link management data structures */ 41 #define SIGNAL_QUALITY_THRESHOLD_LEVELS 6 42 #define SIGNAL_QUALITY_UPPER_THRESHOLD_LEVELS SIGNAL_QUALITY_THRESHOLD_LEVELS 43 #define SIGNAL_QUALITY_LOWER_THRESHOLD_LEVELS SIGNAL_QUALITY_THRESHOLD_LEVELS 44 typedef struct sq_threshold_params_s { 45 s16 upper_threshold[SIGNAL_QUALITY_UPPER_THRESHOLD_LEVELS]; 46 s16 lower_threshold[SIGNAL_QUALITY_LOWER_THRESHOLD_LEVELS]; 47 u32 upper_threshold_valid_count; 48 u32 lower_threshold_valid_count; 49 u32 polling_interval; 50 u8 weight; 51 u8 last_rssi; //normally you would expect this to be bss specific but we keep only one instance because its only valid when the device is in a connected state. Not sure if it belongs to host or target. 52 u8 last_rssi_poll_event; //Not sure if it belongs to host or target 53 } SQ_THRESHOLD_PARAMS; 54 55 /* 56 * These constants are used with A_WLAN_BAND_SET. 57 */ 58 #define A_BAND_24GHZ 0 59 #define A_BAND_5GHZ 1 60 #define A_NUM_BANDS 2 61 62 struct wmi_t { 63 bool wmi_ready; 64 bool wmi_numQoSStream; 65 u16 wmi_streamExistsForAC[WMM_NUM_AC]; 66 u8 wmi_fatPipeExists; 67 void *wmi_devt; 68 struct wmi_stats wmi_stats; 69 struct ieee80211_node_table wmi_scan_table; 70 u8 wmi_bssid[ATH_MAC_LEN]; 71 u8 wmi_powerMode; 72 u8 wmi_phyMode; 73 u8 wmi_keepaliveInterval; 74 #ifdef THREAD_X 75 A_CSECT_T wmi_lock; 76 #else 77 A_MUTEX_T wmi_lock; 78 #endif 79 HTC_ENDPOINT_ID wmi_endpoint_id; 80 SQ_THRESHOLD_PARAMS wmi_SqThresholdParams[SIGNAL_QUALITY_METRICS_NUM_MAX]; 81 CRYPTO_TYPE wmi_pair_crypto_type; 82 CRYPTO_TYPE wmi_grp_crypto_type; 83 bool wmi_is_wmm_enabled; 84 u8 wmi_ht_allowed[A_NUM_BANDS]; 85 u8 wmi_traffic_class; 86 }; 87 88 #ifdef THREAD_X 89 #define INIT_WMI_LOCK(w) A_CSECT_INIT(&(w)->wmi_lock) 90 #define LOCK_WMI(w) A_CSECT_ENTER(&(w)->wmi_lock); 91 #define UNLOCK_WMI(w) A_CSECT_LEAVE(&(w)->wmi_lock); 92 #define DELETE_WMI_LOCK(w) A_CSECT_DELETE(&(w)->wmi_lock); 93 #else 94 #define LOCK_WMI(w) A_MUTEX_LOCK(&(w)->wmi_lock); 95 #define UNLOCK_WMI(w) A_MUTEX_UNLOCK(&(w)->wmi_lock); 96 #endif 97 98 #ifdef __cplusplus 99 } 100 #endif 101 102 #endif /* _WMI_HOST_H_ */ 103