net: libertas sdio driver
[pandora-kernel.git] / drivers / net / wireless / libertas / defs.h
index cd95977..3a0c9be 100644 (file)
@@ -7,14 +7,81 @@
 
 #include <linux/spinlock.h>
 
-extern unsigned int libertas_debug;
-
 #ifdef CONFIG_LIBERTAS_DEBUG
 #define DEBUG
 #define PROC_DEBUG
 #endif
 
-#define DRV_NAME               "usb8xxx"
+#ifndef DRV_NAME
+#define DRV_NAME "libertas"
+#endif
+
+
+#define LBS_DEB_ENTER  0x00000001
+#define LBS_DEB_LEAVE  0x00000002
+#define LBS_DEB_MAIN   0x00000004
+#define LBS_DEB_NET    0x00000008
+#define LBS_DEB_MESH   0x00000010
+#define LBS_DEB_WEXT   0x00000020
+#define LBS_DEB_IOCTL  0x00000040
+#define LBS_DEB_SCAN   0x00000080
+#define LBS_DEB_ASSOC  0x00000100
+#define LBS_DEB_JOIN   0x00000200
+#define LBS_DEB_11D    0x00000400
+#define LBS_DEB_DEBUGFS        0x00000800
+#define LBS_DEB_ETHTOOL        0x00001000
+#define LBS_DEB_HOST   0x00002000
+#define LBS_DEB_CMD    0x00004000
+#define LBS_DEB_RX     0x00008000
+#define LBS_DEB_TX     0x00010000
+#define LBS_DEB_USB    0x00020000
+#define LBS_DEB_CS     0x00040000
+#define LBS_DEB_FW     0x00080000
+#define LBS_DEB_THREAD 0x00100000
+#define LBS_DEB_HEX    0x00200000
+#define LBS_DEB_SDIO   0x00400000
+
+extern unsigned int libertas_debug;
+
+#ifdef DEBUG
+#define LBS_DEB_LL(grp, grpnam, fmt, args...) \
+do { if ((libertas_debug & (grp)) == (grp)) \
+  printk(KERN_DEBUG DRV_NAME grpnam "%s: " fmt, \
+         in_interrupt() ? " (INT)" : "", ## args); } while (0)
+#else
+#define LBS_DEB_LL(grp, grpnam, fmt, args...) do {} while (0)
+#endif
+
+#define lbs_deb_enter(grp) \
+  LBS_DEB_LL(grp | LBS_DEB_ENTER, " enter", "%s():%d\n", __FUNCTION__, __LINE__);
+#define lbs_deb_enter_args(grp, fmt, args...) \
+  LBS_DEB_LL(grp | LBS_DEB_ENTER, " enter", "%s(" fmt "):%d\n", __FUNCTION__, ## args, __LINE__);
+#define lbs_deb_leave(grp) \
+  LBS_DEB_LL(grp | LBS_DEB_LEAVE, " leave", "%s():%d\n", __FUNCTION__, __LINE__);
+#define lbs_deb_leave_args(grp, fmt, args...) \
+  LBS_DEB_LL(grp | LBS_DEB_LEAVE, " leave", "%s():%d, " fmt "\n", \
+  __FUNCTION__, __LINE__, ##args);
+#define lbs_deb_main(fmt, args...)      LBS_DEB_LL(LBS_DEB_MAIN, " main", fmt, ##args)
+#define lbs_deb_net(fmt, args...)       LBS_DEB_LL(LBS_DEB_NET, " net", fmt, ##args)
+#define lbs_deb_mesh(fmt, args...)      LBS_DEB_LL(LBS_DEB_MESH, " mesh", fmt, ##args)
+#define lbs_deb_wext(fmt, args...)      LBS_DEB_LL(LBS_DEB_WEXT, " wext", fmt, ##args)
+#define lbs_deb_ioctl(fmt, args...)     LBS_DEB_LL(LBS_DEB_IOCTL, " ioctl", fmt, ##args)
+#define lbs_deb_scan(fmt, args...)      LBS_DEB_LL(LBS_DEB_SCAN, " scan", fmt, ##args)
+#define lbs_deb_assoc(fmt, args...)     LBS_DEB_LL(LBS_DEB_ASSOC, " assoc", fmt, ##args)
+#define lbs_deb_join(fmt, args...)      LBS_DEB_LL(LBS_DEB_JOIN, " join", fmt, ##args)
+#define lbs_deb_11d(fmt, args...)       LBS_DEB_LL(LBS_DEB_11D, " 11d", fmt, ##args)
+#define lbs_deb_debugfs(fmt, args...)   LBS_DEB_LL(LBS_DEB_DEBUGFS, " debugfs", fmt, ##args)
+#define lbs_deb_ethtool(fmt, args...)   LBS_DEB_LL(LBS_DEB_ETHTOOL, " ethtool", fmt, ##args)
+#define lbs_deb_host(fmt, args...)      LBS_DEB_LL(LBS_DEB_HOST, " host", fmt, ##args)
+#define lbs_deb_cmd(fmt, args...)       LBS_DEB_LL(LBS_DEB_CMD, " cmd", fmt, ##args)
+#define lbs_deb_rx(fmt, args...)        LBS_DEB_LL(LBS_DEB_RX, " rx", fmt, ##args)
+#define lbs_deb_tx(fmt, args...)        LBS_DEB_LL(LBS_DEB_TX, " tx", fmt, ##args)
+#define lbs_deb_fw(fmt, args...)        LBS_DEB_LL(LBS_DEB_FW, " fw", fmt, ##args)
+#define lbs_deb_usb(fmt, args...)       LBS_DEB_LL(LBS_DEB_USB, " usb", fmt, ##args)
+#define lbs_deb_usbd(dev, fmt, args...) LBS_DEB_LL(LBS_DEB_USB, " usbd", "%s:" fmt, (dev)->bus_id, ##args)
+#define lbs_deb_cs(fmt, args...)        LBS_DEB_LL(LBS_DEB_CS, " cs", fmt, ##args)
+#define lbs_deb_thread(fmt, args...)    LBS_DEB_LL(LBS_DEB_THREAD, " thread", fmt, ##args)
+#define lbs_deb_sdio(fmt, args...)      LBS_DEB_LL(LBS_DEB_SDIO, " thread", fmt, ##args)
 
 #define lbs_pr_info(format, args...) \
        printk(KERN_INFO DRV_NAME": " format, ## args)
@@ -24,37 +91,31 @@ extern unsigned int libertas_debug;
        printk(KERN_ALERT DRV_NAME": " format, ## args)
 
 #ifdef DEBUG
-#define lbs_pr_debug(level, format, args...) \
-       do { if (libertas_debug >= level) \
-       printk(KERN_INFO DRV_NAME": " format, ##args); } while (0)
-#define lbs_dev_dbg(level, device, format, args...) \
-        lbs_pr_debug(level, "%s: " format, \
-        (device)->bus_id , ## args)
-
-static inline void lbs_dbg_hex(char *prompt, u8 * buf, int len)
+static inline void lbs_deb_hex(unsigned int grp, const char *prompt, u8 *buf, int len)
 {
        int i = 0;
 
-       if (!libertas_debug)
-               return;
-
-       printk(KERN_DEBUG "%s: ", prompt);
-       for (i = 1; i <= len; i++) {
-               printk(KERN_DEBUG "%02x ", (u8) * buf);
-               buf++;
+       if (len &&
+           (libertas_debug & LBS_DEB_HEX) &&
+           (libertas_debug & grp))
+       {
+               for (i = 1; i <= len; i++) {
+                       if ((i & 0xf) == 1) {
+                               if (i != 1)
+                                       printk("\n");
+                               printk(DRV_NAME " %s: ", prompt);
+                       }
+                       printk("%02x ", (u8) * buf);
+                       buf++;
+               }
+               printk("\n");
        }
-       printk("\n");
 }
 #else
-#define lbs_pr_debug(level, format, args...)           do {} while (0)
-#define lbs_dev_dbg(level, device, format, args...)    do {} while (0)
-#define lbs_dbg_hex(x,y,z)                             do {} while (0)
+#define lbs_deb_hex(grp,prompt,buf,len)        do {} while (0)
 #endif
 
-#define        ENTER()                 lbs_pr_debug(1, "Enter: %s:%i\n", \
-                                       __FUNCTION__, __LINE__)
-#define        LEAVE()                 lbs_pr_debug(1, "Leave: %s:%i\n", \
-                                       __FUNCTION__, __LINE__)
+
 
 /** Buffer Constants */
 
@@ -74,7 +135,6 @@ static inline void lbs_dbg_hex(char *prompt, u8 * buf, int len)
 #define MRVDRV_NUM_OF_CMD_BUFFER        10
 #define MRVDRV_SIZE_OF_CMD_BUFFER       (2 * 1024)
 #define MRVDRV_MAX_CHANNEL_SIZE                14
-#define MRVDRV_MAX_BSSID_LIST          64
 #define MRVDRV_ASSOCIATION_TIME_OUT    255
 #define MRVDRV_SNAP_HEADER_LEN          8
 
@@ -97,13 +157,21 @@ static inline void lbs_dbg_hex(char *prompt, u8 * buf, int len)
 #define        MRVDRV_CHANNELS_PER_SCAN                4
 #define        MRVDRV_MAX_CHANNELS_PER_SCAN            14
 
-#define MRVDRV_DEBUG_RX_PATH           0x00000001
-#define MRVDRV_DEBUG_TX_PATH           0x00000002
-
 #define MRVDRV_MIN_BEACON_INTERVAL             20
 #define MRVDRV_MAX_BEACON_INTERVAL             1000
 #define MRVDRV_BEACON_INTERVAL                 100
 
+#define MARVELL_MESH_IE_LENGTH         9
+
+/** INT status Bit Definition*/
+#define MRVDRV_TX_DNLD_RDY             0x0001
+#define MRVDRV_RX_UPLD_RDY             0x0002
+#define MRVDRV_CMD_DNLD_RDY            0x0004
+#define MRVDRV_CMD_UPLD_RDY            0x0008
+#define MRVDRV_CARDEVENT               0x0010
+
+#define SBI_EVENT_CAUSE_SHIFT          3
+
 /** TxPD status */
 
 /*     Station firmware use TxPD status field to report final Tx transmit
@@ -159,9 +227,6 @@ static inline void lbs_dbg_hex(char *prompt, u8 * buf, int len)
 #define        CMD_F_HOSTCMD           (1 << 0)
 #define FW_CAPINFO_WPA         (1 << 0)
 
-/** WPA key LENGTH*/
-#define MRVL_MAX_KEY_WPA_KEY_LENGTH     32
-
 #define KEY_LEN_WPA_AES                        16
 #define KEY_LEN_WPA_TKIP               32
 #define KEY_LEN_WEP_104                        13
@@ -188,10 +253,7 @@ static inline void lbs_dbg_hex(char *prompt, u8 * buf, int len)
                         ((((int)(AVG) * (N -1)) + ((u16)(SNRNF) * \
                         AVG_SCALE))  / N))
 
-#define B_SUPPORTED_RATES              8
-#define G_SUPPORTED_RATES              14
-
-#define        WLAN_SUPPORTED_RATES            14
+#define MAX_RATES                      14
 
 #define        MAX_LEDS                        8
 
@@ -205,11 +267,7 @@ typedef struct _wlan_adapter wlan_adapter;
 extern const char libertas_driver_version[];
 extern u16 libertas_region_code_to_index[MRVDRV_MAX_REGION_CODE];
 
-extern u8 libertas_supported_rates[G_SUPPORTED_RATES];
-
-extern u8 libertas_adhoc_rates_g[G_SUPPORTED_RATES];
-
-extern u8 libertas_adhoc_rates_b[4];
+extern u8 libertas_bg_rates[MAX_RATES];
 
 /** ENUM definition*/
 /** SNRNF_TYPE */
@@ -228,11 +286,11 @@ enum SNRNF_DATA {
 
 /** WLAN_802_11_POWER_MODE */
 enum WLAN_802_11_POWER_MODE {
-       wlan802_11powermodecam,
-       wlan802_11powermodemax_psp,
-       wlan802_11Powermodefast_psp,
+       WLAN802_11POWERMODECAM,
+       WLAN802_11POWERMODEMAX_PSP,
+       WLAN802_11POWERMODEFAST_PSP,
        /*not a real mode, defined as an upper bound */
-       wlan802_11powemodemax
+       WLAN802_11POWEMODEMAX
 };
 
 /** PS_STATE */
@@ -252,14 +310,14 @@ enum DNLD_STATE {
 
 /** WLAN_MEDIA_STATE */
 enum WLAN_MEDIA_STATE {
-       libertas_connected,
-       libertas_disconnected
+       LIBERTAS_CONNECTED,
+       LIBERTAS_DISCONNECTED
 };
 
 /** WLAN_802_11_PRIVACY_FILTER */
 enum WLAN_802_11_PRIVACY_FILTER {
-       wlan802_11privfilteracceptall,
-       wlan802_11privfilter8021xWEP
+       WLAN802_11PRIVFILTERACCEPTALL,
+       WLAN802_11PRIVFILTER8021XWEP
 };
 
 /** mv_ms_type */
@@ -272,23 +330,23 @@ enum mv_ms_type {
 
 /** SNMP_MIB_INDEX_e */
 enum SNMP_MIB_INDEX_e {
-       desired_bsstype_i = 0,
-       op_rateset_i,
-       bcnperiod_i,
-       dtimperiod_i,
-       assocrsp_timeout_i,
-       rtsthresh_i,
-       short_retrylim_i,
-       long_retrylim_i,
-       fragthresh_i,
-       dot11d_i,
-       dot11h_i,
-       manufid_i,
-       prodID_i,
-       manuf_oui_i,
-       manuf_name_i,
-       manuf_prodname_i,
-       manuf_prodver_i,
+       DESIRED_BSSTYPE_I = 0,
+       OP_RATESET_I,
+       BCNPERIOD_I,
+       DTIMPERIOD_I,
+       ASSOCRSP_TIMEOUT_I,
+       RTSTHRESH_I,
+       SHORT_RETRYLIM_I,
+       LONG_RETRYLIM_I,
+       FRAGTHRESH_I,
+       DOT11D_I,
+       DOT11H_I,
+       MANUFID_I,
+       PRODID_I,
+       MANUF_OUI_I,
+       MANUF_NAME_I,
+       MANUF_PRODNAME_I,
+       MANUF_PRODVER_I,
 };
 
 /** KEY_TYPE_ID */
@@ -314,6 +372,8 @@ enum SNMP_MIB_VALUE_e {
 /* Default values for fwt commands. */
 #define FWT_DEFAULT_METRIC 0
 #define FWT_DEFAULT_DIR 1
+/* Default Rate, 11Mbps */
+#define FWT_DEFAULT_RATE 3
 #define FWT_DEFAULT_SSN 0xffffffff
 #define FWT_DEFAULT_DSN 0
 #define FWT_DEFAULT_HOPCOUNT 0