rx_reo_queue.h 47 KB

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