1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>Chapter 16. Aggregation</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="The 802.11 subsystems – for kernel developers"><link rel="up" href="advanced.html" title="Part II. 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 16. Aggregation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-ieee80211-scan-completed.html">Prev</a> </td><th width="60%" align="center">Part II. Advanced driver interface</th><td width="20%" align="right"> <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 16. 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> </td><td width="20%" align="center"><a accesskey="u" href="advanced.html">Up</a></td><td width="40%" align="right"> <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> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> RX A-MPDU aggregation</td></tr></table></div></body></html> 37