123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839 |
- /*
- * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
- #ifndef _RX_PPDU_END_USER_STATS_H_
- #define _RX_PPDU_END_USER_STATS_H_
- #if !defined(__ASSEMBLER__)
- #endif
- #include "rx_rxpcu_classification_overview.h"
- #define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 30
- #define NUM_OF_QWORDS_RX_PPDU_END_USER_STATS 15
- struct rx_ppdu_end_user_stats {
- #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
- struct rx_rxpcu_classification_overview rxpcu_classification_details;
- uint32_t sta_full_aid : 13, // [12:0]
- mcs : 4, // [16:13]
- nss : 3, // [19:17]
- expected_response_ack_or_ba : 1, // [20:20]
- reserved_1a : 11; // [31:21]
- uint32_t sw_peer_id : 16, // [15:0]
- mpdu_cnt_fcs_err : 11, // [26:16]
- sw2rxdma0_buf_source_used : 1, // [27:27]
- fw2rxdma_pmac0_buf_source_used : 1, // [28:28]
- sw2rxdma1_buf_source_used : 1, // [29:29]
- sw2rxdma_exception_buf_source_used : 1, // [30:30]
- fw2rxdma_pmac1_buf_source_used : 1; // [31:31]
- uint32_t mpdu_cnt_fcs_ok : 11, // [10:0]
- frame_control_info_valid : 1, // [11:11]
- qos_control_info_valid : 1, // [12:12]
- ht_control_info_valid : 1, // [13:13]
- data_sequence_control_info_valid : 1, // [14:14]
- ht_control_info_null_valid : 1, // [15:15]
- rxdma2fw_pmac1_ring_used : 1, // [16:16]
- rxdma2reo_ring_used : 1, // [17:17]
- rxdma2fw_pmac0_ring_used : 1, // [18:18]
- rxdma2sw_ring_used : 1, // [19:19]
- rxdma_release_ring_used : 1, // [20:20]
- ht_control_field_pkt_type : 4, // [24:21]
- rxdma2reo_remote0_ring_used : 1, // [25:25]
- rxdma2reo_remote1_ring_used : 1, // [26:26]
- reserved_3b : 5; // [31:27]
- uint32_t ast_index : 16, // [15:0]
- frame_control_field : 16; // [31:16]
- uint32_t first_data_seq_ctrl : 16, // [15:0]
- qos_control_field : 16; // [31:16]
- uint32_t ht_control_field : 32; // [31:0]
- uint32_t fcs_ok_bitmap_31_0 : 32; // [31:0]
- uint32_t fcs_ok_bitmap_63_32 : 32; // [31:0]
- uint32_t udp_msdu_count : 16, // [15:0]
- tcp_msdu_count : 16; // [31:16]
- uint32_t other_msdu_count : 16, // [15:0]
- tcp_ack_msdu_count : 16; // [31:16]
- uint32_t sw_response_reference_ptr : 32; // [31:0]
- uint32_t received_qos_data_tid_bitmap : 16, // [15:0]
- received_qos_data_tid_eosp_bitmap : 16; // [31:16]
- uint32_t qosctrl_15_8_tid0 : 8, // [7:0]
- qosctrl_15_8_tid1 : 8, // [15:8]
- qosctrl_15_8_tid2 : 8, // [23:16]
- qosctrl_15_8_tid3 : 8; // [31:24]
- uint32_t qosctrl_15_8_tid4 : 8, // [7:0]
- qosctrl_15_8_tid5 : 8, // [15:8]
- qosctrl_15_8_tid6 : 8, // [23:16]
- qosctrl_15_8_tid7 : 8; // [31:24]
- uint32_t qosctrl_15_8_tid8 : 8, // [7:0]
- qosctrl_15_8_tid9 : 8, // [15:8]
- qosctrl_15_8_tid10 : 8, // [23:16]
- qosctrl_15_8_tid11 : 8; // [31:24]
- uint32_t qosctrl_15_8_tid12 : 8, // [7:0]
- qosctrl_15_8_tid13 : 8, // [15:8]
- qosctrl_15_8_tid14 : 8, // [23:16]
- qosctrl_15_8_tid15 : 8; // [31:24]
- uint32_t mpdu_ok_byte_count : 25, // [24:0]
- ampdu_delim_ok_count_6_0 : 7; // [31:25]
- uint32_t ampdu_delim_err_count : 25, // [24:0]
- ampdu_delim_ok_count_13_7 : 7; // [31:25]
- uint32_t mpdu_err_byte_count : 25, // [24:0]
- ampdu_delim_ok_count_20_14 : 7; // [31:25]
- uint32_t non_consecutive_delimiter_err : 16, // [15:0]
- retried_msdu_count : 16; // [31:16]
- uint32_t ht_control_null_field : 32; // [31:0]
- uint32_t sw_response_reference_ptr_ext : 32; // [31:0]
- uint32_t corrupted_due_to_fifo_delay : 1, // [0:0]
- frame_control_info_null_valid : 1, // [1:1]
- frame_control_field_null : 16, // [17:2]
- retried_mpdu_count : 11, // [28:18]
- reserved_23a : 3; // [31:29]
- uint32_t rxpcu_mpdu_filter_in_category : 2, // [1:0]
- sw_frame_group_id : 7, // [8:2]
- reserved_24a : 4, // [12:9]
- frame_control_info_mgmt_ctrl_valid : 1, // [13:13]
- mac_addr_ad2_valid : 1, // [14:14]
- mcast_bcast : 1, // [15:15]
- frame_control_field_mgmt_ctrl : 16; // [31:16]
- uint32_t user_ppdu_len : 24, // [23:0]
- reserved_25a : 8; // [31:24]
- uint32_t mac_addr_ad2_31_0 : 32; // [31:0]
- uint32_t mac_addr_ad2_47_32 : 16, // [15:0]
- amsdu_msdu_count : 16; // [31:16]
- uint32_t non_amsdu_msdu_count : 16, // [15:0]
- ucast_msdu_count : 16; // [31:16]
- uint32_t bcast_msdu_count : 16, // [15:0]
- mcast_bcast_msdu_count : 16; // [31:16]
- #else
- struct rx_rxpcu_classification_overview rxpcu_classification_details;
- uint32_t reserved_1a : 11, // [31:21]
- expected_response_ack_or_ba : 1, // [20:20]
- nss : 3, // [19:17]
- mcs : 4, // [16:13]
- sta_full_aid : 13; // [12:0]
- uint32_t fw2rxdma_pmac1_buf_source_used : 1, // [31:31]
- sw2rxdma_exception_buf_source_used : 1, // [30:30]
- sw2rxdma1_buf_source_used : 1, // [29:29]
- fw2rxdma_pmac0_buf_source_used : 1, // [28:28]
- sw2rxdma0_buf_source_used : 1, // [27:27]
- mpdu_cnt_fcs_err : 11, // [26:16]
- sw_peer_id : 16; // [15:0]
- uint32_t reserved_3b : 5, // [31:27]
- rxdma2reo_remote1_ring_used : 1, // [26:26]
- rxdma2reo_remote0_ring_used : 1, // [25:25]
- ht_control_field_pkt_type : 4, // [24:21]
- rxdma_release_ring_used : 1, // [20:20]
- rxdma2sw_ring_used : 1, // [19:19]
- rxdma2fw_pmac0_ring_used : 1, // [18:18]
- rxdma2reo_ring_used : 1, // [17:17]
- rxdma2fw_pmac1_ring_used : 1, // [16:16]
- ht_control_info_null_valid : 1, // [15:15]
- data_sequence_control_info_valid : 1, // [14:14]
- ht_control_info_valid : 1, // [13:13]
- qos_control_info_valid : 1, // [12:12]
- frame_control_info_valid : 1, // [11:11]
- mpdu_cnt_fcs_ok : 11; // [10:0]
- uint32_t frame_control_field : 16, // [31:16]
- ast_index : 16; // [15:0]
- uint32_t qos_control_field : 16, // [31:16]
- first_data_seq_ctrl : 16; // [15:0]
- uint32_t ht_control_field : 32; // [31:0]
- uint32_t fcs_ok_bitmap_31_0 : 32; // [31:0]
- uint32_t fcs_ok_bitmap_63_32 : 32; // [31:0]
- uint32_t tcp_msdu_count : 16, // [31:16]
- udp_msdu_count : 16; // [15:0]
- uint32_t tcp_ack_msdu_count : 16, // [31:16]
- other_msdu_count : 16; // [15:0]
- uint32_t sw_response_reference_ptr : 32; // [31:0]
- uint32_t received_qos_data_tid_eosp_bitmap : 16, // [31:16]
- received_qos_data_tid_bitmap : 16; // [15:0]
- uint32_t qosctrl_15_8_tid3 : 8, // [31:24]
- qosctrl_15_8_tid2 : 8, // [23:16]
- qosctrl_15_8_tid1 : 8, // [15:8]
- qosctrl_15_8_tid0 : 8; // [7:0]
- uint32_t qosctrl_15_8_tid7 : 8, // [31:24]
- qosctrl_15_8_tid6 : 8, // [23:16]
- qosctrl_15_8_tid5 : 8, // [15:8]
- qosctrl_15_8_tid4 : 8; // [7:0]
- uint32_t qosctrl_15_8_tid11 : 8, // [31:24]
- qosctrl_15_8_tid10 : 8, // [23:16]
- qosctrl_15_8_tid9 : 8, // [15:8]
- qosctrl_15_8_tid8 : 8; // [7:0]
- uint32_t qosctrl_15_8_tid15 : 8, // [31:24]
- qosctrl_15_8_tid14 : 8, // [23:16]
- qosctrl_15_8_tid13 : 8, // [15:8]
- qosctrl_15_8_tid12 : 8; // [7:0]
- uint32_t ampdu_delim_ok_count_6_0 : 7, // [31:25]
- mpdu_ok_byte_count : 25; // [24:0]
- uint32_t ampdu_delim_ok_count_13_7 : 7, // [31:25]
- ampdu_delim_err_count : 25; // [24:0]
- uint32_t ampdu_delim_ok_count_20_14 : 7, // [31:25]
- mpdu_err_byte_count : 25; // [24:0]
- uint32_t retried_msdu_count : 16, // [31:16]
- non_consecutive_delimiter_err : 16; // [15:0]
- uint32_t ht_control_null_field : 32; // [31:0]
- uint32_t sw_response_reference_ptr_ext : 32; // [31:0]
- uint32_t reserved_23a : 3, // [31:29]
- retried_mpdu_count : 11, // [28:18]
- frame_control_field_null : 16, // [17:2]
- frame_control_info_null_valid : 1, // [1:1]
- corrupted_due_to_fifo_delay : 1; // [0:0]
- uint32_t frame_control_field_mgmt_ctrl : 16, // [31:16]
- mcast_bcast : 1, // [15:15]
- mac_addr_ad2_valid : 1, // [14:14]
- frame_control_info_mgmt_ctrl_valid : 1, // [13:13]
- reserved_24a : 4, // [12:9]
- sw_frame_group_id : 7, // [8:2]
- rxpcu_mpdu_filter_in_category : 2; // [1:0]
- uint32_t reserved_25a : 8, // [31:24]
- user_ppdu_len : 24; // [23:0]
- uint32_t mac_addr_ad2_31_0 : 32; // [31:0]
- uint32_t amsdu_msdu_count : 16, // [31:16]
- mac_addr_ad2_47_32 : 16; // [15:0]
- uint32_t ucast_msdu_count : 16, // [31:16]
- non_amsdu_msdu_count : 16; // [15:0]
- uint32_t mcast_bcast_msdu_count : 16, // [31:16]
- bcast_msdu_count : 16; // [15:0]
- #endif
- };
- /* Description RXPCU_CLASSIFICATION_DETAILS
- Details related to what RXPCU classification types of MPDUs
- have been received
- */
- /* Description FILTER_PASS_MPDUS
- When set, at least one Filter Pass MPDU has been received.
- FCS might or might not have been passing.
-
- For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
- this field is the "OR of all the users.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_LSB 0
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MSB 0
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MASK 0x0000000000000001
- /* Description FILTER_PASS_MPDUS_FCS_OK
- When set, at least one Filter Pass MPDU has been received
- that has a correct FCS.
-
- For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
- this field is the "OR of all the users.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_LSB 1
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MSB 1
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MASK 0x0000000000000002
- /* Description MONITOR_DIRECT_MPDUS
- When set, at least one Monitor Direct MPDU has been received.
- FCS might or might not have been passing
-
- For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
- this field is the "OR of all the users.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_LSB 2
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MSB 2
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MASK 0x0000000000000004
- /* Description MONITOR_DIRECT_MPDUS_FCS_OK
- When set, at least one Monitor Direct MPDU has been received
- that has a correct FCS.
-
- For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
- this field is the "OR of all the users.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MSB 3
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x0000000000000008
- /* Description MONITOR_OTHER_MPDUS
- When set, at least one Monitor Direct MPDU has been received.
- FCS might or might not have been passing.
-
- For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
- this field is the "OR of all the users.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_LSB 4
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MSB 4
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MASK 0x0000000000000010
- /* Description MONITOR_OTHER_MPDUS_FCS_OK
- When set, at least one Monitor Direct MPDU has been received
- that has a correct FCS.
-
- For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
- this field is the "OR of all the users.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MSB 5
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x0000000000000020
- /* Description PHYRX_ABORT_RECEIVED
- When set, PPDU reception was aborted by the PHY
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_LSB 6
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MSB 6
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MASK 0x0000000000000040
- /* Description FILTER_PASS_MONITOR_OVRD_MPDUS
- When set, at least one 'Filter Pass Monitor Override' MPDU
- has been received. FCS might or might not have been passing.
-
-
- For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
- this field is the "OR of all the users.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_LSB 7
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_MSB 7
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_MASK 0x0000000000000080
- /* Description FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK
- When set, at least one 'Filter Pass Monitor Override' MPDU
- has been received that has a correct FCS.
-
- For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
- this field is the "OR of all the users.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_LSB 8
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MSB 8
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MASK 0x0000000000000100
- /* Description RESERVED_0
- <legal 0>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_LSB 9
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MSB 15
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MASK 0x000000000000fe00
- /* Description PHY_PPDU_ID
- A ppdu counter value that PHY increments for every PPDU
- received. The counter value wraps around
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_LSB 16
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MSB 31
- #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MASK 0x00000000ffff0000
- /* Description STA_FULL_AID
- Consumer: FW
- Producer: RXPCU
-
- The full AID of this station.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_STA_FULL_AID_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_STA_FULL_AID_LSB 32
- #define RX_PPDU_END_USER_STATS_STA_FULL_AID_MSB 44
- #define RX_PPDU_END_USER_STATS_STA_FULL_AID_MASK 0x00001fff00000000
- /* Description MCS
- MCS of the received frame
-
- For details, refer to MCS_TYPE description
- Note: This is "rate" in case of 11a/11b
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MCS_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_MCS_LSB 45
- #define RX_PPDU_END_USER_STATS_MCS_MSB 48
- #define RX_PPDU_END_USER_STATS_MCS_MASK 0x0001e00000000000
- /* Description NSS
- Number of spatial streams.
-
- NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
-
- <enum 0 1_spatial_stream>Single spatial stream
- <enum 1 2_spatial_streams>2 spatial streams
- <enum 2 3_spatial_streams>3 spatial streams
- <enum 3 4_spatial_streams>4 spatial streams
- <enum 4 5_spatial_streams>5 spatial streams
- <enum 5 6_spatial_streams>6 spatial streams
- <enum 6 7_spatial_streams>7 spatial streams
- <enum 7 8_spatial_streams>8 spatial streams
- */
- #define RX_PPDU_END_USER_STATS_NSS_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_NSS_LSB 49
- #define RX_PPDU_END_USER_STATS_NSS_MSB 51
- #define RX_PPDU_END_USER_STATS_NSS_MASK 0x000e000000000000
- /* Description EXPECTED_RESPONSE_ACK_OR_BA
- When set, it indicates an Ack or BA matching 'EXPECTED_RESPONSE'
- from TXPCU
- */
- #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_LSB 52
- #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_MSB 52
- #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_MASK 0x0010000000000000
- /* Description RESERVED_1A
- <legal 0>
- */
- #define RX_PPDU_END_USER_STATS_RESERVED_1A_OFFSET 0x0000000000000000
- #define RX_PPDU_END_USER_STATS_RESERVED_1A_LSB 53
- #define RX_PPDU_END_USER_STATS_RESERVED_1A_MSB 63
- #define RX_PPDU_END_USER_STATS_RESERVED_1A_MASK 0xffe0000000000000
- /* Description SW_PEER_ID
- This field indicates a unique peer identifier, set from
- the field 'sw_peer_id' in the AST entry corresponding to
- this MPDU. It is provided by RXPCU.
- A value of 0xFFFF indicates no AST entry was found or no
- AST search was performed.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_SW_PEER_ID_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_SW_PEER_ID_LSB 0
- #define RX_PPDU_END_USER_STATS_SW_PEER_ID_MSB 15
- #define RX_PPDU_END_USER_STATS_SW_PEER_ID_MASK 0x000000000000ffff
- /* Description MPDU_CNT_FCS_ERR
- The number of MPDUs received from this STA in this PPDU
- with FCS errors
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_LSB 16
- #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_MSB 26
- #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_MASK 0x0000000007ff0000
- /* Description SW2RXDMA0_BUF_SOURCE_USED
- Field filled in by RXDMA
-
- When set, RXDMA has used the sw2rxdma0 buffer ring as source
- for at least one of the frames in this PPDU.
- */
- #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_LSB 27
- #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_MSB 27
- #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_MASK 0x0000000008000000
- /* Description FW2RXDMA_PMAC0_BUF_SOURCE_USED
- Field filled in by RXDMA
-
- When set, RXDMA has used the fw2rxdma buffer ring for PMAC0
- as source for at least one of the frames in this PPDU.
- */
- #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_LSB 28
- #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_MSB 28
- #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_MASK 0x0000000010000000
- /* Description SW2RXDMA1_BUF_SOURCE_USED
- Field filled in by RXDMA
-
- When set, RXDMA has used the sw2rxdma1 buffer ring as source
- for at least one of the frames in this PPDU.
- */
- #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_LSB 29
- #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_MSB 29
- #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_MASK 0x0000000020000000
- /* Description SW2RXDMA_EXCEPTION_BUF_SOURCE_USED
- Field filled in by RXDMA
-
- When set, RXDMA has used the sw2rxdma_exception buffer ring
- as source for at least one of the frames in this PPDU.
- */
- #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_LSB 30
- #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_MSB 30
- #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_MASK 0x0000000040000000
- /* Description FW2RXDMA_PMAC1_BUF_SOURCE_USED
- Field filled in by RXDMA
-
- When set, RXDMA has used the fw2rxdma buffer ring for PMAC1
- as source for at least one of the frames in this PPDU.
- */
- #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_LSB 31
- #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_MSB 31
- #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_MASK 0x0000000080000000
- /* Description MPDU_CNT_FCS_OK
- The number of MPDUs received from this STA in this PPDU
- with correct FCS
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_LSB 32
- #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_MSB 42
- #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_MASK 0x000007ff00000000
- /* Description FRAME_CONTROL_INFO_VALID
- When set, the frame_control_info field contains valid information
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_LSB 43
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_MSB 43
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_MASK 0x0000080000000000
- /* Description QOS_CONTROL_INFO_VALID
- When set, the QoS_control_info field contains valid information
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_LSB 44
- #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_MSB 44
- #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_MASK 0x0000100000000000
- /* Description HT_CONTROL_INFO_VALID
- When set, the HT_control_field contains valid information
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_LSB 45
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_MSB 45
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_MASK 0x0000200000000000
- /* Description DATA_SEQUENCE_CONTROL_INFO_VALID
- When set, the First_data_seq_ctrl field contains valid information
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_LSB 46
- #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_MSB 46
- #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_MASK 0x0000400000000000
- /* Description HT_CONTROL_INFO_NULL_VALID
- When set, the HT_control_NULL_field contains valid information
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_LSB 47
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_MSB 47
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_MASK 0x0000800000000000
- /* Description RXDMA2FW_PMAC1_RING_USED
- Field filled in by RXDMA
-
- Set when at least one frame during this PPDU got pushed
- to this ring by RXDMA
- */
- #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_LSB 48
- #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_MSB 48
- #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_MASK 0x0001000000000000
- /* Description RXDMA2REO_RING_USED
- Field filled in by RXDMA
-
- Set when at least one frame during this PPDU got pushed
- to this ring by RXDMA
- */
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_LSB 49
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_MSB 49
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_MASK 0x0002000000000000
- /* Description RXDMA2FW_PMAC0_RING_USED
- Field filled in by RXDMA
-
- Set when at least one frame during this PPDU got pushed
- to this ring by RXDMA
- */
- #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_LSB 50
- #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_MSB 50
- #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_MASK 0x0004000000000000
- /* Description RXDMA2SW_RING_USED
- Field filled in by RXDMA
-
- Set when at least one frame during this PPDU got pushed
- to this ring by RXDMA
- */
- #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_LSB 51
- #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_MSB 51
- #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_MASK 0x0008000000000000
- /* Description RXDMA_RELEASE_RING_USED
- Field filled in by RXDMA
-
- Set when at least one frame during this PPDU got pushed
- to this ring by RXDMA
- */
- #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_LSB 52
- #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_MSB 52
- #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_MASK 0x0010000000000000
- /* Description HT_CONTROL_FIELD_PKT_TYPE
- Field only valid when HT_control_info_valid or HT_control_info_NULL_valid
- is set.
-
- Indicates what the PHY receive type was for receiving this
- frame. Can help determine if the HT_CONTROL field shall
- be interpreted as HT/VHT or HE.
-
- NOTE: later on in the 11ax IEEE spec a bit within the HT
- control field was introduced that explicitly indicated
- how to interpret the HT control field.... As HT, VHT, or
- HE.
-
- <enum 0 dot11a>802.11a PPDU type
- <enum 1 dot11b>802.11b PPDU type
- <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
- <enum 3 dot11ac>802.11ac PPDU type
- <enum 4 dot11ax>802.11ax PPDU type
- <enum 5 dot11ba>802.11ba (WUR) PPDU type
- <enum 6 dot11be>802.11be PPDU type
- <enum 7 dot11az>802.11az (ranging) PPDU type
- <enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
- & aborted)
- */
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_LSB 53
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_MSB 56
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_MASK 0x01e0000000000000
- /* Description RXDMA2REO_REMOTE0_RING_USED
- Field filled in by RXDMA
-
- Set when at least one frame during this PPDU got pushed
- to this ring by RXDMA
- */
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_LSB 57
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_MSB 57
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_MASK 0x0200000000000000
- /* Description RXDMA2REO_REMOTE1_RING_USED
- Field filled in by RXDMA
-
- Set when at least one frame during this PPDU got pushed
- to this ring by RXDMA
- */
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_LSB 58
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_MSB 58
- #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_MASK 0x0400000000000000
- /* Description RESERVED_3B
- <legal 0>
- */
- #define RX_PPDU_END_USER_STATS_RESERVED_3B_OFFSET 0x0000000000000008
- #define RX_PPDU_END_USER_STATS_RESERVED_3B_LSB 59
- #define RX_PPDU_END_USER_STATS_RESERVED_3B_MSB 63
- #define RX_PPDU_END_USER_STATS_RESERVED_3B_MASK 0xf800000000000000
- /* Description AST_INDEX
- This field indicates the index of the AST entry corresponding
- to this MPDU. It is provided by the GSE module instantiated
- in RXPCU.
- A value of 0xFFFF indicates an invalid AST index, meaning
- that No AST entry was found or NO AST search was performed
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_AST_INDEX_OFFSET 0x0000000000000010
- #define RX_PPDU_END_USER_STATS_AST_INDEX_LSB 0
- #define RX_PPDU_END_USER_STATS_AST_INDEX_MSB 15
- #define RX_PPDU_END_USER_STATS_AST_INDEX_MASK 0x000000000000ffff
- /* Description FRAME_CONTROL_FIELD
- Field only valid when Frame_control_info_valid is set.
-
- Last successfully received Frame_control field of data frame
- (excluding Data NULL/ QoS Null) for this user
- Mainly used to track the PM state of the transmitted device
-
-
- NOTE: only data frame info is needed, as control and management
- frames are already routed to the FW.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_OFFSET 0x0000000000000010
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_LSB 16
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MSB 31
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MASK 0x00000000ffff0000
- /* Description FIRST_DATA_SEQ_CTRL
- Field only valid when Data_sequence_control_info_valid is
- set.
-
- Sequence control field of the first data frame (excluding
- Data NULL or QoS Data null) received for this user with
- correct FCS
-
- NOTE: only data frame info is needed, as control and management
- frames are already routed to the FW.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_OFFSET 0x0000000000000010
- #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_LSB 32
- #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_MSB 47
- #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_MASK 0x0000ffff00000000
- /* Description QOS_CONTROL_FIELD
- Field only valid when QoS_control_info_valid is set.
-
- Last successfully received QoS_control field of data frame
- (excluding Data NULL/ QoS Null) for this user
-
- Note that in case of multi TID, this field can only reflect
- the last properly received MPDU, and thus can not indicate
- all potentially different TIDs that had been received earlier.
-
-
- There are however per TID fields, that will contain among
- other things all buffer status info: See
- QoSCtrl_15_8_tid???
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_OFFSET 0x0000000000000010
- #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_LSB 48
- #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_MSB 63
- #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_MASK 0xffff000000000000
- /* Description HT_CONTROL_FIELD
- Field only valid when HT_control_info_valid is set.
-
- Last successfully received HT_CONTROL/VHT_CONTROL/HE_CONTROL
- field of data frames, excluding QoS Null frames for this
- user.
-
- NOTE: HT control fields from QoS Null frames are captured
- in field HT_control_NULL_field
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_OFFSET 0x0000000000000018
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_LSB 0
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_MSB 31
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_MASK 0x00000000ffffffff
- /* Description FCS_OK_BITMAP_31_0
- Bitmap indicates in order of received MPDUs, which MPDUs
- had an passing FCS or had an error.
- 1: FCS OK
- 0: FCS error
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_OFFSET 0x0000000000000018
- #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_LSB 32
- #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_MSB 63
- #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_MASK 0xffffffff00000000
- /* Description FCS_OK_BITMAP_63_32
- Bitmap indicates in order of received MPDUs, which MPDUs
- had an passing FCS or had an error.
- 1: FCS OK
- 0: FCS error
-
- NOTE: for users 0, 1, 2 and 3, additional bitmap info (up
- to 256 bitmap window) is provided in RX_PPDU_END_USER_STATS_EXT
- TLV
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_OFFSET 0x0000000000000020
- #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_LSB 0
- #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_MSB 31
- #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_MASK 0x00000000ffffffff
- /* Description UDP_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of MPDUs without FCS error,
- that contain UDP frames.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_OFFSET 0x0000000000000020
- #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_LSB 32
- #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_MSB 47
- #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_MASK 0x0000ffff00000000
- /* Description TCP_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of MPDUs without FCS error,
- that contain TCP frames.
-
- (Note: This does NOT include TCP-ACK)
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_OFFSET 0x0000000000000020
- #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_LSB 48
- #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_MSB 63
- #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_MASK 0xffff000000000000
- /* Description OTHER_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of MPDUs without FCS error,
- that contain neither UDP or TCP frames.
-
- Includes Management and control frames.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_OFFSET 0x0000000000000028
- #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_LSB 0
- #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_MSB 15
- #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_MASK 0x000000000000ffff
- /* Description TCP_ACK_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of MPDUs without FCS error,
- that contain TCP ack frames.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_OFFSET 0x0000000000000028
- #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_LSB 16
- #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_MSB 31
- #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_MASK 0x00000000ffff0000
- /* Description SW_RESPONSE_REFERENCE_PTR
- Pointer that SW uses to refer back to an expected response
- reception. Used for Rate adaptation purposes.
- When a reception occurs that is not tied to an expected
- response, this field is set to 0x0.
-
- Note: further on in this TLV there is also the field: Sw_response_reference_ptr_ext.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_OFFSET 0x0000000000000028
- #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_LSB 32
- #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_MSB 63
- #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_MASK 0xffffffff00000000
- /* Description RECEIVED_QOS_DATA_TID_BITMAP
- Whenever a frame is received that contains a QoS control
- field (that includes QoS Data and/or QoS Null), the bit
- in this field that corresponds to the received TID shall
- be set.
- ...Bitmap[0] = TID0
- ...Bitmap[1] = TID1
- Etc.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_OFFSET 0x0000000000000030
- #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_LSB 0
- #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_MSB 15
- #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_MASK 0x000000000000ffff
- /* Description RECEIVED_QOS_DATA_TID_EOSP_BITMAP
- Field initialized to 0
- For every QoS Data frame that is correctly received, the
- EOSP bit of that frame is copied over into the corresponding
- TID related field.
- Note that this implies that the bits here represent the
- EOSP bit status for each TID of the last MPDU received for
- that TID.
-
- received TID shall be set.
- ...eosp_bitmap[0] = eosp of TID0
- ...eosp_bitmap[1] = eosp of TID1
- Etc.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_OFFSET 0x0000000000000030
- #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_LSB 16
- #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MSB 31
- #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MASK 0x00000000ffff0000
- /* Description QOSCTRL_15_8_TID0
- Field only valid when Received_qos_data_tid_bitmap[0] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 0
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_OFFSET 0x0000000000000030
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_LSB 32
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_MSB 39
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_MASK 0x000000ff00000000
- /* Description QOSCTRL_15_8_TID1
- Field only valid when Received_qos_data_tid_bitmap[1] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 1
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_OFFSET 0x0000000000000030
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_LSB 40
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_MSB 47
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_MASK 0x0000ff0000000000
- /* Description QOSCTRL_15_8_TID2
- Field only valid when Received_qos_data_tid_bitmap[2] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 2
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_OFFSET 0x0000000000000030
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_LSB 48
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_MSB 55
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_MASK 0x00ff000000000000
- /* Description QOSCTRL_15_8_TID3
- Field only valid when Received_qos_data_tid_bitmap[3] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 3
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_OFFSET 0x0000000000000030
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_LSB 56
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_MSB 63
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_MASK 0xff00000000000000
- /* Description QOSCTRL_15_8_TID4
- Field only valid when Received_qos_data_tid_bitmap[4] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 4
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_OFFSET 0x0000000000000038
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_LSB 0
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_MSB 7
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_MASK 0x00000000000000ff
- /* Description QOSCTRL_15_8_TID5
- Field only valid when Received_qos_data_tid_bitmap[5] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 5
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_OFFSET 0x0000000000000038
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_LSB 8
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_MSB 15
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_MASK 0x000000000000ff00
- /* Description QOSCTRL_15_8_TID6
- Field only valid when Received_qos_data_tid_bitmap[6] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 6
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_OFFSET 0x0000000000000038
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_LSB 16
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_MSB 23
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_MASK 0x0000000000ff0000
- /* Description QOSCTRL_15_8_TID7
- Field only valid when Received_qos_data_tid_bitmap[7] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 7
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_OFFSET 0x0000000000000038
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_LSB 24
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_MSB 31
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_MASK 0x00000000ff000000
- /* Description QOSCTRL_15_8_TID8
- Field only valid when Received_qos_data_tid_bitmap[8] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 8
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_OFFSET 0x0000000000000038
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_LSB 32
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_MSB 39
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_MASK 0x000000ff00000000
- /* Description QOSCTRL_15_8_TID9
- Field only valid when Received_qos_data_tid_bitmap[9] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 9
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_OFFSET 0x0000000000000038
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_LSB 40
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_MSB 47
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_MASK 0x0000ff0000000000
- /* Description QOSCTRL_15_8_TID10
- Field only valid when Received_qos_data_tid_bitmap[10] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 10
-
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_OFFSET 0x0000000000000038
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_LSB 48
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_MSB 55
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_MASK 0x00ff000000000000
- /* Description QOSCTRL_15_8_TID11
- Field only valid when Received_qos_data_tid_bitmap[11] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 11
-
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_OFFSET 0x0000000000000038
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_LSB 56
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_MSB 63
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_MASK 0xff00000000000000
- /* Description QOSCTRL_15_8_TID12
- Field only valid when Received_qos_data_tid_bitmap[12] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 12
-
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_OFFSET 0x0000000000000040
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_LSB 0
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_MSB 7
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_MASK 0x00000000000000ff
- /* Description QOSCTRL_15_8_TID13
- Field only valid when Received_qos_data_tid_bitmap[13] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 13
-
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_OFFSET 0x0000000000000040
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_LSB 8
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_MSB 15
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_MASK 0x000000000000ff00
- /* Description QOSCTRL_15_8_TID14
- Field only valid when Received_qos_data_tid_bitmap[14] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 14
-
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_OFFSET 0x0000000000000040
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_LSB 16
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_MSB 23
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_MASK 0x0000000000ff0000
- /* Description QOSCTRL_15_8_TID15
- Field only valid when Received_qos_data_tid_bitmap[15] is
- set
-
- QoS control field bits 15-8 of the last properly received
- MPDU with a QoS control field embedded, with TID == 15
-
- */
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_OFFSET 0x0000000000000040
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_LSB 24
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_MSB 31
- #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_MASK 0x00000000ff000000
- /* Description MPDU_OK_BYTE_COUNT
- The number of bytes received within an MPDU for this user
- with correct FCS. This includes the FCS field
-
- NOTE:
- The sum of the four fields.....
- Mpdu_ok_byte_count +
- mpdu_err_byte_count +
- (Ampdu_delim_ok_count x 4) + (Ampdu_delim_err_count x 4)
-
- .....is the total number of bytes that were received for
- this user from the PHY.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_OFFSET 0x0000000000000040
- #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_LSB 32
- #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_MSB 56
- #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_MASK 0x01ffffff00000000
- /* Description AMPDU_DELIM_OK_COUNT_6_0
- Number of AMPDU delimiter received with correct structure
-
- LSB 7 bits from this counter
-
- Note that this is a delimiter count and not byte count.
- To get to the number of bytes occupied by these delimiters,
- multiply this number by 4
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_OFFSET 0x0000000000000040
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_LSB 57
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_MSB 63
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_MASK 0xfe00000000000000
- /* Description AMPDU_DELIM_ERR_COUNT
- The number of MPDU delimiter errors counted for this user.
-
-
- Note that this is a delimiter count and not byte count.
- To get to the number of bytes occupied by these delimiters,
- multiply this number by 4
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_OFFSET 0x0000000000000048
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_LSB 0
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_MSB 24
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_MASK 0x0000000001ffffff
- /* Description AMPDU_DELIM_OK_COUNT_13_7
- Number of AMPDU delimiters received with correct structure
-
- Bits 13-7 from this counter
-
- Note that this is a delimiter count and not byte count.
- To get to the number of bytes occupied by these delimiters,
- multiply this number by 4
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_OFFSET 0x0000000000000048
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_LSB 25
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_MSB 31
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_MASK 0x00000000fe000000
- /* Description MPDU_ERR_BYTE_COUNT
- The number of bytes belonging to MPDUs with an FCS error.
- This includes the FCS field.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_OFFSET 0x0000000000000048
- #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_LSB 32
- #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_MSB 56
- #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_MASK 0x01ffffff00000000
- /* Description AMPDU_DELIM_OK_COUNT_20_14
- Number of AMPDU delimiters received with correct structure
-
- Bits 20-14 from this counter
-
- Note that this is a delimiter count and not byte count.
- To get to the number of bytes occupied by these delimiters,
- multiply this number by 4
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_OFFSET 0x0000000000000048
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_LSB 57
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_MSB 63
- #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_MASK 0xfe00000000000000
- /* Description NON_CONSECUTIVE_DELIMITER_ERR
- The number of times an MPDU delimiter error is detected
- that is not immediately preceded by another MPDU delimiter
- also with FCS error.
-
- The counter saturates at 0xFFFF
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_OFFSET 0x0000000000000050
- #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_LSB 0
- #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_MSB 15
- #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_MASK 0x000000000000ffff
- /* Description RETRIED_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of MPDUs without FCS error,
- that have the retry bit set.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_OFFSET 0x0000000000000050
- #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_LSB 16
- #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_MSB 31
- #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_MASK 0x00000000ffff0000
- /* Description HT_CONTROL_NULL_FIELD
- Field only valid when HT_control_info_NULL_valid is set.
-
-
- Last successfully received HT_CONTROL/VHT_CONTROL/HE_CONTROL
- field from QoS Null frame for this user.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_OFFSET 0x0000000000000050
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_LSB 32
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_MSB 63
- #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_MASK 0xffffffff00000000
- /* Description SW_RESPONSE_REFERENCE_PTR_EXT
- Extended Pointer info that SW uses to refer back to an expected
- response transmission. Used for Rate adaptation purposes.
-
- When a reception occurs that is not tied to an expected
- response, this field is set to 0x0.
-
- Note: earlier on in this TLV there is also the field: Sw_response_reference_ptr.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_OFFSET 0x0000000000000058
- #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_LSB 0
- #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_MSB 31
- #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_MASK 0x00000000ffffffff
- /* Description CORRUPTED_DUE_TO_FIFO_DELAY
- Set if Rx PCU avoided a hang due to SFM delays by writing
- a corrupted 'RX_PPDU_END_USER_STATS*' and/or 'RX_PPDU_END.'
-
- */
- #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_OFFSET 0x0000000000000058
- #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_LSB 32
- #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_MSB 32
- #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_MASK 0x0000000100000000
- /* Description FRAME_CONTROL_INFO_NULL_VALID
- When set, Frame_control_field_null contains valid information
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_OFFSET 0x0000000000000058
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_LSB 33
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_MSB 33
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_MASK 0x0000000200000000
- /* Description FRAME_CONTROL_FIELD_NULL
- Field only valid when Frame_control_info_null_valid is set.
-
-
- Last successfully received Frame_control field of Data Null/QoS
- Null for this user, mainly used to track the PM state of
- the transmitted device
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_OFFSET 0x0000000000000058
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_LSB 34
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_MSB 49
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_MASK 0x0003fffc00000000
- /* Description RETRIED_MPDU_COUNT
- Field filled in by RXPCU
-
- The number of MPDUs without FCS error, that have the retry
- bit set.
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_OFFSET 0x0000000000000058
- #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_LSB 50
- #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_MSB 60
- #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_MASK 0x1ffc000000000000
- /* Description RESERVED_23A
- <legal 0>
- */
- #define RX_PPDU_END_USER_STATS_RESERVED_23A_OFFSET 0x0000000000000058
- #define RX_PPDU_END_USER_STATS_RESERVED_23A_LSB 61
- #define RX_PPDU_END_USER_STATS_RESERVED_23A_MSB 63
- #define RX_PPDU_END_USER_STATS_RESERVED_23A_MASK 0xe000000000000000
- /* Description RXPCU_MPDU_FILTER_IN_CATEGORY
- Field indicates what the reason was that the last successfully
- received MPDU was allowed to come into the receive path
- by RXPCU.
- <enum 0 rxpcu_filter_pass> The last MPDU passed the normal
- frame filter programming of rxpcu
- <enum 1 rxpcu_monitor_client> The last MPDU did NOT pass
- the regular frame filter and would have been dropped, were
- it not for the frame fitting into the 'monitor_client'
- category.
- <enum 2 rxpcu_monitor_other> The last MPDU did NOT pass
- the regular frame filter and also did not pass the rxpcu_monitor_client
- filter. It would have been dropped accept that it did pass
- the 'monitor_other' category.
- <enum 3 rxpcu_filter_pass_monitor_ovrd> The last MPDU passed
- the normal frame filter programming of RXPCU but additionally
- fit into the 'monitor_override_client' category.
-
- <legal 0-3>
- */
- #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
- #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB 1
- #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x0000000000000003
- /* Description SW_FRAME_GROUP_ID
- SW processes frames based on certain classifications. This
- field indicates to what sw classification the last successfully
- received MPDU is mapped.
- The classification is given in priority order
-
- <enum 0 sw_frame_group_NDP_frame>
-
- <enum 1 sw_frame_group_Multicast_data>
- <enum 2 sw_frame_group_Unicast_data>
- <enum 3 sw_frame_group_Null_data > This includes mpdus of
- type Data Null.
- <enum 38 sw_frame_group_QoS_Null_data> This includes QoS
- Null frames except in UL MU or TB PPDUs.
- <enum 39 sw_frame_group_QoS_Null_data_TB> This includes
- QoS Null frames in UL MU or TB PPDUs.
-
- <enum 4 sw_frame_group_mgmt_0000 >
- <enum 5 sw_frame_group_mgmt_0001 >
- <enum 6 sw_frame_group_mgmt_0010 >
- <enum 7 sw_frame_group_mgmt_0011 >
- <enum 8 sw_frame_group_mgmt_0100 >
- <enum 9 sw_frame_group_mgmt_0101 >
- <enum 10 sw_frame_group_mgmt_0110 >
- <enum 11 sw_frame_group_mgmt_0111 >
- <enum 12 sw_frame_group_mgmt_1000 >
- <enum 13 sw_frame_group_mgmt_1001 >
- <enum 14 sw_frame_group_mgmt_1010 >
- <enum 15 sw_frame_group_mgmt_1011 >
- <enum 16 sw_frame_group_mgmt_1100 >
- <enum 17 sw_frame_group_mgmt_1101 >
- <enum 18 sw_frame_group_mgmt_1110 >
- <enum 19 sw_frame_group_mgmt_1111 >
-
- <enum 20 sw_frame_group_ctrl_0000 >
- <enum 21 sw_frame_group_ctrl_0001 >
- <enum 22 sw_frame_group_ctrl_0010 >
- <enum 23 sw_frame_group_ctrl_0011 >
- <enum 24 sw_frame_group_ctrl_0100 >
- <enum 25 sw_frame_group_ctrl_0101 >
- <enum 26 sw_frame_group_ctrl_0110 >
- <enum 27 sw_frame_group_ctrl_0111 >
- <enum 28 sw_frame_group_ctrl_1000 >
- <enum 29 sw_frame_group_ctrl_1001 >
- <enum 30 sw_frame_group_ctrl_1010 >
- <enum 31 sw_frame_group_ctrl_1011 >
- <enum 32 sw_frame_group_ctrl_1100 >
- <enum 33 sw_frame_group_ctrl_1101 >
- <enum 34 sw_frame_group_ctrl_1110 >
- <enum 35 sw_frame_group_ctrl_1111 >
-
- <enum 36 sw_frame_group_unsupported> This covers type 3
- and protocol version != 0
-
- <enum 37 sw_frame_group_phy_error> PHY reported an error
-
-
- <legal 0-39>
- */
- #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_LSB 2
- #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_MSB 8
- #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_MASK 0x00000000000001fc
- /* Description RESERVED_24A
- <legal 0>
- */
- #define RX_PPDU_END_USER_STATS_RESERVED_24A_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_RESERVED_24A_LSB 9
- #define RX_PPDU_END_USER_STATS_RESERVED_24A_MSB 12
- #define RX_PPDU_END_USER_STATS_RESERVED_24A_MASK 0x0000000000001e00
- /* Description FRAME_CONTROL_INFO_MGMT_CTRL_VALID
- When set, Frame_control_field_mgmt_ctrl contains valid information.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_LSB 13
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_MSB 13
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_MASK 0x0000000000002000
- /* Description MAC_ADDR_AD2_VALID
- When set, the fields mac_addr_ad2_... contain valid information.
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_LSB 14
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_MSB 14
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_MASK 0x0000000000004000
- /* Description MCAST_BCAST
- Multicast / broadcast indicator
-
- Only set when the MAC address 1 bit 0 is set indicating
- mcast/bcast and the BSSID matches one of the BSSID registers,
- for the last successfully received MPDU
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MCAST_BCAST_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_MCAST_BCAST_LSB 15
- #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSB 15
- #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MASK 0x0000000000008000
- /* Description FRAME_CONTROL_FIELD_MGMT_CTRL
- Field only valid when Frame_control_info_mgmt_ctrl_valid
- is set
-
- Last successfully received 'Frame control' field of control
- or management frames for this user, mainly used in Rx monitor
- mode
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_LSB 16
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_MSB 31
- #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_MASK 0x00000000ffff0000
- /* Description USER_PPDU_LEN
- The sum of the mpdu_length fields of all the 'RX_MPDU_START'
- TLVs generated for this user for this PPDU
- */
- #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_LSB 32
- #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_MSB 55
- #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_MASK 0x00ffffff00000000
- /* Description RESERVED_25A
- <legal 0>
- */
- #define RX_PPDU_END_USER_STATS_RESERVED_25A_OFFSET 0x0000000000000060
- #define RX_PPDU_END_USER_STATS_RESERVED_25A_LSB 56
- #define RX_PPDU_END_USER_STATS_RESERVED_25A_MSB 63
- #define RX_PPDU_END_USER_STATS_RESERVED_25A_MASK 0xff00000000000000
- /* Description MAC_ADDR_AD2_31_0
- Field only valid when mac_addr_ad2_valid is set
-
- The least significant 4 bytes of the last successfully received
- frame's MAC Address AD2
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_OFFSET 0x0000000000000068
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_LSB 0
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_MSB 31
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_MASK 0x00000000ffffffff
- /* Description MAC_ADDR_AD2_47_32
- Field only valid when mac_addr_ad2_valid is set
-
- The 2 most significant bytes of the last successfully received
- frame's MAC Address AD2
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_OFFSET 0x0000000000000068
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_LSB 32
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_MSB 47
- #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_MASK 0x0000ffff00000000
- /* Description AMSDU_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of A-MSDUs that are part
- of MPDUs without FCS error
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_OFFSET 0x0000000000000068
- #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_LSB 48
- #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_MSB 63
- #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_MASK 0xffff000000000000
- /* Description NON_AMSDU_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are not part of A-MSDUs that are
- part of MPDUs without FCS error
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_OFFSET 0x0000000000000070
- #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_LSB 0
- #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_MSB 15
- #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_MASK 0x000000000000ffff
- /* Description UCAST_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of MPDUs without FCS error,
- that are directed to a unicast destination address
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_OFFSET 0x0000000000000070
- #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_LSB 16
- #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_MSB 31
- #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_MASK 0x00000000ffff0000
- /* Description BCAST_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of MPDUs without FCS error,
- whose destination addresses are broadcast (0xFFFF_FFFF_FFFF)
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_OFFSET 0x0000000000000070
- #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_LSB 32
- #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_MSB 47
- #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_MASK 0x0000ffff00000000
- /* Description MCAST_BCAST_MSDU_COUNT
- Field filled in by RX OLE
- Set to 0 by RXPCU
-
- The number of MSDUs that are part of MPDUs without FCS error,
- whose destination addresses are either multicast or broadcast
-
- <legal all>
- */
- #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_OFFSET 0x0000000000000070
- #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_LSB 48
- #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_MSB 63
- #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_MASK 0xffff000000000000
- #endif // RX_PPDU_END_USER_STATS
|