On 2011-01-09 9:39 PM, Ben Greear wrote: > On 01/09/2011 10:19 AM, Felix Fietkau wrote: >> On 2011-01-09 12:46 AM, gree...@candelatech.com wrote: >>> diff --git a/drivers/net/wireless/ath/ath9k/xmit.c >>> b/drivers/net/wireless/ath/ath9k/xmit.c >>> index d9a4144..1b3a62c 100644 >>> --- a/drivers/net/wireless/ath/ath9k/xmit.c >>> +++ b/drivers/net/wireless/ath/ath9k/xmit.c >>> @@ -1988,19 +1988,30 @@ static void ath_tx_rc_status(struct ath_buf *bf, >>> struct ath_tx_status *ts, >>> tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1; >>> } >>> >>> -static void ath_wake_mac80211_queue(struct ath_softc *sc, int qnum) >>> +/* Has no locking. */ >>> +static void __ath_wake_mac80211_queue(struct ath_softc *sc, struct >>> ath_txq *txq) >>> { >>> - struct ath_txq *txq; >>> - >>> - txq = sc->tx.txq_map[qnum]; >>> - spin_lock_bh(&txq->axq_lock); >>> if (txq->stopped&& txq->pending_frames< ATH_MAX_QDEPTH) { >>> - if (ath_mac80211_start_queue(sc, qnum)) >>> + if (ath_mac80211_start_queue(sc, txq->axq_qnum)) >>> txq->stopped = 0; >>> } >>> +} >> This part is quite broken, I think you got confused with various types of >> queue numbers. txq->axq_qnum refers to the atheros hw queue index, whereas >> the qnum >> argument to this function refers to the mac80211 queue index (which is also >> the correct index for sc->tx.txq_map - not to be confused with the >> sc->tx.txq array). > > Yeah, I am confused on all of this. Looks like I should add a member to the > txq struct to > record it's mac80211 index and use that instead? How about just passing the proper qnum? You can get it from the skb queue mapping anyway.
> In the upstream code, is this correct? It seems to me that it should always > be waking 'txq' since it just completed a packet. Why the check > against txq_map? > > if (txq == sc->tx.txq_map[qnum]) > ath_wake_mac80211_queue(sc, qnum); Things like CAB (or maybe UAPSD at some point), where a frame might go out through a queue other than the 4 WMM data queues. - Felix _______________________________________________ ath9k-devel mailing list ath9k-devel@lists.ath9k.org https://lists.ath9k.org/mailman/listinfo/ath9k-devel