LMAC TxPath implementation. More...
#include "co_int.h"#include "co_bool.h"#include <string.h>#include "dbg_assert.h"#include "mac.h"#include "mac_frame.h"#include "mm.h"#include "macif.h"#include "rxl_hwdesc.h"#include "txl_buffer.h"#include "txl_frame.h"#include "tx_swdesc.h"#include "txl_cfm.h"#include "txl_cntrl.h"#include "rxl_cntrl.h"#include "reg_mac_pl.h"#include "reg_mac_core.h"#include "dbg.h"#include "ps.h"#include "p2p.h"#include "td.h"#include "txu_cntrl.h"#include "apm.h"#include "mfp.h"#include "bfr.h"#include "txl_agg.h"Go to the source code of this file.
Defines | |
| #define | TX_IRQ_BITS |
| TX IRQ bits enabled. | |
| #define | TX_SEC_IRQ_BITS_MERGED |
| Bits indicating activity on secondary users (merged trigger and buffer). | |
| #define | TX_BW_DROP_IRQ |
| Bits indicating that a BW drop has been triggered on an access category. | |
| #define | TB_PROT_TRIGGER_BIT 0 |
| HE TB protocol trigger interrupt bit. | |
| #define | TB_TX_TRIGGER_BIT 0 |
| HE TB transmission trigger interrupt bit. | |
| #define | SEC_USER_TX_TRIGGER_BIT NXMAC_SEC_USER_TX_TRIGGER_BIT |
| Secondary user trigger interrupt bit. | |
| #define | TX_PROT_IRQ |
| TX protocol trigger interrupt bits. | |
| #define | TX_TRANSMIT_IRQ |
| TX transmit trigger interrupt bits. | |
| #define | FRAME_OK (DESC_DONE_TX_BIT | FRAME_SUCCESSFUL_TX_BIT) |
| Flags indicating that a frame has been correctly transmitted by the HW. | |
Functions | |
| __INLINE void | txl_smoothing_set (struct tx_hd *thd, struct tx_policy_tbl *pt, uint32_t smoothing) |
| Set the smoothing bit to the correct HW descriptor. | |
| __INLINE void | txl_timer_start (uint8_t ac) |
| Start a TX timer. | |
| __INLINE void | txl_timer_move (uint8_t ac) |
| Move the TX timer according to the access category. | |
| __INLINE void | txl_timer_clear (uint8_t ac) |
| Clear a TX timer. | |
| static void | txl_int_fake_transfer (struct txdesc *txdesc, uint8_t access_category) |
| Prepare the transfer of payload from host memory to emb memory. | |
| static bool | txl_payload_transfer (struct txdesc *txdesc, uint8_t access_category, uint8_t user_idx) |
| Prepare the transfer of payload from host memory to emb memory. | |
| static void | txl_transmit_prep (int access_category, uint8_t user_idx) |
| Go through the TX list and prepare the download of the payloads. | |
| static void | txl_hwdesc_config_pre (struct txdesc *txdesc, int access_category) |
| NX_FULLY_HOSTED. | |
| static void | txl_hwdesc_config_post (struct txdesc *txdesc, uint8_t access_category) |
| Initialization of the HW descriptors, after payload download. | |
| static void | txl_machdr_format (uint32_t machdrptr) |
| Format the MAC header. | |
| static void | txl_cntrl_newtail (uint8_t access_category) |
| Set the new tail bit for the specified access category. | |
| static void | txl_frame_exchange_done (uint8_t access_category) |
| Unchains the frame exchanges that have been completed. | |
| static void | txl_frame_exchange_manage (struct txdesc *txdesc, struct txl_buffer_tag *buffer, uint8_t access_category) |
| Manage atomic frame exchange formatting and chaining of previous one to it. | |
| static void | txl_cntrl_postpone (struct txdesc *txdesc, uint8_t access_category) |
| Postpone an internal packet ready for TX. | |
| static bool | txl_cntrl_start_pm_mon (struct mac_hdr *mac_hdr) |
| Check if the PM bit monitoring shall be started on the given MAC Header. | |
| static void | txl_check_bcmc_status (struct txdesc *txdesc, uint8_t access_category, uint32_t machdrptr) |
| Set and/or Save more_data flag status for frame sent on AC_BCN queue. | |
| static void | txl_payload_handle (struct txdesc *txdesc, struct txl_buffer_tag *buffer, uint8_t access_category) |
| Perform operations on payloads that have been transfered from host memory. | |
External API | |
| bool | txl_payload_alloc (struct txdesc *txdesc, uint8_t access_category, uint8_t user_idx) |
| Prepare the transfer of payload from host memory to emb memory. | |
| void | txl_cntrl_newhead (uint32_t desc, uint8_t access_category) |
| NX_FULLY_HOSTED. | |
| void | txl_frame_exchange_chain (struct tx_hd *first_thd, struct tx_hd *last_thd, uint8_t access_category) |
| Chain a new frame exchange to the MAC HW. | |
| void | txl_free_done_mpdu (struct txdesc *txdesc, uint8_t access_category, uint8_t user_idx) |
| Free a MPDU that is marked as transmitted by the HW, and launch the download of a subsequent MPDU. | |
| void | txl_check_done_amsdu_subframe (struct txdesc *txdesc, uint8_t access_category, uint8_t user_idx) |
| Check transmission status of A-MSDU sub-frames. | |
| void | txl_cntrl_init (void) |
| Initialize the LMAC TX path. | |
| bool | txl_cntrl_tx_check (struct vif_info_tag *vif) |
| Check if a packet can be transmitted on a given VIF. | |
| void | txl_cntrl_halt_ac (uint8_t access_category) |
| Halt the MAC DMA of the specified queue. | |
| void | txl_cntrl_flush_ac (uint8_t access_category, uint32_t status) |
| Flush all the descriptors of the queue passed as parameter. | |
| bool | txl_cntrl_push (struct txdesc *txdesc, uint8_t access_category) |
| Push a Tx descriptor in an RA/TID queue. | |
| void | txl_cntrl_inc_pck_cnt (void) |
| This function increments the TX path packet counter. | |
| bool | txl_cntrl_push_int (struct txdesc *txdesc, uint8_t access_category) |
| Push an internal frame Tx descriptor for transmission. | |
| void | txl_cntrl_dma_isr (void) |
| Perform operations on payloads that have been transfered from host memory. | |
| void | txl_prot_trigger (void) |
| Function to be called on TX protocol trigger IRQ (e.g. | |
| void | txl_transmit_trigger (void) |
| Function to be called on transmission trigger IRQ. | |
| void | txl_current_desc_get (int access_category, struct tx_hd **thd) |
| This function returns the pointer to the first TX Header descriptor chained to the MAC HW queue passed as parameter. | |
| void | txl_reset (void) |
| TX path reset function. | |
Variables | |
| const uint32_t | TX_TIMEOUT [NX_TXQ_CNT] |
| Table containing the TX timeout value per TX queue. | |
| struct txl_cntrl_env_tag | txl_cntrl_env |
| Tx Control context variable. | |
LMAC TxPath implementation.
Copyright (C) RivieraWaves 2011-2019
Definition in file txl_cntrl.c.
1.6.1