| 1 | #ifndef _WMI_API_H_ |
| 2 | #define _WMI_API_H_ |
| 3 | /* |
| 4 | * Copyright (c) 2004-2006 Atheros Communications Inc. |
| 5 | * All rights reserved. |
| 6 | * |
| 7 | * This file contains the definitions for the Wireless Module Interface (WMI). |
| 8 | * |
| 9 | * $Id: //depot/sw/releases/olca2.0-GPL/host/include/wmi_api.h#2 $ |
| 10 | * |
| 11 | * |
| 12 | * This program is free software; you can redistribute it and/or modify |
| 13 | * it under the terms of the GNU General Public License version 2 as |
| 14 | * published by the Free Software Foundation; |
| 15 | * |
| 16 | * Software distributed under the License is distributed on an "AS |
| 17 | * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
| 18 | * implied. See the License for the specific language governing |
| 19 | * rights and limitations under the License. |
| 20 | * |
| 21 | * |
| 22 | * |
| 23 | */ |
| 24 | |
| 25 | #ifdef __cplusplus |
| 26 | extern "C" { |
| 27 | #endif |
| 28 | |
| 29 | /* |
| 30 | * IP QoS Field definitions according to 802.1p |
| 31 | */ |
| 32 | #define BEST_EFFORT_PRI 0 |
| 33 | #define BACKGROUND_PRI 1 |
| 34 | #define EXCELLENT_EFFORT_PRI 3 |
| 35 | #define CONTROLLED_LOAD_PRI 4 |
| 36 | #define VIDEO_PRI 5 |
| 37 | #define VOICE_PRI 6 |
| 38 | #define NETWORK_CONTROL_PRI 7 |
| 39 | #define MAX_NUM_PRI 8 |
| 40 | |
| 41 | #define UNDEFINED_PRI (0xff) |
| 42 | |
| 43 | /* simple mapping of IP TOS field to a WMI priority stream |
| 44 | * this mapping was taken from the original linux driver implementation |
| 45 | * The operation maps the following |
| 46 | * |
| 47 | * */ |
| 48 | #define IP_TOS_TO_WMI_PRI(tos) \ |
| 49 | ((WMI_PRI_STREAM_ID)(((tos) >> 1) & 0x03)) |
| 50 | |
| 51 | #define WMI_IMPLICIT_PSTREAM_INACTIVITY_INT 5000 /* 5 seconds */ |
| 52 | |
| 53 | |
| 54 | struct wmi_t; |
| 55 | |
| 56 | void *wmi_init(void *devt); |
| 57 | |
| 58 | void wmi_qos_state_init(struct wmi_t *wmip); |
| 59 | void wmi_shutdown(struct wmi_t *wmip); |
| 60 | A_UINT16 wmi_get_mapped_qos_queue(struct wmi_t *, A_UINT8); |
| 61 | A_STATUS wmi_dix_2_dot3(struct wmi_t *wmip, void *osbuf); |
| 62 | A_STATUS wmi_data_hdr_add(struct wmi_t *wmip, void *osbuf, A_UINT8 msgType); |
| 63 | A_STATUS wmi_dot3_2_dix(struct wmi_t *wmip, void *osbuf); |
| 64 | A_STATUS wmi_data_hdr_remove(struct wmi_t *wmip, void *osbuf); |
| 65 | A_STATUS wmi_syncpoint(struct wmi_t *wmip); |
| 66 | A_STATUS wmi_syncpoint_reset(struct wmi_t *wmip); |
| 67 | WMI_PRI_STREAM_ID wmi_get_stream_id(struct wmi_t *wmip, A_UINT8 trafficClass); |
| 68 | A_UINT8 wmi_implicit_create_pstream(struct wmi_t *wmip, void *osbuf, A_UINT8 dir, A_UINT8 up); |
| 69 | |
| 70 | A_STATUS wmi_control_rx(struct wmi_t *wmip, void *osbuf); |
| 71 | void wmi_iterate_nodes(struct wmi_t *wmip, wlan_node_iter_func *f, void *arg); |
| 72 | void wmi_free_allnodes(struct wmi_t *wmip); |
| 73 | bss_t *wmi_find_node(struct wmi_t *wmip, const A_UINT8 *macaddr); |
| 74 | |
| 75 | |
| 76 | typedef enum { |
| 77 | NO_SYNC_WMIFLAG = 0, |
| 78 | SYNC_BEFORE_WMIFLAG, /* transmit all queued data before cmd */ |
| 79 | SYNC_AFTER_WMIFLAG, /* any new data waits until cmd execs */ |
| 80 | SYNC_BOTH_WMIFLAG, |
| 81 | END_WMIFLAG /* end marker */ |
| 82 | } WMI_SYNC_FLAG; |
| 83 | |
| 84 | A_STATUS wmi_cmd_send(struct wmi_t *wmip, void *osbuf, WMI_COMMAND_ID cmdId, |
| 85 | WMI_SYNC_FLAG flag); |
| 86 | A_STATUS wmi_connect_cmd(struct wmi_t *wmip, |
| 87 | NETWORK_TYPE netType, |
| 88 | DOT11_AUTH_MODE dot11AuthMode, |
| 89 | AUTH_MODE authMode, |
| 90 | CRYPTO_TYPE pairwiseCrypto, |
| 91 | A_UINT8 pairwiseCryptoLen, |
| 92 | CRYPTO_TYPE groupCrypto, |
| 93 | A_UINT8 groupCryptoLen, |
| 94 | int ssidLength, |
| 95 | A_UCHAR *ssid, |
| 96 | A_UINT8 *bssid, |
| 97 | A_UINT16 channel, |
| 98 | A_UINT32 ctrl_flags); |
| 99 | A_STATUS wmi_reconnect_cmd(struct wmi_t *wmip, |
| 100 | A_UINT8 *bssid, |
| 101 | A_UINT16 channel); |
| 102 | A_STATUS wmi_disconnect_cmd(struct wmi_t *wmip); |
| 103 | A_STATUS wmi_getrev_cmd(struct wmi_t *wmip); |
| 104 | A_STATUS wmi_startscan_cmd(struct wmi_t *wmip, WMI_SCAN_TYPE scanType, |
| 105 | A_BOOL forceFgScan, A_BOOL isLegacy, |
| 106 | A_UINT32 homeDwellTime, A_UINT32 forceScanInterval); |
| 107 | A_STATUS wmi_scanparams_cmd(struct wmi_t *wmip, A_UINT16 fg_start_sec, |
| 108 | A_UINT16 fg_end_sec, A_UINT16 bg_sec, |
| 109 | A_UINT16 minact_chdw_msec, |
| 110 | A_UINT16 maxact_chdw_msec, A_UINT16 pas_chdw_msec, |
| 111 | A_UINT8 shScanRatio, A_UINT8 scanCtrlFlags, |
| 112 | A_UINT32 max_dfsch_act_time); |
| 113 | A_STATUS wmi_bssfilter_cmd(struct wmi_t *wmip, A_UINT8 filter, A_UINT32 ieMask); |
| 114 | A_STATUS wmi_probedSsid_cmd(struct wmi_t *wmip, A_UINT8 index, A_UINT8 flag, |
| 115 | A_UINT8 ssidLength, A_UCHAR *ssid); |
| 116 | A_STATUS wmi_listeninterval_cmd(struct wmi_t *wmip, A_UINT16 listenInterval, A_UINT16 listenBeacons); |
| 117 | A_STATUS wmi_bmisstime_cmd(struct wmi_t *wmip, A_UINT16 bmisstime, A_UINT16 bmissbeacons); |
| 118 | A_STATUS wmi_associnfo_cmd(struct wmi_t *wmip, A_UINT8 ieType, |
| 119 | A_UINT8 ieLen, A_UINT8 *ieInfo); |
| 120 | A_STATUS wmi_powermode_cmd(struct wmi_t *wmip, A_UINT8 powerMode); |
| 121 | A_STATUS wmi_ibsspmcaps_cmd(struct wmi_t *wmip, A_UINT8 pmEnable, A_UINT8 ttl, |
| 122 | A_UINT16 atim_windows, A_UINT16 timeout_value); |
| 123 | A_STATUS wmi_pmparams_cmd(struct wmi_t *wmip, A_UINT16 idlePeriod, |
| 124 | A_UINT16 psPollNum, A_UINT16 dtimPolicy); |
| 125 | A_STATUS wmi_disctimeout_cmd(struct wmi_t *wmip, A_UINT8 timeout); |
| 126 | A_STATUS wmi_sync_cmd(struct wmi_t *wmip, A_UINT8 syncNumber); |
| 127 | A_STATUS wmi_create_pstream_cmd(struct wmi_t *wmip, WMI_CREATE_PSTREAM_CMD *pstream); |
| 128 | A_STATUS wmi_delete_pstream_cmd(struct wmi_t *wmip, A_UINT8 trafficClass, A_UINT8 streamID); |
| 129 | A_STATUS wmi_set_bitrate_cmd(struct wmi_t *wmip, A_INT32 rate); |
| 130 | A_STATUS wmi_get_bitrate_cmd(struct wmi_t *wmip); |
| 131 | A_INT8 wmi_validate_bitrate(struct wmi_t *wmip, A_INT32 rate); |
| 132 | A_STATUS wmi_get_regDomain_cmd(struct wmi_t *wmip); |
| 133 | A_STATUS wmi_get_channelList_cmd(struct wmi_t *wmip); |
| 134 | A_STATUS wmi_set_channelParams_cmd(struct wmi_t *wmip, A_UINT8 scanParam, |
| 135 | WMI_PHY_MODE mode, A_INT8 numChan, |
| 136 | A_UINT16 *channelList); |
| 137 | |
| 138 | A_STATUS wmi_set_snr_threshold_params(struct wmi_t *wmip, |
| 139 | WMI_SNR_THRESHOLD_PARAMS_CMD *snrCmd); |
| 140 | A_STATUS wmi_set_rssi_threshold_params(struct wmi_t *wmip, |
| 141 | WMI_RSSI_THRESHOLD_PARAMS_CMD *rssiCmd); |
| 142 | A_STATUS wmi_clr_rssi_snr(struct wmi_t *wmip); |
| 143 | A_STATUS wmi_set_lq_threshold_params(struct wmi_t *wmip, |
| 144 | WMI_LQ_THRESHOLD_PARAMS_CMD *lqCmd); |
| 145 | A_STATUS wmi_set_rts_cmd(struct wmi_t *wmip, A_UINT16 threshold); |
| 146 | A_STATUS wmi_set_lpreamble_cmd(struct wmi_t *wmip, A_UINT8 status); |
| 147 | |
| 148 | A_STATUS wmi_set_error_report_bitmask(struct wmi_t *wmip, A_UINT32 bitmask); |
| 149 | |
| 150 | A_STATUS wmi_get_challenge_resp_cmd(struct wmi_t *wmip, A_UINT32 cookie, |
| 151 | A_UINT32 source); |
| 152 | A_STATUS wmi_config_debug_module_cmd(struct wmi_t *wmip, A_UINT16 mmask, |
| 153 | A_UINT16 tsr, A_BOOL rep, A_UINT16 size, |
| 154 | A_UINT32 valid); |
| 155 | A_STATUS wmi_get_stats_cmd(struct wmi_t *wmip); |
| 156 | A_STATUS wmi_addKey_cmd(struct wmi_t *wmip, A_UINT8 keyIndex, |
| 157 | CRYPTO_TYPE keyType, A_UINT8 keyUsage, |
| 158 | A_UINT8 keyLength,A_UINT8 *keyRSC, |
| 159 | A_UINT8 *keyMaterial, A_UINT8 key_op_ctrl, |
| 160 | WMI_SYNC_FLAG sync_flag); |
| 161 | A_STATUS wmi_add_krk_cmd(struct wmi_t *wmip, A_UINT8 *krk); |
| 162 | A_STATUS wmi_delete_krk_cmd(struct wmi_t *wmip); |
| 163 | A_STATUS wmi_deleteKey_cmd(struct wmi_t *wmip, A_UINT8 keyIndex); |
| 164 | A_STATUS wmi_set_akmp_params_cmd(struct wmi_t *wmip, |
| 165 | WMI_SET_AKMP_PARAMS_CMD *akmpParams); |
| 166 | A_STATUS wmi_get_pmkid_list_cmd(struct wmi_t *wmip); |
| 167 | A_STATUS wmi_set_pmkid_list_cmd(struct wmi_t *wmip, |
| 168 | WMI_SET_PMKID_LIST_CMD *pmkInfo); |
| 169 | A_STATUS wmi_set_txPwr_cmd(struct wmi_t *wmip, A_UINT8 dbM); |
| 170 | A_STATUS wmi_get_txPwr_cmd(struct wmi_t *wmip); |
| 171 | A_STATUS wmi_switch_radio(struct wmi_t *wmip, A_UINT8 on); |
| 172 | A_STATUS wmi_addBadAp_cmd(struct wmi_t *wmip, A_UINT8 apIndex, A_UINT8 *bssid); |
| 173 | A_STATUS wmi_deleteBadAp_cmd(struct wmi_t *wmip, A_UINT8 apIndex); |
| 174 | A_STATUS wmi_set_tkip_countermeasures_cmd(struct wmi_t *wmip, A_BOOL en); |
| 175 | A_STATUS wmi_setPmkid_cmd(struct wmi_t *wmip, A_UINT8 *bssid, A_UINT8 *pmkId, |
| 176 | A_BOOL set); |
| 177 | A_STATUS wmi_set_access_params_cmd(struct wmi_t *wmip, A_UINT16 txop, |
| 178 | A_UINT8 eCWmin, A_UINT8 eCWmax, |
| 179 | A_UINT8 aifsn); |
| 180 | A_STATUS wmi_set_retry_limits_cmd(struct wmi_t *wmip, A_UINT8 frameType, |
| 181 | A_UINT8 trafficClass, A_UINT8 maxRetries, |
| 182 | A_UINT8 enableNotify); |
| 183 | |
| 184 | void wmi_get_current_bssid(struct wmi_t *wmip, A_UINT8 *bssid); |
| 185 | |
| 186 | A_STATUS wmi_get_roam_tbl_cmd(struct wmi_t *wmip); |
| 187 | A_STATUS wmi_get_roam_data_cmd(struct wmi_t *wmip, A_UINT8 roamDataType); |
| 188 | A_STATUS wmi_set_roam_ctrl_cmd(struct wmi_t *wmip, WMI_SET_ROAM_CTRL_CMD *p, |
| 189 | A_UINT8 size); |
| 190 | A_STATUS wmi_set_powersave_timers_cmd(struct wmi_t *wmip, |
| 191 | WMI_POWERSAVE_TIMERS_POLICY_CMD *pCmd, |
| 192 | A_UINT8 size); |
| 193 | |
| 194 | A_STATUS wmi_set_opt_mode_cmd(struct wmi_t *wmip, A_UINT8 optMode); |
| 195 | A_STATUS wmi_opt_tx_frame_cmd(struct wmi_t *wmip, |
| 196 | A_UINT8 frmType, |
| 197 | A_UINT8 *dstMacAddr, |
| 198 | A_UINT8 *bssid, |
| 199 | A_UINT16 optIEDataLen, |
| 200 | A_UINT8 *optIEData); |
| 201 | |
| 202 | A_STATUS wmi_set_adhoc_bconIntvl_cmd(struct wmi_t *wmip, A_UINT16 intvl); |
| 203 | A_STATUS wmi_set_voice_pkt_size_cmd(struct wmi_t *wmip, A_UINT16 voicePktSize); |
| 204 | A_STATUS wmi_set_max_sp_len_cmd(struct wmi_t *wmip, A_UINT8 maxSpLen); |
| 205 | A_UINT8 convert_userPriority_to_trafficClass(A_UINT8 userPriority); |
| 206 | A_UINT8 wmi_get_power_mode_cmd(struct wmi_t *wmip); |
| 207 | A_STATUS wmi_verify_tspec_params(WMI_CREATE_PSTREAM_CMD *pCmd, A_BOOL tspecCompliance); |
| 208 | |
| 209 | #ifdef CONFIG_HOST_TCMD_SUPPORT |
| 210 | A_STATUS wmi_test_cmd(struct wmi_t *wmip, A_UINT8 *buf, A_UINT32 len); |
| 211 | #endif |
| 212 | |
| 213 | A_STATUS wmi_set_bt_status_cmd(struct wmi_t *wmip, A_UINT8 streamType, A_UINT8 status); |
| 214 | A_STATUS wmi_set_bt_params_cmd(struct wmi_t *wmip, WMI_SET_BT_PARAMS_CMD* cmd); |
| 215 | |
| 216 | |
| 217 | /* |
| 218 | * This function is used to configure the fix rates mask to the target. |
| 219 | */ |
| 220 | A_STATUS wmi_set_fixrates_cmd(struct wmi_t *wmip, A_INT16 fixRatesMask); |
| 221 | A_STATUS wmi_get_ratemask_cmd(struct wmi_t *wmip); |
| 222 | |
| 223 | A_STATUS wmi_set_authmode_cmd(struct wmi_t *wmip, A_UINT8 mode); |
| 224 | |
| 225 | A_STATUS wmi_set_reassocmode_cmd(struct wmi_t *wmip, A_UINT8 mode); |
| 226 | |
| 227 | A_STATUS wmi_set_wmm_cmd(struct wmi_t *wmip, WMI_WMM_STATUS status); |
| 228 | A_STATUS wmi_set_wmm_txop(struct wmi_t *wmip, WMI_TXOP_CFG txEnable); |
| 229 | |
| 230 | A_STATUS wmi_get_keepalive_configured(struct wmi_t *wmip); |
| 231 | A_UINT8 wmi_get_keepalive_cmd(struct wmi_t *wmip); |
| 232 | A_STATUS wmi_set_keepalive_cmd(struct wmi_t *wmip, A_UINT8 keepaliveInterval); |
| 233 | |
| 234 | A_STATUS wmi_set_appie_cmd(struct wmi_t *wmip, A_UINT8 mgmtFrmType, |
| 235 | A_UINT8 ieLen,A_UINT8 *ieInfo); |
| 236 | |
| 237 | A_STATUS wmi_set_halparam_cmd(struct wmi_t *wmip, A_UINT8 *cmd, A_UINT16 dataLen); |
| 238 | A_INT32 wmi_get_rate(A_INT8 rateindex); |
| 239 | |
| 240 | /*Wake on Wireless WMI commands*/ |
| 241 | A_STATUS wmi_set_host_sleep_mode_cmd(struct wmi_t *wmip, WMI_SET_HOST_SLEEP_MODE_CMD *cmd); |
| 242 | A_STATUS wmi_set_wow_mode_cmd(struct wmi_t *wmip, WMI_SET_WOW_MODE_CMD *cmd); |
| 243 | A_STATUS wmi_get_wow_list_cmd(struct wmi_t *wmip, WMI_GET_WOW_LIST_CMD *cmd); |
| 244 | A_STATUS wmi_add_wow_pattern_cmd(struct wmi_t *wmip, |
| 245 | WMI_ADD_WOW_PATTERN_CMD *cmd, A_UINT8* pattern, A_UINT8* mask, A_UINT8 pattern_size); |
| 246 | A_STATUS wmi_del_wow_pattern_cmd(struct wmi_t *wmip, |
| 247 | WMI_DEL_WOW_PATTERN_CMD *cmd); |
| 248 | A_STATUS wmi_set_wsc_status_cmd(struct wmi_t *wmip, A_UINT32 status); |
| 249 | |
| 250 | bss_t * |
| 251 | wmi_find_Ssidnode (struct wmi_t *wmip, A_UCHAR *pSsid, |
| 252 | A_UINT32 ssidLength, A_BOOL bIsWPA2); |
| 253 | |
| 254 | void |
| 255 | wmi_node_return (struct wmi_t *wmip, bss_t *bss); |
| 256 | #ifdef __cplusplus |
| 257 | } |
| 258 | #endif |
| 259 | |
| 260 | #endif /* _WMI_API_H_ */ |
| 261 | |