]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/wireless/libertas/dev.h
[PATCH] libertas: remove adapter->scantype
[mv-sheeva.git] / drivers / net / wireless / libertas / dev.h
index b1f876f9693bf93fc24f222b59f97bdd06677be1..f6b1402509f5883feaf2bb6d9dd4044d74713583 100644 (file)
 #include <linux/wireless.h>
 #include <linux/ethtool.h>
 #include <linux/debugfs.h>
+#include <net/ieee80211.h>
 
 #include "defs.h"
 #include "scan.h"
-#include "thread.h"
 
 extern struct ethtool_ops libertas_ethtool_ops;
 
@@ -56,28 +56,24 @@ struct region_channel {
 struct wlan_802_11_security {
        u8 WPAenabled;
        u8 WPA2enabled;
-       enum WLAN_802_11_WEP_STATUS WEPstatus;
-       enum WLAN_802_11_AUTHENTICATION_MODE authmode;
-       enum WLAN_802_1X_AUTH_ALG auth1xalg;
-       enum WLAN_802_11_ENCRYPTION_MODE Encryptionmode;
+       u8 wep_enabled;
+       u8 auth_mode;
 };
 
 /** Current Basic Service Set State Structure */
 struct current_bss_params {
-       struct bss_descriptor bssdescriptor;
        /** bssid */
        u8 bssid[ETH_ALEN];
        /** ssid */
-       struct WLAN_802_11_SSID ssid;
+       u8 ssid[IW_ESSID_MAX_SIZE + 1];
+       u8 ssid_len;
 
        /** band */
        u8 band;
        /** channel */
        u8 channel;
-       /** number of rates supported */
-       int numofrates;
-       /** supported rates*/
-       u8 datarates[WLAN_SUPPORTED_RATES];
+       /** zero-terminated array of supported data rates */
+       u8 rates[MAX_RATES + 1];
 };
 
 /** sleep_params */
@@ -90,31 +86,6 @@ struct sleep_params {
        u16 sp_reserved;
 };
 
-/** Data structure for the Marvell WLAN device */
-typedef struct _wlan_dev {
-       /** device name */
-       char name[DEV_NAME_LEN];
-       /** card pointer */
-       void *card;
-       /** IO port */
-       u32 ioport;
-       /** Upload received */
-       u32 upld_rcv;
-       /** Upload type */
-       u32 upld_typ;
-       /** Upload length */
-       u32 upld_len;
-       /** netdev pointer */
-       struct net_device *netdev;
-       /* Upload buffer */
-       u8 upld_buf[WLAN_UPLD_SIZE];
-       /* Download sent:
-          bit0 1/0=data_sent/data_tx_done,
-          bit1 1/0=cmd_sent/cmd_tx_done,
-          all other bits reserved 0 */
-       u8 dnld_sent;
-} wlan_dev_t, *pwlan_dev_t;
-
 /* Mesh statistics */
 struct wlan_mesh_stats {
        u32     fwd_bcast_cnt;          /* Fwd: Broadcast counter */
@@ -124,6 +95,7 @@ struct wlan_mesh_stats {
        u32     fwd_drop_noroute;       /* Fwd: No route to Destination */
        u32     fwd_drop_nobuf;         /* Fwd: Run out of internal buffers */
        u32     drop_blind;             /* Rx:  Dropped by blinding table */
+       u32     tx_failed_cnt;          /* Tx:  Failed transmissions */
 };
 
 /** Private structure for the MV device */
@@ -132,8 +104,11 @@ struct _wlan_private {
        int mesh_open;
        int infra_open;
 
+       char name[DEV_NAME_LEN];
+
+       void *card;
        wlan_adapter *adapter;
-       wlan_dev_t wlan_dev;
+       struct net_device *dev;
 
        struct net_device_stats stats;
        struct net_device *mesh_dev ; /* Virtual device */
@@ -154,14 +129,34 @@ struct _wlan_private {
        u32 bbp_offset;
        u32 rf_offset;
 
+       /** Upload length */
+       u32 upld_len;
+       /* Upload buffer */
+       u8 upld_buf[WLAN_UPLD_SIZE];
+       /* Download sent:
+          bit0 1/0=data_sent/data_tx_done,
+          bit1 1/0=cmd_sent/cmd_tx_done,
+          all other bits reserved 0 */
+       u8 dnld_sent;
+
        const struct firmware *firmware;
        struct device *hotplug_device;
 
        /** thread to service interrupts */
-       struct wlan_thread mainthread;
+       struct task_struct *main_thread;
+       wait_queue_head_t waitq;
 
        struct delayed_work assoc_work;
        struct workqueue_struct *assoc_thread;
+       struct work_struct sync_channel;
+
+       /** Hardware access */
+       int (*hw_register_dev) (wlan_private * priv);
+       int (*hw_unregister_dev) (wlan_private *);
+       int (*hw_prog_firmware) (wlan_private *);
+       int (*hw_host_to_card) (wlan_private * priv, u8 type, u8 * payload, u16 nb);
+       int (*hw_get_int_status) (wlan_private * priv, u8 *);
+       int (*hw_read_event_cause) (wlan_private *);
 };
 
 /** Association request
@@ -172,41 +167,46 @@ struct _wlan_private {
 struct assoc_request {
 #define ASSOC_FLAG_SSID                        1
 #define ASSOC_FLAG_CHANNEL             2
-#define ASSOC_FLAG_MODE                        3
-#define ASSOC_FLAG_BSSID               4
-#define ASSOC_FLAG_WEP_KEYS            5
-#define ASSOC_FLAG_WEP_TX_KEYIDX       6
-#define ASSOC_FLAG_WPA_MCAST_KEY       7
-#define ASSOC_FLAG_WPA_UCAST_KEY       8
-#define ASSOC_FLAG_SECINFO             9
-#define ASSOC_FLAG_WPA_IE              10
+#define ASSOC_FLAG_BAND                        3
+#define ASSOC_FLAG_MODE                        4
+#define ASSOC_FLAG_BSSID               5
+#define ASSOC_FLAG_WEP_KEYS            6
+#define ASSOC_FLAG_WEP_TX_KEYIDX       7
+#define ASSOC_FLAG_WPA_MCAST_KEY       8
+#define ASSOC_FLAG_WPA_UCAST_KEY       9
+#define ASSOC_FLAG_SECINFO             10
+#define ASSOC_FLAG_WPA_IE              11
        unsigned long flags;
 
-       struct WLAN_802_11_SSID ssid;
+       u8 ssid[IW_ESSID_MAX_SIZE + 1];
+       u8 ssid_len;
        u8 channel;
-       enum WLAN_802_11_NETWORK_INFRASTRUCTURE mode;
+       u8 band;
+       u8 mode;
        u8 bssid[ETH_ALEN];
 
        /** WEP keys */
-       struct WLAN_802_11_KEY wep_keys[4];
+       struct enc_key wep_keys[4];
        u16 wep_tx_keyidx;
 
        /** WPA keys */
-       struct WLAN_802_11_KEY wpa_mcast_key;
-       struct WLAN_802_11_KEY wpa_unicast_key;
+       struct enc_key wpa_mcast_key;
+       struct enc_key wpa_unicast_key;
 
        struct wlan_802_11_security secinfo;
 
        /** WPA Information Elements*/
-#define MAX_WPA_IE_LEN 64
        u8 wpa_ie[MAX_WPA_IE_LEN];
        u8 wpa_ie_len;
+
+       /* BSS to associate with for infrastructure of Ad-Hoc join */
+       struct bss_descriptor bss;
 };
 
 /** Wlan adapter data structure*/
 struct _wlan_adapter {
        /** STATUS variables */
-       u32 fwreleasenumber;
+       u8 fwreleasenumber[4];
        u32 fwcapinfo;
        /* protected with big lock */
 
@@ -254,24 +254,18 @@ struct _wlan_adapter {
        /** current ssid/bssid related parameters*/
        struct current_bss_params curbssparams;
 
-       enum WLAN_802_11_NETWORK_INFRASTRUCTURE inframode;
+       /* IW_MODE_* */
+       u8 mode;
 
-       struct bss_descriptor *pattemptedbssdesc;
+       /* Scan results list */
+       struct list_head network_list;
+       struct list_head network_free_list;
+       struct bss_descriptor *networks;
 
-       struct WLAN_802_11_SSID previousssid;
-       u8 previousbssid[ETH_ALEN];
-
-       struct bss_descriptor *scantable;
-       u32 numinscantable;
-
-       u8 scantype;
-       u32 scanmode;
-
-       u16 beaconperiod;
        u8 adhoccreate;
 
        /** capability Info used in Association, start, join */
-       struct ieeetypes_capinfo capinfo;
+       u16 capability;
 
        /** MAC address information */
        u8 current_addr[ETH_ALEN];
@@ -283,21 +277,10 @@ struct _wlan_adapter {
 
        u16 enablehwauto;
        u16 ratebitmap;
-       /** control G rates */
-       u8 adhoc_grate_enabled;
 
-       u32 txantenna;
-       u32 rxantenna;
-
-       u8 adhocchannel;
        u32 fragthsd;
        u32 rtsthsd;
 
-       u32 datarate;
-       u8 is_datarate_auto;
-
-       u16 listeninterval;
-       u16 prescan;
        u8 txretrycount;
 
        /** Tx-related variables (for single packet tx) */
@@ -308,47 +291,37 @@ struct _wlan_adapter {
        u16 currentpacketfilter;
        u32 connect_status;
        u16 regioncode;
-       u16 regiontableindex;
        u16 txpowerlevel;
 
        /** POWER MANAGEMENT AND PnP SUPPORT */
        u8 surpriseremoved;
-       u16 atimwindow;
 
        u16 psmode;             /* Wlan802_11PowermodeCAM=disable
                                   Wlan802_11PowermodeMAX_PSP=enable */
-       u16 multipledtim;
        u32 psstate;
        u8 needtowakeup;
 
        struct PS_CMD_ConfirmSleep libertas_ps_confirm_sleep;
-       u16 locallisteninterval;
-       u16 nullpktinterval;
 
-       struct assoc_request * assoc_req;
+       struct assoc_request * pending_assoc_req;
+       struct assoc_request * in_progress_assoc_req;
 
        /** Encryption parameter */
        struct wlan_802_11_security secinfo;
 
        /** WEP keys */
-       struct WLAN_802_11_KEY wep_keys[4];
+       struct enc_key wep_keys[4];
        u16 wep_tx_keyidx;
 
        /** WPA keys */
-       struct WLAN_802_11_KEY wpa_mcast_key;
-       struct WLAN_802_11_KEY wpa_unicast_key;
+       struct enc_key wpa_mcast_key;
+       struct enc_key wpa_unicast_key;
 
        /** WPA Information Elements*/
-#define MAX_WPA_IE_LEN 64
        u8 wpa_ie[MAX_WPA_IE_LEN];
        u8 wpa_ie_len;
 
-       u16 rxantennamode;
-       u16 txantennamode;
-
        /** Requested Signal Strength*/
-       u16 bcn_avg_factor;
-       u16 data_avg_factor;
        u16 SNR[MAX_TYPE_B][MAX_TYPE_AVG];
        u16 NF[MAX_TYPE_B][MAX_TYPE_AVG];
        u8 RSSI[MAX_TYPE_B][MAX_TYPE_AVG];
@@ -356,15 +329,13 @@ struct _wlan_adapter {
        u8 rawNF[DEFAULT_DATA_AVG_FACTOR];
        u16 nextSNRNF;
        u16 numSNRNF;
-       u16 rxpd_rate;
 
        u8 radioon;
        u32 preamble;
 
-       /** Multi bands Parameter*/
-       u8 libertas_supported_rates[G_SUPPORTED_RATES];
-
-       /** Blue Tooth Co-existence Arbitration */
+       /** data rate stuff */
+       u8 cur_rate;
+       u8 auto_rate;
 
        /** sleep_params */
        struct sleep_params sp;
@@ -389,15 +360,12 @@ struct _wlan_adapter {
        struct wlan_offset_value offsetvalue;
 
        struct cmd_ds_802_11_get_log logmsg;
-       u16 scanprobes;
 
-       u32 pkttxctrl;
-
-       u16 txrate;
        u32 linkmode;
        u32 radiomode;
-       u32 debugmode;
        u8 fw_ready;
+
+       u8 last_scanned_channel;
 };
 
 #endif                         /* _WLAN_DEV_H_ */