# /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().