diff options
Diffstat (limited to 'package/libertas/src/dev.h')
-rw-r--r-- | package/libertas/src/dev.h | 89 |
1 files changed, 60 insertions, 29 deletions
diff --git a/package/libertas/src/dev.h b/package/libertas/src/dev.h index 3629751..0d9edb9 100644 --- a/package/libertas/src/dev.h +++ b/package/libertas/src/dev.h @@ -10,9 +10,10 @@ #include <linux/wireless.h> #include <linux/ethtool.h> #include <linux/debugfs.h> +#include <net/ieee80211.h> #include "defs.h" -#include "scan.h" +#include "hostcmd.h" extern struct ethtool_ops lbs_ethtool_ops; @@ -102,7 +103,6 @@ struct lbs_private { int mesh_open; int infra_open; int mesh_autostart_enabled; - __le16 boot2_version; char name[DEV_NAME_LEN]; @@ -129,10 +129,6 @@ struct lbs_private { u32 bbp_offset; u32 rf_offset; - /** Upload length */ - u32 upld_len; - /* Upload buffer */ - u8 upld_buf[LBS_UPLD_SIZE]; /* Download sent: bit0 1/0=data_sent/data_tx_done, bit1 1/0=cmd_sent/cmd_tx_done, @@ -144,27 +140,27 @@ struct lbs_private { wait_queue_head_t waitq; struct workqueue_struct *work_thread; + /** Scanning */ struct delayed_work scan_work; struct delayed_work assoc_work; struct work_struct sync_channel; + /* remember which channel was scanned last, != 0 if currently scanning */ + int scan_channel; + u8 scan_ssid[IW_ESSID_MAX_SIZE + 1]; + u8 scan_ssid_len; /** Hardware access */ int (*hw_host_to_card) (struct lbs_private *priv, u8 type, u8 *payload, u16 nb); - int (*hw_get_int_status) (struct lbs_private *priv, u8 *); - int (*hw_read_event_cause) (struct lbs_private *); /* Wake On LAN */ uint32_t wol_criteria; uint8_t wol_gpio; uint8_t wol_gap; - /* was struct lbs_adapter from here... */ - /** Wlan adapter data structure*/ /** STATUS variables */ - u8 fwreleasenumber[4]; + u32 fwrelease; u32 fwcapinfo; - /* protected with big lock */ struct mutex lock; @@ -176,7 +172,6 @@ struct lbs_private { /** command-related variables */ u16 seqnum; - /* protected by big lock */ struct cmd_ctrl_node *cmd_array; /** Current command */ @@ -189,12 +184,17 @@ struct lbs_private { struct list_head cmdpendingq; wait_queue_head_t cmd_pending; - /* command related variables protected by priv->driver_lock */ - /** Async and Sync Event variables */ - u32 intcounter; - u32 eventcause; - u8 nodename[16]; /* nickname */ + /* Command responses sent from the hardware to the driver */ + u8 resp_idx; + u8 resp_buf[2][LBS_UPLD_SIZE]; + u32 resp_len[2]; + + /* Events sent from hardware to driver */ + struct kfifo *event_fifo; + + /* nickname */ + u8 nodename[16]; /** spin locks */ spinlock_t driver_lock; @@ -204,8 +204,6 @@ struct lbs_private { int nr_retries; int cmd_timed_out; - u8 hisregcpy; - /** current ssid/bssid related parameters*/ struct current_bss_params curbssparams; @@ -248,7 +246,7 @@ struct lbs_private { struct sk_buff *currenttxskb; /** NIC Operation characteristics */ - u16 currentpacketfilter; + u16 mac_control; u32 connect_status; u32 mesh_connect_status; u16 regioncode; @@ -263,9 +261,6 @@ struct lbs_private { char ps_supported; u8 needtowakeup; - struct PS_CMD_ConfirmSleep lbs_ps_confirm_sleep; - struct cmd_header lbs_ps_confirm_wake; - struct assoc_request * pending_assoc_req; struct assoc_request * in_progress_assoc_req; @@ -316,16 +311,52 @@ struct lbs_private { u32 enable11d; /** MISCELLANEOUS */ - u8 *prdeeprom; struct lbs_offset_value offsetvalue; - struct cmd_ds_802_11_get_log logmsg; - u32 monitormode; - int last_scanned_channel; u8 fw_ready; }; +extern struct cmd_confirm_sleep confirm_sleep; + +/** + * @brief Structure used to store information for each beacon/probe response + */ +struct bss_descriptor { + u8 bssid[ETH_ALEN]; + + u8 ssid[IW_ESSID_MAX_SIZE + 1]; + u8 ssid_len; + + u16 capability; + u32 rssi; + u32 channel; + u16 beaconperiod; + u32 atimwindow; + + /* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */ + u8 mode; + + /* zero-terminated array of supported data rates */ + u8 rates[MAX_RATES + 1]; + + unsigned long last_scanned; + + union ieeetypes_phyparamset phyparamset; + union IEEEtypes_ssparamset ssparamset; + + struct ieeetypes_countryinfofullset countryinfo; + + u8 wpa_ie[MAX_WPA_IE_LEN]; + size_t wpa_ie_len; + u8 rsn_ie[MAX_WPA_IE_LEN]; + size_t rsn_ie_len; + + u8 mesh; + + struct list_head list; +}; + /** Association request * * Encapsulates all the options that describe a specific assocation request @@ -350,7 +381,7 @@ struct assoc_request { u8 channel; u8 band; u8 mode; - u8 bssid[ETH_ALEN]; + u8 bssid[ETH_ALEN] __attribute__ ((aligned (2))); /** WEP keys */ struct enc_key wep_keys[4]; |