1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>Chapter&#160;16.&#160;Aggregation</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="The 802.11 subsystems &#8211; for kernel developers"><link rel="up" href="advanced.html" title="Part&#160;II.&#160;Advanced driver interface"><link rel="prev" href="API-ieee80211-scan-completed.html" title="ieee80211_scan_completed"><link rel="next" href="bk02pt02ch16s02.html" title="RX A-MPDU aggregation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&#160;16.&#160;Aggregation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-ieee80211-scan-completed.html">Prev</a>&#160;</td><th width="60%" align="center">Part&#160;II.&#160;Advanced driver interface</th><td width="20%" align="right">&#160;<a accesskey="n" href="bk02pt02ch16s02.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="aggregation"></a>Chapter&#160;16.&#160;Aggregation</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="aggregation.html#idp1114292380">TX A-MPDU aggregation</a></span></dt><dt><span class="sect1"><a href="bk02pt02ch16s02.html">RX A-MPDU aggregation</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp1114292380"></a>TX A-MPDU aggregation</h2></div></div></div><p>
2   </p><p>
3   Aggregation on the TX side requires setting the hardware flag
4   <code class="constant">IEEE80211_HW_AMPDU_AGGREGATION</code>. The driver will then be handed
5   packets with a flag indicating A-MPDU aggregation. The driver
6   or device is responsible for actually aggregating the frames,
7   as well as deciding how many and which to aggregate.
8   </p><p>
9   When TX aggregation is started by some subsystem (usually the rate
10   control algorithm would be appropriate) by calling the
11   <code class="function">ieee80211_start_tx_ba_session</code> function, the driver will be
12   notified via its <em class="parameter"><code>ampdu_action</code></em> function, with the
13   <code class="constant">IEEE80211_AMPDU_TX_START</code> action.
14   </p><p>
15   In response to that, the driver is later required to call the
16   <code class="function">ieee80211_start_tx_ba_cb_irqsafe</code> function, which will really
17   start the aggregation session after the peer has also responded.
18   If the peer responds negatively, the session will be stopped
19   again right away. Note that it is possible for the aggregation
20   session to be stopped before the driver has indicated that it
21   is done setting it up, in which case it must not indicate the
22   setup completion.
23   </p><p>
24   Also note that, since we also need to wait for a response from
25   the peer, the driver is notified of the completion of the
26   handshake by the <code class="constant">IEEE80211_AMPDU_TX_OPERATIONAL</code> action to the
27   <em class="parameter"><code>ampdu_action</code></em> callback.
28   </p><p>
29   Similarly, when the aggregation session is stopped by the peer
30   or something calling <code class="function">ieee80211_stop_tx_ba_session</code>, the driver's
31   <em class="parameter"><code>ampdu_action</code></em> function will be called with the action
32   <code class="constant">IEEE80211_AMPDU_TX_STOP</code>. In this case, the call must not fail,
33   and the driver must later call <code class="function">ieee80211_stop_tx_ba_cb_irqsafe</code>.
34   Note that the sta can get destroyed before the BA tear down is
35   complete.
36</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-ieee80211-scan-completed.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="advanced.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="bk02pt02ch16s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">ieee80211_scan_completed</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;RX A-MPDU aggregation</td></tr></table></div></body></html>
37