1/* 2 * Copyright (c) 2007-2008 Atheros Communications Inc. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16/* Module Name : athr_common.h */ 17/* */ 18/* Abstract */ 19/* WPA related function and data structure definitions. */ 20/* */ 21/* NOTES */ 22/* Platform dependent. */ 23/* */ 24/************************************************************************/ 25 26#ifndef _ATHR_COMMON_H 27#define _ATHR_COMMON_H 28 29#define ZD_IOCTL_WPA (SIOCDEVPRIVATE + 1) 30#define ZD_IOCTL_PARAM (SIOCDEVPRIVATE + 2) 31#define ZD_IOCTL_GETWPAIE (SIOCDEVPRIVATE + 3) 32#define ZD_PARAM_ROAMING 0x0001 33#define ZD_PARAM_PRIVACY 0x0002 34#define ZD_PARAM_WPA 0x0003 35#define ZD_PARAM_COUNTERMEASURES 0x0004 36#define ZD_PARAM_DROPUNENCRYPTED 0x0005 37#define ZD_PARAM_AUTH_ALGS 0x0006 38 39#define ZD_CMD_SET_ENCRYPT_KEY 0x0001 40#define ZD_CMD_SET_MLME 0x0002 41#define ZD_CMD_SCAN_REQ 0x0003 42#define ZD_CMD_SET_GENERIC_ELEMENT 0x0004 43#define ZD_CMD_GET_TSC 0x0005 44 45#define ZD_FLAG_SET_TX_KEY 0x0001 46 47#define ZD_GENERIC_ELEMENT_HDR_LEN \ 48((int) (&((struct athr_wlan_param *) 0)->u.generic_elem.data)) 49 50#define ZD_CRYPT_ALG_NAME_LEN 16 51#define ZD_MAX_KEY_SIZE 32 52#define ZD_MAX_GENERIC_SIZE 64 53 54#define IEEE80211_ADDR_LEN 6 55#define IEEE80211_MAX_IE_SIZE 256 56 57#ifdef ZM_ENALBE_WAPI 58#define ZM_CMD_WAPI_SETWAPI 0x0001 59#define ZM_CMD_WAPI_GETWAPI 0x0002 60#define ZM_CMD_WAPI_SETKEY 0x0003 61#define ZM_CMD_WAPI_GETKEY 0x0004 62#define ZM_CMD_WAPI_REKEY 0x0005 63 64#define ZM_WAPI_WAI_REQUEST 0x00f1 65#define ZM_WAPI_UNICAST_REKEY 0x00f2 66#define ZM_WAPI_STA_AGING 0x00f3 67#define ZM_WAPI_MULTI_REKEY 0x00f4 68 69#define ZM_WAPI_KEY_SIZE 32 70#define ZM_WAPI_IV_LEN 16 71#endif //ZM_ENALBE_WAPI 72/* structure definition */ 73 74struct athr_wlan_param { 75 u32 cmd; 76 u8 sta_addr[ETH_ALEN]; 77 union { 78 struct { 79 u8 alg[ZD_CRYPT_ALG_NAME_LEN]; 80 u32 flags; 81 u32 err; 82 u8 idx; 83 u8 seq[8]; /* sequence counter (set: RX, get: TX) */ 84 u16 key_len; 85 u8 key[ZD_MAX_KEY_SIZE]; 86 } crypt; 87 struct { 88 u32 flags_and; 89 u32 flags_or; 90 } set_flags_sta; 91 struct { 92 u8 len; 93 u8 data[ZD_MAX_GENERIC_SIZE]; 94 } generic_elem; 95 struct { 96#define MLME_STA_DEAUTH 0 97#define MLME_STA_DISASSOC 1 98 u16 cmd; 99 u16 reason_code; 100 } mlme; 101 struct { 102 u8 ssid_len; 103 u8 ssid[32]; 104 } scan_req; 105 } u; 106}; 107 108struct ieee80211req_wpaie { 109 u8 wpa_macaddr[IEEE80211_ADDR_LEN]; 110 u8 wpa_ie[IEEE80211_MAX_IE_SIZE]; 111}; 112 113#ifdef ZM_ENALBE_WAPI 114struct athr_wapi_param { 115 u16 cmd; 116 u16 len; 117 118 union { 119 struct { 120 u8 sta_addr[ETH_ALEN]; 121 u8 reserved; 122 u8 keyid; 123 u8 key[ZM_WAPI_KEY_SIZE]; 124 } crypt; 125 struct { 126 u8 wapi_policy; 127 } info; 128 } u; 129}; 130 131struct athr_wapi_sta_info 132{ 133 u16 msg_type; 134 u16 datalen; 135 u8 sta_mac[ETH_ALEN]; 136 u8 reserve_data[2]; 137 u8 gsn[ZM_WAPI_IV_LEN]; 138 u8 wie[256]; 139}; 140#endif //ZM_ENALBE_WAPI 141#endif 142