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

Tx confirmation module. More...

#include <stddef.h>
#include "txl_cntrl.h"
#include "txl_cfm.h"
#include "ke_event.h"
#include "mac_frame.h"
#include "dbg.h"
#include "txl_agg.h"
#include "txl_buffer.h"
#include "txl_frame.h"
#include "co_utils.h"
#include "ps.h"
#include "mm.h"
#include "rxl_hwdesc.h"
#include "macif.h"
#include "me_utils.h"
#include "txu_cntrl.h"
#include "bfr.h"

Go to the source code of this file.

Functions

static uint8_t txl_ba_ac_get (struct rxdesc *rxdesc)
 Recover the access category value corresponding to a received BA frame by extracting the TID from its payload.
static bool txl_decode_compressed_ba (struct rxdesc *badesc, struct tx_agg_desc *agg_desc)
 This function checks if the received compressed BA content matches the A-MPDU it acknowledges, i.e if TA and TID correspond to the respective parameters of the A-MPDU we sent.
static bool txl_is_ba_valid (struct tx_agg_desc *agg_desc, struct rxdesc *badesc)
 This function checks if the received BA contains acknowledgment information for the A-MPDU we transmitted.
static bool txl_comp_sn (uint16_t sn1, uint16_t sn2)
 Returns true if the first SN is the min of two sequence numbers.
static uint32_t txl_ba_extract_ack (struct txdesc *txdesc, struct tx_agg_desc *agg_desc, int *agg_ok)
 Extract the ACK status of an MPDU from a BA frame bitmap.
void txl_cfm_init (void)
 Initializes the CFM and BA queues.
void txl_cfm_push (struct txdesc *txdesc, uint32_t status, uint8_t access_category)
 Push a Tx descriptor in the CFM queue.
void txl_ba_push (struct rxdesc *rxdesc)
 Push a Rx descriptor containing a BA frame in the appropriate aggregate descriptor on the right AC.
void txl_cfm_evt (int access_category)
 Background event handler of the Tx confirmation module.
void txl_cfm_flush_desc (uint8_t access_category, struct txdesc *txdesc, uint32_t status)
 Immediately confirm the descriptor passed as parameter.
void txl_cfm_flush (uint8_t access_category, struct co_list *list, uint32_t status)
 Immediately confirm all the descriptors of the list passed as parameter.

Variables

struct txl_cfm_env_tag txl_cfm_env
 Tx Confirmation context variable.
const uint32_t txl_cfm_evt_bit [NX_TXQ_CNT]
 Table mapping the TX confirmation event bit to the queue index.

Detailed Description

Tx confirmation module.

Copyright (C) RivieraWaves 2011-2019

Definition in file txl_cfm.c.


Function Documentation

static uint8_t txl_ba_ac_get ( struct rxdesc rxdesc  )  [static]

Recover the access category value corresponding to a received BA frame by extracting the TID from its payload.

Parameters:
[in] rxdesc Pointer to Rx descriptor for BA frame for which AC is determined
Returns:
One of the 4 access category values if any correspond, invalid value if not.

Definition at line 80 of file txl_cfm.c.

References rx_dmadesc::hd, IMM_RSP_AC_MSK, IMM_RSP_AC_OFT, rxl_dmadesc_get(), and rx_hd::statinfo.

Referenced by txl_ba_push().

static uint32_t txl_ba_extract_ack ( struct txdesc txdesc,
struct tx_agg_desc agg_desc,
int *  agg_ok 
) [static]

Extract the ACK status of an MPDU from a BA frame bitmap.

Parameters:
[in] txdesc Pointer to Tx SW descriptor of the MPDU whose status will be extracted
[in] agg_desc Pointer to the A-MPDU descriptor
[out] agg_ok Variable to be incremented if the MPDU is confirmed
Returns:
The status bits to be put in the descriptor status field

Definition at line 226 of file txl_cfm.c.

References BA_FRAME_RECEIVED_BIT, ba_ssc_bitmap::bitmap, FRAME_SUCCESSFUL_TX_BIT, txdesc::host, hostdesc::sn, ba_ssc_bitmap::ssc, tx_agg_desc::ssc_bitmap, and txl_comp_sn().

Referenced by txl_cfm_evt().

static bool txl_comp_sn ( uint16_t  sn1,
uint16_t  sn2 
) [static]

Returns true if the first SN is the min of two sequence numbers.

Parameters:
[in] sn1 First sequence number to be compared
[in] sn2 Second sequence number to be compared
Returns:
True if sn1 <= sn2

Definition at line 209 of file txl_cfm.c.

Referenced by txl_ba_extract_ack().

static bool txl_decode_compressed_ba ( struct rxdesc badesc,
struct tx_agg_desc agg_desc 
) [static]

This function checks if the received compressed BA content matches the A-MPDU it acknowledges, i.e if TA and TID correspond to the respective parameters of the A-MPDU we sent.

Parameters:
[in] badesc Pointer to Rx descriptor of BA frame
[in] agg_desc Pointer to the A-MPDU descriptor
Returns:
true if TA and TID of the BA frame match the respective parameters of the A-MPDU, false otherwise.

Definition at line 114 of file txl_cfm.c.

References ba_comp_frame::ba_cntrl, rx_pbd::datastartptr, rx_hd::first_pbd_ptr, rx_hd::frmlen, rx_dmadesc::hd, HW2CPU, RX_HD_ADDRMIS, rxl_dmadesc_get(), tx_agg_desc::ssc_bitmap, ba_comp_frame::ssc_bitmap, tx_agg_desc::ssc_bitmap_tab, rx_hd::statinfo, and tx_agg_desc::tid.

Referenced by txl_is_ba_valid().

static bool txl_is_ba_valid ( struct tx_agg_desc agg_desc,
struct rxdesc badesc 
) [static]

This function checks if the received BA contains acknowledgment information for the A-MPDU we transmitted.

Parameters:
[in] agg_desc A-MPDU descriptor (contains all required information)
[in] badesc BA frame descriptor
Returns:
true if the received BA frame has acknowledgment information for the A-MPDU, false otherwise.

Definition at line 159 of file txl_cfm.c.

References ASSERT_REC_VAL, ba_base::ba_cntrl, rx_pbd::datastartptr, rx_hd::first_pbd_ptr, rx_dmadesc::hd, HW2CPU, KEY_IDX_MSK, KEY_IDX_OFT, KEY_IDX_VALID_BIT, MM_KEY_TO_STA, MM_SEC_DEFAULT_KEY_COUNT, rxl_dmadesc_get(), tx_agg_desc::sta_idx, rx_hd::statinfo, and txl_decode_compressed_ba().

Referenced by txl_ba_push().


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