diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/agg-rx.c | 11 | ||||
-rw-r--r-- | net/mac80211/main.c | 12 |
2 files changed, 13 insertions, 10 deletions
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c index f138b195d657..227ca82eef72 100644 --- a/net/mac80211/agg-rx.c +++ b/net/mac80211/agg-rx.c | |||
@@ -185,8 +185,6 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, | |||
185 | struct ieee80211_mgmt *mgmt, | 185 | struct ieee80211_mgmt *mgmt, |
186 | size_t len) | 186 | size_t len) |
187 | { | 187 | { |
188 | struct ieee80211_hw *hw = &local->hw; | ||
189 | struct ieee80211_conf *conf = &hw->conf; | ||
190 | struct tid_ampdu_rx *tid_agg_rx; | 188 | struct tid_ampdu_rx *tid_agg_rx; |
191 | u16 capab, tid, timeout, ba_policy, buf_size, start_seq_num, status; | 189 | u16 capab, tid, timeout, ba_policy, buf_size, start_seq_num, status; |
192 | u8 dialog_token; | 190 | u8 dialog_token; |
@@ -231,13 +229,8 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, | |||
231 | goto end_no_lock; | 229 | goto end_no_lock; |
232 | } | 230 | } |
233 | /* determine default buffer size */ | 231 | /* determine default buffer size */ |
234 | if (buf_size == 0) { | 232 | if (buf_size == 0) |
235 | struct ieee80211_supported_band *sband; | 233 | buf_size = IEEE80211_MAX_AMPDU_BUF; |
236 | |||
237 | sband = local->hw.wiphy->bands[conf->channel->band]; | ||
238 | buf_size = IEEE80211_MIN_AMPDU_BUF; | ||
239 | buf_size = buf_size << sband->ht_cap.ampdu_factor; | ||
240 | } | ||
241 | 234 | ||
242 | 235 | ||
243 | /* examine state machine */ | 236 | /* examine state machine */ |
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 485d36bc9a46..a46ff06d7cb8 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -39,6 +39,8 @@ module_param(ieee80211_disable_40mhz_24ghz, bool, 0644); | |||
39 | MODULE_PARM_DESC(ieee80211_disable_40mhz_24ghz, | 39 | MODULE_PARM_DESC(ieee80211_disable_40mhz_24ghz, |
40 | "Disable 40MHz support in the 2.4GHz band"); | 40 | "Disable 40MHz support in the 2.4GHz band"); |
41 | 41 | ||
42 | static struct lock_class_key ieee80211_rx_skb_queue_class; | ||
43 | |||
42 | void ieee80211_configure_filter(struct ieee80211_local *local) | 44 | void ieee80211_configure_filter(struct ieee80211_local *local) |
43 | { | 45 | { |
44 | u64 mc; | 46 | u64 mc; |
@@ -569,7 +571,15 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
569 | spin_lock_init(&local->filter_lock); | 571 | spin_lock_init(&local->filter_lock); |
570 | spin_lock_init(&local->queue_stop_reason_lock); | 572 | spin_lock_init(&local->queue_stop_reason_lock); |
571 | 573 | ||
572 | skb_queue_head_init(&local->rx_skb_queue); | 574 | /* |
575 | * The rx_skb_queue is only accessed from tasklets, | ||
576 | * but other SKB queues are used from within IRQ | ||
577 | * context. Therefore, this one needs a different | ||
578 | * locking class so our direct, non-irq-safe use of | ||
579 | * the queue's lock doesn't throw lockdep warnings. | ||
580 | */ | ||
581 | skb_queue_head_init_class(&local->rx_skb_queue, | ||
582 | &ieee80211_rx_skb_queue_class); | ||
573 | 583 | ||
574 | INIT_DELAYED_WORK(&local->scan_work, ieee80211_scan_work); | 584 | INIT_DELAYED_WORK(&local->scan_work, ieee80211_scan_work); |
575 | 585 | ||