Merge branch 'acpica' into release
[pandora-kernel.git] / drivers / net / wireless / ath / ath.h
index a63e90c..9e05648 100644 (file)
 #define ATH_H
 
 #include <linux/skbuff.h>
+#include <linux/if_ether.h>
+#include <net/mac80211.h>
+
+/*
+ * The key cache is used for h/w cipher state and also for
+ * tracking station state such as the current tx antenna.
+ * We also setup a mapping table between key cache slot indices
+ * and station state to short-circuit node lookups on rx.
+ * Different parts have different size key caches.  We handle
+ * up to ATH_KEYMAX entries (could dynamically allocate state).
+ */
+#define        ATH_KEYMAX              128     /* max key cache size we handle */
+
+static const u8 ath_bcast_mac[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+
+struct ath_ani {
+       bool caldone;
+       int16_t noise_floor;
+       unsigned int longcal_timer;
+       unsigned int shortcal_timer;
+       unsigned int resetcal_timer;
+       unsigned int checkani_timer;
+       struct timer_list timer;
+};
+
+enum ath_device_state {
+       ATH_HW_UNAVAILABLE,
+       ATH_HW_INITIALIZED,
+};
 
 struct reg_dmn_pair_mapping {
        u16 regDmnEnum;
@@ -36,13 +65,53 @@ struct ath_regulatory {
        struct reg_dmn_pair_mapping *regpair;
 };
 
+struct ath_ops {
+       unsigned int (*read)(void *, u32 reg_offset);
+        void (*write)(void *, u32 val, u32 reg_offset);
+};
+
+struct ath_common;
+
+struct ath_bus_ops {
+       void            (*read_cachesize)(struct ath_common *common, int *csz);
+       void            (*cleanup)(struct ath_common *common);
+       bool            (*eeprom_read)(struct ath_common *common, u32 off, u16 *data);
+       void            (*bt_coex_prep)(struct ath_common *common);
+};
+
 struct ath_common {
+       void *ah;
+       void *priv;
+       struct ieee80211_hw *hw;
+       int debug_mask;
+       enum ath_device_state state;
+
+       struct ath_ani ani;
+
        u16 cachelsz;
+       u16 curaid;
+       u8 macaddr[ETH_ALEN];
+       u8 curbssid[ETH_ALEN];
+       u8 bssidmask[ETH_ALEN];
+
+       u8 tx_chainmask;
+       u8 rx_chainmask;
+
+       u32 rx_bufsize;
+
+       u32 keymax;
+       DECLARE_BITMAP(keymap, ATH_KEYMAX);
+       u8 splitmic;
+
        struct ath_regulatory regulatory;
+       const struct ath_ops *ops;
+       const struct ath_bus_ops *bus_ops;
 };
 
 struct sk_buff *ath_rxbuf_alloc(struct ath_common *common,
                                u32 len,
                                gfp_t gfp_mask);
 
+void ath_hw_setbssidmask(struct ath_common *common);
+
 #endif /* ATH_H */