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

Management of Tx payload buffers. More...

`#include "co_int.h"`
`#include "co_bool.h"`
`#include "rwnx_config.h"`
`#include "co_list.h"`
`#include "txl_cntrl.h"`
`#include "tx_swdesc.h"`
`#include "txl_agg.h"`
`#include "txl_he.h"`
`#include "co_utils.h"`
`#include "me_mic.h"`
`#include "txu_cntrl.h"`
`#include "rc.h"`

Go to the source code of this file.

## Data Structures
struct | txl_buffer_hw_desc_tag
| Structure containing the HW descriptors needed to handle non-contiguous buffers. More...
struct | txl_buffer_list_tag
| Buffer list structure. More...
struct | txl_buffer_idx_tag
| Tx rate structure. More...
struct | txl_buffer_env_tag
| Context of the Tx buffer management block. More...
struct | txl_buffer_tag
| Buffer header structure. More...
## Defines
#define | TX_BUFFER_MTU 1536
| MTU of the MAC SW.
#define | TX_ADD_BUFFER 64
| Additional buffering (for headers).
#define | TX_MPDU_LEN_MAX (TX_BUFFER_MTU + TX_ADD_BUFFER)
| Maximum MPDU size.
#define | TX_BUFFER_MAX (sizeof_b(struct txl_buffer_tag) + TX_MPDU_LEN_MAX)
| Max buffer size.
#define | TX_BUFFER_POOL_MAX (AC_MAX * RW_USER_MAX + NX_BEACONING)
| Number of TX buffer pools.
#define | TX_MIN_DOWNLOAD_CNT 4
| Size of the memory area reserved for one buffer pool (in number of 32-bit words).
#define | TX_BUFFER_POOL_SIZE ((TX_MIN_DOWNLOAD_CNT * TX_BUFFER_MAX) / 4)
| Size of the buffer pool (in number of 32-bit words) per queue.
#define | TX_BUFFER_NULL 0xFFFFFFFF
| Buffer is allocated.
#define | TX_BUFFER_PADDING_MAX 0
| Maximum size of the padding between the Buffer Control structure and the payload.
#define | TX_BUFFER_PADDING_MASK 0x00000003
| Mask of the padding bits in the SW control information field.
#define | TX_BUFFER_PADDING_OFT 0
| Offset of the padding bits in the SW control information field.
#define | TX_BUFFER_MIN_SIZE 256
| Minimum amount of 32-bit words that form a super buffer.
#define | TX_BUFFER_MIN_AMPDU_DWNLD 500
| Minimum amount of data that has to be downloaded to chain an AMPDU.
#define | TX_DMA_DESC_MAX NX_TX_PAYLOAD_MAX
| Number of DMA descriptors present in the TX buffer header structure.
## Enumerations
enum | { BUF_FRONTIER = CO_BIT(0), BUF_SPLIT = CO_BIT(1), BUF_ALLOC_OK = CO_BIT(2), BUF_INT_MSDU = CO_BIT(3) }
| Buffer flags. More...
## Functions
External API
__INLINE void | txl_buffer_push (uint8_t access_category, struct txl_buffer_tag *buf)
| Push a TX buffer in the buffer list.
__INLINE struct txl_buffer_tag * | txl_buffer_pop (uint8_t access_category)
| Pop a TX buffer from the buffer list.
__INLINE struct txl_buffer_tag * | txl_buffer_pick (uint8_t access_category)
| Pick a TX buffer from the buffer list.
__INLINE bool | txl_buffer_list_empty (uint8_t access_category)
| Check if the buffer list is empty.
__INLINE struct txl_buffer_tag * | txl_buffer_get (struct txdesc *txdesc)
| NX_FULLY_HOSTED.
__INLINE struct txl_buffer_control * | txl_buffer_control_get (struct txdesc *txdesc)
| Get the pointer to the buffer control structure.
__INLINE void * | txl_buffer_payload_get (struct txdesc *txdesc)
| Get the pointer to the buffer payload.
__INLINE uint32_t | txl_buffer_machdr_get (struct txdesc *txdesc)
| Get the address of the MAC header This function is supposed to be called when the payload is present in the shared memory.
__INLINE void | txl_buffer_control_trial (struct txdesc *txdesc, struct txl_buffer_tag *buf)
| If a trial transmission is requested, copy the trial rate configuration into the buffer and update the trial status.
__INLINE void | txl_buffer_control_copy (struct txdesc *txdesc, struct txl_buffer_tag *buf)
| Copy the buffer control structure into the buffer.
__INLINE int | txl_buffer_padding (struct txdesc *txdesc)
| Get the padding value from the SW control information field.
__INLINE bool | txl_buffer_is_amsdu_multi_buf (struct txdesc *txdesc)
| Check whether a MPDU is an A-MPDU stored in multiple TX buffers.
__INLINE bool | txl_buffer_is_amsdu_single_buf (struct txdesc *txdesc)
| Check whether a MPDU is an A-MPDU stored in a single TX buffer.
__INLINE void | txl_buffer_update_thd (struct txdesc *txdesc, uint8_t access_category)
| Update the THD and TBD after allocation of the TX buffer.
__INLINE void | txl_buffer_update_tbd (struct txdesc *txdesc, uint8_t access_category, uint8_t pkt_idx)
| Update the TBD of A-MSDU sub-frames after the first one.
__INLINE void | txl_buffer_mic_compute (struct txdesc *txdesc, uint32_t *mic_key, uint32_t start, uint32_t len, uint8_t access_category)
| Compute the TKIP MIC over the TX buffer.
void | txl_buffer_reinit (void)
| Re-initializes the Tx buffer area (upon recovery procedure).
void | txl_buffer_reset (uint8_t access_category)
| Reset a Tx pool.
struct txl_buffer_tag * | txl_buffer_alloc (struct txdesc *txdesc, uint8_t access_category, uint8_t user_idx, uint8_t pkt_idx)
| Allocates a Tx buffer.
bool | txl_buffer_free (struct txl_buffer_tag *buf, uint8_t access_category)
| Releases a Tx buffer.
void | txl_buffer_free_all (struct txdesc *txdesc, uint8_t access_category)
| Free the Tx buffer(s) attached to a TX descriptor.
__INLINE uint32_t | txl_buffer_used (uint8_t access_category, uint8_t user_idx)
| Returns the amount of data currently allocated in the TX buffer.
__INLINE uint8_t | txl_buffer_count (uint8_t access_category, uint8_t user_idx)
| Indicates if the TX buffer pool for this queue is full or not.
void | txl_buffer_init (void)
| NX_FULLY_HOSTED.
## Variables
uint32_t | txl_buffer_pool [TX_BUFFER_POOL_MAX][TX_BUFFER_POOL_SIZE]
| TX buffer space.
struct txl_buffer_hw_desc_tag | txl_buffer_hw_desc [TX_BUFFER_POOL_MAX]
| Additional HW descriptors used for non-contiguous buffers.
struct txl_buffer_env_tag | txl_buffer_env
| Environment of the Tx buffer management module.
struct txl_buffer_control | txl_buffer_control_desc [NX_REMOTE_STA_MAX]
| Per-STA buffer control descriptor pairs.
struct txl_buffer_control | txl_buffer_control_desc_bcmc [NX_VIRT_DEV_MAX]
| Per-VIF BC/MC buffer control descriptors.

## Detailed Description

Management of Tx payload buffers.

Copyright (C) RivieraWaves 2011-2019

Definition in file txl_buffer.h.