/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_desctxl_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_hdtxl_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.


Generated on 14 Jan 2020 for Ceva-RW WLAN FullMAC SW documentation by  doxygen 1.6.1