Functions
agg-tx.c File Reference
#include <linux/ieee80211.h>
#include <linux/slab.h>
#include <linux/export.h>
#include <net/mac80211.h>
#include "ieee80211_i.h"
#include "driver-ops.h"
#include "wme.h"
Include dependency graph for kernel-3.5/agg-tx.c:

Go to the source code of this file.

Functions

int ___ieee80211_stop_tx_ba_session (struct sta_info *sta, u16 tid, enum ieee80211_back_parties initiator, bool tx)
static void __acquires (agg_queue)
int __ieee80211_stop_tx_ba_session (struct sta_info *sta, u16 tid, enum ieee80211_back_parties initiator, bool tx)
static void __releases (agg_queue)
 EXPORT_SYMBOL (ieee80211_send_bar)
 EXPORT_SYMBOL (ieee80211_start_tx_ba_session)
 EXPORT_SYMBOL (ieee80211_start_tx_ba_cb_irqsafe)
 EXPORT_SYMBOL (ieee80211_stop_tx_ba_session)
 EXPORT_SYMBOL (ieee80211_stop_tx_ba_cb_irqsafe)
static int ieee80211_ac_from_tid (int tid)
static void ieee80211_agg_tx_operational (struct ieee80211_local *local, struct sta_info *sta, u16 tid)
void ieee80211_assign_tid_tx (struct sta_info *sta, int tid, struct tid_ampdu_tx *tid_tx)
void ieee80211_process_addba_resp (struct ieee80211_local *local, struct sta_info *sta, struct ieee80211_mgmt *mgmt, size_t len)
static void ieee80211_send_addba_request (struct ieee80211_sub_if_data *sdata, const u8 *da, u16 tid, u8 dialog_token, u16 start_seq_num, u16 agg_size, u16 timeout)
void ieee80211_send_bar (struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn)
void ieee80211_start_tx_ba_cb (struct ieee80211_vif *vif, u8 *ra, u16 tid)
void ieee80211_start_tx_ba_cb_irqsafe (struct ieee80211_vif *vif, const u8 *ra, u16 tid)
int ieee80211_start_tx_ba_session (struct ieee80211_sta *pubsta, u16 tid, u16 timeout)
void ieee80211_stop_tx_ba_cb (struct ieee80211_vif *vif, u8 *ra, u8 tid)
void ieee80211_stop_tx_ba_cb_irqsafe (struct ieee80211_vif *vif, const u8 *ra, u16 tid)
int ieee80211_stop_tx_ba_session (struct ieee80211_sta *pubsta, u16 tid)
void ieee80211_tx_ba_session_handle_start (struct sta_info *sta, int tid)
static void sta_addba_resp_timer_expired (unsigned long data)
static void sta_tx_agg_session_timer_expired (unsigned long data)

Function Documentation

int ___ieee80211_stop_tx_ba_session ( struct sta_info sta,
u16  tid,
enum ieee80211_back_parties  initiator,
bool  tx 
)

Definition at line 151 of file kernel-3.5/agg-tx.c.

static void __acquires ( agg_queue  ) [static]

Definition at line 288 of file kernel-3.5/agg-tx.c.

int __ieee80211_stop_tx_ba_session ( struct sta_info sta,
u16  tid,
enum ieee80211_back_parties  initiator,
bool  tx 
)

Definition at line 689 of file kernel-3.5/agg-tx.c.

static void __releases ( agg_queue  ) [static]

Definition at line 300 of file kernel-3.5/agg-tx.c.

static int ieee80211_ac_from_tid ( int  tid) [inline, static]

Definition at line 272 of file kernel-3.5/agg-tx.c.

static void ieee80211_agg_tx_operational ( struct ieee80211_local local,
struct sta_info sta,
u16  tid 
) [static]

Definition at line 585 of file kernel-3.5/agg-tx.c.

void ieee80211_assign_tid_tx ( struct sta_info sta,
int  tid,
struct tid_ampdu_tx tid_tx 
)

Definition at line 143 of file kernel-3.5/agg-tx.c.

void ieee80211_process_addba_resp ( struct ieee80211_local local,
struct sta_info sta,
struct ieee80211_mgmt *  mgmt,
size_t  len 
)

Definition at line 838 of file kernel-3.5/agg-tx.c.

static void ieee80211_send_addba_request ( struct ieee80211_sub_if_data sdata,
const u8 da,
u16  tid,
u8  dialog_token,
u16  start_seq_num,
u16  agg_size,
u16  timeout 
) [static]

DOC: TX A-MPDU aggregation

Aggregation on the TX side requires setting the hardware flag IEEE80211_HW_AMPDU_AGGREGATION. The driver will then be handed packets with a flag indicating A-MPDU aggregation. The driver or device is responsible for actually aggregating the frames, as well as deciding how many and which to aggregate.

When TX aggregation is started by some subsystem (usually the rate control algorithm would be appropriate) by calling the ieee80211_start_tx_ba_session() function, the driver will be notified via its function, with the IEEE80211_AMPDU_TX_START action.

In response to that, the driver is later required to call the ieee80211_start_tx_ba_cb_irqsafe() function, which will really start the aggregation session after the peer has also responded. If the peer responds negatively, the session will be stopped again right away. Note that it is possible for the aggregation session to be stopped before the driver has indicated that it is done setting it up, in which case it must not indicate the setup completion.

Also note that, since we also need to wait for a response from the peer, the driver is notified of the completion of the handshake by the IEEE80211_AMPDU_TX_OPERATIONAL action to the callback.

Similarly, when the aggregation session is stopped by the peer or something calling ieee80211_stop_tx_ba_session(), the driver's function will be called with the action IEEE80211_AMPDU_TX_STOP. In this case, the call must not fail, and the driver must later call ieee80211_stop_tx_ba_cb_irqsafe(). Note that the sta can get destroyed before the BA tear down is complete.

Definition at line 62 of file kernel-3.5/agg-tx.c.

void ieee80211_send_bar ( struct ieee80211_vif *  vif,
u8 ra,
u16  tid,
u16  ssn 
)

Definition at line 113 of file kernel-3.5/agg-tx.c.

void ieee80211_start_tx_ba_cb ( struct ieee80211_vif *  vif,
u8 ra,
u16  tid 
)

Definition at line 620 of file kernel-3.5/agg-tx.c.

void ieee80211_start_tx_ba_cb_irqsafe ( struct ieee80211_vif *  vif,
const u8 ra,
u16  tid 
)

Definition at line 668 of file kernel-3.5/agg-tx.c.

int ieee80211_start_tx_ba_session ( struct ieee80211_sta *  pubsta,
u16  tid,
u16  timeout 
)

Definition at line 447 of file kernel-3.5/agg-tx.c.

void ieee80211_stop_tx_ba_cb ( struct ieee80211_vif *  vif,
u8 ra,
u8  tid 
)

Definition at line 743 of file kernel-3.5/agg-tx.c.

void ieee80211_stop_tx_ba_cb_irqsafe ( struct ieee80211_vif *  vif,
const u8 ra,
u16  tid 
)

Definition at line 816 of file kernel-3.5/agg-tx.c.

int ieee80211_stop_tx_ba_session ( struct ieee80211_sta *  pubsta,
u16  tid 
)

Definition at line 704 of file kernel-3.5/agg-tx.c.

void ieee80211_tx_ba_session_handle_start ( struct sta_info sta,
int  tid 
)

Definition at line 345 of file kernel-3.5/agg-tx.c.

static void sta_addba_resp_timer_expired ( unsigned long  data) [static]

Definition at line 239 of file kernel-3.5/agg-tx.c.

static void sta_tx_agg_session_timer_expired ( unsigned long  data) [static]

Definition at line 411 of file kernel-3.5/agg-tx.c.



ros_rt_wmp
Author(s): Danilo Tardioli, dantard@unizar.es
autogenerated on Fri Jan 3 2014 12:07:56