Blame view

kernel/linux-rt-4.4.41/drivers/net/wireless/mwifiex/11n_rxreorder.h 3.07 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  /*
   * Marvell Wireless LAN device driver: 802.11n RX Re-ordering
   *
   * Copyright (C) 2011-2014, Marvell International Ltd.
   *
   * This software file (the "File") is distributed by Marvell International
   * Ltd. under the terms of the GNU General Public License Version 2, June 1991
   * (the "License").  You may use, redistribute and/or modify this File in
   * accordance with the terms and conditions of the License, a copy of which
   * is available by writing to the Free Software Foundation, Inc.,
   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
   * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
   *
   * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
   * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
   * this warranty disclaimer.
   */
  
  #ifndef _MWIFIEX_11N_RXREORDER_H_
  #define _MWIFIEX_11N_RXREORDER_H_
  
  #define MIN_FLUSH_TIMER_MS		50
  #define MIN_FLUSH_TIMER_15_MS		15
  #define MWIFIEX_BA_WIN_SIZE_32		32
  
  #define PKT_TYPE_BAR 0xE7
  #define MAX_TID_VALUE			(2 << 11)
  #define TWOPOW11			(2 << 10)
  
  #define BLOCKACKPARAM_TID_POS		2
  #define BLOCKACKPARAM_AMSDU_SUPP_MASK	0x1
  #define BLOCKACKPARAM_WINSIZE_POS	6
  #define DELBA_TID_POS			12
  #define DELBA_INITIATOR_POS		11
  #define TYPE_DELBA_SENT			1
  #define TYPE_DELBA_RECEIVE		2
  #define IMMEDIATE_BLOCK_ACK		0x2
  
  #define ADDBA_RSP_STATUS_ACCEPT 0
  
  #define MWIFIEX_DEF_11N_RX_SEQ_NUM	0xffff
  #define BA_SETUP_MAX_PACKET_THRESHOLD	16
  #define BA_SETUP_PACKET_OFFSET		16
  
  enum mwifiex_rxreor_flags {
  	RXREOR_FORCE_NO_DROP		= 1<<0,
  	RXREOR_INIT_WINDOW_SHIFT	= 1<<1,
  };
  
  static inline void mwifiex_reset_11n_rx_seq_num(struct mwifiex_private *priv)
  {
  	memset(priv->rx_seq, 0xff, sizeof(priv->rx_seq));
  }
  
  int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *,
  			       u16 seqNum,
  			       u16 tid, u8 *ta,
  			       u8 pkttype, void *payload);
  void mwifiex_del_ba_tbl(struct mwifiex_private *priv, int Tid,
  			u8 *PeerMACAddr, u8 type, int initiator);
  void mwifiex_11n_ba_stream_timeout(struct mwifiex_private *priv,
  				   struct host_cmd_ds_11n_batimeout *event);
  int mwifiex_ret_11n_addba_resp(struct mwifiex_private *priv,
  			       struct host_cmd_ds_command
  			       *resp);
  int mwifiex_cmd_11n_delba(struct host_cmd_ds_command *cmd,
  			  void *data_buf);
  int mwifiex_cmd_11n_addba_rsp_gen(struct mwifiex_private *priv,
  				  struct host_cmd_ds_command *cmd,
  				  struct host_cmd_ds_11n_addba_req
  				  *cmd_addba_req);
  int mwifiex_cmd_11n_addba_req(struct host_cmd_ds_command *cmd,
  			      void *data_buf);
  void mwifiex_11n_cleanup_reorder_tbl(struct mwifiex_private *priv);
  struct mwifiex_rx_reorder_tbl *mwifiex_11n_get_rxreorder_tbl(struct
  							   mwifiex_private
  							   *priv, int tid,
  							   u8 *ta);
  struct mwifiex_rx_reorder_tbl *
  mwifiex_11n_get_rx_reorder_tbl(struct mwifiex_private *priv, int tid, u8 *ta);
  void mwifiex_11n_del_rx_reorder_tbl_by_ta(struct mwifiex_private *priv, u8 *ta);
  void mwifiex_update_rxreor_flags(struct mwifiex_adapter *adapter, u8 flags);
  
  #endif /* _MWIFIEX_11N_RXREORDER_H_ */