rx_reo_queue.h 48 KB

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