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. | |
Functions and structures used by the UMAC ME BAM (Block ACK Manager) module.
Copyright (C) RivieraWaves 2011-2019
Definition in file bam.h.
1.6.1