1 /** @file mlan_11n_rxreorder.h 2 * 3 * @brief This file contains related macros, enum, and struct 4 * of 11n RxReordering functionalities 5 * 6 * Copyright 2008-2024 NXP 7 * 8 * SPDX-License-Identifier: BSD-3-Clause 9 * 10 */ 11 12 /******************************************************** 13 Change log: 14 11/10/2008: initial version 15 ********************************************************/ 16 17 #ifndef _MLAN_11N_RXREORDER_H_ 18 #define _MLAN_11N_RXREORDER_H_ 19 20 /** Max value a TID can take = 2^12 = 4096 */ 21 #define MAX_TID_VALUE 4096U 22 /** 2^11 = 2048 */ 23 #define TWOPOW11 2048U 24 25 /** Tid Mask used for extracting TID from BlockAckParamSet */ 26 #define BLOCKACKPARAM_TID_MASK 0x3CU 27 /** Tid position in BlockAckParamSet */ 28 #define BLOCKACKPARAM_TID_POS 2U 29 /** WinSize Mask used for extracting WinSize from BlockAckParamSet */ 30 #define BLOCKACKPARAM_WINSIZE_MASK 0xffc0U 31 /** WinSize Mask used for extracting WinSize from BlockAckParamSet */ 32 #define BLOCKACKPARAM_AMSDU_SUPP_MASK 0x1U 33 /** WinSize position in BlockAckParamSet */ 34 #define BLOCKACKPARAM_WINSIZE_POS 6U 35 /** Position of TID in DelBA Param set */ 36 #define DELBA_TID_POS 12 37 /** Position of INITIATOR in DelBA Param set */ 38 #define DELBA_INITIATOR_POS 11 39 /** Reason code: Requested from peer STA as it does not want to use the mechanism */ 40 #define REASON_CODE_STA_DONT_WANT 37 41 /** Reason code: Requested from peer STA due to timeout*/ 42 #define REASON_CODE_STA_TIMEOUT 39 43 /** Type: send delba command */ 44 #define TYPE_DELBA_SENT 1 45 /** Type: recieve delba command */ 46 #define TYPE_DELBA_RECEIVE 2U 47 /** Set Initiator Bit */ 48 #define DELBA_INITIATOR(paramset) ((paramset) = ((paramset) | (1U << 11))) 49 /** Reset Initiator Bit for recipient */ 50 #define DELBA_RECIPIENT(paramset) ((paramset) = ((paramset) & ~(1U << 11))) 51 /** Immediate block ack */ 52 #define IMMEDIATE_BLOCK_ACK 0x2U 53 54 /** The request has been declined */ 55 #define ADDBA_RSP_STATUS_DECLINED 37U 56 /** ADDBA response status : Reject */ 57 #define ADDBA_RSP_STATUS_REJECT 1U 58 /** ADDBA response status : Accept */ 59 #define ADDBA_RSP_STATUS_ACCEPT 0U 60 61 /** DEFAULT SEQ NUM */ 62 #define DEFAULT_SEQ_NUM 0xffffU 63 64 /** Indicate packet has been dropped in FW */ 65 #define RX_PKT_DROPPED_IN_FW 0xffffffffU 66 67 #if CONFIG_RSN_REPLAY_DETECTION 68 t_void wlan_reset_pn_value(mlan_private *pmpriv, mlan_ds_encrypt_key *key); 69 t_u8 wlan_is_rsn_replay_attack(mlan_private *pmpriv, t_void *payload, RxReorderTbl *rx_reor_tbl_ptr); 70 void wlan_reset_pn_on_rekey(mlan_private *priv, t_u8 *event_buf); 71 #endif 72 73 mlan_status mlan_11n_rxreorder_pkt(void *priv, t_u16 seq_num, t_u16 tid, t_u8 *ta, t_u8 pkt_type, void *payload); 74 void mlan_11n_update_bastream_tbl(mlan_private *priv, int Tid, t_u8 *PeerMACAddr, t_u8 type, int initiator); 75 void wlan_11n_ba_stream_timeout(mlan_private *priv, HostCmd_DS_11N_BATIMEOUT *event); 76 mlan_status wlan_ret_11n_addba_resp(mlan_private *priv, HostCmd_DS_COMMAND *resp); 77 mlan_status wlan_cmd_11n_delba(mlan_private *priv, HostCmd_DS_COMMAND *cmd, void *pdata_buf); 78 mlan_status wlan_cmd_11n_addba_rspgen(mlan_private *priv, HostCmd_DS_COMMAND *cmd, void *pdata_buf); 79 mlan_status wlan_cmd_11n_uap_addba_rspgen(mlan_private *priv, HostCmd_DS_COMMAND *cmd, void *pdata_buf); 80 mlan_status wlan_cmd_11n_addba_req(mlan_private *priv, HostCmd_DS_COMMAND *cmd, t_void *pdata_buf); 81 void wlan_11n_cleanup_reorder_tbl(mlan_private *priv); 82 RxReorderTbl *wlan_11n_get_rxreorder_tbl(mlan_private *priv, int tid, t_u8 *ta); 83 void wlan_11n_rxba_sync_event(mlan_private *priv, t_u8 *event_buf, t_u16 len); 84 85 /** send delba for all entries in reorder_tbl */ 86 t_void wlan_send_delba_to_all_in_reorder_tbl(pmlan_private priv); 87 void wlan_update_rxreorder_tbl(pmlan_adapter pmadapter, bool flag); 88 89 /** clean up reorder_tbl */ 90 void wlan_cleanup_reorder_tbl(mlan_private *priv, t_u8 *ta); 91 #endif /* _MLAN_11N_RXREORDER_H_ */ 92