18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Driver interaction with Linux Host AP driver 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2002-2006, Jouni Malinen <j@w1.fi> 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details. 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef HOSTAP_DRIVER_H 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_DRIVER_H 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* netdevice private ioctls (used, e.g., with iwpriv from user space) */ 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* New wireless extensions API - SET/GET convention (even ioctl numbers are 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * root only) 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_PRISM2_PARAM (SIOCIWFIRSTPRIV + 0) 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_GET_PRISM2_PARAM (SIOCIWFIRSTPRIV + 1) 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_WRITEMIF (SIOCIWFIRSTPRIV + 2) 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_READMIF (SIOCIWFIRSTPRIV + 3) 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_MONITOR (SIOCIWFIRSTPRIV + 4) 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_RESET (SIOCIWFIRSTPRIV + 6) 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_INQUIRE (SIOCIWFIRSTPRIV + 8) 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_WDS_ADD (SIOCIWFIRSTPRIV + 10) 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_WDS_DEL (SIOCIWFIRSTPRIV + 12) 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_SET_RID_WORD (SIOCIWFIRSTPRIV + 14) 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_MACCMD (SIOCIWFIRSTPRIV + 16) 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_ADDMAC (SIOCIWFIRSTPRIV + 18) 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_DELMAC (SIOCIWFIRSTPRIV + 20) 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_KICKMAC (SIOCIWFIRSTPRIV + 22) 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* following are not in SIOCGIWPRIV list; check permission in the driver code 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_DOWNLOAD (SIOCDEVPRIVATE + 13) 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_IOCTL_HOSTAPD (SIOCDEVPRIVATE + 14) 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* PRISM2_IOCTL_PRISM2_PARAM ioctl() subtypes: */ 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum { 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* PRISM2_PARAM_PTYPE = 1, */ /* REMOVED 2003-10-22 */ 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_TXRATECTRL = 2, 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_BEACON_INT = 3, 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_PSEUDO_IBSS = 4, 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_ALC = 5, 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* PRISM2_PARAM_TXPOWER = 6, */ /* REMOVED 2003-10-22 */ 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_DUMP = 7, 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_OTHER_AP_POLICY = 8, 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_AP_MAX_INACTIVITY = 9, 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_AP_BRIDGE_PACKETS = 10, 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_DTIM_PERIOD = 11, 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_AP_NULLFUNC_ACK = 12, 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_MAX_WDS = 13, 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_AP_AUTOM_AP_WDS = 14, 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_AP_AUTH_ALGS = 15, 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_MONITOR_ALLOW_FCSERR = 16, 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_HOST_ENCRYPT = 17, 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_HOST_DECRYPT = 18, 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_BUS_MASTER_THRESHOLD_RX = 19, 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_BUS_MASTER_THRESHOLD_TX = 20, 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_HOST_ROAMING = 21, 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_BCRX_STA_KEY = 22, 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_IEEE_802_1X = 23, 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_ANTSEL_TX = 24, 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_ANTSEL_RX = 25, 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_MONITOR_TYPE = 26, 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_WDS_TYPE = 27, 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_HOSTSCAN = 28, 688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_AP_SCAN = 29, 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_ENH_SEC = 30, 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_IO_DEBUG = 31, 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_BASIC_RATES = 32, 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_OPER_RATES = 33, 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_HOSTAPD = 34, 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_HOSTAPD_STA = 35, 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_WPA = 36, 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_PRIVACY_INVOKED = 37, 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_TKIP_COUNTERMEASURES = 38, 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_DROP_UNENCRYPTED = 39, 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_PARAM_SCAN_CHANNEL_MASK = 40, 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum { HOSTAP_ANTSEL_DO_NOT_TOUCH = 0, HOSTAP_ANTSEL_DIVERSITY = 1, 838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt HOSTAP_ANTSEL_LOW = 2, HOSTAP_ANTSEL_HIGH = 3 }; 848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* PRISM2_IOCTL_MACCMD ioctl() subcommands: */ 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum { AP_MAC_CMD_POLICY_OPEN = 0, AP_MAC_CMD_POLICY_ALLOW = 1, 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt AP_MAC_CMD_POLICY_DENY = 2, AP_MAC_CMD_FLUSH = 3, 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt AP_MAC_CMD_KICKALL = 4 }; 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* PRISM2_IOCTL_DOWNLOAD ioctl() dl_cmd: */ 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum { 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_DOWNLOAD_VOLATILE = 1 /* RAM */, 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* Note! Old versions of prism2_srec have a fatal error in CRC-16 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * calculation, which will corrupt all non-volatile downloads. 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * PRISM2_DOWNLOAD_NON_VOLATILE used to be 2, but it is now 3 to 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * prevent use of old versions of prism2_srec for non-volatile 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * download. */ 1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_DOWNLOAD_NON_VOLATILE = 3 /* FLASH */, 1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_DOWNLOAD_VOLATILE_GENESIS = 4 /* RAM in Genesis mode */, 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* Persistent versions of volatile download commands (keep firmware 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * data in memory and automatically re-download after hw_reset */ 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_DOWNLOAD_VOLATILE_PERSISTENT = 5, 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_DOWNLOAD_VOLATILE_GENESIS_PERSISTENT = 6, 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct prism2_download_param { 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dl_cmd; 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 start_addr; 1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 num_areas; 1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct prism2_download_area { 1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 addr; /* wlan card address */ 1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 len; 1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt caddr_t ptr; /* pointer to data in user space */ 1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } data[0]; 1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_MAX_DOWNLOAD_AREA_LEN 131072 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_MAX_DOWNLOAD_LEN 262144 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* PRISM2_IOCTL_HOSTAPD ioctl() cmd: */ 1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum { 1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_FLUSH = 1, 1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_ADD_STA = 2, 1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_REMOVE_STA = 3, 1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_GET_INFO_STA = 4, 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* REMOVED: PRISM2_HOSTAPD_RESET_TXEXC_STA = 5, */ 1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_SET_ENCRYPTION = 6, 1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_GET_ENCRYPTION = 7, 1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_SET_FLAGS_STA = 8, 1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_GET_RID = 9, 1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_SET_RID = 10, 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_SET_ASSOC_AP_ADDR = 11, 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_SET_GENERIC_ELEMENT = 12, 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_MLME = 13, 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_SCAN_REQ = 14, 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt PRISM2_HOSTAPD_STA_CLEAR_STATS = 15, 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_HOSTAPD_MAX_BUF_SIZE 1024 1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_HOSTAPD_RID_HDR_LEN \ 1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt((size_t) (&((struct prism2_hostapd_param *) 0)->u.rid.data)) 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define PRISM2_HOSTAPD_GENERIC_ELEMENT_HDR_LEN \ 1468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt((size_t) (&((struct prism2_hostapd_param *) 0)->u.generic_elem.data)) 1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* Maximum length for algorithm names (-1 for nul termination) used in ioctl() 1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_ALG_NAME_LEN 16 1518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct prism2_hostapd_param { 1548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 cmd; 1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 sta_addr[ETH_ALEN]; 1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt union { 1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 aid; 1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 capability; 1608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 tx_supp_rates; 1618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } add_sta; 1628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 inactive_sec; 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } get_info_sta; 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 alg[HOSTAP_CRYPT_ALG_NAME_LEN]; 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 flags; 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 err; 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 idx; 1708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 seq[8]; /* sequence counter (set: RX, get: TX) */ 1718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 key_len; 1728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 key[0]; 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } crypt; 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 flags_and; 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 flags_or; 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } set_flags_sta; 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 rid; 1808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 len; 1818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 data[0]; 1828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } rid; 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 len; 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 data[0]; 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } generic_elem; 1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define MLME_STA_DEAUTH 0 1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define MLME_STA_DISASSOC 1 1908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 cmd; 1918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u16 reason_code; 1928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } mlme; 1938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct { 1948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 ssid_len; 1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 ssid[32]; 1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } scan_req; 1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } u; 1988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_FLAG_SET_TX_KEY BIT(0) 2018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_FLAG_PERMANENT BIT(1) 2028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_ERR_UNKNOWN_ALG 2 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_ERR_UNKNOWN_ADDR 3 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_ERR_CRYPT_INIT_FAILED 4 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_ERR_KEY_SET_FAILED 5 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_ERR_TX_KEY_SET_FAILED 6 2088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HOSTAP_CRYPT_ERR_CARD_CONF_FAILED 7 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* HOSTAP_DRIVER_H */ 211