rx_reo_queue.h 49 KB

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