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. | |
Management of Tx payload buffers.
Copyright (C) RivieraWaves 2011-2019
Definition in file txl_buffer.h.
1.6.1