diff options
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/debugfs_netdev.c | 11 | ||||
-rw-r--r-- | net/mac80211/util.c | 13 |
2 files changed, 17 insertions, 7 deletions
diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c index b1438fd4d876..64b544ae9966 100644 --- a/net/mac80211/debugfs_netdev.c +++ b/net/mac80211/debugfs_netdev.c | |||
@@ -487,9 +487,14 @@ static ssize_t ieee80211_if_fmt_aqm( | |||
487 | const struct ieee80211_sub_if_data *sdata, char *buf, int buflen) | 487 | const struct ieee80211_sub_if_data *sdata, char *buf, int buflen) |
488 | { | 488 | { |
489 | struct ieee80211_local *local = sdata->local; | 489 | struct ieee80211_local *local = sdata->local; |
490 | struct txq_info *txqi = to_txq_info(sdata->vif.txq); | 490 | struct txq_info *txqi; |
491 | int len; | 491 | int len; |
492 | 492 | ||
493 | if (!sdata->vif.txq) | ||
494 | return 0; | ||
495 | |||
496 | txqi = to_txq_info(sdata->vif.txq); | ||
497 | |||
493 | spin_lock_bh(&local->fq.lock); | 498 | spin_lock_bh(&local->fq.lock); |
494 | rcu_read_lock(); | 499 | rcu_read_lock(); |
495 | 500 | ||
@@ -658,7 +663,9 @@ static void add_common_files(struct ieee80211_sub_if_data *sdata) | |||
658 | DEBUGFS_ADD(rc_rateidx_vht_mcs_mask_5ghz); | 663 | DEBUGFS_ADD(rc_rateidx_vht_mcs_mask_5ghz); |
659 | DEBUGFS_ADD(hw_queues); | 664 | DEBUGFS_ADD(hw_queues); |
660 | 665 | ||
661 | if (sdata->local->ops->wake_tx_queue) | 666 | if (sdata->local->ops->wake_tx_queue && |
667 | sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE && | ||
668 | sdata->vif.type != NL80211_IFTYPE_NAN) | ||
662 | DEBUGFS_ADD(aqm); | 669 | DEBUGFS_ADD(aqm); |
663 | } | 670 | } |
664 | 671 | ||
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 051a02ddcb85..32a7a53833c0 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -247,7 +247,8 @@ static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac) | |||
247 | struct sta_info *sta; | 247 | struct sta_info *sta; |
248 | int i; | 248 | int i; |
249 | 249 | ||
250 | spin_lock_bh(&fq->lock); | 250 | local_bh_disable(); |
251 | spin_lock(&fq->lock); | ||
251 | 252 | ||
252 | if (sdata->vif.type == NL80211_IFTYPE_AP) | 253 | if (sdata->vif.type == NL80211_IFTYPE_AP) |
253 | ps = &sdata->bss->ps; | 254 | ps = &sdata->bss->ps; |
@@ -273,9 +274,9 @@ static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac) | |||
273 | &txqi->flags)) | 274 | &txqi->flags)) |
274 | continue; | 275 | continue; |
275 | 276 | ||
276 | spin_unlock_bh(&fq->lock); | 277 | spin_unlock(&fq->lock); |
277 | drv_wake_tx_queue(local, txqi); | 278 | drv_wake_tx_queue(local, txqi); |
278 | spin_lock_bh(&fq->lock); | 279 | spin_lock(&fq->lock); |
279 | } | 280 | } |
280 | } | 281 | } |
281 | 282 | ||
@@ -288,12 +289,14 @@ static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac) | |||
288 | (ps && atomic_read(&ps->num_sta_ps)) || ac != vif->txq->ac) | 289 | (ps && atomic_read(&ps->num_sta_ps)) || ac != vif->txq->ac) |
289 | goto out; | 290 | goto out; |
290 | 291 | ||
291 | spin_unlock_bh(&fq->lock); | 292 | spin_unlock(&fq->lock); |
292 | 293 | ||
293 | drv_wake_tx_queue(local, txqi); | 294 | drv_wake_tx_queue(local, txqi); |
295 | local_bh_enable(); | ||
294 | return; | 296 | return; |
295 | out: | 297 | out: |
296 | spin_unlock_bh(&fq->lock); | 298 | spin_unlock(&fq->lock); |
299 | local_bh_enable(); | ||
297 | } | 300 | } |
298 | 301 | ||
299 | static void | 302 | static void |