/* * Copyright (c) 2007-2008 Atheros Communications Inc. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* Module Name : athr_common.h */ /* */ /* Abstract */ /* WPA related function and data structure definitions. */ /* */ /* NOTES */ /* Platform dependent. */ /* */ /************************************************************************/ #ifndef _ATHR_COMMON_H #define _ATHR_COMMON_H #define ZD_IOCTL_WPA (SIOCDEVPRIVATE + 1) #define ZD_IOCTL_PARAM (SIOCDEVPRIVATE + 2) #define ZD_IOCTL_GETWPAIE (SIOCDEVPRIVATE + 3) #define ZD_PARAM_ROAMING 0x0001 #define ZD_PARAM_PRIVACY 0x0002 #define ZD_PARAM_WPA 0x0003 #define ZD_PARAM_COUNTERMEASURES 0x0004 #define ZD_PARAM_DROPUNENCRYPTED 0x0005 #define ZD_PARAM_AUTH_ALGS 0x0006 #define ZD_CMD_SET_ENCRYPT_KEY 0x0001 #define ZD_CMD_SET_MLME 0x0002 #define ZD_CMD_SCAN_REQ 0x0003 #define ZD_CMD_SET_GENERIC_ELEMENT 0x0004 #define ZD_CMD_GET_TSC 0x0005 #define ZD_FLAG_SET_TX_KEY 0x0001 #define ZD_GENERIC_ELEMENT_HDR_LEN \ ((int) (&((struct athr_wlan_param *) 0)->u.generic_elem.data)) #define ZD_CRYPT_ALG_NAME_LEN 16 #define ZD_MAX_KEY_SIZE 32 #define ZD_MAX_GENERIC_SIZE 64 #define IEEE80211_ADDR_LEN 6 #define IEEE80211_MAX_IE_SIZE 256 #ifdef ZM_ENALBE_WAPI #define ZM_CMD_WAPI_SETWAPI 0x0001 #define ZM_CMD_WAPI_GETWAPI 0x0002 #define ZM_CMD_WAPI_SETKEY 0x0003 #define ZM_CMD_WAPI_GETKEY 0x0004 #define ZM_CMD_WAPI_REKEY 0x0005 #define ZM_WAPI_WAI_REQUEST 0x00f1 #define ZM_WAPI_UNICAST_REKEY 0x00f2 #define ZM_WAPI_STA_AGING 0x00f3 #define ZM_WAPI_MULTI_REKEY 0x00f4 #define ZM_WAPI_KEY_SIZE 32 #define ZM_WAPI_IV_LEN 16 #endif //ZM_ENALBE_WAPI /* structure definition */ struct athr_wlan_param { u32 cmd; u8 sta_addr[ETH_ALEN]; union { struct { u8 alg[ZD_CRYPT_ALG_NAME_LEN]; u32 flags; u32 err; u8 idx; u8 seq[8]; /* sequence counter (set: RX, get: TX) */ u16 key_len; u8 key[ZD_MAX_KEY_SIZE]; } crypt; struct { u32 flags_and; u32 flags_or; } set_flags_sta; struct { u8 len; u8 data[ZD_MAX_GENERIC_SIZE]; } generic_elem; struct { #define MLME_STA_DEAUTH 0 #define MLME_STA_DISASSOC 1 u16 cmd; u16 reason_code; } mlme; struct { u8 ssid_len; u8 ssid[32]; } scan_req; } u; }; struct ieee80211req_wpaie { u8 wpa_macaddr[IEEE80211_ADDR_LEN]; u8 wpa_ie[IEEE80211_MAX_IE_SIZE]; }; #ifdef ZM_ENALBE_WAPI struct athr_wapi_param { u16 cmd; u16 len; union { struct { u8 sta_addr[ETH_ALEN]; u8 reserved; u8 keyid; u8 key[ZM_WAPI_KEY_SIZE]; } crypt; struct { u8 wapi_policy; } info; } u; }; struct athr_wapi_sta_info { u16 msg_type; u16 datalen; u8 sta_mac[ETH_ALEN]; u8 reserve_data[2]; u8 gsn[ZM_WAPI_IV_LEN]; u8 wie[256]; }; #endif //ZM_ENALBE_WAPI #endif