On 17 April 2016 at 00:21, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: >> +static void ieee80211_txq_enqueue(struct ieee80211_local *local, >> + struct txq_info *txqi, >> + struct sk_buff *skb) >> +{ >> + lockdep_assert_held(&txqi->queue.lock); > [...] >> + atomic_inc(&local->num_tx_queued); > > This global kinda bothers me - anything we can do about removing it? I don't think so. Re-counting via sta/vif/txq iteration every time is rather a bad idea. FWIW This is removed by the "fq" patch. The main purpose of taildrop patch is to make some comparisons easier. > We obviously didn't have it now - just one (even bigger limit!) per > queue, so that's 4000 frames default per interface ... now you're down > to 512 for the entire hardware. Perhaps keeping it per interface at > least gets away the worst of the contention here? The default qdisc limits were arguably already too big anyway. Nevertheless it makes sense to have the 512 limit per interface instead of per radio. I'll move num_tx_queued to sdata. Michał -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html