Rajkumar Manoharan <rmanohar@xxxxxxxxxxxxxx> writes: >>> As mentioned earlier, next_txq() can not be used for fetching txq >>> directly. So reorder_txq() needs to take care of refilling txq after >>> serving them. >> >> Yeah, I got that; but see above. Unless there's a guarantee that the >> push/pull mechanism will be round-robin scheduled (which as I'm reading >> the code there isn't), just increasing the deficit on every call to >> reorder_txq() is not going to ensure fairness (it'll probably help >> some, >> but it won't be completely fair). >> >> However, if we add the check to reorder_txq() so the deficit increase + >> rotation is only done if the TXQ is at the head of the list, we'll get >> round-robin-equivalent behaviour since a TXQ will only get to continue >> when it happens to have rotated to the head of the queue. As I >> mentioned >> previously it will break MIMO, but I we could fix that later once we've >> verified that the basic mechanism works. >> > Hmm... The pull mechanism operates in round-robin fashion. Agree that > accessing only head node is right way of ensuring fairness. Ah, excellent; then it should be no problem to enforce the head node access; worst case the pull mechanism will be at a different point in the round-robin, which will sync up quickly. > Will fix it and rename as ieee80211_txq_can_transmit(). Cool. If you send an updated patchset I can fold it into an updated version of my RFC and send it as a proper patch once I've verified everything works with ath9k :) > Thanks Toke for your feedback. You're welcome! And thanks for working on this :) -Toke