# /space/home/slher/rel/Beken/v6_4_5/macsw/ip/lmac/src/tx/txl/txl_agg.h File Reference

LMAC TX aggregation related definitions. More...

`#include "co_int.h"`
`#include "mac.h"`
`#include "co_status.h"`
`#include "co_list.h"`
`#include "tx_swdesc.h"`
`#include "ke_event.h"`
`#include "hal_machw.h"`
`#include "sta_mgmt.h"`

Go to the source code of this file.

## Data Structures
struct | tx_agg_desc
| Aggregation descriptor, containing AMPDU THD, BAR descriptor, BAR payload and Policy Table. More...
## Functions
External API
__INLINE bool | is_mpdu_agg (struct txdesc *txdesc)
| Return boolean corresponding to MPDU being aggregatable or not.
__INLINE bool | is_mpdu_first (struct txdesc *txdesc)
| Return boolean corresponding to MPDU being first in an AMPDU or not.
__INLINE bool | is_mpdu_interm (struct txdesc *txdesc)
| Return boolean corresponding to MPDU being intermediate in an AMPDU or not.
__INLINE bool | is_mpdu_last (struct txdesc *txdesc)
| Return boolean corresponding to MPDU being last in an AMPDU or not.
__INLINE bool | is_mpdu_unpos (struct txdesc *txdesc)
| Return boolean corresponding to MPDU having no position in an AMPDU yet (inherent check for aggregatable too).
__INLINE void | set_mpdu_pos (struct txdesc *txdesc, uint32_t pos)
| Set position of MPDU inside an AMPDU.
__INLINE uint16_t | txl_mpdu_subframe_len (struct tx_hd *thd)
| Calculate AMPDU subframe length for an MPDU (without blank delimiters).
__INLINE bool | is_in_mumimo_ppdu (struct txdesc *txdesc)
| Return a boolean indicating if the MPDU is part of a MU-MIMO PPDU.
__INLINE bool | is_primary_user (struct txdesc *txdesc)
| Return a boolean indicating if the MPDU is part of the A-MPDU sent on the primary HW queue.
__INLINE bool | is_mumimo_group_id (uint8_t group_id)
| Return a boolean indicating if the GroupID passed as parameter is a MU-MIMO one.
__INLINE uint8_t | get_group_id (struct txdesc *txdesc)
| Return the MU-MIMO GroupId from the TX descriptor.
__INLINE uint8_t | get_user_pos (struct txdesc *txdesc)
| Return the MU-MIMO User Position from the TX descriptor.
__INLINE struct tx_agg_desc * | txl_agg_desc_alloc (uint8_t access_category)
| Get a free aggregation descriptor structure from the free pool.
__INLINE void | txl_agg_desc_free (struct tx_agg_desc *agg_desc)
| Free a used aggregation descriptor structure.
void | txl_agg_init (void)
| Initializes the TX aggregation module.
void | txl_agg_reset (void)
| Reset the TX aggregation module.
int | txl_agg_push_mpdu (struct txdesc *txdesc, uint8_t ac)
| Try and aggregate txdesc, several checks are made, when they fail the MPDU goes on to be downloaded as a normal singleton MPDU.
void | txl_agg_finish (uint8_t ac)
| Terminates the non MU-MIMO A-MPDU under construction This function can be called in several cases: The new TX descriptor pushed is not compliant with the current A-MPDU The length of the current A-MPDU has reached the limit The number of MPDUs in the current A-MPDU has reached the limit The TX queue will become empty and new data shall be programmed for transmission.
void | txl_agg_bw_drop_handle (uint8_t access_category)
| Handler of the HW BW drop mechanism interrupt Based on the actual BW of transmission, this function cuts the A-MPDU under transmission and chains the following MPDUs as singleton.
void | txl_agg_check (uint8_t access_category)
| Check if there is an A-MPDU under construction and if the TX queue is empty.
void | txl_agg_set_ampdu_protection (uint32_t *rc)
| Add Self-CTS protection to the A-MPDU.
void | txl_agg_check_rtscts_retry_limit (struct tx_hd *a_thd, uint8_t access_category)
| Check if the current A-MPDU header descriptor indicates that the RTS/CTS retry limit has been reached.
void | txl_agg_check_saved_agg_desc (uint8_t access_category)
| Check if an A-MPDU descriptor is currently saved and free it.
void | txl_agg_mumimo_close (uint8_t ac)
| Terminates the MU-MIMO PPDU.
void | txl_agg_sec_transmit_trigger (void)
| Process secondary user events of the MACTX IRQ.
uint16_t | txl_agg_mpdu_nb_delims (struct tx_hd *thd, uint16_t mmss_bytes)
| Calculate number of blank delimiters to ensure MMSS after a THD This number will be set in the THD of the NEXT txdesc in AMPDU.
void | txl_agg_release (struct tx_agg_desc *agg_desc)
| Release all AMPDU related space: BA, BAR, aggregate control and its AMPDU THD.
struct tx_hd * | txl_agg_change_to_singleton (struct txdesc *txdesc, bool he_tb)
| Transform a MPDU part of an A-MPDU into a singleton MPDU.
## Variables
struct co_list | tx_agg_desc_pool []
| Per-ac pools of free aggregation descriptors.

## Detailed Description

LMAC TX aggregation related definitions.

Copyright (C) RivieraWaves 2011-2019

Definition in file txl_agg.h.