Home | History | Annotate | Download | only in inet
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License (the "License").
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets "[]" replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 /*
     22  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     23  * Use is subject to license terms.
     24  */
     25 
     26 /*
     27  * Macro and date structures defined for 802.11 wifi config tool.
     28  */
     29 
     30 #ifndef	__WIFI_IOCTL_H
     31 #define	__WIFI_IOCTL_H
     32 
     33 #include <sys/types.h>
     34 
     35 #ifdef	__cplusplus
     36 extern "C" {
     37 #endif
     38 
     39 #define	MAX_KEY_LENGTH 26
     40 #define	MAX_ESSID_LENGTH (32 + 1)	/* max essid length is 32 */
     41 					/* one more for '\0' */
     42 #define	MAX_CHANNEL_NUM	99
     43 #define	MAX_RSSI 15
     44 #define	MAX_NWEPKEYS 4
     45 #define	NET_802_11 80211
     46 #define	MAX_BUF_LEN 65536
     47 #define	MAX_SCAN_SUPPORT_RATES 8
     48 
     49 /*
     50  * ioctls
     51  */
     52 #define	WLAN_IOCTL_BASE 0x1000
     53 #define	WLAN_GET_VERSION (WLAN_IOCTL_BASE + 0x0)
     54 #define	WLAN_SET_PARAM (WLAN_IOCTL_BASE + 0x2)
     55 #define	WLAN_GET_PARAM (WLAN_IOCTL_BASE + 0x3)
     56 #define	WLAN_COMMAND (WLAN_IOCTL_BASE + 0x4)
     57 
     58 /*
     59  * parameters
     60  */
     61 #define	WL_PARAMETERS_BASE 0x2000
     62 #define	WL_BSSID (WL_PARAMETERS_BASE + 0x0)
     63 #define	WL_ESSID (WL_PARAMETERS_BASE + 0x1)
     64 #define	WL_NODE_NAME (WL_PARAMETERS_BASE + 0x2)
     65 #define	WL_PHY_SUPPORT (WL_PARAMETERS_BASE + 0x3)
     66 #define	WL_PHY_CONFIG (WL_PARAMETERS_BASE + 0x4)
     67 #define	WL_DOMAIN (WL_PARAMETERS_BASE + 0x5)
     68 #define	WL_POWER_MODE (WL_PARAMETERS_BASE + 0x6)
     69 #define	WL_TX_POWER (WL_PARAMETERS_BASE + 0x7)
     70 #define	WL_RSSI (WL_PARAMETERS_BASE + 0x8)
     71 #define	WL_RSSI_THRESHOLD (WL_PARAMETERS_BASE + 0x9)
     72 #define	WL_ESS_LIST (WL_PARAMETERS_BASE + 0xa)
     73 #define	WL_BSS_TYPE (WL_PARAMETERS_BASE + 0xb)
     74 #define	WL_CREATE_IBSS (WL_PARAMETERS_BASE + 0xc)
     75 #define	WL_RTS_THRESHOLD (WL_PARAMETERS_BASE + 0xd)
     76 #define	WL_SHORT_RETRY (WL_PARAMETERS_BASE + 0xe)
     77 #define	WL_LONG_RETRY (WL_PARAMETERS_BASE + 0xf)
     78 #define	WL_BEACON_PERIOD (WL_PARAMETERS_BASE + 0x10)
     79 #define	WL_TX_LIFETIME (WL_PARAMETERS_BASE + 0x11)
     80 #define	WL_RX_LIFETIME (WL_PARAMETERS_BASE + 0x12)
     81 #define	WL_FRAG_THRESHOLD (WL_PARAMETERS_BASE + 0x13)
     82 #define	WL_VENDOR_ID (WL_PARAMETERS_BASE + 0x14)
     83 #define	WL_PRODUCT_ID (WL_PARAMETERS_BASE + 0x15)
     84 #define	WL_NUM_ANTS (WL_PARAMETERS_BASE + 0x16)
     85 #define	WL_RX_ANTENNA (WL_PARAMETERS_BASE + 0x17)
     86 #define	WL_TX_ANTENNA (WL_PARAMETERS_BASE + 0x18)
     87 #define	WL_SUPPORTED_RATES (WL_PARAMETERS_BASE + 0x19)
     88 #define	WL_DESIRED_RATES (WL_PARAMETERS_BASE + 0x1a)
     89 #define	WL_WEP_KEY_TAB (WL_PARAMETERS_BASE + 0x1b)
     90 #define	WL_WEP_KEY_ID (WL_PARAMETERS_BASE + 0x1c)
     91 #define	WL_WEP_MAPPING_TAB (WL_PARAMETERS_BASE + 0x1d)
     92 #define	WL_WEP_MAPPING_LEN (WL_PARAMETERS_BASE + 0x1e)
     93 #define	WL_ENCRYPTION (WL_PARAMETERS_BASE + 0x1f)
     94 #define	WL_AUTH_MODE (WL_PARAMETERS_BASE + 0x20)
     95 #define	WL_EXCL_UNENC (WL_PARAMETERS_BASE + 0x21)
     96 #define	WL_RFMON (WL_PARAMETERS_BASE + 0x22)
     97 #define	WL_RADIO (WL_PARAMETERS_BASE + 0x23)
     98 #define	WL_LINKSTATUS (WL_PARAMETERS_BASE + 0x24)
     99 #define	WL_DEV_DEPEND (WL_PARAMETERS_BASE + 0x25)
    100 /*
    101  * commands
    102  */
    103 #define	WL_COMMAND_BASE 0x3000
    104 #define	WL_SCAN (WL_COMMAND_BASE + 0x0)
    105 #define	WL_DISASSOCIATE (WL_COMMAND_BASE + 0x1)
    106 #define	WL_REASSOCIATE (WL_COMMAND_BASE + 0x2)
    107 #define	WL_LOAD_DEFAULTS (WL_COMMAND_BASE + 0x3)
    108 #define	WL_ASSOCIAT (WL_COMMAND_BASE + 0x4)
    109 
    110 /*
    111  * domains
    112  */
    113 /* --USA */
    114 #define	WL_DOMAIN_BASE 0x4000
    115 #define	WL_DOMAIN_FCC (WL_DOMAIN_BASE + 0x0)
    116 /* --Canada */
    117 #define	WL_DOMAIN_DOC (WL_DOMAIN_BASE + 0x1)
    118 /* --Most of Europe */
    119 #define	WL_DOMAIN_ETSI (WL_DOMAIN_BASE + 0x2)
    120 /* --Spain */
    121 #define	WL_DOMAIN_SPAIN (WL_DOMAIN_BASE + 0x3)
    122 /* --France */
    123 #define	WL_DOMAIN_FRANCE (WL_DOMAIN_BASE + 0x4)
    124 /* --Japan */
    125 #define	WL_DOMAIN_MKK (WL_DOMAIN_BASE + 0x5)
    126 
    127 /*
    128  * power mode
    129  */
    130 
    131 #define	WL_PM_AM 0x0
    132 #define	WL_PM_MPS 0x1
    133 #define	WL_PM_FAST 0x2
    134 #define	WL_PM_USER 0x3
    135 
    136 /*
    137  * rates
    138  */
    139 #define	WL_RATE_BASIC_SET 0x80
    140 #define	WL_RATE_1M 2
    141 #define	WL_RATE_2M 4
    142 #define	WL_RATE_5_5M 11
    143 #define	WL_RATE_6M 12
    144 #define	WL_RATE_9M 18
    145 #define	WL_RATE_11M 22
    146 #define	WL_RATE_12M 24
    147 #define	WL_RATE_18M 36
    148 #define	WL_RATE_22M 44
    149 #define	WL_RATE_24M 48
    150 #define	WL_RATE_33M 66
    151 #define	WL_RATE_36M 72
    152 #define	WL_RATE_48M 96
    153 #define	WL_RATE_54M 108
    154 /*
    155  * wep operations
    156  */
    157 #define	WL_WEP_OPERATION_BASE 0x6000
    158 #define	WL_ADD (WL_WEP_OPERATION_BASE + 0x0)
    159 #define	WL_DEL (WL_WEP_OPERATION_BASE + 0x1)
    160 #define	WL_NUL (WL_WEP_OPERATION_BASE + 0x2)
    161 #define	WL_IND (WL_WEP_OPERATION_BASE + 0x3)
    162 
    163 #define	WL_NOENCRYPTION 0x0
    164 #define	WL_ENC_WEP 0x1
    165 #define	WL_ENC_WPA 0x2
    166 #define	WL_OPENSYSTEM 0x1
    167 #define	WL_SHAREDKEY 0x2
    168 
    169 /*
    170  * linkstatus
    171  */
    172 #define	WL_CONNECTED 0x0
    173 #define	WL_NOTCONNECTED 0x1
    174 
    175 /*
    176  * prives
    177  */
    178 #define	WL_PRIV_BASE 0x7000
    179 #define	WL_PRIV_RW (WL_PRIV_BASE + 0x0)
    180 #define	WL_PRIV_R (WL_PRIV_BASE + 0x1)
    181 #define	WL_PRIV_W (WL_PRIV_BASE + 0x2)
    182 #define	WL_PRIV_INT (WL_PRIV_BASE + 0x3)
    183 #define	WL_PRIV_INT_ARRAY (WL_PRIV_BASE + 0x4)
    184 #define	WL_PRIV_BYTE (WL_PRIV_BASE + 0x5)
    185 #define	WL_PRIV_BYTE_ARRAY (WL_PRIV_BASE + 0x6)
    186 #define	WL_PRIV_STRING (WL_PRIV_BASE + 0x7)
    187 #define	WL_PRIV_STRING_ARRAY (WL_PRIV_BASE + 0x8)
    188 /*
    189  * return values
    190  */
    191 #define	WL_SUCCESS 0x0
    192 #define	WL_NOTSUPPORTED EINVAL
    193 #define	WL_LACK_FEATURE ENOTSUP
    194 #define	WL_HW_ERROR EIO
    195 #define	WL_ACCESS_DENIED EACCES
    196 #define	WL_RETURN_BASE	0x7000
    197 #define	WL_READONLY (WL_RETURN_BASE + 0x1)
    198 #define	WL_WRITEONLY (WL_RETURN_BASE + 0x2)
    199 #define	WL_NOAP (WL_RETURN_BASE + 0x3)
    200 /*
    201  * other values
    202  */
    203 #define	WL_OTHER_BASE 0x8000
    204 #define	WL_FHSS (WL_OTHER_BASE + 0x0)
    205 #define	WL_DSSS (WL_OTHER_BASE + 0x1)
    206 #define	WL_IRBASE (WL_OTHER_BASE + 0x2)
    207 #define	WL_OFDM (WL_OTHER_BASE + 0x3)
    208 #define	WL_HRDS (WL_OTHER_BASE + 0x4)
    209 #define	WL_ERP (WL_OTHER_BASE + 0x5)
    210 
    211 #define	WL_BSS_BSS 1
    212 #define	WL_BSS_IBSS 3
    213 #define	WL_BSS_ANY 2
    214 /*
    215  * field_offset
    216  */
    217 #define	WIFI_BUF_OFFSET		offsetof(wldp_t, wldp_buf)
    218 
    219 /*
    220  * type definationes
    221  */
    222 typedef boolean_t wl_create_ibss_t;
    223 typedef char wl_bssid_t[6];
    224 
    225 typedef struct wl_essid {
    226 	uint32_t wl_essid_length;
    227 	char wl_essid_essid[34];
    228 }wl_essid_t;
    229 
    230 typedef struct wl_nodename {
    231 	uint32_t wl_nodename_length;
    232 	char wl_nodename_name[34];
    233 } wl_nodename_t;
    234 
    235 typedef struct wl_phy_supported {
    236 	uint32_t wl_phy_support_num;
    237 	uint32_t wl_phy_support_phy_types[1];
    238 } wl_phy_supported_t;
    239 
    240 typedef struct wl_fhss {
    241 	uint32_t wl_fhss_subtype;
    242 	uint32_t wl_fhss_channel;
    243 	uint32_t wl_fhss_hoptime;
    244 	uint32_t wl_fhss_hoppattern;
    245 	uint32_t wl_fhss_hopset;
    246 	uint32_t wl_fhss_dwelltime;
    247 } wl_fhss_t;
    248 
    249 typedef struct wl_dsss {
    250 	uint32_t wl_dsss_subtype;
    251 	uint32_t wl_dsss_channel;
    252 	boolean_t wl_dsss_have_short_preamble;
    253 	uint32_t wl_dsss_preamble_mode;
    254 	boolean_t wl_dsss_agility_enabled;
    255 	boolean_t wl_dsss_have_pbcc;
    256 	boolean_t wl_dsss_pbcc_enable;
    257 } wl_dsss_t;
    258 
    259 typedef struct wl_ofdm {
    260 	uint32_t wl_ofdm_subtype;
    261 	uint32_t wl_ofdm_frequency;
    262 	uint32_t wl_ofdm_freq_supported;
    263 	boolean_t wl_ofdm_ht_enabled;
    264 } wl_ofdm_t;
    265 
    266 typedef struct wl_erp {
    267 	uint32_t wl_erp_subtype;
    268 	uint32_t wl_erp_channel;
    269 	boolean_t wl_erp_have_short_preamble;
    270 	uint32_t wl_erp_preamble_mode;
    271 	boolean_t wl_erp_have_agility;
    272 	boolean_t wl_erp_agility_enabled;
    273 	boolean_t wl_erp_have_pbcc;
    274 	boolean_t wl_erp_pbcc_enabled;
    275 	boolean_t wl_erp_have_dsss_ofdm;
    276 	boolean_t wl_erp_dsss_ofdm_enabled;
    277 	boolean_t wl_erp_have_sst;
    278 	boolean_t wl_erp_sst_enabled;
    279 	boolean_t wl_erp_ht_enabled;
    280 } wl_erp_t;
    281 
    282 typedef union wl_phy_conf {
    283 	wl_fhss_t wl_phy_fhss_conf;
    284 	wl_dsss_t wl_phy_dsss_conf;
    285 	wl_ofdm_t wl_phy_ofdm_conf;
    286 	wl_erp_t wl_phy_erp_conf;
    287 } wl_phy_conf_t;
    288 
    289 typedef uint32_t wl_domain_t;
    290 
    291 typedef struct wl_ps_mode {
    292 	uint32_t wl_ps_mode;
    293 	uint32_t wl_ps_max_sleep;
    294 	uint32_t wl_ps_min_sleep;
    295 	uint32_t wl_ps_max_awake;
    296 	uint32_t wl_ps_min_awake;
    297 	boolean_t wl_ps_nobroadcast;
    298 } wl_ps_mode_t;
    299 
    300 typedef uint32_t wl_linkstatus_t;
    301 typedef uint32_t wl_tx_pwer_t;
    302 typedef uint32_t wl_rssi_t;
    303 typedef uint32_t wl_rssi_threshold_t;
    304 typedef uint32_t wl_bss_type_t;
    305 typedef uint32_t wl_authmode_t;
    306 typedef uint32_t wl_encryption_t;
    307 typedef uint32_t wl_wep_key_id_t;
    308 typedef boolean_t wl_radio_t;
    309 typedef uint32_t wl_rts_threshold_t;
    310 typedef uint32_t wl_short_retry_t;
    311 typedef uint32_t wl_long_retry_t;
    312 typedef uint32_t wl_beacon_period_t;
    313 typedef uint32_t wl_tx_lifetime_t;
    314 typedef uint32_t wl_rx_lifetime_t;
    315 typedef uint32_t wl_frag_threshold_t;
    316 typedef char wl_vendor_t[128];
    317 typedef char wl_product_t[128];
    318 typedef uint32_t wl_num_ants_t;
    319 typedef uint32_t wl_rx_antenna_t;
    320 typedef uint32_t wl_tx_antenna_t;
    321 
    322 typedef struct wl_rates {
    323 	uint32_t wl_rates_num;
    324 	char wl_rates_rates[1];
    325 } wl_rates_t;
    326 
    327 typedef struct wl_ess_conf {
    328 	uint32_t wl_ess_conf_length;
    329 	wl_essid_t wl_ess_conf_essid;
    330 	wl_bssid_t wl_ess_conf_bssid;
    331 	char wl_ess_conf_reserved[2];
    332 	wl_bss_type_t wl_ess_conf_bsstype;
    333 	wl_authmode_t wl_ess_conf_authmode;
    334 	boolean_t wl_ess_conf_wepenabled;
    335 	wl_rssi_t wl_ess_conf_sl;
    336 	union {
    337 		wl_fhss_t wl_phy_fhss_conf;
    338 		wl_dsss_t wl_phy_dsss_conf;
    339 		wl_ofdm_t wl_phy_ofdm_conf;
    340 		wl_erp_t wl_phy_erp_conf;
    341 	} wl_phy_conf;
    342 	char wl_supported_rates[MAX_SCAN_SUPPORT_RATES];
    343 } wl_ess_conf_t;
    344 
    345 typedef struct wl_ess_list {
    346 	uint32_t wl_ess_list_num;
    347 	wl_ess_conf_t wl_ess_list_ess[1];
    348 } wl_ess_list_t;
    349 
    350 typedef struct wl_wep_key {
    351 	uint32_t wl_wep_length;
    352 	char wl_wep_key[MAX_KEY_LENGTH];
    353 	uint32_t wl_wep_operation;
    354 } wl_wep_key_t;
    355 typedef wl_wep_key_t wl_wep_key_tab_t[MAX_NWEPKEYS];
    356 
    357 typedef struct wep_mapping {
    358 	uint32_t wl_wep_map_index;
    359 	boolean_t wl_wep_map_wepon;
    360 	char wl_wep_map_mac_addr[6];
    361 	char wl_wep_map_reserved[2];
    362 	wl_wep_key_t wl_wep_map_wepkey;
    363 } wep_mapping_t;
    364 typedef wep_mapping_t wep_mapping_tab_t[1];
    365 
    366 typedef struct wl_priv_param {
    367 	char wl_priv_name[8];
    368 	uint32_t wl_priv_type;
    369 	uint32_t wl_priv_size;
    370 	char wl_priv_value[1];
    371 } wl_priv_param_t;
    372 
    373 typedef struct wl_dev_depend {
    374 	uint32_t wl_dev_depend_num;
    375 	uint32_t wl_dev_depend_ret_idx;
    376 	wl_priv_param_t wl_dev_depend_priv[1];
    377 } wl_dev_depend_t;
    378 
    379 typedef struct wlan_ver {
    380 	uint32_t wl_ver_major;
    381 	uint32_t wl_ver_minor;
    382 } wlan_ver_t;
    383 
    384 typedef struct wldp {
    385 	uint32_t wldp_length;
    386 	uint32_t wldp_type;
    387 	uint32_t wldp_result;
    388 	uint32_t wldp_id;
    389 	uint32_t wldp_buf[1];
    390 } wldp_t;
    391 
    392 #ifdef __cplusplus
    393 }
    394 #endif
    395 
    396 #endif /* __WIFI_IOCTL_H */
    397