]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/mac80211/ieee80211_i.h
Merge branch 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
[linux-2.6-omap-h63xx.git] / net / mac80211 / ieee80211_i.h
index 527205f8c1a1437cf504cd11c1f0d3aef049b112..f3eec989662bebb2523d4df393f608546308cc94 100644 (file)
@@ -187,7 +187,6 @@ struct ieee80211_rx_data {
        struct ieee80211_rx_status *status;
        struct ieee80211_rate *rate;
 
-       u16 ethertype;
        unsigned int flags;
        int sent_ps_buffered;
        int queue;
@@ -539,6 +538,11 @@ enum {
        IEEE80211_ADDBA_MSG     = 4,
 };
 
+enum queue_stop_reason {
+       IEEE80211_QUEUE_STOP_REASON_DRIVER,
+       IEEE80211_QUEUE_STOP_REASON_PS,
+};
+
 /* maximum number of hardware queues we support. */
 #define QD_MAX_QUEUES (IEEE80211_MAX_AMPDU_QUEUES + IEEE80211_MAX_QUEUES)
 
@@ -555,7 +559,8 @@ struct ieee80211_local {
        const struct ieee80211_ops *ops;
 
        unsigned long queue_pool[BITS_TO_LONGS(QD_MAX_QUEUES)];
-
+       unsigned long queue_stop_reasons[IEEE80211_MAX_QUEUES];
+       spinlock_t queue_stop_reason_lock;
        struct net_device *mdev; /* wmaster# - "master" 802.11 device */
        int open_count;
        int monitors, cooked_mntrs;
@@ -626,7 +631,7 @@ struct ieee80211_local {
        struct delayed_work scan_work;
        struct ieee80211_sub_if_data *scan_sdata;
        struct ieee80211_channel *oper_channel, *scan_channel;
-       enum nl80211_sec_chan_offset oper_sec_chan_offset;
+       enum nl80211_channel_type oper_channel_type;
        u8 scan_ssid[IEEE80211_MAX_SSID_LEN];
        size_t scan_ssid_len;
        struct list_head bss_list;
@@ -690,6 +695,12 @@ struct ieee80211_local {
        int wifi_wme_noack_test;
        unsigned int wmm_acm; /* bit field of ACM bits (BIT(802.1D tag)) */
 
+       bool powersave;
+       int dynamic_ps_timeout;
+       struct work_struct dynamic_ps_enable_work;
+       struct work_struct dynamic_ps_disable_work;
+       struct timer_list dynamic_ps_timer;
+
 #ifdef CONFIG_MAC80211_DEBUGFS
        struct local_debugfsdentries {
                struct dentry *rcdir;
@@ -864,8 +875,7 @@ int ieee80211_sta_set_bssid(struct ieee80211_sub_if_data *sdata, u8 *bssid);
 void ieee80211_sta_req_auth(struct ieee80211_sub_if_data *sdata,
                            struct ieee80211_if_sta *ifsta);
 struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
-                                       struct sk_buff *skb, u8 *bssid,
-                                       u8 *addr, u64 supp_rates);
+                                       u8 *bssid, u8 *addr, u64 supp_rates);
 int ieee80211_sta_deauthenticate(struct ieee80211_sub_if_data *sdata, u16 reason);
 int ieee80211_sta_disassociate(struct ieee80211_sub_if_data *sdata, u16 reason);
 u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata);
@@ -973,6 +983,15 @@ int ieee80211_set_freq(struct ieee80211_sub_if_data *sdata, int freq);
 u64 ieee80211_mandatory_rates(struct ieee80211_local *local,
                              enum ieee80211_band band);
 
+void ieee80211_dynamic_ps_enable_work(struct work_struct *work);
+void ieee80211_dynamic_ps_disable_work(struct work_struct *work);
+void ieee80211_dynamic_ps_timer(unsigned long data);
+
+void ieee80211_wake_queues_by_reason(struct ieee80211_hw *hw,
+                                    enum queue_stop_reason reason);
+void ieee80211_stop_queues_by_reason(struct ieee80211_hw *hw,
+                                    enum queue_stop_reason reason);
+
 #ifdef CONFIG_MAC80211_NOINLINE
 #define debug_noinline noinline
 #else