rx_reo_queue.h 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755
  1. /*
  2. * Copyright (c) 2021 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. // $ATH_LICENSE_HW_HDR_C$
  17. //
  18. // DO NOT EDIT! This file is automatically generated
  19. // These definitions are tied to a particular hardware layout
  20. #ifndef _RX_REO_QUEUE_H_
  21. #define _RX_REO_QUEUE_H_
  22. #if !defined(__ASSEMBLER__)
  23. #endif
  24. #include "uniform_descriptor_header.h"
  25. // ################ START SUMMARY #################
  26. //
  27. // Dword Fields
  28. // 0 struct uniform_descriptor_header descriptor_header;
  29. // 1 receive_queue_number[15:0], reserved_1b[31:16]
  30. // 2 vld[0], associated_link_descriptor_counter[2:1], disable_duplicate_detection[3], soft_reorder_enable[4], ac[6:5], bar[7], rty[8], chk_2k_mode[9], oor_mode[10], ba_window_size[18:11], pn_check_needed[19], pn_shall_be_even[20], pn_shall_be_uneven[21], pn_handling_enable[22], pn_size[24:23], ignore_ampdu_flag[25], reserved_2b[31:26]
  31. // 3 svld[0], ssn[12:1], current_index[20:13], seq_2k_error_detected_flag[21], pn_error_detected_flag[22], reserved_3a[30:23], pn_valid[31]
  32. // 4 pn_31_0[31:0]
  33. // 5 pn_63_32[31:0]
  34. // 6 pn_95_64[31:0]
  35. // 7 pn_127_96[31:0]
  36. // 8 last_rx_enqueue_timestamp[31:0]
  37. // 9 last_rx_dequeue_timestamp[31:0]
  38. // 10 ptr_to_next_aging_queue_31_0[31:0]
  39. // 11 ptr_to_next_aging_queue_39_32[7:0], reserved_11a[31:8]
  40. // 12 ptr_to_previous_aging_queue_31_0[31:0]
  41. // 13 ptr_to_previous_aging_queue_39_32[7:0], reserved_13a[31:8]
  42. // 14 rx_bitmap_31_0[31:0]
  43. // 15 rx_bitmap_63_32[31:0]
  44. // 16 rx_bitmap_95_64[31:0]
  45. // 17 rx_bitmap_127_96[31:0]
  46. // 18 rx_bitmap_159_128[31:0]
  47. // 19 rx_bitmap_191_160[31:0]
  48. // 20 rx_bitmap_223_192[31:0]
  49. // 21 rx_bitmap_255_224[31:0]
  50. // 22 current_mpdu_count[6:0], current_msdu_count[31:7]
  51. // 23 reserved_23[3:0], timeout_count[9:4], forward_due_to_bar_count[15:10], duplicate_count[31:16]
  52. // 24 frames_in_order_count[23:0], bar_received_count[31:24]
  53. // 25 mpdu_frames_processed_count[31:0]
  54. // 26 msdu_frames_processed_count[31:0]
  55. // 27 total_processed_byte_count[31:0]
  56. // 28 late_receive_mpdu_count[11:0], window_jump_2k[15:12], hole_count[31:16]
  57. // 29 reserved_29[31:0]
  58. // 30 reserved_30[31:0]
  59. // 31 reserved_31[31:0]
  60. //
  61. // ################ END SUMMARY #################
  62. #define NUM_OF_DWORDS_RX_REO_QUEUE 32
  63. struct rx_reo_queue {
  64. struct uniform_descriptor_header descriptor_header;
  65. uint32_t receive_queue_number : 16, //[15:0]
  66. reserved_1b : 16; //[31:16]
  67. uint32_t vld : 1, //[0]
  68. associated_link_descriptor_counter: 2, //[2:1]
  69. disable_duplicate_detection : 1, //[3]
  70. soft_reorder_enable : 1, //[4]
  71. ac : 2, //[6:5]
  72. bar : 1, //[7]
  73. rty : 1, //[8]
  74. chk_2k_mode : 1, //[9]
  75. oor_mode : 1, //[10]
  76. ba_window_size : 8, //[18:11]
  77. pn_check_needed : 1, //[19]
  78. pn_shall_be_even : 1, //[20]
  79. pn_shall_be_uneven : 1, //[21]
  80. pn_handling_enable : 1, //[22]
  81. pn_size : 2, //[24:23]
  82. ignore_ampdu_flag : 1, //[25]
  83. reserved_2b : 6; //[31:26]
  84. uint32_t svld : 1, //[0]
  85. ssn : 12, //[12:1]
  86. current_index : 8, //[20:13]
  87. seq_2k_error_detected_flag : 1, //[21]
  88. pn_error_detected_flag : 1, //[22]
  89. reserved_3a : 8, //[30:23]
  90. pn_valid : 1; //[31]
  91. uint32_t pn_31_0 : 32; //[31:0]
  92. uint32_t pn_63_32 : 32; //[31:0]
  93. uint32_t pn_95_64 : 32; //[31:0]
  94. uint32_t pn_127_96 : 32; //[31:0]
  95. uint32_t last_rx_enqueue_timestamp : 32; //[31:0]
  96. uint32_t last_rx_dequeue_timestamp : 32; //[31:0]
  97. uint32_t ptr_to_next_aging_queue_31_0 : 32; //[31:0]
  98. uint32_t ptr_to_next_aging_queue_39_32 : 8, //[7:0]
  99. reserved_11a : 24; //[31:8]
  100. uint32_t ptr_to_previous_aging_queue_31_0: 32; //[31:0]
  101. uint32_t ptr_to_previous_aging_queue_39_32: 8, //[7:0]
  102. reserved_13a : 24; //[31:8]
  103. uint32_t rx_bitmap_31_0 : 32; //[31:0]
  104. uint32_t rx_bitmap_63_32 : 32; //[31:0]
  105. uint32_t rx_bitmap_95_64 : 32; //[31:0]
  106. uint32_t rx_bitmap_127_96 : 32; //[31:0]
  107. uint32_t rx_bitmap_159_128 : 32; //[31:0]
  108. uint32_t rx_bitmap_191_160 : 32; //[31:0]
  109. uint32_t rx_bitmap_223_192 : 32; //[31:0]
  110. uint32_t rx_bitmap_255_224 : 32; //[31:0]
  111. uint32_t current_mpdu_count : 7, //[6:0]
  112. current_msdu_count : 25; //[31:7]
  113. uint32_t reserved_23 : 4, //[3:0]
  114. timeout_count : 6, //[9:4]
  115. forward_due_to_bar_count : 6, //[15:10]
  116. duplicate_count : 16; //[31:16]
  117. uint32_t frames_in_order_count : 24, //[23:0]
  118. bar_received_count : 8; //[31:24]
  119. uint32_t mpdu_frames_processed_count : 32; //[31:0]
  120. uint32_t msdu_frames_processed_count : 32; //[31:0]
  121. uint32_t total_processed_byte_count : 32; //[31:0]
  122. uint32_t late_receive_mpdu_count : 12, //[11:0]
  123. window_jump_2k : 4, //[15:12]
  124. hole_count : 16; //[31:16]
  125. uint32_t reserved_29 : 32; //[31:0]
  126. uint32_t reserved_30 : 32; //[31:0]
  127. uint32_t reserved_31 : 32; //[31:0]
  128. };
  129. /*
  130. struct uniform_descriptor_header descriptor_header
  131. Details about which module owns this struct.
  132. Note that sub field Buffer_type shall be set to
  133. Receive_REO_queue_descriptor
  134. receive_queue_number
  135. Indicates the MPDU queue ID to which this MPDU link
  136. descriptor belongs
  137. Used for tracking and debugging
  138. <legal all>
  139. reserved_1b
  140. <legal 0>
  141. vld
  142. Valid bit indicating a session is established and the
  143. queue descriptor is valid(Filled by SW)
  144. <legal all>
  145. associated_link_descriptor_counter
  146. Indicates which of the 3 link descriptor counters shall
  147. be incremented or decremented when link descriptors are
  148. added or removed from this flow queue.
  149. MSDU link descriptors related with MPDUs stored in the
  150. re-order buffer shall also be included in this count.
  151. <legal 0-2>
  152. disable_duplicate_detection
  153. When set, do not perform any duplicate detection.
  154. <legal all>
  155. soft_reorder_enable
  156. When set, REO has been instructed to not perform the
  157. actual re-ordering of frames for this queue, but just to
  158. insert the reorder opcodes.
  159. Note that this implies that REO is also not going to
  160. perform any MSDU level operations, and the entire MPDU (and
  161. thus pointer to the MSDU link descriptor) will be pushed to
  162. a destination ring that SW has programmed in a SW
  163. programmable configuration register in REO
  164. <legal all>
  165. ac
  166. Indicates which access category the queue descriptor
  167. belongs to(filled by SW)
  168. <legal all>
  169. bar
  170. Indicates if BAR has been received (mostly used for
  171. debug purpose and this is filled by REO)
  172. <legal all>
  173. rty
  174. Retry bit is checked if this bit is set.
  175. <legal all>
  176. chk_2k_mode
  177. Indicates what type of operation is expected from Reo
  178. when the received frame SN falls within the 2K window
  179. See REO MLD document for programming details.
  180. <legal all>
  181. oor_mode
  182. Out of Order mode:
  183. Indicates what type of operation is expected when the
  184. received frame falls within the OOR window.
  185. See REO MLD document for programming details.
  186. <legal all>
  187. ba_window_size
  188. Indicates the negotiated (window size + 1).
  189. it can go up to Max of 256bits.
  190. A value 255 means 256 bitmap, 63 means 64 bitmap, 0
  191. (means non-BA session, with window size of 0). The 3 values
  192. here are the main values validated, but other values should
  193. work as well.
  194. A BA window size of 0 (=> one frame entry bitmat), means
  195. that there is NO RX_REO_QUEUE_EXT descriptor following this
  196. RX_REO_QUEUE STRUCT in memory
  197. A BA window size of 1 - 105, means that there is 1
  198. RX_REO_QUEUE_EXT descriptor directly following this
  199. RX_REO_QUEUE STRUCT in memory.
  200. A BA window size of 106 - 210, means that there are 2
  201. RX_REO_QUEUE_EXT descriptors directly following this
  202. RX_REO_QUEUE STRUCT in memory
  203. A BA window size of 211 - 256, means that there are 3
  204. RX_REO_QUEUE_EXT descriptors directly following this
  205. RX_REO_QUEUE STRUCT in memory
  206. <legal 0 - 255>
  207. pn_check_needed
  208. When set, REO shall perform the PN increment check
  209. <legal all>
  210. pn_shall_be_even
  211. Field only valid when 'pn_check_needed' is set.
  212. When set, REO shall confirm that the received PN number
  213. is not only incremented, but also always an even number
  214. <legal all>
  215. pn_shall_be_uneven
  216. Field only valid when 'pn_check_needed' is set.
  217. When set, REO shall confirm that the received PN number
  218. is not only incremented, but also always an uneven number
  219. <legal all>
  220. pn_handling_enable
  221. Field only valid when 'pn_check_needed' is set.
  222. When set, and REO detected a PN error, HW shall set the
  223. 'pn_error_detected_flag'.
  224. <legal all>
  225. pn_size
  226. Size of the PN field check.
  227. Needed for wrap around handling...
  228. <enum 0 pn_size_24>
  229. <enum 1 pn_size_48>
  230. <enum 2 pn_size_128>
  231. <legal 0-2>
  232. ignore_ampdu_flag
  233. When set, REO shall ignore the ampdu_flag on the
  234. entrance descriptor for this queue.
  235. <legal all>
  236. reserved_2b
  237. <legal 0>
  238. svld
  239. Sequence number in next field is valid one. It can be
  240. filled by SW if the want to fill in the any negotiated SSN,
  241. otherwise REO will fill the sequence number of first
  242. received packet and set this bit to 1.
  243. <legal all>
  244. ssn
  245. Starting Sequence number of the session, this changes
  246. whenever window moves. (can be filled by SW then maintained
  247. by REO)
  248. <legal all>
  249. current_index
  250. Points to last forwarded packet
  251. <legal all>
  252. seq_2k_error_detected_flag
  253. Set by REO, can only be cleared by SW
  254. When set, REO has detected a 2k error jump in the
  255. sequence number and from that moment forward, all new frames
  256. are forwarded directly to FW, without duplicate detect,
  257. reordering, etc.
  258. <legal all>
  259. pn_error_detected_flag
  260. Set by REO, can only be cleared by SW
  261. When set, REO has detected a PN error and from that
  262. moment forward, all new frames are forwarded directly to FW,
  263. without duplicate detect, reordering, etc.
  264. <legal all>
  265. reserved_3a
  266. <legal 0>
  267. pn_valid
  268. PN number in next fields are valid. It can be filled by
  269. SW if it wants to fill in the any negotiated SSN, otherwise
  270. REO will fill the pn based on the first received packet and
  271. set this bit to 1.
  272. <legal all>
  273. pn_31_0
  274. <legal all>
  275. pn_63_32
  276. Bits [63:32] of the PN number.
  277. <legal all>
  278. pn_95_64
  279. Bits [95:64] of the PN number.
  280. <legal all>
  281. pn_127_96
  282. Bits [127:96] of the PN number.
  283. <legal all>
  284. last_rx_enqueue_timestamp
  285. This timestamp is updated when an MPDU is received and
  286. accesses this Queue Descriptor. It does not include the
  287. access due to Command TLVs or Aging (which will be updated
  288. in Last_rx_dequeue_timestamp).
  289. <legal all>
  290. last_rx_dequeue_timestamp
  291. This timestamp is used for Aging. When an MPDU or
  292. multiple MPDUs are forwarded, either due to window movement,
  293. bar, aging or command flush, this timestamp is updated. Also
  294. when the bitmap is all zero and the first time an MPDU is
  295. queued (opcode=QCUR), this timestamp is updated for aging.
  296. <legal all>
  297. ptr_to_next_aging_queue_31_0
  298. Address (address bits 31-0)of next RX_REO_QUEUE
  299. descriptor in the 'receive timestamp' ordered list.
  300. From it the Position of this queue descriptor in the per
  301. AC aging waitlist can be derived.
  302. Value 0x0 indicates the 'NULL' pointer which implies
  303. that this is the last entry in the list.
  304. <legal all>
  305. ptr_to_next_aging_queue_39_32
  306. Address (address bits 39-32)of next RX_REO_QUEUE
  307. descriptor in the 'receive timestamp' ordered list.
  308. From it the Position of this queue descriptor in the per
  309. AC aging waitlist can be derived.
  310. Value 0x0 indicates the 'NULL' pointer which implies
  311. that this is the last entry in the list.
  312. <legal all>
  313. reserved_11a
  314. <legal 0>
  315. ptr_to_previous_aging_queue_31_0
  316. Address (address bits 31-0)of next RX_REO_QUEUE
  317. descriptor in the 'receive timestamp' ordered list.
  318. From it the Position of this queue descriptor in the per
  319. AC aging waitlist can be derived.
  320. Value 0x0 indicates the 'NULL' pointer which implies
  321. that this is the first entry in the list.
  322. <legal all>
  323. ptr_to_previous_aging_queue_39_32
  324. Address (address bits 39-32)of next RX_REO_QUEUE
  325. descriptor in the 'receive timestamp' ordered list.
  326. From it the Position of this queue descriptor in the per
  327. AC aging waitlist can be derived.
  328. Value 0x0 indicates the 'NULL' pointer which implies
  329. that this is the first entry in the list.
  330. <legal all>
  331. reserved_13a
  332. <legal 0>
  333. rx_bitmap_31_0
  334. When a bit is set, the corresponding frame is currently
  335. held in the re-order queue.
  336. The bitmap is Fully managed by HW.
  337. SW shall init this to 0, and then never ever change it
  338. <legal all>
  339. rx_bitmap_63_32
  340. See Rx_bitmap_31_0 description
  341. <legal all>
  342. rx_bitmap_95_64
  343. See Rx_bitmap_31_0 description
  344. <legal all>
  345. rx_bitmap_127_96
  346. See Rx_bitmap_31_0 description
  347. <legal all>
  348. rx_bitmap_159_128
  349. See Rx_bitmap_31_0 description
  350. <legal all>
  351. rx_bitmap_191_160
  352. See Rx_bitmap_31_0 description
  353. <legal all>
  354. rx_bitmap_223_192
  355. See Rx_bitmap_31_0 description
  356. <legal all>
  357. rx_bitmap_255_224
  358. See Rx_bitmap_31_0 description
  359. <legal all>
  360. current_mpdu_count
  361. The number of MPDUs in the queue.
  362. <legal all>
  363. current_msdu_count
  364. The number of MSDUs in the queue.
  365. <legal all>
  366. reserved_23
  367. <legal 0>
  368. timeout_count
  369. The number of times that REO started forwarding frames
  370. even though there is a hole in the bitmap. Forwarding reason
  371. is Timeout
  372. The counter saturates and freezes at 0x3F
  373. <legal all>
  374. forward_due_to_bar_count
  375. The number of times that REO started forwarding frames
  376. even though there is a hole in the bitmap. Forwarding reason
  377. is reception of BAR frame.
  378. The counter saturates and freezes at 0x3F
  379. <legal all>
  380. duplicate_count
  381. The number of duplicate frames that have been detected
  382. <legal all>
  383. frames_in_order_count
  384. The number of frames that have been received in order
  385. (without a hole that prevented them from being forwarded
  386. immediately)
  387. This corresponds to the Reorder opcodes:
  388. 'FWDCUR' and 'FWD BUF'
  389. <legal all>
  390. bar_received_count
  391. The number of times a BAR frame is received.
  392. This corresponds to the Reorder opcodes with 'DROP'
  393. The counter saturates and freezes at 0xFF
  394. <legal all>
  395. mpdu_frames_processed_count
  396. The total number of MPDU frames that have been processed
  397. by REO. 'Processing' here means that REO has received them
  398. out of the entrance ring, and retrieved the corresponding
  399. RX_REO_QUEUE Descriptor.
  400. Note that this count includes duplicates, frames that
  401. later had errors, etc.
  402. Note that field 'Duplicate_count' indicates how many of
  403. these MPDUs were duplicates.
  404. <legal all>
  405. msdu_frames_processed_count
  406. The total number of MSDU frames that have been processed
  407. by REO. 'Processing' here means that REO has received them
  408. out of the entrance ring, and retrieved the corresponding
  409. RX_REO_QUEUE Descriptor.
  410. Note that this count includes duplicates, frames that
  411. later had errors, etc.
  412. <legal all>
  413. total_processed_byte_count
  414. An approximation of the number of bytes processed for
  415. this queue.
  416. 'Processing' here means that REO has received them out
  417. of the entrance ring, and retrieved the corresponding
  418. RX_REO_QUEUE Descriptor.
  419. Note that this count includes duplicates, frames that
  420. later had errors, etc.
  421. In 64 byte units
  422. <legal all>
  423. late_receive_mpdu_count
  424. The number of MPDUs received after the window had
  425. already moved on. The 'late' sequence window is defined as
  426. (Window SSN - 256) - (Window SSN - 1)
  427. This corresponds with Out of order detection in
  428. duplicate detect FSM
  429. The counter saturates and freezes at 0xFFF
  430. <legal all>
  431. window_jump_2k
  432. The number of times the window moved more then 2K
  433. The counter saturates and freezes at 0xF
  434. (Note: field name can not start with number: previous
  435. 2k_window_jump)
  436. <legal all>
  437. hole_count
  438. The number of times a hole was created in the receive
  439. bitmap.
  440. This corresponds to the Reorder opcodes with 'QCUR'
  441. <legal all>
  442. reserved_29
  443. <legal 0>
  444. reserved_30
  445. <legal 0>
  446. reserved_31
  447. <legal 0>
  448. */
  449. /* EXTERNAL REFERENCE : struct uniform_descriptor_header descriptor_header */
  450. /* Description RX_REO_QUEUE_0_DESCRIPTOR_HEADER_OWNER
  451. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  452. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  453. The owner of this data structure:
  454. <enum 0 WBM_owned> Buffer Manager currently owns this
  455. data structure.
  456. <enum 1 SW_OR_FW_owned> Software of FW currently owns
  457. this data structure.
  458. <enum 2 TQM_owned> Transmit Queue Manager currently owns
  459. this data structure.
  460. <enum 3 RXDMA_owned> Receive DMA currently owns this
  461. data structure.
  462. <enum 4 REO_owned> Reorder currently owns this data
  463. structure.
  464. <enum 5 SWITCH_owned> SWITCH currently owns this data
  465. structure.
  466. <legal 0-5>
  467. */
  468. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_OWNER_OFFSET 0x00000000
  469. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_OWNER_LSB 0
  470. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_OWNER_MASK 0x0000000f
  471. /* Description RX_REO_QUEUE_0_DESCRIPTOR_HEADER_BUFFER_TYPE
  472. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  473. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  474. Field describing what contents format is of this
  475. descriptor
  476. <enum 0 Transmit_MSDU_Link_descriptor >
  477. <enum 1 Transmit_MPDU_Link_descriptor >
  478. <enum 2 Transmit_MPDU_Queue_head_descriptor>
  479. <enum 3 Transmit_MPDU_Queue_ext_descriptor>
  480. <enum 4 Transmit_flow_descriptor>
  481. <enum 5 Transmit_buffer > NOT TO BE USED:
  482. <enum 6 Receive_MSDU_Link_descriptor >
  483. <enum 7 Receive_MPDU_Link_descriptor >
  484. <enum 8 Receive_REO_queue_descriptor >
  485. <enum 9 Receive_REO_queue_ext_descriptor >
  486. <enum 10 Receive_buffer >
  487. <enum 11 Idle_link_list_entry>
  488. <legal 0-11>
  489. */
  490. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_BUFFER_TYPE_OFFSET 0x00000000
  491. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_BUFFER_TYPE_LSB 4
  492. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_BUFFER_TYPE_MASK 0x000000f0
  493. /* Description RX_REO_QUEUE_0_DESCRIPTOR_HEADER_RESERVED_0A
  494. <legal 0>
  495. */
  496. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_RESERVED_0A_OFFSET 0x00000000
  497. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_RESERVED_0A_LSB 8
  498. #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_RESERVED_0A_MASK 0xffffff00
  499. /* Description RX_REO_QUEUE_1_RECEIVE_QUEUE_NUMBER
  500. Indicates the MPDU queue ID to which this MPDU link
  501. descriptor belongs
  502. Used for tracking and debugging
  503. <legal all>
  504. */
  505. #define RX_REO_QUEUE_1_RECEIVE_QUEUE_NUMBER_OFFSET 0x00000004
  506. #define RX_REO_QUEUE_1_RECEIVE_QUEUE_NUMBER_LSB 0
  507. #define RX_REO_QUEUE_1_RECEIVE_QUEUE_NUMBER_MASK 0x0000ffff
  508. /* Description RX_REO_QUEUE_1_RESERVED_1B
  509. <legal 0>
  510. */
  511. #define RX_REO_QUEUE_1_RESERVED_1B_OFFSET 0x00000004
  512. #define RX_REO_QUEUE_1_RESERVED_1B_LSB 16
  513. #define RX_REO_QUEUE_1_RESERVED_1B_MASK 0xffff0000
  514. /* Description RX_REO_QUEUE_2_VLD
  515. Valid bit indicating a session is established and the
  516. queue descriptor is valid(Filled by SW)
  517. <legal all>
  518. */
  519. #define RX_REO_QUEUE_2_VLD_OFFSET 0x00000008
  520. #define RX_REO_QUEUE_2_VLD_LSB 0
  521. #define RX_REO_QUEUE_2_VLD_MASK 0x00000001
  522. /* Description RX_REO_QUEUE_2_ASSOCIATED_LINK_DESCRIPTOR_COUNTER
  523. Indicates which of the 3 link descriptor counters shall
  524. be incremented or decremented when link descriptors are
  525. added or removed from this flow queue.
  526. MSDU link descriptors related with MPDUs stored in the
  527. re-order buffer shall also be included in this count.
  528. <legal 0-2>
  529. */
  530. #define RX_REO_QUEUE_2_ASSOCIATED_LINK_DESCRIPTOR_COUNTER_OFFSET 0x00000008
  531. #define RX_REO_QUEUE_2_ASSOCIATED_LINK_DESCRIPTOR_COUNTER_LSB 1
  532. #define RX_REO_QUEUE_2_ASSOCIATED_LINK_DESCRIPTOR_COUNTER_MASK 0x00000006
  533. /* Description RX_REO_QUEUE_2_DISABLE_DUPLICATE_DETECTION
  534. When set, do not perform any duplicate detection.
  535. <legal all>
  536. */
  537. #define RX_REO_QUEUE_2_DISABLE_DUPLICATE_DETECTION_OFFSET 0x00000008
  538. #define RX_REO_QUEUE_2_DISABLE_DUPLICATE_DETECTION_LSB 3
  539. #define RX_REO_QUEUE_2_DISABLE_DUPLICATE_DETECTION_MASK 0x00000008
  540. /* Description RX_REO_QUEUE_2_SOFT_REORDER_ENABLE
  541. When set, REO has been instructed to not perform the
  542. actual re-ordering of frames for this queue, but just to
  543. insert the reorder opcodes.
  544. Note that this implies that REO is also not going to
  545. perform any MSDU level operations, and the entire MPDU (and
  546. thus pointer to the MSDU link descriptor) will be pushed to
  547. a destination ring that SW has programmed in a SW
  548. programmable configuration register in REO
  549. <legal all>
  550. */
  551. #define RX_REO_QUEUE_2_SOFT_REORDER_ENABLE_OFFSET 0x00000008
  552. #define RX_REO_QUEUE_2_SOFT_REORDER_ENABLE_LSB 4
  553. #define RX_REO_QUEUE_2_SOFT_REORDER_ENABLE_MASK 0x00000010
  554. /* Description RX_REO_QUEUE_2_AC
  555. Indicates which access category the queue descriptor
  556. belongs to(filled by SW)
  557. <legal all>
  558. */
  559. #define RX_REO_QUEUE_2_AC_OFFSET 0x00000008
  560. #define RX_REO_QUEUE_2_AC_LSB 5
  561. #define RX_REO_QUEUE_2_AC_MASK 0x00000060
  562. /* Description RX_REO_QUEUE_2_BAR
  563. Indicates if BAR has been received (mostly used for
  564. debug purpose and this is filled by REO)
  565. <legal all>
  566. */
  567. #define RX_REO_QUEUE_2_BAR_OFFSET 0x00000008
  568. #define RX_REO_QUEUE_2_BAR_LSB 7
  569. #define RX_REO_QUEUE_2_BAR_MASK 0x00000080
  570. /* Description RX_REO_QUEUE_2_RTY
  571. Retry bit is checked if this bit is set.
  572. <legal all>
  573. */
  574. #define RX_REO_QUEUE_2_RTY_OFFSET 0x00000008
  575. #define RX_REO_QUEUE_2_RTY_LSB 8
  576. #define RX_REO_QUEUE_2_RTY_MASK 0x00000100
  577. /* Description RX_REO_QUEUE_2_CHK_2K_MODE
  578. Indicates what type of operation is expected from Reo
  579. when the received frame SN falls within the 2K window
  580. See REO MLD document for programming details.
  581. <legal all>
  582. */
  583. #define RX_REO_QUEUE_2_CHK_2K_MODE_OFFSET 0x00000008
  584. #define RX_REO_QUEUE_2_CHK_2K_MODE_LSB 9
  585. #define RX_REO_QUEUE_2_CHK_2K_MODE_MASK 0x00000200
  586. /* Description RX_REO_QUEUE_2_OOR_MODE
  587. Out of Order mode:
  588. Indicates what type of operation is expected when the
  589. received frame falls within the OOR window.
  590. See REO MLD document for programming details.
  591. <legal all>
  592. */
  593. #define RX_REO_QUEUE_2_OOR_MODE_OFFSET 0x00000008
  594. #define RX_REO_QUEUE_2_OOR_MODE_LSB 10
  595. #define RX_REO_QUEUE_2_OOR_MODE_MASK 0x00000400
  596. /* Description RX_REO_QUEUE_2_BA_WINDOW_SIZE
  597. Indicates the negotiated (window size + 1).
  598. it can go up to Max of 256bits.
  599. A value 255 means 256 bitmap, 63 means 64 bitmap, 0
  600. (means non-BA session, with window size of 0). The 3 values
  601. here are the main values validated, but other values should
  602. work as well.
  603. A BA window size of 0 (=> one frame entry bitmat), means
  604. that there is NO RX_REO_QUEUE_EXT descriptor following this
  605. RX_REO_QUEUE STRUCT in memory
  606. A BA window size of 1 - 105, means that there is 1
  607. RX_REO_QUEUE_EXT descriptor directly following this
  608. RX_REO_QUEUE STRUCT in memory.
  609. A BA window size of 106 - 210, means that there are 2
  610. RX_REO_QUEUE_EXT descriptors directly following this
  611. RX_REO_QUEUE STRUCT in memory
  612. A BA window size of 211 - 256, means that there are 3
  613. RX_REO_QUEUE_EXT descriptors directly following this
  614. RX_REO_QUEUE STRUCT in memory
  615. <legal 0 - 255>
  616. */
  617. #define RX_REO_QUEUE_2_BA_WINDOW_SIZE_OFFSET 0x00000008
  618. #define RX_REO_QUEUE_2_BA_WINDOW_SIZE_LSB 11
  619. #define RX_REO_QUEUE_2_BA_WINDOW_SIZE_MASK 0x0007f800
  620. /* Description RX_REO_QUEUE_2_PN_CHECK_NEEDED
  621. When set, REO shall perform the PN increment check
  622. <legal all>
  623. */
  624. #define RX_REO_QUEUE_2_PN_CHECK_NEEDED_OFFSET 0x00000008
  625. #define RX_REO_QUEUE_2_PN_CHECK_NEEDED_LSB 19
  626. #define RX_REO_QUEUE_2_PN_CHECK_NEEDED_MASK 0x00080000
  627. /* Description RX_REO_QUEUE_2_PN_SHALL_BE_EVEN
  628. Field only valid when 'pn_check_needed' is set.
  629. When set, REO shall confirm that the received PN number
  630. is not only incremented, but also always an even number
  631. <legal all>
  632. */
  633. #define RX_REO_QUEUE_2_PN_SHALL_BE_EVEN_OFFSET 0x00000008
  634. #define RX_REO_QUEUE_2_PN_SHALL_BE_EVEN_LSB 20
  635. #define RX_REO_QUEUE_2_PN_SHALL_BE_EVEN_MASK 0x00100000
  636. /* Description RX_REO_QUEUE_2_PN_SHALL_BE_UNEVEN
  637. Field only valid when 'pn_check_needed' is set.
  638. When set, REO shall confirm that the received PN number
  639. is not only incremented, but also always an uneven number
  640. <legal all>
  641. */
  642. #define RX_REO_QUEUE_2_PN_SHALL_BE_UNEVEN_OFFSET 0x00000008
  643. #define RX_REO_QUEUE_2_PN_SHALL_BE_UNEVEN_LSB 21
  644. #define RX_REO_QUEUE_2_PN_SHALL_BE_UNEVEN_MASK 0x00200000
  645. /* Description RX_REO_QUEUE_2_PN_HANDLING_ENABLE
  646. Field only valid when 'pn_check_needed' is set.
  647. When set, and REO detected a PN error, HW shall set the
  648. 'pn_error_detected_flag'.
  649. <legal all>
  650. */
  651. #define RX_REO_QUEUE_2_PN_HANDLING_ENABLE_OFFSET 0x00000008
  652. #define RX_REO_QUEUE_2_PN_HANDLING_ENABLE_LSB 22
  653. #define RX_REO_QUEUE_2_PN_HANDLING_ENABLE_MASK 0x00400000
  654. /* Description RX_REO_QUEUE_2_PN_SIZE
  655. Size of the PN field check.
  656. Needed for wrap around handling...
  657. <enum 0 pn_size_24>
  658. <enum 1 pn_size_48>
  659. <enum 2 pn_size_128>
  660. <legal 0-2>
  661. */
  662. #define RX_REO_QUEUE_2_PN_SIZE_OFFSET 0x00000008
  663. #define RX_REO_QUEUE_2_PN_SIZE_LSB 23
  664. #define RX_REO_QUEUE_2_PN_SIZE_MASK 0x01800000
  665. /* Description RX_REO_QUEUE_2_IGNORE_AMPDU_FLAG
  666. When set, REO shall ignore the ampdu_flag on the
  667. entrance descriptor for this queue.
  668. <legal all>
  669. */
  670. #define RX_REO_QUEUE_2_IGNORE_AMPDU_FLAG_OFFSET 0x00000008
  671. #define RX_REO_QUEUE_2_IGNORE_AMPDU_FLAG_LSB 25
  672. #define RX_REO_QUEUE_2_IGNORE_AMPDU_FLAG_MASK 0x02000000
  673. /* Description RX_REO_QUEUE_2_RESERVED_2B
  674. <legal 0>
  675. */
  676. #define RX_REO_QUEUE_2_RESERVED_2B_OFFSET 0x00000008
  677. #define RX_REO_QUEUE_2_RESERVED_2B_LSB 26
  678. #define RX_REO_QUEUE_2_RESERVED_2B_MASK 0xfc000000
  679. /* Description RX_REO_QUEUE_3_SVLD
  680. Sequence number in next field is valid one. It can be
  681. filled by SW if the want to fill in the any negotiated SSN,
  682. otherwise REO will fill the sequence number of first
  683. received packet and set this bit to 1.
  684. <legal all>
  685. */
  686. #define RX_REO_QUEUE_3_SVLD_OFFSET 0x0000000c
  687. #define RX_REO_QUEUE_3_SVLD_LSB 0
  688. #define RX_REO_QUEUE_3_SVLD_MASK 0x00000001
  689. /* Description RX_REO_QUEUE_3_SSN
  690. Starting Sequence number of the session, this changes
  691. whenever window moves. (can be filled by SW then maintained
  692. by REO)
  693. <legal all>
  694. */
  695. #define RX_REO_QUEUE_3_SSN_OFFSET 0x0000000c
  696. #define RX_REO_QUEUE_3_SSN_LSB 1
  697. #define RX_REO_QUEUE_3_SSN_MASK 0x00001ffe
  698. /* Description RX_REO_QUEUE_3_CURRENT_INDEX
  699. Points to last forwarded packet
  700. <legal all>
  701. */
  702. #define RX_REO_QUEUE_3_CURRENT_INDEX_OFFSET 0x0000000c
  703. #define RX_REO_QUEUE_3_CURRENT_INDEX_LSB 13
  704. #define RX_REO_QUEUE_3_CURRENT_INDEX_MASK 0x001fe000
  705. /* Description RX_REO_QUEUE_3_SEQ_2K_ERROR_DETECTED_FLAG
  706. Set by REO, can only be cleared by SW
  707. When set, REO has detected a 2k error jump in the
  708. sequence number and from that moment forward, all new frames
  709. are forwarded directly to FW, without duplicate detect,
  710. reordering, etc.
  711. <legal all>
  712. */
  713. #define RX_REO_QUEUE_3_SEQ_2K_ERROR_DETECTED_FLAG_OFFSET 0x0000000c
  714. #define RX_REO_QUEUE_3_SEQ_2K_ERROR_DETECTED_FLAG_LSB 21
  715. #define RX_REO_QUEUE_3_SEQ_2K_ERROR_DETECTED_FLAG_MASK 0x00200000
  716. /* Description RX_REO_QUEUE_3_PN_ERROR_DETECTED_FLAG
  717. Set by REO, can only be cleared by SW
  718. When set, REO has detected a PN error and from that
  719. moment forward, all new frames are forwarded directly to FW,
  720. without duplicate detect, reordering, etc.
  721. <legal all>
  722. */
  723. #define RX_REO_QUEUE_3_PN_ERROR_DETECTED_FLAG_OFFSET 0x0000000c
  724. #define RX_REO_QUEUE_3_PN_ERROR_DETECTED_FLAG_LSB 22
  725. #define RX_REO_QUEUE_3_PN_ERROR_DETECTED_FLAG_MASK 0x00400000
  726. /* Description RX_REO_QUEUE_3_RESERVED_3A
  727. <legal 0>
  728. */
  729. #define RX_REO_QUEUE_3_RESERVED_3A_OFFSET 0x0000000c
  730. #define RX_REO_QUEUE_3_RESERVED_3A_LSB 23
  731. #define RX_REO_QUEUE_3_RESERVED_3A_MASK 0x7f800000
  732. /* Description RX_REO_QUEUE_3_PN_VALID
  733. PN number in next fields are valid. It can be filled by
  734. SW if it wants to fill in the any negotiated SSN, otherwise
  735. REO will fill the pn based on the first received packet and
  736. set this bit to 1.
  737. <legal all>
  738. */
  739. #define RX_REO_QUEUE_3_PN_VALID_OFFSET 0x0000000c
  740. #define RX_REO_QUEUE_3_PN_VALID_LSB 31
  741. #define RX_REO_QUEUE_3_PN_VALID_MASK 0x80000000
  742. /* Description RX_REO_QUEUE_4_PN_31_0
  743. <legal all>
  744. */
  745. #define RX_REO_QUEUE_4_PN_31_0_OFFSET 0x00000010
  746. #define RX_REO_QUEUE_4_PN_31_0_LSB 0
  747. #define RX_REO_QUEUE_4_PN_31_0_MASK 0xffffffff
  748. /* Description RX_REO_QUEUE_5_PN_63_32
  749. Bits [63:32] of the PN number.
  750. <legal all>
  751. */
  752. #define RX_REO_QUEUE_5_PN_63_32_OFFSET 0x00000014
  753. #define RX_REO_QUEUE_5_PN_63_32_LSB 0
  754. #define RX_REO_QUEUE_5_PN_63_32_MASK 0xffffffff
  755. /* Description RX_REO_QUEUE_6_PN_95_64
  756. Bits [95:64] of the PN number.
  757. <legal all>
  758. */
  759. #define RX_REO_QUEUE_6_PN_95_64_OFFSET 0x00000018
  760. #define RX_REO_QUEUE_6_PN_95_64_LSB 0
  761. #define RX_REO_QUEUE_6_PN_95_64_MASK 0xffffffff
  762. /* Description RX_REO_QUEUE_7_PN_127_96
  763. Bits [127:96] of the PN number.
  764. <legal all>
  765. */
  766. #define RX_REO_QUEUE_7_PN_127_96_OFFSET 0x0000001c
  767. #define RX_REO_QUEUE_7_PN_127_96_LSB 0
  768. #define RX_REO_QUEUE_7_PN_127_96_MASK 0xffffffff
  769. /* Description RX_REO_QUEUE_8_LAST_RX_ENQUEUE_TIMESTAMP
  770. This timestamp is updated when an MPDU is received and
  771. accesses this Queue Descriptor. It does not include the
  772. access due to Command TLVs or Aging (which will be updated
  773. in Last_rx_dequeue_timestamp).
  774. <legal all>
  775. */
  776. #define RX_REO_QUEUE_8_LAST_RX_ENQUEUE_TIMESTAMP_OFFSET 0x00000020
  777. #define RX_REO_QUEUE_8_LAST_RX_ENQUEUE_TIMESTAMP_LSB 0
  778. #define RX_REO_QUEUE_8_LAST_RX_ENQUEUE_TIMESTAMP_MASK 0xffffffff
  779. /* Description RX_REO_QUEUE_9_LAST_RX_DEQUEUE_TIMESTAMP
  780. This timestamp is used for Aging. When an MPDU or
  781. multiple MPDUs are forwarded, either due to window movement,
  782. bar, aging or command flush, this timestamp is updated. Also
  783. when the bitmap is all zero and the first time an MPDU is
  784. queued (opcode=QCUR), this timestamp is updated for aging.
  785. <legal all>
  786. */
  787. #define RX_REO_QUEUE_9_LAST_RX_DEQUEUE_TIMESTAMP_OFFSET 0x00000024
  788. #define RX_REO_QUEUE_9_LAST_RX_DEQUEUE_TIMESTAMP_LSB 0
  789. #define RX_REO_QUEUE_9_LAST_RX_DEQUEUE_TIMESTAMP_MASK 0xffffffff
  790. /* Description RX_REO_QUEUE_10_PTR_TO_NEXT_AGING_QUEUE_31_0
  791. Address (address bits 31-0)of next RX_REO_QUEUE
  792. descriptor in the 'receive timestamp' ordered list.
  793. From it the Position of this queue descriptor in the per
  794. AC aging waitlist can be derived.
  795. Value 0x0 indicates the 'NULL' pointer which implies
  796. that this is the last entry in the list.
  797. <legal all>
  798. */
  799. #define RX_REO_QUEUE_10_PTR_TO_NEXT_AGING_QUEUE_31_0_OFFSET 0x00000028
  800. #define RX_REO_QUEUE_10_PTR_TO_NEXT_AGING_QUEUE_31_0_LSB 0
  801. #define RX_REO_QUEUE_10_PTR_TO_NEXT_AGING_QUEUE_31_0_MASK 0xffffffff
  802. /* Description RX_REO_QUEUE_11_PTR_TO_NEXT_AGING_QUEUE_39_32
  803. Address (address bits 39-32)of next RX_REO_QUEUE
  804. descriptor in the 'receive timestamp' ordered list.
  805. From it the Position of this queue descriptor in the per
  806. AC aging waitlist can be derived.
  807. Value 0x0 indicates the 'NULL' pointer which implies
  808. that this is the last entry in the list.
  809. <legal all>
  810. */
  811. #define RX_REO_QUEUE_11_PTR_TO_NEXT_AGING_QUEUE_39_32_OFFSET 0x0000002c
  812. #define RX_REO_QUEUE_11_PTR_TO_NEXT_AGING_QUEUE_39_32_LSB 0
  813. #define RX_REO_QUEUE_11_PTR_TO_NEXT_AGING_QUEUE_39_32_MASK 0x000000ff
  814. /* Description RX_REO_QUEUE_11_RESERVED_11A
  815. <legal 0>
  816. */
  817. #define RX_REO_QUEUE_11_RESERVED_11A_OFFSET 0x0000002c
  818. #define RX_REO_QUEUE_11_RESERVED_11A_LSB 8
  819. #define RX_REO_QUEUE_11_RESERVED_11A_MASK 0xffffff00
  820. /* Description RX_REO_QUEUE_12_PTR_TO_PREVIOUS_AGING_QUEUE_31_0
  821. Address (address bits 31-0)of next RX_REO_QUEUE
  822. descriptor in the 'receive timestamp' ordered list.
  823. From it the Position of this queue descriptor in the per
  824. AC aging waitlist can be derived.
  825. Value 0x0 indicates the 'NULL' pointer which implies
  826. that this is the first entry in the list.
  827. <legal all>
  828. */
  829. #define RX_REO_QUEUE_12_PTR_TO_PREVIOUS_AGING_QUEUE_31_0_OFFSET 0x00000030
  830. #define RX_REO_QUEUE_12_PTR_TO_PREVIOUS_AGING_QUEUE_31_0_LSB 0
  831. #define RX_REO_QUEUE_12_PTR_TO_PREVIOUS_AGING_QUEUE_31_0_MASK 0xffffffff
  832. /* Description RX_REO_QUEUE_13_PTR_TO_PREVIOUS_AGING_QUEUE_39_32
  833. Address (address bits 39-32)of next RX_REO_QUEUE
  834. descriptor in the 'receive timestamp' ordered list.
  835. From it the Position of this queue descriptor in the per
  836. AC aging waitlist can be derived.
  837. Value 0x0 indicates the 'NULL' pointer which implies
  838. that this is the first entry in the list.
  839. <legal all>
  840. */
  841. #define RX_REO_QUEUE_13_PTR_TO_PREVIOUS_AGING_QUEUE_39_32_OFFSET 0x00000034
  842. #define RX_REO_QUEUE_13_PTR_TO_PREVIOUS_AGING_QUEUE_39_32_LSB 0
  843. #define RX_REO_QUEUE_13_PTR_TO_PREVIOUS_AGING_QUEUE_39_32_MASK 0x000000ff
  844. /* Description RX_REO_QUEUE_13_RESERVED_13A
  845. <legal 0>
  846. */
  847. #define RX_REO_QUEUE_13_RESERVED_13A_OFFSET 0x00000034
  848. #define RX_REO_QUEUE_13_RESERVED_13A_LSB 8
  849. #define RX_REO_QUEUE_13_RESERVED_13A_MASK 0xffffff00
  850. /* Description RX_REO_QUEUE_14_RX_BITMAP_31_0
  851. When a bit is set, the corresponding frame is currently
  852. held in the re-order queue.
  853. The bitmap is Fully managed by HW.
  854. SW shall init this to 0, and then never ever change it
  855. <legal all>
  856. */
  857. #define RX_REO_QUEUE_14_RX_BITMAP_31_0_OFFSET 0x00000038
  858. #define RX_REO_QUEUE_14_RX_BITMAP_31_0_LSB 0
  859. #define RX_REO_QUEUE_14_RX_BITMAP_31_0_MASK 0xffffffff
  860. /* Description RX_REO_QUEUE_15_RX_BITMAP_63_32
  861. See Rx_bitmap_31_0 description
  862. <legal all>
  863. */
  864. #define RX_REO_QUEUE_15_RX_BITMAP_63_32_OFFSET 0x0000003c
  865. #define RX_REO_QUEUE_15_RX_BITMAP_63_32_LSB 0
  866. #define RX_REO_QUEUE_15_RX_BITMAP_63_32_MASK 0xffffffff
  867. /* Description RX_REO_QUEUE_16_RX_BITMAP_95_64
  868. See Rx_bitmap_31_0 description
  869. <legal all>
  870. */
  871. #define RX_REO_QUEUE_16_RX_BITMAP_95_64_OFFSET 0x00000040
  872. #define RX_REO_QUEUE_16_RX_BITMAP_95_64_LSB 0
  873. #define RX_REO_QUEUE_16_RX_BITMAP_95_64_MASK 0xffffffff
  874. /* Description RX_REO_QUEUE_17_RX_BITMAP_127_96
  875. See Rx_bitmap_31_0 description
  876. <legal all>
  877. */
  878. #define RX_REO_QUEUE_17_RX_BITMAP_127_96_OFFSET 0x00000044
  879. #define RX_REO_QUEUE_17_RX_BITMAP_127_96_LSB 0
  880. #define RX_REO_QUEUE_17_RX_BITMAP_127_96_MASK 0xffffffff
  881. /* Description RX_REO_QUEUE_18_RX_BITMAP_159_128
  882. See Rx_bitmap_31_0 description
  883. <legal all>
  884. */
  885. #define RX_REO_QUEUE_18_RX_BITMAP_159_128_OFFSET 0x00000048
  886. #define RX_REO_QUEUE_18_RX_BITMAP_159_128_LSB 0
  887. #define RX_REO_QUEUE_18_RX_BITMAP_159_128_MASK 0xffffffff
  888. /* Description RX_REO_QUEUE_19_RX_BITMAP_191_160
  889. See Rx_bitmap_31_0 description
  890. <legal all>
  891. */
  892. #define RX_REO_QUEUE_19_RX_BITMAP_191_160_OFFSET 0x0000004c
  893. #define RX_REO_QUEUE_19_RX_BITMAP_191_160_LSB 0
  894. #define RX_REO_QUEUE_19_RX_BITMAP_191_160_MASK 0xffffffff
  895. /* Description RX_REO_QUEUE_20_RX_BITMAP_223_192
  896. See Rx_bitmap_31_0 description
  897. <legal all>
  898. */
  899. #define RX_REO_QUEUE_20_RX_BITMAP_223_192_OFFSET 0x00000050
  900. #define RX_REO_QUEUE_20_RX_BITMAP_223_192_LSB 0
  901. #define RX_REO_QUEUE_20_RX_BITMAP_223_192_MASK 0xffffffff
  902. /* Description RX_REO_QUEUE_21_RX_BITMAP_255_224
  903. See Rx_bitmap_31_0 description
  904. <legal all>
  905. */
  906. #define RX_REO_QUEUE_21_RX_BITMAP_255_224_OFFSET 0x00000054
  907. #define RX_REO_QUEUE_21_RX_BITMAP_255_224_LSB 0
  908. #define RX_REO_QUEUE_21_RX_BITMAP_255_224_MASK 0xffffffff
  909. /* Description RX_REO_QUEUE_22_CURRENT_MPDU_COUNT
  910. The number of MPDUs in the queue.
  911. <legal all>
  912. */
  913. #define RX_REO_QUEUE_22_CURRENT_MPDU_COUNT_OFFSET 0x00000058
  914. #define RX_REO_QUEUE_22_CURRENT_MPDU_COUNT_LSB 0
  915. #define RX_REO_QUEUE_22_CURRENT_MPDU_COUNT_MASK 0x0000007f
  916. /* Description RX_REO_QUEUE_22_CURRENT_MSDU_COUNT
  917. The number of MSDUs in the queue.
  918. <legal all>
  919. */
  920. #define RX_REO_QUEUE_22_CURRENT_MSDU_COUNT_OFFSET 0x00000058
  921. #define RX_REO_QUEUE_22_CURRENT_MSDU_COUNT_LSB 7
  922. #define RX_REO_QUEUE_22_CURRENT_MSDU_COUNT_MASK 0xffffff80
  923. /* Description RX_REO_QUEUE_23_RESERVED_23
  924. <legal 0>
  925. */
  926. #define RX_REO_QUEUE_23_RESERVED_23_OFFSET 0x0000005c
  927. #define RX_REO_QUEUE_23_RESERVED_23_LSB 0
  928. #define RX_REO_QUEUE_23_RESERVED_23_MASK 0x0000000f
  929. /* Description RX_REO_QUEUE_23_TIMEOUT_COUNT
  930. The number of times that REO started forwarding frames
  931. even though there is a hole in the bitmap. Forwarding reason
  932. is Timeout
  933. The counter saturates and freezes at 0x3F
  934. <legal all>
  935. */
  936. #define RX_REO_QUEUE_23_TIMEOUT_COUNT_OFFSET 0x0000005c
  937. #define RX_REO_QUEUE_23_TIMEOUT_COUNT_LSB 4
  938. #define RX_REO_QUEUE_23_TIMEOUT_COUNT_MASK 0x000003f0
  939. /* Description RX_REO_QUEUE_23_FORWARD_DUE_TO_BAR_COUNT
  940. The number of times that REO started forwarding frames
  941. even though there is a hole in the bitmap. Forwarding reason
  942. is reception of BAR frame.
  943. The counter saturates and freezes at 0x3F
  944. <legal all>
  945. */
  946. #define RX_REO_QUEUE_23_FORWARD_DUE_TO_BAR_COUNT_OFFSET 0x0000005c
  947. #define RX_REO_QUEUE_23_FORWARD_DUE_TO_BAR_COUNT_LSB 10
  948. #define RX_REO_QUEUE_23_FORWARD_DUE_TO_BAR_COUNT_MASK 0x0000fc00
  949. /* Description RX_REO_QUEUE_23_DUPLICATE_COUNT
  950. The number of duplicate frames that have been detected
  951. <legal all>
  952. */
  953. #define RX_REO_QUEUE_23_DUPLICATE_COUNT_OFFSET 0x0000005c
  954. #define RX_REO_QUEUE_23_DUPLICATE_COUNT_LSB 16
  955. #define RX_REO_QUEUE_23_DUPLICATE_COUNT_MASK 0xffff0000
  956. /* Description RX_REO_QUEUE_24_FRAMES_IN_ORDER_COUNT
  957. The number of frames that have been received in order
  958. (without a hole that prevented them from being forwarded
  959. immediately)
  960. This corresponds to the Reorder opcodes:
  961. 'FWDCUR' and 'FWD BUF'
  962. <legal all>
  963. */
  964. #define RX_REO_QUEUE_24_FRAMES_IN_ORDER_COUNT_OFFSET 0x00000060
  965. #define RX_REO_QUEUE_24_FRAMES_IN_ORDER_COUNT_LSB 0
  966. #define RX_REO_QUEUE_24_FRAMES_IN_ORDER_COUNT_MASK 0x00ffffff
  967. /* Description RX_REO_QUEUE_24_BAR_RECEIVED_COUNT
  968. The number of times a BAR frame is received.
  969. This corresponds to the Reorder opcodes with 'DROP'
  970. The counter saturates and freezes at 0xFF
  971. <legal all>
  972. */
  973. #define RX_REO_QUEUE_24_BAR_RECEIVED_COUNT_OFFSET 0x00000060
  974. #define RX_REO_QUEUE_24_BAR_RECEIVED_COUNT_LSB 24
  975. #define RX_REO_QUEUE_24_BAR_RECEIVED_COUNT_MASK 0xff000000
  976. /* Description RX_REO_QUEUE_25_MPDU_FRAMES_PROCESSED_COUNT
  977. The total number of MPDU frames that have been processed
  978. by REO. 'Processing' here means that REO has received them
  979. out of the entrance ring, and retrieved the corresponding
  980. RX_REO_QUEUE Descriptor.
  981. Note that this count includes duplicates, frames that
  982. later had errors, etc.
  983. Note that field 'Duplicate_count' indicates how many of
  984. these MPDUs were duplicates.
  985. <legal all>
  986. */
  987. #define RX_REO_QUEUE_25_MPDU_FRAMES_PROCESSED_COUNT_OFFSET 0x00000064
  988. #define RX_REO_QUEUE_25_MPDU_FRAMES_PROCESSED_COUNT_LSB 0
  989. #define RX_REO_QUEUE_25_MPDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff
  990. /* Description RX_REO_QUEUE_26_MSDU_FRAMES_PROCESSED_COUNT
  991. The total number of MSDU frames that have been processed
  992. by REO. 'Processing' here means that REO has received them
  993. out of the entrance ring, and retrieved the corresponding
  994. RX_REO_QUEUE Descriptor.
  995. Note that this count includes duplicates, frames that
  996. later had errors, etc.
  997. <legal all>
  998. */
  999. #define RX_REO_QUEUE_26_MSDU_FRAMES_PROCESSED_COUNT_OFFSET 0x00000068
  1000. #define RX_REO_QUEUE_26_MSDU_FRAMES_PROCESSED_COUNT_LSB 0
  1001. #define RX_REO_QUEUE_26_MSDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff
  1002. /* Description RX_REO_QUEUE_27_TOTAL_PROCESSED_BYTE_COUNT
  1003. An approximation of the number of bytes processed for
  1004. this queue.
  1005. 'Processing' here means that REO has received them out
  1006. of the entrance ring, and retrieved the corresponding
  1007. RX_REO_QUEUE Descriptor.
  1008. Note that this count includes duplicates, frames that
  1009. later had errors, etc.
  1010. In 64 byte units
  1011. <legal all>
  1012. */
  1013. #define RX_REO_QUEUE_27_TOTAL_PROCESSED_BYTE_COUNT_OFFSET 0x0000006c
  1014. #define RX_REO_QUEUE_27_TOTAL_PROCESSED_BYTE_COUNT_LSB 0
  1015. #define RX_REO_QUEUE_27_TOTAL_PROCESSED_BYTE_COUNT_MASK 0xffffffff
  1016. /* Description RX_REO_QUEUE_28_LATE_RECEIVE_MPDU_COUNT
  1017. The number of MPDUs received after the window had
  1018. already moved on. The 'late' sequence window is defined as
  1019. (Window SSN - 256) - (Window SSN - 1)
  1020. This corresponds with Out of order detection in
  1021. duplicate detect FSM
  1022. The counter saturates and freezes at 0xFFF
  1023. <legal all>
  1024. */
  1025. #define RX_REO_QUEUE_28_LATE_RECEIVE_MPDU_COUNT_OFFSET 0x00000070
  1026. #define RX_REO_QUEUE_28_LATE_RECEIVE_MPDU_COUNT_LSB 0
  1027. #define RX_REO_QUEUE_28_LATE_RECEIVE_MPDU_COUNT_MASK 0x00000fff
  1028. /* Description RX_REO_QUEUE_28_WINDOW_JUMP_2K
  1029. The number of times the window moved more then 2K
  1030. The counter saturates and freezes at 0xF
  1031. (Note: field name can not start with number: previous
  1032. 2k_window_jump)
  1033. <legal all>
  1034. */
  1035. #define RX_REO_QUEUE_28_WINDOW_JUMP_2K_OFFSET 0x00000070
  1036. #define RX_REO_QUEUE_28_WINDOW_JUMP_2K_LSB 12
  1037. #define RX_REO_QUEUE_28_WINDOW_JUMP_2K_MASK 0x0000f000
  1038. /* Description RX_REO_QUEUE_28_HOLE_COUNT
  1039. The number of times a hole was created in the receive
  1040. bitmap.
  1041. This corresponds to the Reorder opcodes with 'QCUR'
  1042. <legal all>
  1043. */
  1044. #define RX_REO_QUEUE_28_HOLE_COUNT_OFFSET 0x00000070
  1045. #define RX_REO_QUEUE_28_HOLE_COUNT_LSB 16
  1046. #define RX_REO_QUEUE_28_HOLE_COUNT_MASK 0xffff0000
  1047. /* Description RX_REO_QUEUE_29_RESERVED_29
  1048. <legal 0>
  1049. */
  1050. #define RX_REO_QUEUE_29_RESERVED_29_OFFSET 0x00000074
  1051. #define RX_REO_QUEUE_29_RESERVED_29_LSB 0
  1052. #define RX_REO_QUEUE_29_RESERVED_29_MASK 0xffffffff
  1053. /* Description RX_REO_QUEUE_30_RESERVED_30
  1054. <legal 0>
  1055. */
  1056. #define RX_REO_QUEUE_30_RESERVED_30_OFFSET 0x00000078
  1057. #define RX_REO_QUEUE_30_RESERVED_30_LSB 0
  1058. #define RX_REO_QUEUE_30_RESERVED_30_MASK 0xffffffff
  1059. /* Description RX_REO_QUEUE_31_RESERVED_31
  1060. <legal 0>
  1061. */
  1062. #define RX_REO_QUEUE_31_RESERVED_31_OFFSET 0x0000007c
  1063. #define RX_REO_QUEUE_31_RESERVED_31_LSB 0
  1064. #define RX_REO_QUEUE_31_RESERVED_31_MASK 0xffffffff
  1065. #endif // _RX_REO_QUEUE_H_