Johannes Berg wrote: > If that was done in the RC at least (could easily be moved I suppose) > and you cleaned up the RC, then surely nbd would play with porting > minstrel and making it aware of such things, which probably makes for a > better RC... And since you have to clean up the RC anyway :) > Sure, just migrating to minstrel would be the better option. It would probably need to be spruced up a bit to accommodate aggregation specific data. > > I was talking about this: > > (txq->axq_depth < ATH_AGGR_MIN_QDEPTH) in ath_tx_sched_aggr()@xmit.c > > But what does this invariant mean? ATH_AGGR_MIN_QDEPTH is 2. > Well, this is not relevant when frames are aggregated and sent down by mac80211. That check was present because frames were being created and sent in the TX tasklet. > > How would mac80211 buffer frames ? > > Well I suppose it would just put them on a list in the sta_info struct. > A list for each TID, no ? > > Would it wait for enough sub-frames > > to fill an A-MPDU ? > > It should, no? And if for some reason that doesn't happen fast enough it > can send them out anyway, it'll just be a shorter A-MPDU, no? > > > When does it decide that buffered frames have to > > be pushed down to the driver ? > > When the A-MPDU is full, subject to the TX and RX constraints, or when > too much time has passed maybe? > > I really don't know. But I'd like to get to a model where we can > implement other drivers without having to keep track of all this like > ath9k does. To summarize a bit about the state/control information that mac80211 needs to maintain for an aggregation session: * Block Ack state for each TID (sequence numbers, BA window etc.) * Maintain a list of buffers for each <RA,TID> (setup, teardown etc.) * Handle retransmission of unacked frames. Forming an aggregate would involve the following. ( These might depend on HW caps as well as the recipient STA's caps) * Aggregate length * Delimiters * Padding of sub-frames TX control information will probably need to pass aggr. specific information (number of delimiters etc.) The API for aggregation can extend the ampdu_action() callback. Adding a few more states can probably suffice initially. We'll work on this and come up with an RFC. Sujith -- 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