linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/10] mac80211/iwlwifi: A-MPDU Tx support
@ 2008-01-10 17:22 Ron Rindjunsky
  2008-01-10 17:22 ` [RFC PATCH 01/10] mac80211: A-MPDU Tx add session's and low level driver's API Ron Rindjunsky
                   ` (9 more replies)
  0 siblings, 10 replies; 29+ messages in thread
From: Ron Rindjunsky @ 2008-01-10 17:22 UTC (permalink / raw)
  To: linville; +Cc: johannes, linux-wireless, flamingice, tomas.winkler, yi.zhu

Hi folks

This series is published as RFC, as I would like to address the design
for A-MPDU TX, reflected in the API and in implementation, since the
initiator side (Tx) is a bit more complicated then the recipient side (Rx).

Recipient (Rx) flow:
====================
regular Rx -> addBA request arrives -> addBA response send -> Rx switches to
A-MPDU from starting sequence number published in addBA request -> A-MPDU Rx
-> delBA arrives.

What we would expect from Initiator (Tx) flow:
================================================ 
regular Tx -> addBA request send -> addBA response arrives -> Tx switches to
A-MPDU from starting sequence number published in addBA request -> A-MPDU Tx
-> delBA send

What are the pitfalls in Tx flow:
=================================
1 - Session "handshake" idle time - As addBA request/response is being done
during regular data flow the initiator can not just stop Tx and wait for
recipient answer because it will cause a serious drop in performance,
especially considering the fact that recipient can decline the request,
so during this period Tx should continue, much the same like recipient
does not stops Rx after addBA request arrives...

2 - Starting sequence number (ssn) - Because we don't want to stop Tx flow,
starting sequence number for first possible A-MPDU frame should be forecasted,
either based on mac80211 book keeping, but more likely on low-level driver
estimation upon current HW queues status that are likely buffered with frames
for Tx in regular mode, and in that case this forecast should be supplied to
mac80211 by low level driver so a correct addBA request with the ssn will be
issued to recipient.

3 - Finish Tx of regular MPDUs - If recipient does accept the addBA, and
A-MPDU session should start, low level driver should first check that all
queued frames for regular Tx on same TID prior to published ssn were delivered
to recipient, and only then allow A-MPDU Tx. When stopping A-MPDU the opposite
should happen, finish sending all A-MPDU, and only then send delBA and
do regular Tx.

4 - Queue policy - regular Tx is based on QoS AC granularity, while A-MPDU Tx
is based on TID/Receiving Address granularity, so already upon A-MPDU
_intention_ (before addBA request is issued), already a classification change
should occur, and return to QoS granularity only if aggregation stopped or
declined.

5 - Queues drain (HW queues and Qdiscs) - so, derived from the above,
either when starting or stopping A-MPDU session, HW queues and Qdiscs should
first be examined and drained, so no packet loss due to wrong Tx mode,
delay in Tx, or leftovers that were buffered in the queues will occur.

So, considering these constraints, low-level driver needs to handle next issues:

1 - Starting sequence number (deliver to mac80211).
    Done through the ampdu_action ops interface.
2 - Make sure HW queue are clear to Tx (TID criteria) and ready to
    A-MPDU when starting aggregation (and report to mac80211 MLME),
    and clear and ready to regular Tx when stopping aggregation
    (and report to mac80211 MLME), This readiness will be reported
    to mac80211 through the supplied call backs.

While mac80211 will have to control:

1 - Session level (MLME), you can review these changes inside the patches.
2 - AC/TIDxRA queue policy (Qdisc). I have a functioning solution here,
    but will be glad to hear comments and suggestions, as I not sure about
    this implementation.

Thanks everyone
Ron


---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2008-01-28 14:00 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-10 17:22 [RFC PATCH 0/10] mac80211/iwlwifi: A-MPDU Tx support Ron Rindjunsky
2008-01-10 17:22 ` [RFC PATCH 01/10] mac80211: A-MPDU Tx add session's and low level driver's API Ron Rindjunsky
2008-01-11 16:29   ` Johannes Berg
2008-01-13 15:17     ` Ron Rindjunsky
2008-01-13 21:58       ` Johannes Berg
2008-01-14  9:25         ` Ron Rindjunsky
2008-01-10 17:22 ` [RFC PATCH 02/10] mac80211: A-MPDU Tx add MLME structures Ron Rindjunsky
2008-01-11 16:31   ` Johannes Berg
2008-01-10 17:22 ` [RFC PATCH 03/10] mac80211: A-MPDU Tx adding basic functionality Ron Rindjunsky
2008-01-11 16:51   ` Johannes Berg
2008-01-13 15:18     ` Ron Rindjunsky
2008-01-13 21:51       ` Johannes Berg
2008-01-14  9:26         ` Ron Rindjunsky
2008-01-14 10:35           ` Johannes Berg
2008-01-10 17:22 ` [RFC PATCH 04/10] mac80211: A-MPDU Tx MLME data initialization Ron Rindjunsky
2008-01-10 17:22 ` [RFC PATCH 05/10] mac80211: A-MPDU add debugfs support Ron Rindjunsky
2008-01-10 17:22 ` [RFC PATCH 06/10] mac80211: A-MPDU Tx adding qdisc support Ron Rindjunsky
2008-01-11 16:55   ` Johannes Berg
2008-01-27 17:55   ` Patrick McHardy
2008-01-27 19:19     ` Tomas Winkler
2008-01-28 13:44       ` Patrick McHardy
2008-01-10 17:22 ` [RFC PATCH 07/10] mac80211: A-MPDU Tx change tx_status to support Block Ack data Ron Rindjunsky
2008-01-11 16:56   ` Johannes Berg
2008-01-12 11:43     ` Tomas Winkler
     [not found]       ` <49299.::ffff:91.5.126.126.1200138845.squirrel@secure.sipsolutions.net>
2008-01-12 12:37         ` Rindjunsky, Ron
     [not found]       ` <-2543242200241674408@unknownmsgid>
2008-01-12 12:47         ` Tomas Winkler
2008-01-10 17:22 ` [RFC PATCH 08/10] iwlwifi: A-MPDU Tx conform API to mac80211 Ron Rindjunsky
2008-01-10 17:22 ` [RFC PATCH 09/10] iwlwifi: A-MPDU Tx conform flows " Ron Rindjunsky
2008-01-10 17:22 ` [RFC PATCH 10/10] iwlwifi: A-MPDU Tx conform block Ack rate scaling " Ron Rindjunsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).