Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 1 | /** |
| 2 | * This file contains definitions and data structures specific |
| 3 | * to Marvell 802.11 NIC. It contains the Device Information |
David Woodhouse | aa21c00 | 2007-12-08 20:04:36 +0000 | [diff] [blame] | 4 | * structure struct lbs_private.. |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 5 | */ |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 6 | #ifndef _LBS_DEV_H_ |
| 7 | #define _LBS_DEV_H_ |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 8 | |
| 9 | #include <linux/netdevice.h> |
| 10 | #include <linux/wireless.h> |
| 11 | #include <linux/ethtool.h> |
| 12 | #include <linux/debugfs.h> |
| 13 | |
| 14 | #include "defs.h" |
Holger Schurig | 245bf20 | 2008-04-02 16:27:42 +0200 | [diff] [blame] | 15 | #include "hostcmd.h" |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 16 | |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 17 | extern struct ethtool_ops lbs_ethtool_ops; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 18 | |
| 19 | #define MAX_BSSID_PER_CHANNEL 16 |
| 20 | |
| 21 | #define NR_TX_QUEUE 3 |
| 22 | |
| 23 | /* For the extended Scan */ |
| 24 | #define MAX_EXTENDED_SCAN_BSSID_LIST MAX_BSSID_PER_CHANNEL * \ |
| 25 | MRVDRV_MAX_CHANNEL_SIZE + 1 |
| 26 | |
| 27 | #define MAX_REGION_CHANNEL_NUM 2 |
| 28 | |
| 29 | /** Chan-freq-TxPower mapping table*/ |
| 30 | struct chan_freq_power { |
| 31 | /** channel Number */ |
| 32 | u16 channel; |
| 33 | /** frequency of this channel */ |
| 34 | u32 freq; |
| 35 | /** Max allowed Tx power level */ |
| 36 | u16 maxtxpower; |
| 37 | /** TRUE:channel unsupported; FLASE:supported*/ |
| 38 | u8 unsupported; |
| 39 | }; |
| 40 | |
| 41 | /** region-band mapping table*/ |
| 42 | struct region_channel { |
| 43 | /** TRUE if this entry is valid */ |
| 44 | u8 valid; |
| 45 | /** region code for US, Japan ... */ |
| 46 | u8 region; |
| 47 | /** band B/G/A, used for BAND_CONFIG cmd */ |
| 48 | u8 band; |
| 49 | /** Actual No. of elements in the array below */ |
| 50 | u8 nrcfp; |
| 51 | /** chan-freq-txpower mapping table*/ |
| 52 | struct chan_freq_power *CFP; |
| 53 | }; |
| 54 | |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 55 | struct lbs_802_11_security { |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 56 | u8 WPAenabled; |
| 57 | u8 WPA2enabled; |
Dan Williams | 889c05b | 2007-05-10 22:57:23 -0400 | [diff] [blame] | 58 | u8 wep_enabled; |
Dan Williams | 6affe78 | 2007-05-10 22:56:42 -0400 | [diff] [blame] | 59 | u8 auth_mode; |
Javier Cardona | 9c40fc5 | 2008-09-16 18:08:39 -0700 | [diff] [blame] | 60 | u32 key_mgmt; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 61 | }; |
| 62 | |
| 63 | /** Current Basic Service Set State Structure */ |
| 64 | struct current_bss_params { |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 65 | /** bssid */ |
| 66 | u8 bssid[ETH_ALEN]; |
| 67 | /** ssid */ |
Dan Williams | d8efea2 | 2007-05-28 23:54:55 -0400 | [diff] [blame] | 68 | u8 ssid[IW_ESSID_MAX_SIZE + 1]; |
| 69 | u8 ssid_len; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 70 | |
| 71 | /** band */ |
| 72 | u8 band; |
| 73 | /** channel */ |
| 74 | u8 channel; |
Dan Williams | 8c51276 | 2007-08-02 11:40:45 -0400 | [diff] [blame] | 75 | /** zero-terminated array of supported data rates */ |
| 76 | u8 rates[MAX_RATES + 1]; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 77 | }; |
| 78 | |
| 79 | /** sleep_params */ |
| 80 | struct sleep_params { |
David Woodhouse | 3fbe104 | 2007-12-17 23:48:31 -0500 | [diff] [blame] | 81 | uint16_t sp_error; |
| 82 | uint16_t sp_offset; |
| 83 | uint16_t sp_stabletime; |
| 84 | uint8_t sp_calcontrol; |
| 85 | uint8_t sp_extsleepclk; |
| 86 | uint16_t sp_reserved; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 87 | }; |
| 88 | |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 89 | /* Mesh statistics */ |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 90 | struct lbs_mesh_stats { |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 91 | u32 fwd_bcast_cnt; /* Fwd: Broadcast counter */ |
| 92 | u32 fwd_unicast_cnt; /* Fwd: Unicast counter */ |
| 93 | u32 fwd_drop_ttl; /* Fwd: TTL zero */ |
| 94 | u32 fwd_drop_rbt; /* Fwd: Recently Broadcasted */ |
| 95 | u32 fwd_drop_noroute; /* Fwd: No route to Destination */ |
| 96 | u32 fwd_drop_nobuf; /* Fwd: Run out of internal buffers */ |
| 97 | u32 drop_blind; /* Rx: Dropped by blinding table */ |
Javier Cardona | 0601e7e | 2007-05-25 12:12:06 -0400 | [diff] [blame] | 98 | u32 tx_failed_cnt; /* Tx: Failed transmissions */ |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 99 | }; |
| 100 | |
| 101 | /** Private structure for the MV device */ |
Holger Schurig | 69f9032 | 2007-11-23 15:43:44 +0100 | [diff] [blame] | 102 | struct lbs_private { |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 103 | int mesh_open; |
| 104 | int infra_open; |
Luis Carlos Cobo | d21b31f | 2007-08-02 13:16:02 -0400 | [diff] [blame] | 105 | int mesh_autostart_enabled; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 106 | |
Holger Schurig | 634b8f4 | 2007-05-25 13:05:16 -0400 | [diff] [blame] | 107 | char name[DEV_NAME_LEN]; |
| 108 | |
| 109 | void *card; |
Holger Schurig | 634b8f4 | 2007-05-25 13:05:16 -0400 | [diff] [blame] | 110 | struct net_device *dev; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 111 | |
| 112 | struct net_device_stats stats; |
Luis Carlos Cobo | 965f8bbc | 2007-08-02 13:16:55 -0400 | [diff] [blame] | 113 | struct net_device *mesh_dev; /* Virtual device */ |
| 114 | struct net_device *rtap_net_dev; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 115 | |
| 116 | struct iw_statistics wstats; |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 117 | struct lbs_mesh_stats mstats; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 118 | struct dentry *debugfs_dir; |
| 119 | struct dentry *debugfs_debug; |
| 120 | struct dentry *debugfs_files[6]; |
| 121 | |
| 122 | struct dentry *events_dir; |
| 123 | struct dentry *debugfs_events_files[6]; |
| 124 | |
| 125 | struct dentry *regs_dir; |
| 126 | struct dentry *debugfs_regs_files[6]; |
| 127 | |
| 128 | u32 mac_offset; |
| 129 | u32 bbp_offset; |
| 130 | u32 rf_offset; |
| 131 | |
Holger Schurig | 634b8f4 | 2007-05-25 13:05:16 -0400 | [diff] [blame] | 132 | /* Download sent: |
| 133 | bit0 1/0=data_sent/data_tx_done, |
| 134 | bit1 1/0=cmd_sent/cmd_tx_done, |
| 135 | all other bits reserved 0 */ |
| 136 | u8 dnld_sent; |
| 137 | |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 138 | /** thread to service interrupts */ |
Dan Williams | fe33615 | 2007-08-02 11:32:25 -0400 | [diff] [blame] | 139 | struct task_struct *main_thread; |
| 140 | wait_queue_head_t waitq; |
Dan Williams | 2afc0c5 | 2007-08-02 13:19:04 -0400 | [diff] [blame] | 141 | struct workqueue_struct *work_thread; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 142 | |
David Woodhouse | 75bf45a | 2008-05-20 13:32:45 +0100 | [diff] [blame] | 143 | struct work_struct mcast_work; |
| 144 | |
Holger Schurig | 8816edc | 2008-01-28 17:28:05 +0100 | [diff] [blame] | 145 | /** Scanning */ |
Dan Williams | 2afc0c5 | 2007-08-02 13:19:04 -0400 | [diff] [blame] | 146 | struct delayed_work scan_work; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 147 | struct delayed_work assoc_work; |
Luis Carlos Cobo Rus | b8bedef | 2007-05-30 12:14:34 -0400 | [diff] [blame] | 148 | struct work_struct sync_channel; |
Holger Schurig | 8816edc | 2008-01-28 17:28:05 +0100 | [diff] [blame] | 149 | /* remember which channel was scanned last, != 0 if currently scanning */ |
| 150 | int scan_channel; |
Holger Schurig | 52933d8 | 2008-03-05 07:05:32 +0100 | [diff] [blame] | 151 | u8 scan_ssid[IW_ESSID_MAX_SIZE + 1]; |
| 152 | u8 scan_ssid_len; |
Holger Schurig | 208fdd2 | 2007-05-25 12:17:06 -0400 | [diff] [blame] | 153 | |
| 154 | /** Hardware access */ |
Holger Schurig | 69f9032 | 2007-11-23 15:43:44 +0100 | [diff] [blame] | 155 | int (*hw_host_to_card) (struct lbs_private *priv, u8 type, u8 *payload, u16 nb); |
David Woodhouse | edf5dab | 2008-05-20 16:43:31 +0100 | [diff] [blame] | 156 | void (*reset_card) (struct lbs_private *priv); |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 157 | |
David Woodhouse | 506e902 | 2007-12-12 20:06:06 -0500 | [diff] [blame] | 158 | /* Wake On LAN */ |
| 159 | uint32_t wol_criteria; |
| 160 | uint8_t wol_gpio; |
| 161 | uint8_t wol_gap; |
| 162 | |
David Woodhouse | aa21c00 | 2007-12-08 20:04:36 +0000 | [diff] [blame] | 163 | /** Wlan adapter data structure*/ |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 164 | /** STATUS variables */ |
Holger Schurig | dac10a9 | 2008-01-16 15:55:22 +0100 | [diff] [blame] | 165 | u32 fwrelease; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 166 | u32 fwcapinfo; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 167 | |
| 168 | struct mutex lock; |
| 169 | |
David Woodhouse | 2eb188a | 2007-12-09 23:54:27 -0500 | [diff] [blame] | 170 | /* TX packet ready to be sent... */ |
| 171 | int tx_pending_len; /* -1 while building packet */ |
| 172 | |
| 173 | u8 tx_pending_buf[LBS_UPLD_SIZE]; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 174 | /* protected by hard_start_xmit serialization */ |
| 175 | |
| 176 | /** command-related variables */ |
| 177 | u16 seqnum; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 178 | |
| 179 | struct cmd_ctrl_node *cmd_array; |
| 180 | /** Current command */ |
| 181 | struct cmd_ctrl_node *cur_cmd; |
| 182 | int cur_cmd_retcode; |
| 183 | /** command Queues */ |
| 184 | /** Free command buffers */ |
| 185 | struct list_head cmdfreeq; |
| 186 | /** Pending command buffers */ |
| 187 | struct list_head cmdpendingq; |
| 188 | |
| 189 | wait_queue_head_t cmd_pending; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 190 | |
Holger Schurig | 7919b89 | 2008-04-01 14:50:43 +0200 | [diff] [blame] | 191 | /* Command responses sent from the hardware to the driver */ |
| 192 | u8 resp_idx; |
| 193 | u8 resp_buf[2][LBS_UPLD_SIZE]; |
| 194 | u32 resp_len[2]; |
| 195 | |
| 196 | /* Events sent from hardware to driver */ |
| 197 | struct kfifo *event_fifo; |
| 198 | |
| 199 | /* nickname */ |
| 200 | u8 nodename[16]; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 201 | |
| 202 | /** spin locks */ |
| 203 | spinlock_t driver_lock; |
| 204 | |
| 205 | /** Timers */ |
| 206 | struct timer_list command_timer; |
David Woodhouse | 2a34509 | 2007-12-15 19:33:43 -0500 | [diff] [blame] | 207 | int nr_retries; |
| 208 | int cmd_timed_out; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 209 | |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 210 | /** current ssid/bssid related parameters*/ |
| 211 | struct current_bss_params curbssparams; |
David Woodhouse | 020f3d0 | 2007-12-12 23:29:13 -0500 | [diff] [blame] | 212 | |
| 213 | uint16_t mesh_tlv; |
David Woodhouse | 23a397a | 2007-12-11 18:56:42 -0500 | [diff] [blame] | 214 | u8 mesh_ssid[IW_ESSID_MAX_SIZE + 1]; |
| 215 | u8 mesh_ssid_len; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 216 | |
Dan Williams | 0dc5a29 | 2007-05-10 22:58:02 -0400 | [diff] [blame] | 217 | /* IW_MODE_* */ |
| 218 | u8 mode; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 219 | |
Dan Williams | fcdb53d | 2007-05-25 16:15:56 -0400 | [diff] [blame] | 220 | /* Scan results list */ |
| 221 | struct list_head network_list; |
| 222 | struct list_head network_free_list; |
| 223 | struct bss_descriptor *networks; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 224 | |
Brajesh Dave | 96287ac | 2007-11-20 17:44:28 -0500 | [diff] [blame] | 225 | u16 beacon_period; |
| 226 | u8 beacon_enable; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 227 | u8 adhoccreate; |
| 228 | |
| 229 | /** capability Info used in Association, start, join */ |
Dan Williams | 0c9ca690 | 2007-08-02 10:43:44 -0400 | [diff] [blame] | 230 | u16 capability; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 231 | |
| 232 | /** MAC address information */ |
| 233 | u8 current_addr[ETH_ALEN]; |
| 234 | u8 multicastlist[MRVDRV_MAX_MULTICAST_LIST_SIZE][ETH_ALEN]; |
| 235 | u32 nr_of_multicastmacaddr; |
| 236 | |
| 237 | /** 802.11 statistics */ |
| 238 | // struct cmd_DS_802_11_GET_STAT wlan802_11Stat; |
| 239 | |
Javier Cardona | 85319f9 | 2008-05-24 10:59:49 +0100 | [diff] [blame] | 240 | uint16_t enablehwauto; |
| 241 | uint16_t ratebitmap; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 242 | |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 243 | u8 txretrycount; |
| 244 | |
| 245 | /** Tx-related variables (for single packet tx) */ |
| 246 | struct sk_buff *currenttxskb; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 247 | |
| 248 | /** NIC Operation characteristics */ |
Holger Schurig | d9e9778 | 2008-03-12 16:06:43 +0100 | [diff] [blame] | 249 | u16 mac_control; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 250 | u32 connect_status; |
Brajesh Dave | 01d77d8 | 2007-11-20 17:44:14 -0500 | [diff] [blame] | 251 | u32 mesh_connect_status; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 252 | u16 regioncode; |
Dan Williams | 87c8c72 | 2008-08-19 15:15:35 -0400 | [diff] [blame] | 253 | s16 txpower_cur; |
| 254 | s16 txpower_min; |
| 255 | s16 txpower_max; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 256 | |
| 257 | /** POWER MANAGEMENT AND PnP SUPPORT */ |
| 258 | u8 surpriseremoved; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 259 | |
| 260 | u16 psmode; /* Wlan802_11PowermodeCAM=disable |
| 261 | Wlan802_11PowermodeMAX_PSP=enable */ |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 262 | u32 psstate; |
David Woodhouse | b2c57ee | 2007-12-17 14:41:13 -0500 | [diff] [blame] | 263 | char ps_supported; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 264 | u8 needtowakeup; |
| 265 | |
Dan Williams | e76850d | 2007-05-25 17:09:41 -0400 | [diff] [blame] | 266 | struct assoc_request * pending_assoc_req; |
| 267 | struct assoc_request * in_progress_assoc_req; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 268 | |
| 269 | /** Encryption parameter */ |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 270 | struct lbs_802_11_security secinfo; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 271 | |
| 272 | /** WEP keys */ |
Dan Williams | 1443b65 | 2007-08-02 10:45:55 -0400 | [diff] [blame] | 273 | struct enc_key wep_keys[4]; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 274 | u16 wep_tx_keyidx; |
| 275 | |
| 276 | /** WPA keys */ |
Dan Williams | 1443b65 | 2007-08-02 10:45:55 -0400 | [diff] [blame] | 277 | struct enc_key wpa_mcast_key; |
| 278 | struct enc_key wpa_unicast_key; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 279 | |
Johannes Berg | 2c706002 | 2008-10-30 22:09:54 +0100 | [diff] [blame] | 280 | /* |
| 281 | * In theory, the IE is limited to the IE length, 255, |
| 282 | * but in practice 64 bytes are enough. |
| 283 | */ |
| 284 | #define MAX_WPA_IE_LEN 64 |
| 285 | |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 286 | /** WPA Information Elements*/ |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 287 | u8 wpa_ie[MAX_WPA_IE_LEN]; |
| 288 | u8 wpa_ie_len; |
| 289 | |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 290 | /** Requested Signal Strength*/ |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 291 | u16 SNR[MAX_TYPE_B][MAX_TYPE_AVG]; |
| 292 | u16 NF[MAX_TYPE_B][MAX_TYPE_AVG]; |
| 293 | u8 RSSI[MAX_TYPE_B][MAX_TYPE_AVG]; |
| 294 | u8 rawSNR[DEFAULT_DATA_AVG_FACTOR]; |
| 295 | u8 rawNF[DEFAULT_DATA_AVG_FACTOR]; |
| 296 | u16 nextSNRNF; |
| 297 | u16 numSNRNF; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 298 | |
Dan Williams | d5db2df | 2008-08-21 17:51:07 -0400 | [diff] [blame] | 299 | u8 radio_on; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 300 | |
Dan Williams | 8c51276 | 2007-08-02 11:40:45 -0400 | [diff] [blame] | 301 | /** data rate stuff */ |
| 302 | u8 cur_rate; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 303 | |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 304 | /** RF calibration data */ |
| 305 | |
| 306 | #define MAX_REGION_CHANNEL_NUM 2 |
| 307 | /** region channel data */ |
| 308 | struct region_channel region_channel[MAX_REGION_CHANNEL_NUM]; |
| 309 | |
| 310 | struct region_channel universal_channel[MAX_REGION_CHANNEL_NUM]; |
| 311 | |
| 312 | /** 11D and Domain Regulatory Data */ |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 313 | struct lbs_802_11d_domain_reg domainreg; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 314 | struct parsed_region_chan_11d parsed_region_chan; |
| 315 | |
| 316 | /** FSM variable for 11d support */ |
| 317 | u32 enable11d; |
| 318 | |
| 319 | /** MISCELLANEOUS */ |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 320 | struct lbs_offset_value offsetvalue; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 321 | |
Luis Carlos Cobo | 965f8bbc | 2007-08-02 13:16:55 -0400 | [diff] [blame] | 322 | u32 monitormode; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 323 | u8 fw_ready; |
Marcelo Tosatti | 876c9d3 | 2007-02-10 12:25:27 -0200 | [diff] [blame] | 324 | }; |
| 325 | |
Holger Schurig | f539f2e | 2008-03-26 13:22:11 +0100 | [diff] [blame] | 326 | extern struct cmd_confirm_sleep confirm_sleep; |
| 327 | |
Holger Schurig | 245bf20 | 2008-04-02 16:27:42 +0200 | [diff] [blame] | 328 | /** |
| 329 | * @brief Structure used to store information for each beacon/probe response |
| 330 | */ |
| 331 | struct bss_descriptor { |
| 332 | u8 bssid[ETH_ALEN]; |
| 333 | |
| 334 | u8 ssid[IW_ESSID_MAX_SIZE + 1]; |
| 335 | u8 ssid_len; |
| 336 | |
| 337 | u16 capability; |
| 338 | u32 rssi; |
| 339 | u32 channel; |
| 340 | u16 beaconperiod; |
| 341 | u32 atimwindow; |
| 342 | |
| 343 | /* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */ |
| 344 | u8 mode; |
| 345 | |
| 346 | /* zero-terminated array of supported data rates */ |
| 347 | u8 rates[MAX_RATES + 1]; |
| 348 | |
| 349 | unsigned long last_scanned; |
| 350 | |
| 351 | union ieeetypes_phyparamset phyparamset; |
| 352 | union IEEEtypes_ssparamset ssparamset; |
| 353 | |
| 354 | struct ieeetypes_countryinfofullset countryinfo; |
| 355 | |
| 356 | u8 wpa_ie[MAX_WPA_IE_LEN]; |
| 357 | size_t wpa_ie_len; |
| 358 | u8 rsn_ie[MAX_WPA_IE_LEN]; |
| 359 | size_t rsn_ie_len; |
| 360 | |
| 361 | u8 mesh; |
| 362 | |
| 363 | struct list_head list; |
| 364 | }; |
| 365 | |
David Woodhouse | aa21c00 | 2007-12-08 20:04:36 +0000 | [diff] [blame] | 366 | /** Association request |
| 367 | * |
| 368 | * Encapsulates all the options that describe a specific assocation request |
| 369 | * or configuration of the wireless card's radio, mode, and security settings. |
| 370 | */ |
| 371 | struct assoc_request { |
| 372 | #define ASSOC_FLAG_SSID 1 |
| 373 | #define ASSOC_FLAG_CHANNEL 2 |
| 374 | #define ASSOC_FLAG_BAND 3 |
| 375 | #define ASSOC_FLAG_MODE 4 |
| 376 | #define ASSOC_FLAG_BSSID 5 |
| 377 | #define ASSOC_FLAG_WEP_KEYS 6 |
| 378 | #define ASSOC_FLAG_WEP_TX_KEYIDX 7 |
| 379 | #define ASSOC_FLAG_WPA_MCAST_KEY 8 |
| 380 | #define ASSOC_FLAG_WPA_UCAST_KEY 9 |
| 381 | #define ASSOC_FLAG_SECINFO 10 |
| 382 | #define ASSOC_FLAG_WPA_IE 11 |
| 383 | unsigned long flags; |
| 384 | |
| 385 | u8 ssid[IW_ESSID_MAX_SIZE + 1]; |
| 386 | u8 ssid_len; |
| 387 | u8 channel; |
| 388 | u8 band; |
| 389 | u8 mode; |
Ihar Hrachyshka | 5a6e043 | 2008-01-25 14:15:00 +0100 | [diff] [blame] | 390 | u8 bssid[ETH_ALEN] __attribute__ ((aligned (2))); |
David Woodhouse | aa21c00 | 2007-12-08 20:04:36 +0000 | [diff] [blame] | 391 | |
| 392 | /** WEP keys */ |
| 393 | struct enc_key wep_keys[4]; |
| 394 | u16 wep_tx_keyidx; |
| 395 | |
| 396 | /** WPA keys */ |
| 397 | struct enc_key wpa_mcast_key; |
| 398 | struct enc_key wpa_unicast_key; |
| 399 | |
| 400 | struct lbs_802_11_security secinfo; |
| 401 | |
| 402 | /** WPA Information Elements*/ |
| 403 | u8 wpa_ie[MAX_WPA_IE_LEN]; |
| 404 | u8 wpa_ie_len; |
| 405 | |
| 406 | /* BSS to associate with for infrastructure of Ad-Hoc join */ |
| 407 | struct bss_descriptor bss; |
| 408 | }; |
| 409 | |
Holger Schurig | 1007832 | 2007-11-15 18:05:47 -0500 | [diff] [blame] | 410 | #endif |