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

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.

## Detailed Description

LMAC TxPath implementation.

Copyright (C) RivieraWaves 2011-2019

Definition in file txl_cntrl.c.