/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_tagtxl_buffer_pop (uint8_t access_category)
 Pop a TX buffer from the buffer list.
__INLINE struct txl_buffer_tagtxl_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_tagtxl_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_tagtxl_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.


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