3 * @file coreconfigurator.h
6 * @sa coreconfigurator.c
12 #ifndef CORECONFIGURATOR_H
13 #define CORECONFIGURATOR_H
15 #include "wilc_oswrapper.h"
16 #include "wilc_wlan_if.h"
17 /*****************************************************************************/
19 /*****************************************************************************/
20 /* Number of WID Options Supported */
21 #define NUM_BASIC_SWITCHES 45
22 #define NUM_FHSS_SWITCHES 0
27 #define NUM_11N_BASIC_SWITCHES 25
28 #define NUM_11N_HUT_SWITCHES 47
29 #else /* MAC_802_11N */
30 #define NUM_11N_BASIC_SWITCHES 0
31 #define NUM_11N_HUT_SWITCHES 0
32 #endif /* MAC_802_11N */
34 extern u16 g_num_total_switches
;
36 #define MAC_HDR_LEN 24 /* No Address4 - non-ESS */
37 #define MAX_SSID_LEN 33
39 #define TIME_STAMP_LEN 8
40 #define BEACON_INTERVAL_LEN 2
41 #define CAP_INFO_LEN 2
42 #define STATUS_CODE_LEN 2
47 /* Operating Mode: SET */
49 /* Operating Mode: GET */
52 #define MAX_PACKET_BUFF_SIZE 1596
54 #define MAX_STRING_LEN 256
55 #define MAX_SURVEY_RESULT_FRAG_SIZE MAX_STRING_LEN
56 #define SURVEY_RESULT_LENGTH 44
57 #define MAX_ASSOC_RESP_FRAME_SIZE MAX_STRING_LEN
59 #define STATUS_MSG_LEN 12
60 #define MAC_CONNECTED 1
61 #define MAC_DISCONNECTED 0
65 /*****************************************************************************/
67 /*****************************************************************************/
68 #define MAKE_WORD16(lsb, msb) ((((u16)(msb) << 8) & 0xFF00) | (lsb))
69 #define MAKE_WORD32(lsw, msw) ((((u32)(msw) << 16) & 0xFFFF0000) | (lsw))
72 /*****************************************************************************/
73 /* Type Definitions */
74 /*****************************************************************************/
86 WID_TYPE_FORCE_32BIT
= 0xFFFFFFFF
89 /* WLAN Identifiers */
92 /* EMAC Character WID list */
93 WID_BSS_TYPE
= 0x0000,
94 WID_CURRENT_TX_RATE
= 0x0001,
95 WID_CURRENT_CHANNEL
= 0x0002,
96 WID_PREAMBLE
= 0x0003,
97 WID_11G_OPERATING_MODE
= 0x0004,
99 WID_11G_PROT_MECH
= 0x0006,
100 WID_SCAN_TYPE
= 0x0007,
101 WID_PRIVACY_INVOKED
= 0x0008,
103 WID_QOS_ENABLE
= 0x000A,
104 WID_POWER_MANAGEMENT
= 0x000B,
105 WID_11I_MODE
= 0x000C,
106 WID_AUTH_TYPE
= 0x000D,
107 WID_SITE_SURVEY
= 0x000E,
108 WID_LISTEN_INTERVAL
= 0x000F,
109 WID_DTIM_PERIOD
= 0x0010,
110 WID_ACK_POLICY
= 0x0011,
112 WID_PCF_MODE
= 0x0013,
113 WID_CFP_PERIOD
= 0x0014,
114 WID_BCAST_SSID
= 0x0015,
115 WID_PHY_TEST_PATTERN
= 0x0016,
116 WID_DISCONNECT
= 0x0016,
117 WID_READ_ADDR_SDRAM
= 0x0017,
118 WID_TX_POWER_LEVEL_11A
= 0x0018,
119 WID_REKEY_POLICY
= 0x0019,
120 WID_SHORT_SLOT_ALLOWED
= 0x001A,
121 WID_PHY_ACTIVE_REG
= 0x001B,
122 WID_PHY_ACTIVE_REG_VAL
= 0x001C,
123 WID_TX_POWER_LEVEL_11B
= 0x001D,
124 WID_START_SCAN_REQ
= 0x001E,
126 WID_JOIN_REQ
= 0x0020,
127 WID_ANTENNA_SELECTION
= 0x0021,
128 WID_USER_CONTROL_ON_TX_POWER
= 0x0027,
129 WID_MEMORY_ACCESS_8BIT
= 0x0029,
130 WID_UAPSD_SUPPORT_AP
= 0x002A,
131 WID_CURRENT_MAC_STATUS
= 0x0031,
132 WID_AUTO_RX_SENSITIVITY
= 0x0032,
133 WID_DATAFLOW_CONTROL
= 0x0033,
134 WID_SCAN_FILTER
= 0x0036,
135 WID_LINK_LOSS_THRESHOLD
= 0x0037,
136 WID_AUTORATE_TYPE
= 0x0038,
137 WID_CCA_THRESHOLD
= 0x0039,
138 WID_802_11H_DFS_MODE
= 0x003B,
139 WID_802_11H_TPC_MODE
= 0x003C,
140 WID_DEVICE_READY
= 0x003D,
141 WID_PM_NULL_FRAME_INTERVAL
= 0x003E,
142 WID_PM_ACTIVITY_TIMER
= 0x003F,
143 WID_PM_NULL_FRAME_WAIT_ENABLE
= 0x0040,
144 WID_SCAN_WAIT_TIME
= 0x0041,
145 WID_WSC_IE_EN
= 0x0042,
146 WID_WPS_START
= 0x0043,
147 WID_WPS_DEV_MODE
= 0x0044,
148 WID_BT_COEXISTENCE
= 0x0050,
149 WID_TRACKING_ROAMING
= 0x0070,
150 WID_NUM_PKTS_FOR_RSSI_AVG
= 0x0071,
151 WID_FHSS_SCAN_CHAN_INDEX
= 0x0072,
152 WID_FHSS_SCAN_STEP_INDEX
= 0x0073,
154 /* NMAC Character WID list */
155 WID_11N_PROT_MECH
= 0x0080,
156 WID_11N_ERP_PROT_TYPE
= 0x0081,
157 WID_11N_ENABLE
= 0x0082,
158 WID_11N_OPERATING_MODE
= 0x0083,
159 WID_11N_OBSS_NONHT_DETECTION
= 0x0084,
160 WID_11N_HT_PROT_TYPE
= 0x0085,
161 WID_11N_RIFS_PROT_ENABLE
= 0x0086,
162 WID_11N_SMPS_MODE
= 0x0087,
163 WID_11N_CURRENT_TX_MCS
= 0x0088,
164 WID_11N_PRINT_STATS
= 0x0089,
165 WID_HUT_FCS_CORRUPT_MODE
= 0x008A,
166 WID_HUT_RESTART
= 0x008B,
167 WID_HUT_TX_FORMAT
= 0x008C,
168 WID_11N_SHORT_GI_20MHZ_ENABLE
= 0x008D,
169 WID_HUT_BANDWIDTH
= 0x008E,
170 WID_HUT_OP_BAND
= 0x008F,
171 WID_HUT_STBC
= 0x0090,
172 WID_HUT_ESS
= 0x0091,
173 WID_HUT_ANTSET
= 0x0092,
174 WID_HUT_HT_OP_MODE
= 0x0093,
175 WID_HUT_RIFS_MODE
= 0x0094,
176 WID_HUT_SMOOTHING_REC
= 0x0095,
177 WID_HUT_SOUNDING_PKT
= 0x0096,
178 WID_HUT_HT_CODING
= 0x0097,
179 WID_HUT_TEST_DIR
= 0x0098,
180 WID_HUT_CAPTURE_MODE
= 0x0099,
181 WID_HUT_PHY_TEST_MODE
= 0x009A,
182 WID_HUT_PHY_TEST_RATE_HI
= 0x009B,
183 WID_HUT_PHY_TEST_RATE_LO
= 0x009C,
184 WID_HUT_DISABLE_RXQ_REPLENISH
= 0x009D,
185 WID_HUT_KEY_ORIGIN
= 0x009E,
186 WID_HUT_BCST_PERCENT
= 0x009F,
187 WID_HUT_GROUP_CIPHER_TYPE
= 0x00A0,
188 WID_TX_ABORT_CONFIG
= 0x00A1,
189 WID_HOST_DATA_IF_TYPE
= 0x00A2,
190 WID_HOST_CONFIG_IF_TYPE
= 0x00A3,
191 WID_HUT_TSF_TEST_MODE
= 0x00A4,
192 WID_HUT_TSSI_VALUE
= 0x00A5,
193 WID_HUT_PKT_TSSI_VALUE
= 0x00A5,
194 WID_REG_TSSI_11B_VALUE
= 0x00A6,
195 WID_REG_TSSI_11G_VALUE
= 0x00A7,
196 WID_REG_TSSI_11N_VALUE
= 0x00A8,
197 WID_TX_CALIBRATION
= 0x00A9,
198 WID_DSCR_TSSI_11B_VALUE
= 0x00AA,
199 WID_DSCR_TSSI_11G_VALUE
= 0x00AB,
200 WID_DSCR_TSSI_11N_VALUE
= 0x00AC,
201 WID_HUT_RSSI_EX
= 0x00AD,
202 WID_HUT_ADJ_RSSI_EX
= 0x00AE,
203 WID_11N_IMMEDIATE_BA_ENABLED
= 0x00AF,
204 WID_11N_TXOP_PROT_DISABLE
= 0x00B0,
205 WID_TX_POWER_LEVEL_11N
= 0x00B1,
206 WID_HUT_MGMT_PERCENT
= 0x00B3,
207 WID_HUT_MGMT_BCST_PERCENT
= 0x00B4,
208 WID_HUT_MGMT_ALLOW_HT
= 0x00B5,
209 WID_HUT_UC_MGMT_TYPE
= 0x00B6,
210 WID_HUT_BC_MGMT_TYPE
= 0x00B7,
211 WID_HUT_11W_MFP_REQUIRED_TX
= 0x00B8,
212 WID_HUT_11W_MFP_PEER_CAPABLE
= 0x00B9,
213 WID_HUT_11W_TX_IGTK_ID
= 0x00BA,
214 WID_11W_ENABLE
= 0x00BB,
215 WID_11W_MGMT_PROT_REQ
= 0x00BC,
216 WID_USER_SEC_CHANNEL_OFFSET
= 0x00C0,
217 WID_2040_COEXISTENCE
= 0x00C1,
218 WID_HUT_FC_TXOP_MOD
= 0x00C2,
219 WID_HUT_FC_PROT_TYPE
= 0x00C3,
220 WID_HUT_SEC_CCA_ASSERT
= 0x00C4,
221 WID_2040_ENABLE
= 0x00C5,
222 WID_2040_CURR_CHANNEL_OFFSET
= 0x00C6,
223 WID_2040_40MHZ_INTOLERANT
= 0x00C7,
226 /* Custom Character WID list */
227 WID_POWER_SAVE
= 0x0100,
228 WID_WAKE_STATUS
= 0x0101,
229 WID_WAKE_CONTROL
= 0x0102,
230 WID_CCA_BUSY_START
= 0x0103,
232 /* EMAC Short WID list */
233 WID_RTS_THRESHOLD
= 0x1000,
234 WID_FRAG_THRESHOLD
= 0x1001,
235 WID_SHORT_RETRY_LIMIT
= 0x1002,
236 WID_LONG_RETRY_LIMIT
= 0x1003,
237 WID_CFP_MAX_DUR
= 0x1004,
238 WID_PHY_TEST_FRAME_LEN
= 0x1005,
239 WID_BEACON_INTERVAL
= 0x1006,
240 WID_MEMORY_ACCESS_16BIT
= 0x1008,
241 WID_RX_SENSE
= 0x100B,
242 WID_ACTIVE_SCAN_TIME
= 0x100C,
243 WID_PASSIVE_SCAN_TIME
= 0x100D,
244 WID_SITE_SURVEY_SCAN_TIME
= 0x100E,
245 WID_JOIN_START_TIMEOUT
= 0x100F,
246 WID_AUTH_TIMEOUT
= 0x1010,
247 WID_ASOC_TIMEOUT
= 0x1011,
248 WID_11I_PROTOCOL_TIMEOUT
= 0x1012,
249 WID_EAPOL_RESPONSE_TIMEOUT
= 0x1013,
250 WID_WPS_PASS_ID
= 0x1017,
251 WID_WPS_CONFIG_METHOD
= 0x1018,
252 WID_FHSS_INIT_SCAN_TIME
= 0x1070,
253 WID_FHSS_ROAM_SCAN_TIME
= 0x1071,
255 /* NMAC Short WID list */
256 WID_11N_RF_REG_VAL
= 0x1080,
257 WID_HUT_FRAME_LEN
= 0x1081,
258 WID_HUT_TXOP_LIMIT
= 0x1082,
259 WID_HUT_SIG_QUAL_AVG
= 0x1083,
260 WID_HUT_SIG_QUAL_AVG_CNT
= 0x1084,
261 WID_11N_SIG_QUAL_VAL
= 0x1085,
262 WID_HUT_RSSI_EX_COUNT
= 0x1086,
263 WID_HUT_UC_MGMT_FRAME_LEN
= 0x1088,
264 WID_HUT_BC_MGMT_FRAME_LEN
= 0x1089,
266 /* Custom Short WID list */
268 WID_CCA_BUSY_STATUS
= 0x1100,
270 /* EMAC Integer WID list */
271 WID_FAILED_COUNT
= 0x2000,
272 WID_RETRY_COUNT
= 0x2001,
273 WID_MULTIPLE_RETRY_COUNT
= 0x2002,
274 WID_FRAME_DUPLICATE_COUNT
= 0x2003,
275 WID_ACK_FAILURE_COUNT
= 0x2004,
276 WID_RECEIVED_FRAGMENT_COUNT
= 0x2005,
277 WID_MCAST_RECEIVED_FRAME_COUNT
= 0x2006,
278 WID_FCS_ERROR_COUNT
= 0x2007,
279 WID_SUCCESS_FRAME_COUNT
= 0x2008,
280 WID_PHY_TEST_PKT_CNT
= 0x2009,
281 WID_HUT_TX_COUNT
= 0x200A,
282 WID_TX_FRAGMENT_COUNT
= 0x200B,
283 WID_TX_MULTICAST_FRAME_COUNT
= 0x200C,
284 WID_RTS_SUCCESS_COUNT
= 0x200D,
285 WID_RTS_FAILURE_COUNT
= 0x200E,
286 WID_WEP_UNDECRYPTABLE_COUNT
= 0x200F,
287 WID_REKEY_PERIOD
= 0x2010,
288 WID_REKEY_PACKET_COUNT
= 0x2011,
289 WID_1X_SERV_ADDR
= 0x2012,
290 WID_STACK_IP_ADDR
= 0x2013,
291 WID_STACK_NETMASK_ADDR
= 0x2014,
292 WID_HW_RX_COUNT
= 0x2015,
293 WID_MEMORY_ADDRESS
= 0x201E,
294 WID_MEMORY_ACCESS_32BIT
= 0x201F,
295 WID_RF_REG_VAL
= 0x2021,
296 WID_FIRMWARE_INFO
= 0x2023,
297 WID_DEV_OS_VERSION
= 0x2025,
298 WID_ROAM_RSSI_THESHOLDS
= 0x2070,
299 WID_TRACK_INTERVAL_SEC
= 0x2071,
300 WID_FHSS_HOPPING_PARAMS
= 0x2072,
301 WID_FHSS_HOP_DWELL_TIME
= 0x2073,
303 /* NMAC Integer WID list */
304 WID_11N_PHY_ACTIVE_REG_VAL
= 0x2080,
305 WID_HUT_NUM_TX_PKTS
= 0x2081,
306 WID_HUT_TX_TIME_TAKEN
= 0x2082,
307 WID_HUT_TX_TEST_TIME
= 0x2083,
308 WID_HUT_LOG_INTERVAL
= 0x2084,
310 /* EMAC String WID list */
312 WID_FIRMWARE_VERSION
= 0x3001,
313 WID_OPERATIONAL_RATE_SET
= 0x3002,
316 WID_WEP_KEY_VALUE0
= 0x3004,
318 WID_11I_PSK
= 0x3008,
319 WID_11E_P_ACTION_REQ
= 0x3009,
321 WID_HARDWARE_VERSION
= 0x300B,
322 WID_MAC_ADDR
= 0x300C,
323 WID_HUT_DEST_ADDR
= 0x300D,
324 /*WID_HUT_STATS = 0x300E,*/
325 WID_PHY_VERSION
= 0x300F,
326 WID_SUPP_USERNAME
= 0x3010,
327 WID_SUPP_PASSWORD
= 0x3011,
328 WID_SITE_SURVEY_RESULTS
= 0x3012,
329 WID_RX_POWER_LEVEL
= 0x3013,
330 WID_MANUFACTURER
= 0x3026, /*Added for CAPI tool */
331 WID_MODEL_NAME
= 0x3027, /*Added for CAPI tool */
332 WID_MODEL_NUM
= 0x3028, /*Added for CAPI tool */
333 WID_DEVICE_NAME
= 0x3029, /*Added for CAPI tool */
335 WID_ASSOC_RES_INFO
= 0x3020,
337 /* NMAC String WID list */
338 WID_11N_P_ACTION_REQ
= 0x3080,
339 WID_HUT_TEST_ID
= 0x3081,
340 WID_PMKID_INFO
= 0x3082,
342 /* Custom String WID list */
343 WID_FLASH_DATA
= 0x3100,
344 WID_EEPROM_DATA
= 0x3101,
345 WID_SERIAL_NUMBER
= 0x3102,
347 /* EMAC Binary WID list */
348 WID_UAPSD_CONFIG
= 0x4001,
349 WID_UAPSD_STATUS
= 0x4002,
350 WID_AC_PARAMS_AP
= 0x4003,
351 WID_AC_PARAMS_STA
= 0x4004,
352 WID_NEWORK_INFO
= 0x4005,
353 WID_WPS_CRED_LIST
= 0x4006,
354 WID_PRIM_DEV_TYPE
= 0x4007,
355 WID_STA_JOIN_INFO
= 0x4008,
356 WID_CONNECTED_STA_LIST
= 0x4009,
358 /* NMAC Binary WID list */
359 WID_11N_AUTORATE_TABLE
= 0x4080,
360 WID_HUT_TX_PATTERN
= 0x4081,
361 WID_HUT_STATS
= 0x4082,
362 WID_HUT_LOG_STATS
= 0x4083,
364 /*BugID_3746 WID to add IE to be added in next probe request*/
365 WID_INFO_ELEMENT_PROBE
= 0x4085,
366 /*BugID_3746 WID to add IE to be added in next associate request*/
367 WID_INFO_ELEMENT_ASSOCIATE
= 0x4086,
369 /* Miscellaneous WIDs */
375 /* Status Codes for Authentication and Association Frames */
377 SUCCESSFUL_STATUSCODE
= 0,
388 SHORT_PREAMBLE_UNSUP
= 19,
390 CHANNEL_AGIL_UNSUP
= 21,
391 SHORT_SLOT_UNSUP
= 25,
392 OFDM_DSSS_UNSUP
= 26,
393 CONNECT_STS_FORCE_16_BIT
= 0xFFFF
398 tenuWIDtype enuWIDtype
;
399 WILC_Sint32 s32ValueSize
;
400 WILC_Sint8
*ps8WidVal
;
407 WILC_Sint8 as8RSSI
[NUM_RSSI
];
409 /* This structure is used to support parsing of the received 'N' message */
413 u8 au8ssid
[MAX_SSID_LEN
];
419 unsigned long u32TimeRcvdInScanCached
; /* of type unsigned long to be accepted by the linux kernel macro time_after() */
420 unsigned long u32TimeRcvdInScan
;
421 WILC_Bool bNewNetwork
;
426 u32 u32Tsf
; /* time-stamp [Low only 32 bit] */
432 WILC_Uint64 u64Tsf
; /* time-stamp [Low and High 64 bit] */
435 /* This structure is used to support parsing of the received Association Response frame */
438 u16 u16ConnectStatus
;
442 } tstrConnectRespInfo
;
451 u16 u16ConnectStatus
;
460 } tstrDisconnectNotifInfo
;
462 #ifndef CONNECT_DIRECT
463 typedef struct wid_site_survey_reslts
{
464 WILC_Char SSID
[MAX_SSID_LEN
];
472 } wid_site_survey_reslts_s
;
475 extern WILC_Sint32
CoreConfiguratorInit(void);
476 extern WILC_Sint32
CoreConfiguratorDeInit(void);
478 extern WILC_Sint32
SendConfigPkt(u8 u8Mode
, tstrWID
*pstrWIDs
,
479 u32 u32WIDsCount
, WILC_Bool bRespRequired
, u32 drvHandler
);
480 extern WILC_Sint32
ParseNetworkInfo(u8
*pu8MsgBuffer
, tstrNetworkInfo
**ppstrNetworkInfo
);
481 extern WILC_Sint32
DeallocateNetworkInfo(tstrNetworkInfo
*pstrNetworkInfo
);
483 extern WILC_Sint32
ParseAssocRespInfo(u8
*pu8Buffer
, u32 u32BufferLen
,
484 tstrConnectRespInfo
**ppstrConnectRespInfo
);
485 extern WILC_Sint32
DeallocateAssocRespInfo(tstrConnectRespInfo
*pstrConnectRespInfo
);
487 #ifndef CONNECT_DIRECT
488 extern WILC_Sint32
ParseSurveyResults(u8 ppu8RcvdSiteSurveyResults
[][MAX_SURVEY_RESULT_FRAG_SIZE
],
489 wid_site_survey_reslts_s
**ppstrSurveyResults
, u32
*pu32SurveyResultsCount
);
490 extern WILC_Sint32
DeallocateSurveyResults(wid_site_survey_reslts_s
*pstrSurveyResults
);
493 extern WILC_Sint32
SendRawPacket(WILC_Sint8
*pspacket
, WILC_Sint32 s32PacketLen
);
494 extern void NetworkInfoReceived(u8
*pu8Buffer
, u32 u32Length
);
495 void GnrlAsyncInfoReceived(u8
*pu8Buffer
, u32 u32Length
);
496 void host_int_ScanCompleteReceived(u8
*pu8Buffer
, u32 u32Length
);