11n_rxreorder.h 3.1 KB

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