www.pudn.com > CEWifiDriverAR6000-21374.zip > athdrv.h


//------------------------------------------------------------------------------ 
//  
//    Copyright (c) 2006 Microsoft Corporation.  All rights reserved. 
//    Copyright (c) 2006 Atheros Corporation.  All rights reserved. 
// 
//    The use and distribution terms for this software are covered by the 
//    Microsoft Limited Permissive License (Ms-LPL)  
//    http://www.microsoft.com/resources/sharedsource/licensingbasics/limitedpermissivelicense.mspx  
//    which can be found in the file MS-LPL.txt at the root of this distribution. 
//    By using this software in any fashion, you are agreeing to be bound by 
//    the terms of this license. 
// 
//    The software is licensed “as-is.”  
//    You must not remove this notice, or any other, from this software. 
//  
//  
//  
//    Windows CE Wifi Driver for AR-6000 
//  
//------------------------------------------------------------------------------ 
//============================================================================== 
//This file contains the definitions for the AR6000 driver. 
// 
// Author(s): ="Atheros" 
//============================================================================== 
 
 
#ifndef _ATHDRV_H_ 
#define _ATHDRV_H_ 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
#ifdef __linux__ 
/* 
 * There are two types of ioctl's here: Standard ioctls and 
 * eXtended ioctls.  All extended ioctls (XIOCTL) are multiplexed 
 * off of the single ioctl command, AR6000_IOCTL_EXTENDED.  The 
 * arguments for every XIOCTL starts with a 32-bit command word 
 * that is used to select which extended ioctl is in use.  After 
 * the command word are command-specific arguments. 
 */ 
 
/* Linux standard Wireless Extensions, private ioctl interfaces */ 
#define IEEE80211_IOCTL_SETPARAM             (SIOCIWFIRSTPRIV+0) 
#define IEEE80211_IOCTL_GETPARAM             (SIOCIWFIRSTPRIV+1) 
#define IEEE80211_IOCTL_SETKEY               (SIOCIWFIRSTPRIV+2) 
#define IEEE80211_IOCTL_SETWMMPARAMS         (SIOCIWFIRSTPRIV+3) 
#define IEEE80211_IOCTL_DELKEY               (SIOCIWFIRSTPRIV+4) 
#define IEEE80211_IOCTL_GETWMMPARAMS         (SIOCIWFIRSTPRIV+5) 
#define IEEE80211_IOCTL_SETMLME              (SIOCIWFIRSTPRIV+6) 
#define IEEE80211_IOCTL_SETOPTIE             (SIOCIWFIRSTPRIV+6) 
#define IEEE80211_IOCTL_GETOPTIE             (SIOCIWFIRSTPRIV+7) 
#define IEEE80211_IOCTL_ADDPMKID             (SIOCIWFIRSTPRIV+8) 
//#define IEEE80211_IOCTL_SETAUTHALG           (SIOCIWFIRSTPRIV+10) 
#define IEEE80211_IOCTL_LASTONE              (SIOCIWFIRSTPRIV+9) 
 
 
 
/*                      ====WMI Ioctls====                                    */ 
/* 
 *  
 * Many ioctls simply provide WMI services to application code: 
 * an application makes such an ioctl call with a set of arguments 
 * that are packaged into the corresponding WMI message, and sent 
 * to the Target. 
 */ 
 
#define AR6000_IOCTL_WMI_GETREV              (SIOCIWFIRSTPRIV+10) 
/* 
 * arguments: 
 *   ar6000_version *revision 
 */ 
 
#define AR6000_IOCTL_WMI_SETPWR              (SIOCIWFIRSTPRIV+11) 
/* 
 * arguments: 
 *   WMI_POWER_MODE_CMD pwrModeCmd (see include/wmi.h) 
 * uses: WMI_SET_POWER_MODE_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SETSCAN             (SIOCIWFIRSTPRIV+12) 
/* 
 * arguments: 
 *   WMI_SCAN_PARAMS_CMD scanParams (see include/wmi.h) 
 * uses: WMI_SET_SCAN_PARAMS_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SETLISTENINT        (SIOCIWFIRSTPRIV+13) 
/* 
 * arguments: 
 *   UINT32 listenInterval 
 * uses: WMI_SET_LISTEN_INT_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SETBSSFILTER        (SIOCIWFIRSTPRIV+14) 
/* 
 * arguments: 
 *   WMI_BSS_FILTER filter (see include/wmi.h) 
 * uses: WMI_SET_BSS_FILTER_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_CHANNELPARAMS   (SIOCIWFIRSTPRIV+16) 
/* 
 * arguments: 
 *   WMI_CHANNEL_PARAMS_CMD chParams 
 * uses: WMI_SET_CHANNEL_PARAMS_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_PROBEDSSID      (SIOCIWFIRSTPRIV+17) 
/* 
 * arguments: 
 *   WMI_PROBED_SSID_CMD probedSsids (see include/wmi.h) 
 * uses: WMI_SETPROBED_SSID_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_PMPARAMS        (SIOCIWFIRSTPRIV+18) 
/* 
 * arguments: 
 *   WMI_POWER_PARAMS_CMD powerParams (see include/wmi.h) 
 * uses: WMI_SET_POWER_PARAMS_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_BADAP           (SIOCIWFIRSTPRIV+19) 
/* 
 * arguments: 
 *   WMI_ADD_BAD_AP_CMD badAPs (see include/wmi.h) 
 * uses: WMI_ADD_BAD_AP_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_GET_QOS_QUEUE       (SIOCIWFIRSTPRIV+20) 
/* 
 * arguments: 
 *   ar6000_queuereq queueRequest (see below) 
 */ 
 
#define AR6000_IOCTL_WMI_CREATE_QOS          (SIOCIWFIRSTPRIV+21) 
/* 
 * arguments: 
 *   WMI_CREATE_PSTREAM createPstreamCmd (see include/wmi.h) 
 * uses: WMI_CREATE_PSTREAM_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_DELETE_QOS          (SIOCIWFIRSTPRIV+22) 
/* 
 * arguments: 
 *   WMI_DELETE_PSTREAM_CMD deletePstreamCmd (see include/wmi.h) 
 * uses: WMI_DELETE_PSTREAM_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_LINKTHRESHOLD   (SIOCIWFIRSTPRIV+23) 
/* 
 * arguments: 
 *   WMI_RSSI_THRESHOLD_PARAMS_CMD thresholdParams (see include/wmi.h) 
 * uses: WMI_RSSI_THRESHOLD_PARAMS_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_ERROR_REPORT_BITMASK (SIOCIWFIRSTPRIV+24) 
/* 
 * arguments: 
 *   WMI_TARGET_ERROR_REPORT_BITMASK errorReportBitMask (see include/wmi.h) 
 * uses: WMI_TARGET_ERROR_REPORT_BITMASK_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_GET_TARGET_STATS    (SIOCIWFIRSTPRIV+25) 
/* 
 * arguments: 
 *   TARGET_STATS *targetStats (see below) 
 * uses: WMI_GET_STATISTICS_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_ASSOC_INFO      (SIOCIWFIRSTPRIV+26) 
/* 
 * arguments: 
 *   WMI_SET_ASSOC_INFO_CMD setAssocInfoCmd 
 * uses: WMI_SET_ASSOC_INFO_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_ACCESS_PARAMS   (SIOCIWFIRSTPRIV+27) 
/* 
 * arguments: 
 *   WMI_SET_ACCESS_PARAMS_CMD setAccessParams (see include/wmi.h) 
 * uses: WMI_SET_ACCESS_PARAMS_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_BMISS_TIME      (SIOCIWFIRSTPRIV+28) 
/* 
 * arguments: 
 *   UINT32 beaconMissTime 
 * uses: WMI_SET_BMISS_TIME_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_DISC_TIMEOUT    (SIOCIWFIRSTPRIV+29) 
/* 
 * arguments: 
 *   WMI_DISC_TIMEOUT_CMD disconnectTimeoutCmd (see include/wmi.h) 
 * uses: WMI_SET_DISC_TIMEOUT_CMDID 
 */ 
 
#define AR6000_IOCTL_WMI_SET_IBSS_PM_CAPS    (SIOCIWFIRSTPRIV+30) 
/* 
 * arguments: 
 *   WMI_IBSS_PM_CAPS_CMD ibssPowerMgmtCapsCmd 
 * uses: WMI_SET_IBSS_PM_CAPS_CMDID 
 */ 
 
/* 
 * There is a very small space available for driver-private 
 * wireless ioctls.  In order to circumvent this limitation, 
 * we multiplex a bunch of ioctls (XIOCTLs) on top of a  
 * single AR6000_IOCTL_EXTENDED ioctl. 
 */ 
#define AR6000_IOCTL_EXTENDED                (SIOCIWFIRSTPRIV+31) 
 
 
/*                         ====BMI Extended Ioctls====                        */ 
 
#define AR6000_XIOCTL_BMI_DONE                 1 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_BMI_DONE) 
 * uses: BMI_DONE 
 */ 
 
#define AR6000_XIOCTL_BMI_READ_MEMORY          2 
/* 
 * arguments: 
 *   union { 
 *     struct { 
 *       UINT32 cmd (AR6000_XIOCTL_BMI_READ_MEMORY) 
 *       UINT32 address 
 *       UINT32 length 
 *     } 
 *     char results[length] 
 *   } 
 * uses: BMI_READ_MEMORY 
 */ 
 
#define AR6000_XIOCTL_BMI_WRITE_MEMORY         3 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_BMI_WRITE_MEMORY) 
 *   UINT32 address 
 *   UINT32 length 
 *   char data[length] 
 * uses: BMI_WRITE_MEMORY 
 */ 
 
#define AR6000_XIOCTL_BMI_EXECUTE              4 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_BMI_EXECUTE) 
 *   UINT32 TargetAddress 
 *   UINT32 parameter 
 * uses: BMI_EXECUTE 
 */ 
 
#define AR6000_XIOCTL_BMI_SET_APP_START        5 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_BMI_SET_APP_START) 
 *   UINT32 TargetAddress 
 * uses: BMI_SET_APP_START 
 */ 
 
#define AR6000_XIOCTL_BMI_READ_SOC_REGISTER    6 
/* 
 * arguments: 
 *   union { 
 *     struct { 
 *       UINT32 cmd (AR6000_XIOCTL_BMI_READ_SOC_REGISTER) 
 *       UINT32 TargetAddress, 32-bit aligned 
 *     } 
 *     UINT32 result 
 *   } 
 * uses: BMI_READ_SOC_REGISTER 
 */ 
 
#define AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER   7 
/* 
 * arguments: 
 *     struct { 
 *       UINT32 cmd (AR6000_XIOCTL_BMI_WRITE_SOC_REGISTER) 
 *       UINT32 TargetAddress, 32-bit aligned 
 *       UINT32 newValue 
 *     } 
 * uses: BMI_WRITE_SOC_REGISTER 
 */ 
 
#define AR6000_XIOCTL_BMI_TEST                 8 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_BMI_TEST) 
 *   UINT32 address 
 *   UINT32 length 
 *   UINT32 count 
 */ 
 
 
 
/*                      ====DataSet Extended Ioctls====                       */ 
 
#define AR6000_XIOCTL_WMI_DSET_WAIT_REQ        9 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_WMI_DSET_WAIT_REQ) 
 */ 
 
#define AR6000_XIOCTL_WMI_DSET_OPEN_REPLY     10 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_WMI_DSET_OPEN_REPLY) 
 *   dset_open_reply_t (see host/include/app/dset.h) 
 * uses: WMIX_DSETOPEN_REPLY_CMDID 
 */ 
 
#define AR6000_XIOCTL_WMI_DSET_DATA_REPLY     11 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_WMI_DSET_DATA_REPLY) 
 *   dset_data_reply_t (see host/include/app/dset.h) 
 * uses: WMIX_DSETDATA_REPLY_CMDID 
 */ 
 
#define AR6000_XIOCTL_FORCE_TARGET_RESET      12 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_FORCE_TARGET_RESET) 
 */ 
 
 
#ifdef HTC_RAW_INTERFACE 
/* HTC Raw Interface Ioctls */ 
#define AR6000_XIOCTL_HTC_RAW_OPEN            13 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_OPEN) 
 */ 
 
#define AR6000_XIOCTL_HTC_RAW_CLOSE           14 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_CLOSE) 
 */ 
 
#define AR6000_XIOCTL_HTC_RAW_READ            15 
/* 
 * arguments: 
 *   union { 
 *     struct { 
 *       UINT32 cmd (AR6000_XIOCTL_HTC_RAW_READ) 
 *       UINT32 mailboxID 
 *       UINT32 length 
 *     } 
 *     results[length] 
 *   }  
 */ 
 
#define AR6000_XIOCTL_HTC_RAW_WRITE           16 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_HTC_RAW_WRITE) 
 *   UINT32 mailboxID 
 *   UINT32 length 
 *   char buffer[length] 
 */ 
#endif /* HTC_RAW_INTERFACE */ 
 
#define AR6000_XIOCTL_CHECK_TARGET_READY      17 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_CHECK_TARGET_READY) 
 */ 
 
 
 
/*                ====GPIO (General Purpose I/O) Extended Ioctls====          */ 
 
#define AR6000_XIOCTL_GPIO_OUTPUT_SET         18 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_GPIO_OUTPUT_SET) 
 *   ar6000_gpio_output_set_cmd_s (see below) 
 * uses: WMIX_GPIO_OUTPUT_SET_CMDID 
 */ 
 
#define AR6000_XIOCTL_GPIO_INPUT_GET          19 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_GPIO_INPUT_GET) 
 * uses: WMIX_GPIO_INPUT_GET_CMDID 
 */ 
 
#define AR6000_XIOCTL_GPIO_REGISTER_SET       20 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_GPIO_REGISTER_SET) 
 *   ar6000_gpio_register_cmd_s (see below) 
 * uses: WMIX_GPIO_REGISTER_SET_CMDID 
 */ 
 
#define AR6000_XIOCTL_GPIO_REGISTER_GET       21 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_GPIO_REGISTER_GET) 
 *   ar6000_gpio_register_cmd_s (see below) 
 * uses: WMIX_GPIO_REGISTER_GET_CMDID 
 */ 
 
#define AR6000_XIOCTL_GPIO_INTR_ACK           22 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_GPIO_INTR_ACK) 
 *   ar6000_cpio_intr_ack_cmd_s (see below) 
 * uses: WMIX_GPIO_INTR_ACK_CMDID 
 */ 
 
#define AR6000_XIOCTL_GPIO_INTR_WAIT          23 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_GPIO_INTR_WAIT) 
 */ 
 
 
 
/*                    ====more wireless commands====                          */ 
 
#define AR6000_XIOCTL_SET_ADHOC_BSSID         24 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_SET_ADHOC_BSSID) 
 *   WMI_SET_ADHOC_BSSID_CMD setAdHocBssidCmd (see include/wmi.h) 
 */ 
 
#define AR6000_XIOCTL_SET_OPT_MODE            25 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_SET_OPT_MODE) 
 *   WMI_SET_OPT_MODE_CMD setOptModeCmd (see include/wmi.h) 
 * uses: WMI_SET_OPT_MODE_CMDID 
 */ 
 
#define AR6000_XIOCTL_OPT_SEND_FRAME          26 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_OPT_SEND_FRAME) 
 *   WMI_OPT_TX_FRAME_CMD optTxFrameCmd (see include/wmi.h) 
 * uses: WMI_OPT_TX_FRAME_CMDID 
 */ 
 
#define AR6000_XIOCTL_SET_ADHOC_BEACON_INTVAL 27 
/* 
 * arguments: 
 *   UINT32 cmd (AR6000_XIOCTL_SET_ADHOC_BEACON_INTVAL) 
 *   WMI_BEACON_INT_CMD beaconIntCmd (see include/wmi.h) 
 * uses: WMI_SET_BEACON_INT_CMDID 
 */ 
 
 
#define IEEE80211_IOCTL_SETAUTHALG           28 
 
 
 
 
 
/* used by AR6000_IOCTL_WMI_GETREV */ 
struct ar6000_version { 
    A_UINT32        host_ver; 
    A_UINT32        target_ver; 
}; 
 
/* used by AR6000_IOCTL_WMI_GET_QOS_QUEUE */ 
struct ar6000_queuereq{ 
    A_UINT8         trafficDirection; 
    A_UINT8         trafficClass; 
    A_INT8          queueNumber; 
}; 
 
/* used by AR6000_IOCTL_WMI_GET_TARGET_STATS */ 
typedef struct targetStats_t { 
    A_UINT64    tx_packets;            
    A_UINT64    tx_bytes;              
    A_UINT64    tx_unicast_pkts;       
    A_UINT64    tx_unicast_bytes;      
    A_UINT64    tx_multicast_pkts;     
    A_UINT64    tx_multicast_bytes;    
    A_UINT64    tx_broadcast_pkts;     
    A_UINT64    tx_broadcast_bytes;    
    A_UINT64    tx_rts_success_cnt; 
  
    A_UINT64    tx_errors;             
    A_UINT64    tx_failed_cnt; 
    A_UINT64    tx_retry_cnt; 
    A_UINT64    tx_rts_fail_cnt; 
    A_UINT64    rx_packets;            
    A_UINT64    rx_bytes;              
    A_UINT64    rx_unicast_pkts;       
    A_UINT64    rx_unicast_bytes;      
    A_UINT64    rx_multicast_pkts;     
    A_UINT64    rx_multicast_bytes;    
    A_UINT64    rx_broadcast_pkts;     
    A_UINT64    rx_broadcast_bytes;    
    A_UINT64    rx_fragment_pkt; 
  
    A_UINT64    rx_errors;             
    A_UINT64    rx_crcerr;             
    A_UINT64    rx_key_cache_miss;     
    A_UINT64    rx_decrypt_err;        
    A_UINT64    rx_duplicate_frames; 
 
    A_UINT64    tkip_local_mic_failure; 
    A_UINT64    tkip_counter_measures_invoked; 
    A_UINT64    tkip_replays; 
    A_UINT64    tkip_format_errors;  
    A_UINT64    ccmp_format_errors; 
    A_UINT64    ccmp_replays; 
 
    A_UINT64    power_save_failure_cnt; 
    A_INT16     noise_floor_calibation; 
 
    A_UINT64    cs_bmiss_cnt; 
    A_UINT64    cs_lowRssi_cnt; 
    A_UINT64    cs_connect_cnt; 
    A_UINT64    cs_disconnect_cnt; 
    A_UINT8     cs_aveBeacon_rssi; 
    A_UINT8     cs_lastRoam_msec; 
}TARGET_STATS; 
 
/* used by AR6000_XIOCTL_GPIO_OUTPUT_SET */ 
struct ar6000_gpio_output_set_cmd_s { 
    A_UINT32 set_mask; 
    A_UINT32 clear_mask; 
    A_UINT32 enable_mask; 
    A_UINT32 disable_mask; 
}; 
 
/* 
 * used by AR6000_XIOCTL_GPIO_REGISTER_GET and AR6000_XIOCTL_GPIO_REGISTER_SET 
 */ 
struct ar6000_gpio_register_cmd_s { 
    A_UINT32 gpioreg_id; 
    A_UINT32 value; 
}; 
 
/* used by AR6000_XIOCTL_GPIO_INTR_ACK */ 
struct ar6000_gpio_intr_ack_cmd_s { 
    A_UINT32 ack_mask; 
}; 
 
/* used by AR6000_XIOCTL_GPIO_INTR_WAIT */ 
struct ar6000_gpio_intr_wait_cmd_s { 
    A_UINT32 intr_mask; 
    A_UINT32 input_values; 
}; 
 
#endif //__linux__ 
 
#ifdef UNDER_CE 
#include  
/*                         ====WinCE OIDS for BMI====                        */ 
#define OID_CAR6K_BMI_DONE 0xFF000001 
#define OID_CAR6K_BMI_WRITE_MEMORY 0xFF000002 
#define OID_CAR6K_BMI_TEST 0xFF000003 
#define OID_CAR6K_BMI_EXECUTE 0xFF000004 
#define OID_CAR6K_BMI_SET_APP_START 0xFF000005 
#define OID_CAR6K_BMI_WRITE_SOC_REGISTER 0xFF000006 
#define OID_CAR6K_BMI_READ_MEMORY 0xFF000007 
#define OID_CAR6K_BMI_READ_SOC_REGISTER 0xFF000008 
 
/*                         ====WinCE OIDS for HTC RAW I/F====                */ 
#ifdef HTC_RAW_INTERFACE 
#define OID_CAR6K_HTC_RAW_OPEN 0xFF000009 
#define OID_CAR6K_HTC_RAW_CLOSE 0xFF000010 
#define OID_CAR6K_HTC_RAW_READ 0xFF000011 
#define OID_CAR6K_HTC_RAW_WRITE 0xFF000012 
#endif //HTC_RAW_INTERFACE 
 
#ifdef TCMD 
/*       ====extended commands for radio test ====                          */ 
 
#define OID_CAR6K_TCMD_CONT_TX	0xFF000013 
 
/* 
 * arguments: 
 *   WMI_TCMD_CONT_TX_CMD contTxCmd (see include/wmi.h) 
 * uses: WMI_TCMD_CONT_TX_CMDID 
 */ 
 
#define OID_CAR6K_TCMD_CONT_RX	0xFF000014 
/* 
 * arguments: 
 *   WMI_TCMD_CONT_RX_CMD rxCmd (see include/wmi.h) 
 * uses: WMI_TCMD_CONT_RX_CMDID 
 */ 
 
#define OID_CAR6K_TCMD_PM	0xFF000015 
/* 
 * arguments: 
 *   WMI_TCMD_PM_CMD pmCmd (see include/wmi.h) 
 * uses: WMI_TCMD_PM_CMDID 
 */ 
 
#endif /* TCMD */ 
 
#define OID_CAR6K_802_11_AUTH_ALG 0xFF000020 
#define OID_CAR6K_GET_PNP_POWER   0xFF000021 
#define OID_CAR6K_RESUME_WLAN_STATE 0xFF000022 
#define OID_CAR6K_FIRMWARE_VERSION	0xFF000023 
 
 
// Changes for backward compatiblilty with WinCE 5.0 
#ifndef OID_802_11_PMKID 
 
 
#define OID_802_11_CAPABILITY 			0x0d010122 
#define OID_802_11_PMKID 			0x0d010123 
 
enum NDIS_802_11_STATUS_TYPE_WPA2 { 
	Ndis802_11StatusType_PMKID_CandidateList = 2, 
	Ndis802_11StatusType_MediaStreamMode, 
	Ndis802_11StatusType_RadioState, 
	//Ndis802_11StatusTypeMax 
}; 
 
enum NDIS_802_11_AUTHENTICATION_MODE_WPA2 { 
	Ndis802_11AuthModeWPA2=6, 
		Ndis802_11AuthModeWPA2PSK, 
}; 
 
typedef UCHAR NDIS_802_11_PMKID_VALUE[16]; 
 
typedef struct BSSID_INFO { 
	NDIS_802_11_MAC_ADDRESS BSSID; 
	NDIS_802_11_PMKID_VALUE PMKID; 
} BSSID_INFO; 
 
typedef struct NDIS_802_11_PMKID { 
	ULONG Length; 
	ULONG BSSIDInfoCount; 
	BSSID_INFO BSSIDInfo[1]; 
} NDIS_802_11_PMKID; 
 
typedef struct PMKID_CANDIDATE { 
	NDIS_802_11_MAC_ADDRESS BSSID; 
	ULONG Flags; 
} PMKID_CANDIDATE; 
 
#define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01 
 
typedef struct NDIS_802_11_PMKID_CANDIDATE_LIST { 
	ULONG Version; 
	ULONG NumCandidates; 
	PMKID_CANDIDATE CandidateList[1]; 
} NDIS_802_11_PMKID_CANDIDATE_LIST; 
 
typedef struct NDIS_802_11_AUTHENTICATION_ENCRYPTION { 
	NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported; 
	NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported; 
} NDIS_802_11_AUTHENTICATION_ENCRYPTION; 
 
typedef struct NDIS_802_11_CAPABILITY { 
	ULONG Length; 
	ULONG Version; 
	ULONG NoOfPMKIDs; 
	ULONG NoOfAuthEncryptPairsSupported; 
	NDIS_802_11_AUTHENTICATION_ENCRYPTION 
	AuthenticationEncryptionSupported[1]; 
} NDIS_802_11_CAPABILITY; 
 
#endif //OID_802_11_PMKID 
 
 
#endif //UNDER_CE 
 
#ifdef __cplusplus 
} 
#endif 
 
#endif /* _ATHDRV_H_ */