# /space/home/slher/rel/Beken/v6_4_5/macsw/ip/umac/src/bam/bam.h File Reference

Functions and structures used by the UMAC ME BAM (Block ACK Manager) module. More...

`#include "co_status.h"`
`#include "mac.h"`
`#include "mac_frame.h"`
`#include "ke_task.h"`

Go to the source code of this file.

## Data Structures
struct | bam_addba_req
| ADDBA Request frame Action field format (see IEEE 802.11-2012, section 8.5.5.2). More...
struct | bam_addba_rsp
| ADDBA Response frame Action field format (see IEEE 802.11-2012, section 8.5.5.3). More...
struct | bam_delba
| DELBA frame Action field format (see IEEE 802.11-2012, section 8.5.5.4). More...
struct | bam_baw
| Per RA/TID Data for AMPDU TX. More...
struct | bam_env_tag
| Declaration of BAM environment. More...
## Defines
#define | BAM_IDX_MAX (NX_MAX_BA_TX + NX_REORD)
| Maximum index of the task instance.
#define | BAM_FIRST_RX_IDX 0
| First BAM index for RX BA agreements.
#define | BAM_NB_RX_IDX NX_REORD
| Number of available RX BA agreements.
#define | BAM_FIRST_TX_IDX BAM_NB_RX_IDX
| First BAM index for TX BA agreements.
#define | BAM_NB_TX_IDX NX_MAX_BA_TX
| Number of available TX BA agreements.
#define | BAM_INVALID_TASK_IDX (BAM_IDX_MAX + 1)
| Invalid index of the task instances - 1 instance for manager.
#define | BAM_BA_AGG_TX_CNT_THRES 2
| TX packet count for a STA/TID above which we establish a BlockAck agreement.
#define | BAM_RESPONSE_TO_DURATION 500
| Maximal time before considering that BA_ADD_REQ won't receive any response.
#define | BAM_INACTIVITY_TO_DURATION 2000
| Maximal time between two consequent packet before considering a BA AGG can be deleted (in number of TU).
#define | BAM_ADDBA_REQ_INTERVAL 1000000
| Minimal time between sending two consequent ADDBA Req if error detected on the first one (in us) - 1s.
#define | BAM_MAX_TX_WIN_SIZE 64
| Maximum size of the transmit window.
#define | BAM_DELBA_MAX_TRY 3
| Maximum number of tentatives to send DELBA.
#define | BAM_BA_PARAM_GET(ba_param, field)
| Get field from Block Ack Parameter field.
#define | BAM_DELBA_PARAM_GET(delba_param, field)
| Get field from DELBA Parameter field.
ADDBA Request Offsets - From Action Category
#define | BAM_ADDBAREQ_BA_PARAM_OFFSET (3)
| ADDBA Request Offset.
#define | BAM_ADDBAREQ_BA_TIMEOUT_OFFSET (5)
| ADDBA Request Offset.
#define | BAM_ADDBAREQ_BA_SSC_OFFSET (7)
| ADDBA Request Offset.
ADDBA Response Offsets - From Action Category
#define | BAM_ADDBARSP_STATUS_OFFSET (3)
| ADDBA Response Offset.
#define | BAM_ADDBARSP_BA_PARAM_OFFSET (5)
| ADDBA Response Offset.
#define | BAM_ADDBARSP_BA_TIMEOUT_OFFSET (7)
| ADDBA Response Offset.
DELBA Offsets - From Action Category
#define | BAM_DELBA_PARAM_OFFSET (2)
| DELBA Offset.
#define | BAM_DELBA_REASON_OFFSET (4)
| DELBA Offset.
Action Frames Lengths
#define | BAM_ADDBAREQ_LENGTH (9)
| BlockAck action frame length.
#define | BAM_ADDBARSP_LENGTH (9)
| BlockAck action frame length.
#define | BAM_DELBA_LENGTH (6)
| BlockAck action frame length.
Block Ack Parameter Set Offsets and Masks
#define | BAM_BA_PARAM_AMSDU_SUP_OFFSET (0)
| BlockAck parameter set definition.
#define | BAM_BA_PARAM_AMSDU_SUP_MASK (0x0001)
| BlockAck parameter set definition.
#define | BAM_BA_PARAM_BA_POL_OFFSET (1)
| BlockAck parameter set definition.
#define | BAM_BA_PARAM_BA_POL_MASK (0x0002)
| BlockAck parameter set definition.
#define | BAM_BA_PARAM_TID_OFFSET (2)
| BlockAck parameter set definition.
#define | BAM_BA_PARAM_TID_MASK (0x003C)
| BlockAck parameter set definition.
#define | BAM_BA_PARAM_BUFF_SIZE_OFFSET (6)
| BlockAck parameter set definition.
#define | BAM_BA_PARAM_BUFF_SIZE_MASK (0xFFC0)
| BlockAck parameter set definition.
DELBA Parameters Offsets and Masks
#define | BAM_DELBA_PARAM_INITIATOR_OFFSET (11)
| DELBA parameter definition.
#define | BAM_DELBA_PARAM_INITIATOR_MASK (0x0800)
| DELBA parameter definition.
#define | BAM_DELBA_PARAM_TID_OFFSET (12)
| DELBA parameter definition.
#define | BAM_DELBA_PARAM_TID_MASK (0xF000)
| DELBA parameter definition.
BA/BAR Control Offsets and Masks
#define | BAM_BA_CTRL_POLICY_OFFSET (0)
| BA/BAR control definition.
#define | BAM_BA_CTRL_POLICY_MASK (0x0001)
| BA/BAR control definition.
#define | BAM_BA_CTRL_MULTI_TID_OFFSET (1)
| BA/BAR control definition.
#define | BAM_BA_CTRL_MULTI_TID_MASK (0x0002)
| BA/BAR control definition.
#define | BAM_BA_CTRL_COMP_BITMAP_OFFSET (2)
| BA/BAR control definition.
#define | BAM_BA_CTRL_COMP_BITMAP_MASK (0x0004)
| BA/BAR control definition.
#define | BAM_BA_CTRL_COMP_BITMAP_OFFSET (2)
| BA/BAR control definition.
#define | BAM_BA_CTRL_COMP_BITMAP_MASK (0x0004)
| BA/BAR control definition.
#define | BAM_BA_CTRL_TID_INFO_OFFSET (11)
| BA/BAR control definition.
#define | BAM_BA_CTRL_TID_INFO_MASK (0xF000)
| BA/BAR control definition.
Basic SSC Offsets and Masks
#define | BAM_BASIC_SSC_FN_OFFSET (0)
| Basic SSC definition.
#define | BAM_BASIC_SSC_FN_MASK (0x000F)
| Basic SSC definition.
#define | BAM_BASIC_SSC_SSN_OFFSET (4)
| Basic SSC definition.
#define | BAM_BASIC_SSC_SSN_MASK (0xFFF0)
| Basic SSC definition.
## Typedefs
typedef unsigned int(* | bam_baw_index_func_ptr )(struct bam_baw *, unsigned int)
| Pointer to BaW index computation function.
## Enumerations
enum | bam_ba_type { BA_RESPONDER = 0, BA_ORIGINATOR, BA_DEV_NONE }
| Block Ack device type. More...
enum | bam_ba_policy { BAM_BA_POL_IMMEDIATE = 1, BAM_BA_POL_DELAYED }
| Block Ack Policy Values. More...
enum | bam_pkt_policy { BAM_PKT_POL_SINGLETON = 0, BAM_PKT_POL_AMPDU }
| Packet policy values.
enum | bam_baw_state { BAW_FREE, BAW_PENDING, BAW_CONFIRMED }
| Enum listing the possible states of a BAW element. More...
## Functions
__INLINE uint16_t | bam_build_baparamset (struct bam_env_tag *bam_env)
| Used to build the BA parameter field.
void | bam_init (void)
| Initialize the BAM context.
void | bam_param_sta_info_tab_reset (uint16_t bam_idx)
| Reset the BA parameters in the station info table.
uint16_t | bam_alloc_new_task (bool tx)
| Allocate the BAM task.
void | bam_delete_ba_agg (uint8_t bam_idx)
| Delete a provided BlockAck agreement.
void | bam_delete_all_ba_agg (uint8_t sta_idx)
| Delete all Block Ack agreements linked to the specified staid.
void | bam_start_inactivity_timer (uint16_t bam_task_idx)
| start the BAM_INACTIVITY_TIMEOUT_IND timer
void | bam_send_mm_ba_add_req (uint16_t sta_idx, uint16_t bam_idx)
| Send MM_BAADD_REQ to LMAC.
void | bam_send_mm_ba_del_req (uint16_t sta_idx, uint16_t bam_idx)
| Send Send MM_BADEL_REQ to LMAC.
void | bam_send_air_action_frame (uint8_t sta_idx, struct bam_env_tag *bam_env, uint8_t action, uint8_t dialog_token, uint16_t param, uint16_t status_code, void(*cfm_func)(void *, uint32_t))
| Send BA action frame to peer.
void | bam_check_ba_agg (struct txdesc *txdesc)
| Check if a BlockAck agreement is currently active for the RA/TID for which the packet is sent.
int8_t | bam_tx_cfm (struct txdesc *txdesc, bool success)
| Handles status of a transmission under BA.
void | bam_baw_init (struct bam_env_tag *bam_env)
| Initialize the transmission window structure.
int8_t | bam_flush_baw (struct bam_baw *baw)
| Flush the transmission window.
void | bam_rx_active (uint8_t sta_idx, uint8_t tid)
| Reset the last activity time of a BlockAck agreement.
void | bam_send_del_ba_agg (uint8_t sta_idx, uint8_t tid)
| Send DELBA action frame to delete a BA agreement active only on the peer.
## Variables
struct bam_env_tag | bam_env [BAM_IDX_MAX]
| BAM module environment declaration.

## Detailed Description

Functions and structures used by the UMAC ME BAM (Block ACK Manager) module.

Copyright (C) RivieraWaves 2011-2019

Definition in file bam.h.