• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  * Description: driver_soc_common.header
15  */
16 
17 #ifndef __DRIVER_SOC_COMMON_H__
18 #define __DRIVER_SOC_COMMON_H__
19 
20 /*****************************************************************************
21   1 Other header files included
22 *****************************************************************************/
23 #include "wifi_api.h"
24 #ifdef CONFIG_MESH
25 #include "soc_wifi_mesh_api.h"
26 #endif /* LOS_CONFIG_MESH */
27 
28 #ifdef __cplusplus
29 #if __cplusplus
30 extern "C" {
31 #endif
32 #endif
33 
34 /*****************************************************************************
35   2 Basic data type definitions
36 *****************************************************************************/
37 typedef char int8;
38 typedef signed short int16;
39 typedef signed int int32;
40 typedef unsigned char uint8;
41 typedef unsigned short uint16;
42 typedef unsigned int uint32;
43 
44 /*******************************************************************************
45 	Uncertain length, 32bits on 32-bit machine, 64bits on 64-bit machine
46 *******************************************************************************/
47 typedef signed long long int64;
48 typedef unsigned long long uint64;
49 
50 /*****************************************************************************
51   3 Macro definition
52 *****************************************************************************/
53 #define OAL_STATIC static
54 #define OAL_VOLATILE volatile
55 #ifdef INLINE_TO_FORCEINLINE
56 #define OAL_INLINE __forceinline
57 #else
58 #define OAL_INLINE inline
59 #endif
60 
61 #define EXT_SUCC 0
62 #define EXT_EFAIL  1
63 #define EXT_EINVAL 22
64 
65 #ifndef ETH_ADDR_LEN
66 #define ETH_ADDR_LEN 6
67 #endif
68 
69 #ifndef MAX_SSID_LEN
70 #define MAX_SSID_LEN 32
71 #endif
72 
73 #ifndef EXT_MAX_NR_CIPHER_SUITES
74 #define EXT_MAX_NR_CIPHER_SUITES 5
75 #endif
76 
77 #ifndef IFNAMSIZ
78 #define IFNAMSIZ 16
79 #endif
80 
81 #ifndef EXT_MAX_NR_AKM_SUITES
82 #define EXT_MAX_NR_AKM_SUITES 2
83 #endif
84 
85 #ifndef	EXT_PTR_NULL
86 #define	EXT_PTR_NULL NULL
87 #endif
88 
89 #ifndef	SCAN_AP_LIMIT
90 #define	SCAN_AP_LIMIT 64
91 #endif
92 
93 #ifndef   NETDEV_UP
94 #define   NETDEV_UP   0x0001
95 #endif
96 #ifndef   NETDEV_DOWN
97 #define   NETDEV_DOWN 0x0002
98 #endif
99 
100 #ifndef   NOTIFY_DONE
101 #define   NOTIFY_DONE 0x0000
102 #endif
103 
104 #ifdef _PRE_WLAN_FEATURE_REKEY_OFFLOAD
105 #define EXT_REKEY_OFFLOAD_KCK_LEN            16
106 #define EXT_REKEY_OFFLOAD_KEK_LEN            16
107 #define EXT_REKEY_OFFLOAD_REPLAY_COUNTER_LEN 8
108 #endif
109 /*****************************************************************************
110   4 Enum definition
111 *****************************************************************************/
112 typedef enum {
113 	EXT_FALSE = 0,
114 	EXT_TRUE = 1,
115 
116 	EXT_BUTT
117 } ext_bool_enum;
118 typedef uint8 ext_bool_enum_uint8;
119 
120 #define EXT_KEYTYPE_DEFAULT_INVALID (-1)
121 typedef uint8 ext_iftype_enum_uint8;
122 
123 typedef enum {
124 	EXT_KEYTYPE_GROUP,
125 	EXT_KEYTYPE_PAIRWISE,
126 	EXT_KEYTYPE_PEERKEY,
127 
128 	NUM_EXT_KEYTYPES
129 } ext_key_type_enum;
130 typedef uint8 ext_key_type_enum_uint8;
131 
132 typedef enum {
133 	EXT_KEY_DEFAULT_TYPE_INVALID,
134 	EXT_KEY_DEFAULT_TYPE_UNICAST,
135 	EXT_KEY_DEFAULT_TYPE_MULTICAST,
136 
137 	NUM_EXT_KEY_DEFAULT_TYPES
138 } ext_key_default_types_enum;
139 typedef uint8 ext_key_default_types_enum_uint8;
140 
141 typedef enum {
142 	EXT_NO_SSID_HIDING,
143 	EXT_HIDDEN_SSID_ZERO_LEN,
144 	EXT_HIDDEN_SSID_ZERO_CONTENTS
145 } ext_hidden_ssid_enum;
146 typedef uint8 ext_hidden_ssid_enum_uint8;
147 
148 typedef enum {
149 	EXT_IOCTL_SET_AP = 0,
150 	EXT_IOCTL_NEW_KEY,
151 	EXT_IOCTL_DEL_KEY,
152 	EXT_IOCTL_SET_KEY,
153 	EXT_IOCTL_SEND_MLME,
154 	EXT_IOCTL_SEND_EAPOL,
155 	EXT_IOCTL_RECEIVE_EAPOL,
156 	EXT_IOCTL_ENALBE_EAPOL,
157 	EXT_IOCTL_DISABLE_EAPOL,
158 	HIIS_IOCTL_GET_ADDR,
159 	EXT_IOCTL_SET_MODE,
160 	EXT_IOCTL_GET_MODE,
161 	EXT_IOCTL_DEL_BEACON,
162 	HIIS_IOCTL_GET_HW_FEATURE,
163 	EXT_IOCTL_SCAN,
164 	EXT_IOCTL_DISCONNET,
165 	EXT_IOCTL_ASSOC,
166 	EXT_IOCTL_SET_NETDEV,
167 	EXT_IOCTL_CHANGE_BEACON,
168 	EXT_IOCTL_SET_REKEY_INFO,
169  	EXT_IOCTL_STA_REMOVE,
170 	EXT_IOCTL_SEND_ACTION,
171 	EXT_IOCTL_SET_MESH_USER,
172 	EXT_IOCTL_SET_MESH_GTK,
173 	EXT_IOCTL_EN_ACCEPT_PEER,
174 	EXT_IOCTL_EN_ACCEPT_STA,
175 	EXT_IOCTL_ADD_IF,
176 	EXT_IOCTL_PROBE_REQUEST_REPORT,
177 	EXT_IOCTL_REMAIN_ON_CHANNEL,
178 	EXT_IOCTL_CANCEL_REMAIN_ON_CHANNEL,
179 	EXT_IOCTL_SET_P2P_NOA,
180 	EXT_IOCTL_SET_P2P_POWERSAVE,
181 	EXT_IOCTL_SET_AP_WPS_P2P_IE,
182 	EXT_IOCTL_REMOVE_IF,
183 	EXT_IOCTL_GET_P2P_MAC_ADDR,
184 	EXT_IOCTL_GET_DRIVER_FLAGS,
185 	EXT_IOCTL_SET_USR_APP_IE,
186 	EXT_IOCTL_DELAY_REPORT,
187 	EXT_IOCTL_SEND_EXT_AUTH_STATUS,
188 	EXT_IOCTL_ADD_PMKID,
189 	EXT_IOCTL_DEL_PMKID,
190 	EXT_IOCTL_FLUSH_PMKID,
191 	EXT_IOCTL_GET_SURVEY,
192 	EXT_IOCTL_UPDATE_FT_IES,
193 	EXT_IOCTL_SET_CSI_CONFIG,
194 	EXT_IOCTL_CSI_SWITCH,
195 	EXT_IOCTL_UPDATE_DH_IE,
196 	EXT_IOCTL_WIFI_APP_SERVICE,
197 	HWAL_EVENT_BUTT
198 } ext_event_enum;
199 typedef uint8 ext_event_enum_uint8;
200 
201 typedef enum {
202 	EXT_ELOOP_EVENT_NEW_STA = 0,
203 	EXT_ELOOP_EVENT_DEL_STA,
204 	EXT_ELOOP_EVENT_RX_MGMT,
205 	EXT_ELOOP_EVENT_TX_STATUS,
206 	EXT_ELOOP_EVENT_SCAN_DONE,
207 	EXT_ELOOP_EVENT_SCAN_RESULT,
208 	EXT_ELOOP_EVENT_CONNECT_RESULT,
209 	EXT_ELOOP_EVENT_DISCONNECT,
210 	EXT_ELOOP_EVENT_MESH_CLOSE,
211 	EXT_ELOOP_EVENT_REMAIN_ON_CHANNEL,
212 	EXT_ELOOP_EVENT_CANCEL_REMAIN_ON_CHANNEL,
213 	EXT_ELOOP_EVENT_CHANNEL_SWITCH,
214 	EXT_ELOOP_EVENT_TIMEOUT_DISCONN,
215 	EXT_ELOOP_EVENT_EXTERNAL_AUTH,
216 	EXT_ELOOP_EVENT_FT_RESPONSE,
217 	EXT_ELOOP_EVENT_RX_CSI,
218 	EXT_ELOOP_EVENT_OWE_INFO,
219 	EXT_ELOOP_EVENT_BUTT
220 } ext_eloop_event_enum;
221 typedef uint8 ext_eloop_event_enum_uint8;
222 
223 /**
224  * Action to perform with external authentication request.
225  * @EXT_EXTERNAL_AUTH_START: Start the authentication.
226  * @EXT_EXTERNAL_AUTH_ABORT: Abort the ongoing authentication.
227  */
228 typedef enum {
229     EXT_EXTERNAL_AUTH_START,
230     EXT_EXTERNAL_AUTH_ABORT,
231 
232     EXT_EXTERNAL_AUTH_BUTT,
233 } ext_external_auth_action_enum;
234 typedef uint8 ext_external_auth_action_enum_uint8;
235 
236 typedef enum {
237 	EXT_MFP_NO,
238 	EXT_MFP_OPTIONAL,
239 	EXT_MFP_REQUIRED,
240 } ext_mfp_enum;
241 typedef uint8 ext_mfp_enum_uint8;
242 typedef uint8 ext_mesh_plink_state_enum_uint8;
243 typedef enum {
244 	EXT_AUTHTYPE_OPEN_SYSTEM = 0,
245 	EXT_AUTHTYPE_SHARED_KEY,
246 	EXT_AUTHTYPE_FT,
247 	EXT_AUTHTYPE_SAE,
248 	EXT_AUTHTYPE_NETWORK_EAP,
249 	/* keep last */
250 	EXT_AUTHTYPE_NUM,
251 	EXT_AUTHTYPE_MAX = (uint32)EXT_AUTHTYPE_NUM - 1,
252 	EXT_AUTHTYPE_AUTOMATIC,
253 	EXT_AUTHTYPE_BUTT
254 } ext_auth_type_enum;
255 typedef uint8 ext_auth_type_enum_uint8;
256 
257 typedef enum {
258 	EXT_SCAN_SUCCESS,
259 	EXT_SCAN_FAILED,
260 	EXT_SCAN_REFUSED,
261 	EXT_SCAN_TIMEOUT
262 } ext_scan_status_enum;
263 
264 /*****************************************************************************
265   5 STRUCT definition
266 *****************************************************************************/
267 typedef struct {
268 	ext_scan_status_enum scan_status;
269 } ext_driver_scan_status_stru;
270 
271 typedef struct {
272 	uint8 set;  // 0: del, 1: add
273 	wifi_extend_ie_index ie_index;
274 	uint8 bitmap;
275 	uint16 ie_len;
276 	uint8 *ie;
277 } ext_usr_app_ie_stru;
278 
279 typedef struct {
280 	unsigned int cmd;
281 	const void *buf;
282 } ext_ioctl_command_stru;
283 typedef int32 (*ext_send_event_cb)(const char*, signed int, const unsigned char *, unsigned int);
284 
285 typedef struct {
286 	int32  reassoc;
287 	size_t ielen;
288 	uint8  *ie;
289 	uint8  macaddr[ETH_ADDR_LEN];
290 	uint8  resv[2];
291 } ext_new_sta_info_stru;
292 
293 typedef struct {
294 	uint8  *buf;
295 	uint32 len;
296 	int32  sig_mbm;
297 	int32  freq;
298 } ext_rx_mgmt_stru;
299 
300 typedef struct {
301 	uint8                *buf;
302 	uint32               len;
303 	ext_bool_enum_uint8 ack;
304 	uint8                resv[3];
305 } ext_tx_status_stru;
306 
307 typedef struct {
308 	uint32 freq;
309 	size_t data_len;
310 	uint8  *data;
311 	uint64 *send_action_cookie;
312 } ext_mlme_data_stru;
313 
314 typedef struct {
315 	size_t head_len;
316 	size_t tail_len;
317 	uint8 *head;
318 	uint8 *tail;
319 } ext_beacon_data_stru;
320 
321 typedef struct {
322 	uint8 *dst;
323 	uint8 *src;
324 	uint8 *bssid;
325 	uint8 *data;
326 	size_t data_len;
327 } ext_action_data_stru;
328 
329 typedef struct {
330 	uint8                            *addr;
331 	ext_mesh_plink_state_enum_uint8 plink_state;
332 	uint8                            set;
333 	uint8                            mesh_bcn_priority;
334 	uint8                            mesh_is_mbr;
335 	uint8                            mesh_initiative_peering;
336 } ext_mesh_usr_params_stru;
337 
338 typedef struct {
339 	uint8 enable_flag;
340 } ext_mesh_enable_flag_stru;
341 
342 typedef struct {
343 	uint8  enable;
344 	uint16 timeout;
345 	uint8  resv;
346 } ext_delay_report_stru;
347 
348 typedef struct {
349 	int32 mode;
350 	int32 freq;
351 	int32 channel;
352 
353 	/* for HT */
354 	int32 ht_enabled;
355 
356 	/* 0 = HT40 disabled, -1 = HT40 enabled,
357 	 * secondary channel below primary, 1 = HT40
358 	 * enabled, secondary channel above primary */
359 	int32 sec_channel_offset;
360 
361 	/* for VHT */
362 	int32 vht_enabled;
363 
364 	/* valid for both HT and VHT, center_freq2 is non-zero
365 	 * only for bandwidth 80 and an 80+80 channel */
366 	int32 center_freq1;
367 	int32 center_freq2;
368 	int32 bandwidth;
369 } ext_freq_params_stru;
370 
371 typedef struct {
372 	int32                             type;
373 	uint32                            key_idx;
374 	uint32                            key_len;
375 	uint32                            seq_len;
376 	uint32                            cipher;
377 	uint8                             *addr;
378 	uint8                             *key;
379 	uint8                             *seq;
380 	ext_bool_enum_uint8              def;
381 	ext_bool_enum_uint8              defmgmt;
382  	ext_key_default_types_enum_uint8 default_types;
383 	uint8                             resv;
384 } ext_key_ext_stru;
385 
386 typedef struct {
387 	ext_freq_params_stru       freq_params;
388 	ext_beacon_data_stru       beacon_data;
389 	size_t                      ssid_len;
390 	int32                       beacon_interval;
391 	int32                       dtim_period;
392 	uint8                       *ssid;
393 	ext_hidden_ssid_enum_uint8 hidden_ssid;
394 	ext_auth_type_enum_uint8   auth_type;
395 	size_t                      mesh_ssid_len;
396 	uint8                       *mesh_ssid;
397 	int32 sae_pwe;
398 } ext_ap_settings_stru;
399 
400 typedef struct {
401 	uint8                  bssid[ETH_ADDR_LEN];
402 	ext_iftype_enum_uint8 iftype;
403 	uint8                  resv;
404 } ext_set_mode_stru;
405 
406 typedef struct {
407 	const uint8 *puc_buf;
408 	uint32 ul_len;
409 } ext_tx_eapol_stru;
410 
411 typedef struct {
412 	uint8  *buf;
413 	uint32 len;
414 } ext_rx_eapol_stru;
415 
416 typedef struct {
417 	void *callback;
418 	void *contex;
419 } ext_enable_eapol_stru;
420 
421 typedef struct {
422 	uint16 channel;
423 	uint8  resv[2];
424 	uint32 freq;
425 	uint32 flags;
426 } ext_ieee80211_channel_stru;
427 
428 typedef struct {
429 	int32                       channel_num;
430 	uint16                      bitrate[12];
431 	uint16                      ht_capab;
432 	uint8                       resv[2];
433 	ext_ieee80211_channel_stru iee80211_channel[14];
434 } ext_hw_feature_data_stru;
435 
436 #ifdef CONFIG_ACS
437 enum nl80211_band {
438     NL80211_BAND_2GHZ,
439     NL80211_BAND_5GHZ,
440 };
441 
442 enum ieee80211_band {
443     IEEE80211_BAND_2GHZ = (uint32)NL80211_BAND_2GHZ,
444     IEEE80211_BAND_5GHZ = (uint32)NL80211_BAND_5GHZ,
445 
446     /* keep last */
447     IEEE80211_NUM_BANDS
448 };
449 
450 typedef struct ieee80211_channel {
451     enum ieee80211_band band;
452     uint16         center_freq;
453     uint16         hw_value;
454     uint32         flags;
455     int32          max_antenna_gain;
456     int32          max_power;
457     bool           beacon_found;
458     uint8          resv[3];
459     uint32         orig_flags;
460     int32          orig_mag;
461     int32          orig_mpwr;
462 } oal_ieee80211_channel_stru;
463 typedef struct ieee80211_channel            oal_ieee80211_channel;
464 
465 typedef struct survey_info {
466     oal_ieee80211_channel *channel;
467     uint64 channel_time;
468     uint64 channel_time_busy;
469     uint64 channel_time_ext_busy;
470     uint64 channel_time_rx;
471     uint64 channel_time_tx;
472     uint32 filled;
473     int8   noise;
474 } oal_survey_info_stru;
475 
476 typedef struct {
477 	uint32 ifidx;
478 	void (*add_survey)(void *sinfo, uint32 ifidx, void *survey_results);
479 	void *survey_results;
480 } ext_survey_results_stru;
481 #endif
482 
483 #ifdef CONFIG_IEEE80211R
484 typedef struct {
485     uint8 *ies;
486     size_t ies_len;
487     uint8 target_ap[ETH_ADDR_LEN];
488     uint8 resv[2];
489     uint8 *ric_ies;
490     size_t ric_ies_len;
491 } ext_ft_event_stru;
492 
493 typedef struct {
494     uint16 md;
495     const uint8 *ie;
496     uint16 ie_len;
497 } ext_ft_ies_stru;
498 #endif /* CONFIG_IEEE80211R */
499 
500 typedef struct {
501 	uint8  ssid[MAX_SSID_LEN];
502 	size_t ssid_len;
503 } ext_driver_scan_ssid_stru;
504 
505 typedef struct {
506 	ext_driver_scan_ssid_stru *ssids;
507 	int32                      *freqs;
508 	uint8                      *extra_ies;
509 	uint8                      *bssid;
510 	uint8                      num_ssids;
511 	uint8                      num_freqs;
512 	uint8                      prefix_ssid_scan_flag;
513 	uint8                      fast_connect_flag;
514 	int32                      extra_ies_len;
515 	uint32                     acs_scan_flag;
516 } ext_scan_stru;
517 
518 typedef struct {
519 	uint32 freq;
520 	uint32 duration;
521 } ext_on_channel_stru;
522 
523 typedef struct {
524 	uint8 type;
525 } ext_if_add_stru;
526 
527 typedef struct {
528 	int32 start;
529 	int32 duration;
530 	uint8 count;
531 	uint8 resv[3];
532 } ext_p2p_noa_stru;
533 
534 typedef struct {
535 	int32 legacy_ps;
536 	int8  opp_ps;
537 	uint8 ctwindow;
538 	int8  resv[2];
539 } ext_p2p_power_save_stru;
540 
541 typedef struct {
542 	uint8 ifname[IFNAMSIZ];
543 } ext_if_remove_stru;
544 
545 typedef struct {
546 	uint8 type;
547 	uint8 mac_addr[ETH_ADDR_LEN];
548 	uint8 resv;
549 } ext_get_p2p_addr_stru;
550 typedef struct {
551 	ext_wifi_iftype iftype;
552 	uint8          *mac_addr;
553 } ext_iftype_mac_addr_stru;
554 typedef struct {
555 	uint64 drv_flags;
556 } ext_get_drv_flags_stru;
557 
558 typedef struct {
559 	int32 freq;
560 } ext_ch_switch_stru;
561 
562 /* The driver reports an event to trigger WPA to start SAE authentication. */
563 typedef struct {
564 	ext_external_auth_action_enum auth_action;
565 	uint8 bssid[ETH_ADDR_LEN];
566 	uint8 *ssid;
567 	uint32 ssid_len;
568 	uint32 key_mgmt_suite;
569 	uint16 status;
570 	uint8 *pmkid;
571 } ext_external_auth_stru;
572 
573 typedef struct {
574 	uint8 peer[ETH_ADDR_LEN];
575 	uint16 status;
576 	uint8 *ie;
577 	uint32 ie_len;
578 } ext_update_dh_ie_stru;
579 
580 typedef struct {
581 	uint32 wpa_versions;
582 	uint32 cipher_group;
583 	int32  n_ciphers_pairwise;
584 	uint32 ciphers_pairwise[EXT_MAX_NR_CIPHER_SUITES];
585 	int32  n_akm_suites;
586 	uint32 akm_suites[EXT_MAX_NR_AKM_SUITES];
587 	int32 sae_pwe;
588 } ext_crypto_settings_stru;
589 
590 typedef struct {
591 	uint8                     *bssid;
592 	uint8                     *ssid;
593 	uint8                     *ie;
594 	uint8                     *key;
595 	uint8                     auth_type;
596 	uint8                     privacy;
597 	uint8                     key_len;
598 	uint8                     key_idx;
599 	uint8                     mfp;
600 	uint8                     auto_conn;
601 	uint8                     rsv[2];    /* 2: reserve 2 bytes */
602 	uint32                    freq;
603 	uint32                    ssid_len;
604 	uint32                    ie_len;
605 	ext_crypto_settings_stru *crypto;
606 } ext_associate_params_stru;
607 
608 typedef struct {
609 	uint8  *req_ie;
610 	size_t req_ie_len;
611 	uint8  *resp_ie;
612 	size_t resp_ie_len;
613 	uint8  bssid[ETH_ADDR_LEN];
614 	uint8  rsv[2];
615 	uint16 status;
616 	uint16 freq;
617 } ext_connect_result_stru;
618 
619 typedef struct {
620 	int32  flags;
621 	uint8  bssid[ETH_ADDR_LEN];
622 	int16  caps;
623 	int32  freq;
624 #ifndef EXT_SCAN_SIZE_CROP
625 	int16  beacon_int;
626 	int32  qual;
627 	uint32 beacon_ie_len;
628 #endif /* EXT_SCAN_SIZE_CROP */
629 	int32  level;
630 	uint32 age;
631 	uint32 ie_len;
632 	uint8  *variable;
633 } ext_scan_result_stru;
634 
635 typedef struct {
636 	uint8  *ie;
637 	uint16 reason;
638 	uint8  rsv[2];
639 	uint32 ie_len;
640 } ext_disconnect_stru;
641 #ifdef CONFIG_WPS_AP
642 typedef struct _ext_app_ie_stru {
643 	uint32 ie_len;
644 	uint8  app_ie_type;
645 	uint8  rsv[3];
646 	uint8  *ie;
647 } ext_app_ie_stru;
648 #endif
649 
650 #ifdef _PRE_WLAN_FEATURE_REKEY_OFFLOAD
651 typedef struct {
652 	uint8 kck[EXT_REKEY_OFFLOAD_KCK_LEN];
653 	uint8 kek[EXT_REKEY_OFFLOAD_KEK_LEN];
654 	uint8 replay_ctr[EXT_REKEY_OFFLOAD_REPLAY_COUNTER_LEN];
655 } ext_rekey_offload_stru;
656 #endif
657 
658 typedef struct {
659 	uint8 peer_addr[ETH_ADDR_LEN];
660 	uint8 mesh_bcn_priority;
661 	uint8 mesh_is_mbr;
662 	int8  rssi;
663 	int8  reserved[3];
664 } ext_mesh_new_peer_candidate_stru;
665 
666 typedef struct {
667 	uint8 bssid[ETH_ADDR_LEN];
668 	uint8 rsv[2];
669 	uint8 *pmkid;
670 } ext_pmkid_params;
671 
672 
673 /*****************************************************************************
674   6 Function declaration
675 *****************************************************************************/
676 extern int32 drv_soc_register_send_event_cb(ext_send_event_cb func);
677 extern int32 drv_soc_hwal_wpa_ioctl(int8 *ifname, const ext_ioctl_command_stru *cmd);
678 #ifdef __cplusplus
679 #if __cplusplus
680 }
681 #endif
682 #endif
683 #endif /* end of driver_soc_common.h */
684