summaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/debugfs_netdev.c11
-rw-r--r--net/mac80211/util.c13
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;
295out: 297out:
296 spin_unlock_bh(&fq->lock); 298 spin_unlock(&fq->lock);
299 local_bh_enable();
297} 300}
298 301
299static void 302static void