Hi Felix, First of all thanx for this new rate control algorithm! One question about AMPDUs (which is not really specific to your code but anyway): How do you handle "software retries"? At least ath9k seems to retry frames in serveral AMPDUs up to ATH_MAX_SW_RETRIES times within the driver (without notifying mac80211). First of all, is this your understanding as well? If my understanding is correct then there are two problems as I see it: 1) The rate control algorithm will get incorrect information about the transmission attempts. This could be corrected to some extent by correctly setting the count and idx tx_status fields taking software retries into account, but that interface is actually too thin to carry all the information since the frame may have been retried at many bitrates (more than 4). Also, the duration the radio has been busy transmitting the frame is impossible to derive because you do not know how many separate AMPDUs it has been transmitted in which makes a difference in contention window and inter frame space, etc. 2) The rate selection is suboptimal if software retries are not taken into account. The reason you want to use a high probability bitrate on the last few transmission attempts is that you want to avoid packet loss at (almost) any price. But if you can retry the frame in software it may be better to transmit only at spectrum efficient bitrates and use the receivers reorder buffer to avoid packet loss. This is IMHO one of the main advantages of the 802.11n MAC and something we should really try to take advantage of. Best regards, Björn On Mon, Mar 1, 2010 at 11:05 PM, Felix Fietkau <nbd@xxxxxxxxxxx> wrote: > > Hi all, > > this my initial implementation of minstrel for 802.11n. It works well > for me with ath9k, haven't tested any other drivers yet. It handles > guard interval setting, HT20/HT40 and multiple streams properly, > STBC isn't implemented yet (I'll implement driver support in ath9k > first). Legacy stations are handled by falling back to the old minstrel > implementation. > > It requires the following other patches that I submitted: > - ath9k: fix rate control tx status handling for A-MPDU > - minstrel: simplify and fix debugfs code > - minstrel: make the rate control ops reusable from another rc implementation > > There are still some things that need cleaning, for instance the > internal flags that I use on tx_info->flags, or the sharing of > the private struct with the old minstrel code. [snip] -- 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