/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.


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