1 /* 2 * Copyright (c) 2017 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 #include "qdf_types.h" 19 #include "htt_stats.h" 20 #include "dp_types.h" 21 #include "dp_internal.h" 22 23 #define DP_MAX_STRING_LEN 500 24 25 #define DP_HTT_HW_INTR_NAME_LEN HTT_STATS_MAX_HW_INTR_NAME_LEN 26 #define DP_HTT_HW_MODULE_NAME_LEN HTT_STATS_MAX_HW_MODULE_NAME_LEN 27 #define DP_HTT_COUNTER_NAME_LEN HTT_MAX_COUNTER_NAME 28 #define DP_HTT_LOW_WM_HIT_COUNT_LEN HTT_STATS_LOW_WM_BINS 29 #define DP_HTT_HIGH_WM_HIT_COUNT_LEN HTT_STATS_HIGH_WM_BINS 30 #define DP_HTT_TX_MCS_LEN HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 31 #define DP_HTT_TX_SU_MCS_LEN HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 32 #define DP_HTT_TX_MU_MCS_LEN HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 33 #define DP_HTT_TX_NSS_LEN HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS 34 #define DP_HTT_TX_BW_LEN HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 35 #define DP_HTT_TX_PREAM_LEN HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES 36 #define DP_HTT_TX_PDEV_GI_LEN HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 37 #define DP_HTT_TX_DCM_LEN HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS 38 #define DP_HTT_RX_MCS_LEN HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 39 #define DP_HTT_RX_NSS_LEN HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS 40 #define DP_HTT_RX_DCM_LEN HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 41 #define DP_HTT_RX_BW_LEN HTT_RX_PDEV_STATS_NUM_BW_COUNTERS 42 #define DP_HTT_RX_PREAM_LEN HTT_RX_PDEV_STATS_NUM_PREAMBLE_TYPES 43 #define DP_HTT_RSSI_CHAIN_LEN HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS 44 #define DP_HTT_RX_GI_LEN HTT_RX_PDEV_STATS_NUM_GI_COUNTERS 45 #define DP_HTT_FW_RING_MGMT_SUBTYPE_LEN HTT_STATS_SUBTYPE_MAX 46 #define DP_HTT_FW_RING_CTRL_SUBTYPE_LEN HTT_STATS_SUBTYPE_MAX 47 #define DP_HTT_FW_RING_MPDU_ERR_LEN HTT_RX_STATS_RXDMA_MAX_ERR 48 #define DP_HTT_TID_NAME_LEN MAX_HTT_TID_NAME 49 #define DP_HTT_PEER_NUM_SS HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS 50 #define DP_HTT_PDEV_TX_GI_LEN HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 51 52 /* 53 * dp_print_stats_string_tlv: display htt_stats_string_tlv 54 * @tag_buf: buffer containing the tlv htt_stats_string_tlv 55 * 56 * return:void 57 */ 58 static inline void dp_print_stats_string_tlv(uint32_t *tag_buf) 59 { 60 htt_stats_string_tlv *dp_stats_buf = 61 (htt_stats_string_tlv *)tag_buf; 62 uint8_t i; 63 uint16_t index = 0; 64 char data[DP_MAX_STRING_LEN]; 65 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 66 67 DP_TRACE_STATS(FATAL, "HTT_STATS_STRING_TLV:"); 68 for (i = 0; i < tag_len; i++) { 69 index += qdf_snprint(&data[index], 70 DP_MAX_STRING_LEN - index, 71 " %d:%d,", i, dp_stats_buf->data[i]); 72 } 73 DP_TRACE_STATS(FATAL, "data = %s\n", data); 74 } 75 76 /* 77 * dp_print_tx_pdev_stats_cmn_tlv: display htt_tx_pdev_stats_cmn_tlv 78 * @tag_buf: buffer containing the tlv htt_tx_pdev_stats_cmn_tlv 79 * 80 * return:void 81 */ 82 static inline void dp_print_tx_pdev_stats_cmn_tlv(uint32_t *tag_buf) 83 { 84 htt_tx_pdev_stats_cmn_tlv *dp_stats_buf = 85 (htt_tx_pdev_stats_cmn_tlv *)tag_buf; 86 87 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_STATS_CMN_TLV:"); 88 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 89 dp_stats_buf->mac_id__word); 90 DP_TRACE_STATS(FATAL, "hw_queued = %d", 91 dp_stats_buf->hw_queued); 92 DP_TRACE_STATS(FATAL, "hw_reaped = %d", 93 dp_stats_buf->hw_reaped); 94 DP_TRACE_STATS(FATAL, "underrun = %d", 95 dp_stats_buf->underrun); 96 DP_TRACE_STATS(FATAL, "hw_paused = %d", 97 dp_stats_buf->hw_paused); 98 DP_TRACE_STATS(FATAL, "hw_flush = %d", 99 dp_stats_buf->hw_flush); 100 DP_TRACE_STATS(FATAL, "hw_filt = %d", 101 dp_stats_buf->hw_filt); 102 DP_TRACE_STATS(FATAL, "tx_abort = %d", 103 dp_stats_buf->tx_abort); 104 DP_TRACE_STATS(FATAL, "mpdu_requeued = %d", 105 dp_stats_buf->mpdu_requed); 106 DP_TRACE_STATS(FATAL, "tx_xretry = %d", 107 dp_stats_buf->tx_xretry); 108 DP_TRACE_STATS(FATAL, "data_rc = %d", 109 dp_stats_buf->data_rc); 110 DP_TRACE_STATS(FATAL, "mpdu_dropped_xretry = %d", 111 dp_stats_buf->mpdu_dropped_xretry); 112 DP_TRACE_STATS(FATAL, "illegal_rate_phy_err = %d", 113 dp_stats_buf->illgl_rate_phy_err); 114 DP_TRACE_STATS(FATAL, "cont_xretry = %d", 115 dp_stats_buf->cont_xretry); 116 DP_TRACE_STATS(FATAL, "tx_timeout = %d", 117 dp_stats_buf->tx_timeout); 118 DP_TRACE_STATS(FATAL, "pdev_resets = %d", 119 dp_stats_buf->pdev_resets); 120 DP_TRACE_STATS(FATAL, "phy_underrun = %d", 121 dp_stats_buf->phy_underrun); 122 DP_TRACE_STATS(FATAL, "txop_ovf = %d", 123 dp_stats_buf->txop_ovf); 124 DP_TRACE_STATS(FATAL, "seq_posted = %d", 125 dp_stats_buf->seq_posted); 126 DP_TRACE_STATS(FATAL, "seq_failed_queueing = %d", 127 dp_stats_buf->seq_failed_queueing); 128 DP_TRACE_STATS(FATAL, "seq_completed = %d", 129 dp_stats_buf->seq_completed); 130 DP_TRACE_STATS(FATAL, "seq_restarted = %d", 131 dp_stats_buf->seq_restarted); 132 DP_TRACE_STATS(FATAL, "mu_seq_posted = %d", 133 dp_stats_buf->mu_seq_posted); 134 DP_TRACE_STATS(FATAL, "seq_switch_hw_paused = %d", 135 dp_stats_buf->seq_switch_hw_paused); 136 DP_TRACE_STATS(FATAL, "next_seq_posted_dsr = %d", 137 dp_stats_buf->next_seq_posted_dsr); 138 DP_TRACE_STATS(FATAL, "seq_posted_isr = %d", 139 dp_stats_buf->seq_posted_isr); 140 DP_TRACE_STATS(FATAL, "seq_ctrl_cached = %d", 141 dp_stats_buf->seq_ctrl_cached); 142 DP_TRACE_STATS(FATAL, "mpdu_count_tqm = %d", 143 dp_stats_buf->mpdu_count_tqm); 144 DP_TRACE_STATS(FATAL, "msdu_count_tqm = %d", 145 dp_stats_buf->msdu_count_tqm); 146 DP_TRACE_STATS(FATAL, "mpdu_removed_tqm = %d", 147 dp_stats_buf->mpdu_removed_tqm); 148 DP_TRACE_STATS(FATAL, "msdu_removed_tqm = %d", 149 dp_stats_buf->msdu_removed_tqm); 150 DP_TRACE_STATS(FATAL, "mpdus_sw_flush = %d", 151 dp_stats_buf->mpdus_sw_flush); 152 DP_TRACE_STATS(FATAL, "mpdus_hw_filter = %d", 153 dp_stats_buf->mpdus_hw_filter); 154 DP_TRACE_STATS(FATAL, "mpdus_truncated = %d", 155 dp_stats_buf->mpdus_truncated); 156 DP_TRACE_STATS(FATAL, "mpdus_ack_failed = %d", 157 dp_stats_buf->mpdus_ack_failed); 158 DP_TRACE_STATS(FATAL, "mpdus_expired = %d", 159 dp_stats_buf->mpdus_expired); 160 DP_TRACE_STATS(FATAL, "mpdus_seq_hw_retry = %d", 161 dp_stats_buf->mpdus_seq_hw_retry); 162 DP_TRACE_STATS(FATAL, "ack_tlv_proc = %d", 163 dp_stats_buf->ack_tlv_proc); 164 DP_TRACE_STATS(FATAL, "coex_abort_mpdu_cnt_valid = %d", 165 dp_stats_buf->coex_abort_mpdu_cnt_valid); 166 DP_TRACE_STATS(FATAL, "coex_abort_mpdu_cnt = %d\n", 167 dp_stats_buf->coex_abort_mpdu_cnt); 168 } 169 170 /* 171 * dp_print_tx_pdev_stats_urrn_tlv_v: display htt_tx_pdev_stats_urrn_tlv_v 172 * @tag_buf: buffer containing the tlv htt_tx_pdev_stats_urrn_tlv_v 173 * 174 * return:void 175 */ 176 static inline void dp_print_tx_pdev_stats_urrn_tlv_v(uint32_t *tag_buf) 177 { 178 htt_tx_pdev_stats_urrn_tlv_v *dp_stats_buf = 179 (htt_tx_pdev_stats_urrn_tlv_v *)tag_buf; 180 uint8_t i; 181 uint16_t index = 0; 182 char urrn_stats[DP_MAX_STRING_LEN]; 183 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 184 185 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_PDEV_MAX_URRN_STATS); 186 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_STATS_URRN_TLV_V:"); 187 for (i = 0; i < tag_len; i++) { 188 index += qdf_snprint(&urrn_stats[index], 189 DP_MAX_STRING_LEN - index, 190 " %d:%d,", i, dp_stats_buf->urrn_stats[i]); 191 } 192 DP_TRACE_STATS(FATAL, "urrn_stats = %s\n", urrn_stats); 193 } 194 195 /* 196 * dp_print_tx_pdev_stats_flush_tlv_v: display htt_tx_pdev_stats_flush_tlv_v 197 * @tag_buf: buffer containing the tlv htt_tx_pdev_stats_flush_tlv_v 198 * 199 * return:void 200 */ 201 static inline void dp_print_tx_pdev_stats_flush_tlv_v(uint32_t *tag_buf) 202 { 203 htt_tx_pdev_stats_flush_tlv_v *dp_stats_buf = 204 (htt_tx_pdev_stats_flush_tlv_v *)tag_buf; 205 uint8_t i; 206 uint16_t index = 0; 207 char flush_errs[DP_MAX_STRING_LEN]; 208 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 209 210 tag_len = qdf_min(tag_len, 211 (uint32_t)HTT_TX_PDEV_MAX_FLUSH_REASON_STATS); 212 213 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_STATS_FLUSH_TLV_V:"); 214 for (i = 0; i < tag_len; i++) { 215 index += qdf_snprint(&flush_errs[index], 216 DP_MAX_STRING_LEN - index, 217 " %d:%d,", i, dp_stats_buf->flush_errs[i]); 218 } 219 DP_TRACE_STATS(FATAL, "flush_errs = %s\n", flush_errs); 220 } 221 222 /* 223 * dp_print_tx_pdev_stats_sifs_tlv_v: display htt_tx_pdev_stats_sifs_tlv_v 224 * @tag_buf: buffer containing the tlv htt_tx_pdev_stats_sifs_tlv_v 225 * 226 * return:void 227 */ 228 static inline void dp_print_tx_pdev_stats_sifs_tlv_v(uint32_t *tag_buf) 229 { 230 htt_tx_pdev_stats_sifs_tlv_v *dp_stats_buf = 231 (htt_tx_pdev_stats_sifs_tlv_v *)tag_buf; 232 uint8_t i; 233 uint16_t index = 0; 234 char sifs_status[DP_MAX_STRING_LEN]; 235 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 236 237 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_PDEV_MAX_SIFS_BURST_STATS); 238 239 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_STATS_SIFS_TLV_V:"); 240 for (i = 0; i < tag_len; i++) { 241 index += qdf_snprint(&sifs_status[index], 242 DP_MAX_STRING_LEN - index, 243 " %d:%d,", i, dp_stats_buf->sifs_status[i]); 244 } 245 DP_TRACE_STATS(FATAL, "sifs_status = %s\n", sifs_status); 246 } 247 248 /* 249 * dp_print_tx_pdev_stats_phy_err_tlv_v: display htt_tx_pdev_stats_phy_err_tlv_v 250 * @tag_buf: buffer containing the tlv htt_tx_pdev_stats_phy_err_tlv_v 251 * 252 * return:void 253 */ 254 static inline void dp_print_tx_pdev_stats_phy_err_tlv_v(uint32_t *tag_buf) 255 { 256 htt_tx_pdev_stats_phy_err_tlv_v *dp_stats_buf = 257 (htt_tx_pdev_stats_phy_err_tlv_v *)tag_buf; 258 uint8_t i; 259 uint16_t index = 0; 260 char phy_errs[DP_MAX_STRING_LEN]; 261 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 262 263 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_PDEV_MAX_PHY_ERR_STATS); 264 265 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_STATS_PHY_ERR_TLV_V:"); 266 for (i = 0; i < tag_len; i++) { 267 index += qdf_snprint(&phy_errs[index], 268 DP_MAX_STRING_LEN - index, 269 " %d:%d,", i, dp_stats_buf->phy_errs[i]); 270 } 271 DP_TRACE_STATS(FATAL, "phy_errs = %s\n", phy_errs); 272 } 273 274 /* 275 * dp_print_hw_stats_intr_misc_tlv: display htt_hw_stats_intr_misc_tlv 276 * @tag_buf: buffer containing the tlv htt_hw_stats_intr_misc_tlv 277 * 278 * return:void 279 */ 280 static inline void dp_print_hw_stats_intr_misc_tlv(uint32_t *tag_buf) 281 { 282 htt_hw_stats_intr_misc_tlv *dp_stats_buf = 283 (htt_hw_stats_intr_misc_tlv *)tag_buf; 284 uint8_t i; 285 uint16_t index = 0; 286 char hw_intr_name[DP_MAX_STRING_LEN]; 287 288 DP_TRACE_STATS(FATAL, "HTT_HW_STATS_INTR_MISC_TLV:"); 289 for (i = 0; i < DP_HTT_HW_INTR_NAME_LEN; i++) { 290 index += qdf_snprint(&hw_intr_name[index], 291 DP_MAX_STRING_LEN - index, 292 " %d:%d,", i, dp_stats_buf->hw_intr_name[i]); 293 } 294 DP_TRACE_STATS(FATAL, "hw_intr_name = %s ", hw_intr_name); 295 DP_TRACE_STATS(FATAL, "mask = %d", 296 dp_stats_buf->mask); 297 DP_TRACE_STATS(FATAL, "count = %d\n", 298 dp_stats_buf->count); 299 } 300 301 /* 302 * dp_print_hw_stats_wd_timeout_tlv: display htt_hw_stats_wd_timeout_tlv 303 * @tag_buf: buffer containing the tlv htt_hw_stats_wd_timeout_tlv 304 * 305 * return:void 306 */ 307 static inline void dp_print_hw_stats_wd_timeout_tlv(uint32_t *tag_buf) 308 { 309 htt_hw_stats_wd_timeout_tlv *dp_stats_buf = 310 (htt_hw_stats_wd_timeout_tlv *)tag_buf; 311 uint8_t i; 312 uint16_t index = 0; 313 char hw_module_name[DP_MAX_STRING_LEN]; 314 315 DP_TRACE_STATS(FATAL, "HTT_HW_STATS_WD_TIMEOUT_TLV:"); 316 for (i = 0; i < DP_HTT_HW_MODULE_NAME_LEN; i++) { 317 index += qdf_snprint(&hw_module_name[index], 318 DP_MAX_STRING_LEN - index, 319 " %d:%d,", i, dp_stats_buf->hw_module_name[i]); 320 } 321 DP_TRACE_STATS(FATAL, "hw_module_name = %s ", hw_module_name); 322 DP_TRACE_STATS(FATAL, "count = %d", 323 dp_stats_buf->count); 324 } 325 326 /* 327 * dp_print_hw_stats_pdev_errs_tlv: display htt_hw_stats_pdev_errs_tlv 328 * @tag_buf: buffer containing the tlv htt_hw_stats_pdev_errs_tlv 329 * 330 * return:void 331 */ 332 static inline void dp_print_hw_stats_pdev_errs_tlv(uint32_t *tag_buf) 333 { 334 htt_hw_stats_pdev_errs_tlv *dp_stats_buf = 335 (htt_hw_stats_pdev_errs_tlv *)tag_buf; 336 337 DP_TRACE_STATS(FATAL, "HTT_HW_STATS_PDEV_ERRS_TLV:"); 338 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 339 dp_stats_buf->mac_id__word); 340 DP_TRACE_STATS(FATAL, "tx_abort = %d", 341 dp_stats_buf->tx_abort); 342 DP_TRACE_STATS(FATAL, "tx_abort_fail_count = %d", 343 dp_stats_buf->tx_abort_fail_count); 344 DP_TRACE_STATS(FATAL, "rx_abort = %d", 345 dp_stats_buf->rx_abort); 346 DP_TRACE_STATS(FATAL, "rx_abort_fail_count = %d", 347 dp_stats_buf->rx_abort_fail_count); 348 DP_TRACE_STATS(FATAL, "warm_reset = %d", 349 dp_stats_buf->warm_reset); 350 DP_TRACE_STATS(FATAL, "cold_reset = %d", 351 dp_stats_buf->cold_reset); 352 DP_TRACE_STATS(FATAL, "tx_flush = %d", 353 dp_stats_buf->tx_flush); 354 DP_TRACE_STATS(FATAL, "tx_glb_reset = %d", 355 dp_stats_buf->tx_glb_reset); 356 DP_TRACE_STATS(FATAL, "tx_txq_reset = %d", 357 dp_stats_buf->tx_txq_reset); 358 DP_TRACE_STATS(FATAL, "rx_timeout_reset = %d\n", 359 dp_stats_buf->rx_timeout_reset); 360 } 361 362 /* 363 * dp_print_msdu_flow_stats_tlv: display htt_msdu_flow_stats_tlv 364 * @tag_buf: buffer containing the tlv htt_msdu_flow_stats_tlv 365 * 366 * return:void 367 */ 368 static inline void dp_print_msdu_flow_stats_tlv(uint32_t *tag_buf) 369 { 370 htt_msdu_flow_stats_tlv *dp_stats_buf = 371 (htt_msdu_flow_stats_tlv *)tag_buf; 372 373 DP_TRACE_STATS(FATAL, "HTT_MSDU_FLOW_STATS_TLV:"); 374 DP_TRACE_STATS(FATAL, "last_update_timestamp = %d", 375 dp_stats_buf->last_update_timestamp); 376 DP_TRACE_STATS(FATAL, "last_add_timestamp = %d", 377 dp_stats_buf->last_add_timestamp); 378 DP_TRACE_STATS(FATAL, "last_remove_timestamp = %d", 379 dp_stats_buf->last_remove_timestamp); 380 DP_TRACE_STATS(FATAL, "total_processed_msdu_count = %d", 381 dp_stats_buf->total_processed_msdu_count); 382 DP_TRACE_STATS(FATAL, "cur_msdu_count_in_flowq = %d", 383 dp_stats_buf->cur_msdu_count_in_flowq); 384 DP_TRACE_STATS(FATAL, "sw_peer_id = %d", 385 dp_stats_buf->sw_peer_id); 386 DP_TRACE_STATS(FATAL, "tx_flow_no__tid_num__drop_rule = %d\n", 387 dp_stats_buf->tx_flow_no__tid_num__drop_rule); 388 } 389 390 /* 391 * dp_print_tx_tid_stats_tlv: display htt_tx_tid_stats_tlv 392 * @tag_buf: buffer containing the tlv htt_tx_tid_stats_tlv 393 * 394 * return:void 395 */ 396 static inline void dp_print_tx_tid_stats_tlv(uint32_t *tag_buf) 397 { 398 htt_tx_tid_stats_tlv *dp_stats_buf = 399 (htt_tx_tid_stats_tlv *)tag_buf; 400 uint8_t i; 401 uint16_t index = 0; 402 char tid_name[DP_MAX_STRING_LEN]; 403 404 DP_TRACE_STATS(FATAL, "HTT_TX_TID_STATS_TLV:"); 405 for (i = 0; i < DP_HTT_TID_NAME_LEN; i++) { 406 index += qdf_snprint(&tid_name[index], 407 DP_MAX_STRING_LEN - index, 408 " %d:%d,", i, dp_stats_buf->tid_name[i]); 409 } 410 DP_TRACE_STATS(FATAL, "tid_name = %s ", tid_name); 411 DP_TRACE_STATS(FATAL, "sw_peer_id__tid_num = %d", 412 dp_stats_buf->sw_peer_id__tid_num); 413 DP_TRACE_STATS(FATAL, "num_sched_pending__num_ppdu_in_hwq = %d", 414 dp_stats_buf->num_sched_pending__num_ppdu_in_hwq); 415 DP_TRACE_STATS(FATAL, "tid_flags = %d", 416 dp_stats_buf->tid_flags); 417 DP_TRACE_STATS(FATAL, "hw_queued = %d", 418 dp_stats_buf->hw_queued); 419 DP_TRACE_STATS(FATAL, "hw_reaped = %d", 420 dp_stats_buf->hw_reaped); 421 DP_TRACE_STATS(FATAL, "mpdus_hw_filter = %d", 422 dp_stats_buf->mpdus_hw_filter); 423 DP_TRACE_STATS(FATAL, "qdepth_bytes = %d", 424 dp_stats_buf->qdepth_bytes); 425 DP_TRACE_STATS(FATAL, "qdepth_num_msdu = %d", 426 dp_stats_buf->qdepth_num_msdu); 427 DP_TRACE_STATS(FATAL, "qdepth_num_mpdu = %d", 428 dp_stats_buf->qdepth_num_mpdu); 429 DP_TRACE_STATS(FATAL, "last_scheduled_tsmp = %d", 430 dp_stats_buf->last_scheduled_tsmp); 431 DP_TRACE_STATS(FATAL, "pause_module_id = %d", 432 dp_stats_buf->pause_module_id); 433 DP_TRACE_STATS(FATAL, "block_module_id = %d\n", 434 dp_stats_buf->block_module_id); 435 } 436 437 /* 438 * dp_print_rx_tid_stats_tlv: display htt_rx_tid_stats_tlv 439 * @tag_buf: buffer containing the tlv htt_rx_tid_stats_tlv 440 * 441 * return:void 442 */ 443 static inline void dp_print_rx_tid_stats_tlv(uint32_t *tag_buf) 444 { 445 htt_rx_tid_stats_tlv *dp_stats_buf = 446 (htt_rx_tid_stats_tlv *)tag_buf; 447 uint8_t i; 448 uint16_t index = 0; 449 char tid_name[DP_MAX_STRING_LEN]; 450 451 DP_TRACE_STATS(FATAL, "HTT_RX_TID_STATS_TLV:"); 452 DP_TRACE_STATS(FATAL, "sw_peer_id__tid_num = %d", 453 dp_stats_buf->sw_peer_id__tid_num); 454 for (i = 0; i < DP_HTT_TID_NAME_LEN; i++) { 455 index += qdf_snprint(&tid_name[index], 456 DP_MAX_STRING_LEN - index, 457 " %d:%d,", i, dp_stats_buf->tid_name[i]); 458 } 459 DP_TRACE_STATS(FATAL, "tid_name = %s ", tid_name); 460 DP_TRACE_STATS(FATAL, "dup_in_reorder = %d", 461 dp_stats_buf->dup_in_reorder); 462 DP_TRACE_STATS(FATAL, "dup_past_outside_window = %d", 463 dp_stats_buf->dup_past_outside_window); 464 DP_TRACE_STATS(FATAL, "dup_past_within_window = %d", 465 dp_stats_buf->dup_past_within_window); 466 DP_TRACE_STATS(FATAL, "rxdesc_err_decrypt = %d\n", 467 dp_stats_buf->rxdesc_err_decrypt); 468 } 469 470 /* 471 * dp_print_counter_tlv: display htt_counter_tlv 472 * @tag_buf: buffer containing the tlv htt_counter_tlv 473 * 474 * return:void 475 */ 476 static inline void dp_print_counter_tlv(uint32_t *tag_buf) 477 { 478 htt_counter_tlv *dp_stats_buf = 479 (htt_counter_tlv *)tag_buf; 480 uint8_t i; 481 uint16_t index = 0; 482 char counter_name[DP_MAX_STRING_LEN]; 483 484 DP_TRACE_STATS(FATAL, "HTT_COUNTER_TLV:"); 485 for (i = 0; i < DP_HTT_COUNTER_NAME_LEN; i++) { 486 index += qdf_snprint(&counter_name[index], 487 DP_MAX_STRING_LEN - index, 488 " %d:%d,", i, dp_stats_buf->counter_name[i]); 489 } 490 DP_TRACE_STATS(FATAL, "counter_name = %s ", counter_name); 491 DP_TRACE_STATS(FATAL, "count = %d\n", 492 dp_stats_buf->count); 493 } 494 495 /* 496 * dp_print_peer_stats_cmn_tlv: display htt_peer_stats_cmn_tlv 497 * @tag_buf: buffer containing the tlv htt_peer_stats_cmn_tlv 498 * 499 * return:void 500 */ 501 static inline void dp_print_peer_stats_cmn_tlv(uint32_t *tag_buf) 502 { 503 htt_peer_stats_cmn_tlv *dp_stats_buf = 504 (htt_peer_stats_cmn_tlv *)tag_buf; 505 506 DP_TRACE_STATS(FATAL, "HTT_PEER_STATS_CMN_TLV:"); 507 DP_TRACE_STATS(FATAL, "ppdu_cnt = %d", 508 dp_stats_buf->ppdu_cnt); 509 DP_TRACE_STATS(FATAL, "mpdu_cnt = %d", 510 dp_stats_buf->mpdu_cnt); 511 DP_TRACE_STATS(FATAL, "msdu_cnt = %d", 512 dp_stats_buf->msdu_cnt); 513 DP_TRACE_STATS(FATAL, "pause_bitmap = %d", 514 dp_stats_buf->pause_bitmap); 515 DP_TRACE_STATS(FATAL, "block_bitmap = %d", 516 dp_stats_buf->block_bitmap); 517 DP_TRACE_STATS(FATAL, "current_timestamp = %d\n", 518 dp_stats_buf->current_timestamp); 519 } 520 521 /* 522 * dp_print_peer_details_tlv: display htt_peer_details_tlv 523 * @tag_buf: buffer containing the tlv htt_peer_details_tlv 524 * 525 * return:void 526 */ 527 static inline void dp_print_peer_details_tlv(uint32_t *tag_buf) 528 { 529 htt_peer_details_tlv *dp_stats_buf = 530 (htt_peer_details_tlv *)tag_buf; 531 532 DP_TRACE_STATS(FATAL, "HTT_PEER_DETAILS_TLV:"); 533 DP_TRACE_STATS(FATAL, "peer_type = %d", 534 dp_stats_buf->peer_type); 535 DP_TRACE_STATS(FATAL, "sw_peer_id = %d", 536 dp_stats_buf->sw_peer_id); 537 DP_TRACE_STATS(FATAL, "vdev_pdev_ast_idx = %d", 538 dp_stats_buf->vdev_pdev_ast_idx); 539 DP_TRACE_STATS(FATAL, "mac_addr(upper 4 bytes) = %d", 540 dp_stats_buf->mac_addr.mac_addr31to0); 541 DP_TRACE_STATS(FATAL, "mac_addr(lower 2 bytes) = %d", 542 dp_stats_buf->mac_addr.mac_addr47to32); 543 DP_TRACE_STATS(FATAL, "peer_flags = %d", 544 dp_stats_buf->peer_flags); 545 DP_TRACE_STATS(FATAL, "qpeer_flags = %d\n", 546 dp_stats_buf->qpeer_flags); 547 } 548 549 /* 550 * dp_print_tx_peer_rate_stats_tlv: display htt_tx_peer_rate_stats_tlv 551 * @tag_buf: buffer containing the tlv htt_tx_peer_rate_stats_tlv 552 * 553 * return:void 554 */ 555 static inline void dp_print_tx_peer_rate_stats_tlv(uint32_t *tag_buf) 556 { 557 htt_tx_peer_rate_stats_tlv *dp_stats_buf = 558 (htt_tx_peer_rate_stats_tlv *)tag_buf; 559 uint8_t i, j; 560 uint16_t index = 0; 561 char str_buf[DP_MAX_STRING_LEN]; 562 char *tx_gi[HTT_TX_PEER_STATS_NUM_GI_COUNTERS]; 563 564 for (i = 0; i < HTT_TX_PEER_STATS_NUM_GI_COUNTERS; i++) 565 tx_gi[i] = (char *)qdf_mem_malloc(DP_MAX_STRING_LEN); 566 567 DP_TRACE_STATS(FATAL, "HTT_TX_PEER_RATE_STATS_TLV:"); 568 DP_TRACE_STATS(FATAL, "tx_ldpc = %d", 569 dp_stats_buf->tx_ldpc); 570 DP_TRACE_STATS(FATAL, "rts_cnt = %d", 571 dp_stats_buf->rts_cnt); 572 DP_TRACE_STATS(FATAL, "ack_rssi = %d", 573 dp_stats_buf->ack_rssi); 574 575 index = 0; 576 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 577 for (i = 0; i < DP_HTT_TX_MCS_LEN; i++) { 578 index += qdf_snprint(&str_buf[index], 579 DP_MAX_STRING_LEN - index, 580 " %d:%d,", i, dp_stats_buf->tx_mcs[i]); 581 } 582 DP_TRACE_STATS(FATAL, "tx_mcs = %s ", str_buf); 583 584 index = 0; 585 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 586 for (i = 0; i < DP_HTT_TX_SU_MCS_LEN; i++) { 587 index += qdf_snprint(&str_buf[index], 588 DP_MAX_STRING_LEN - index, 589 " %d:%d,", i, dp_stats_buf->tx_su_mcs[i]); 590 } 591 DP_TRACE_STATS(FATAL, "tx_su_mcs = %s ", str_buf); 592 index = 0; 593 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 594 for (i = 0; i < DP_HTT_TX_MU_MCS_LEN; i++) { 595 index += qdf_snprint(&str_buf[index], 596 DP_MAX_STRING_LEN - index, 597 " %d:%d,", i, dp_stats_buf->tx_mu_mcs[i]); 598 } 599 DP_TRACE_STATS(FATAL, "tx_mu_mcs = %s ", str_buf); 600 index = 0; 601 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 602 for (i = 0; i < DP_HTT_TX_NSS_LEN; i++) { 603 index += qdf_snprint(&str_buf[index], 604 DP_MAX_STRING_LEN - index, 605 " %d:%d,", i, dp_stats_buf->tx_nss[i]); 606 } 607 DP_TRACE_STATS(FATAL, "tx_nss = %s ", str_buf); 608 index = 0; 609 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 610 for (i = 0; i < DP_HTT_TX_BW_LEN; i++) { 611 index += qdf_snprint(&str_buf[index], 612 DP_MAX_STRING_LEN - index, 613 " %d:%d,", i, dp_stats_buf->tx_bw[i]); 614 } 615 DP_TRACE_STATS(FATAL, "tx_bw = %s ", str_buf); 616 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 617 for (i = 0; i < HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS; i++) { 618 index += qdf_snprint(&str_buf[index], 619 DP_MAX_STRING_LEN - index, 620 " %d:%d,", i, dp_stats_buf->tx_stbc[i]); 621 } 622 DP_TRACE_STATS(FATAL, "tx_stbc = %s ", str_buf); 623 index = 0; 624 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 625 626 for (i = 0; i < DP_HTT_TX_PREAM_LEN; i++) { 627 index += qdf_snprint(&str_buf[index], 628 DP_MAX_STRING_LEN - index, 629 " %d:%d,", i, dp_stats_buf->tx_pream[i]); 630 } 631 DP_TRACE_STATS(FATAL, "tx_pream = %s ", str_buf); 632 633 for (j = 0; j < HTT_TX_PEER_STATS_NUM_GI_COUNTERS; j++) { 634 index = 0; 635 for (i = 0; i < HTT_TX_PEER_STATS_NUM_MCS_COUNTERS; i++) { 636 index += qdf_snprint(&tx_gi[j][index], 637 DP_MAX_STRING_LEN - index, 638 " %d:%d,", i, 639 dp_stats_buf->tx_gi[j][i]); 640 } 641 DP_TRACE_STATS(FATAL, "tx_gi[%d] = %s ", j, tx_gi[j]); 642 } 643 644 index = 0; 645 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 646 for (i = 0; i < DP_HTT_TX_DCM_LEN; i++) { 647 index += qdf_snprint(&str_buf[index], 648 DP_MAX_STRING_LEN - index, 649 " %d:%d,", i, dp_stats_buf->tx_dcm[i]); 650 } 651 DP_TRACE_STATS(FATAL, "tx_dcm = %s\n", str_buf); 652 for (i = 0; i < HTT_TX_PEER_STATS_NUM_GI_COUNTERS; i++) 653 qdf_mem_free(tx_gi[i]); 654 } 655 656 /* 657 * dp_print_rx_peer_rate_stats_tlv: display htt_rx_peer_rate_stats_tlv 658 * @tag_buf: buffer containing the tlv htt_rx_peer_rate_stats_tlv 659 * 660 * return:void 661 */ 662 static inline void dp_print_rx_peer_rate_stats_tlv(uint32_t *tag_buf) 663 { 664 htt_rx_peer_rate_stats_tlv *dp_stats_buf = 665 (htt_rx_peer_rate_stats_tlv *)tag_buf; 666 uint8_t i, j; 667 uint16_t index = 0; 668 char *rssi_chain[DP_HTT_PEER_NUM_SS]; 669 char *rx_gi[HTT_RX_PEER_STATS_NUM_GI_COUNTERS]; 670 char str_buf[DP_MAX_STRING_LEN]; 671 672 for (i = 0; i < DP_HTT_PEER_NUM_SS; i++) 673 rssi_chain[i] = qdf_mem_malloc(DP_MAX_STRING_LEN); 674 for (i = 0; i < HTT_RX_PEER_STATS_NUM_GI_COUNTERS; i++) 675 rx_gi[i] = qdf_mem_malloc(DP_MAX_STRING_LEN); 676 677 DP_TRACE_STATS(FATAL, "HTT_RX_PEER_RATE_STATS_TLV:"); 678 DP_TRACE_STATS(FATAL, "nsts = %d", 679 dp_stats_buf->nsts); 680 DP_TRACE_STATS(FATAL, "rx_ldpc = %d", 681 dp_stats_buf->rx_ldpc); 682 DP_TRACE_STATS(FATAL, "rts_cnt = %d", 683 dp_stats_buf->rts_cnt); 684 DP_TRACE_STATS(FATAL, "rssi_mgmt = %d", 685 dp_stats_buf->rssi_mgmt); 686 DP_TRACE_STATS(FATAL, "rssi_data = %d", 687 dp_stats_buf->rssi_data); 688 DP_TRACE_STATS(FATAL, "rssi_comb = %d", 689 dp_stats_buf->rssi_comb); 690 691 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 692 for (i = 0; i < DP_HTT_RX_MCS_LEN; i++) { 693 index += qdf_snprint(&str_buf[index], 694 DP_MAX_STRING_LEN - index, 695 " %d:%d,", i, dp_stats_buf->rx_mcs[i]); 696 } 697 DP_TRACE_STATS(FATAL, "rx_mcs = %s ", str_buf); 698 699 index = 0; 700 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 701 for (i = 0; i < DP_HTT_RX_NSS_LEN; i++) { 702 index += qdf_snprint(&str_buf[index], 703 DP_MAX_STRING_LEN - index, 704 " %d:%d,", i, dp_stats_buf->rx_nss[i]); 705 } 706 DP_TRACE_STATS(FATAL, "rx_nss = %s ", str_buf); 707 708 index = 0; 709 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 710 for (i = 0; i < DP_HTT_RX_DCM_LEN; i++) { 711 index += qdf_snprint(&str_buf[index], 712 DP_MAX_STRING_LEN - index, 713 " %d:%d,", i, dp_stats_buf->rx_dcm[i]); 714 } 715 DP_TRACE_STATS(FATAL, "rx_dcm = %s ", str_buf); 716 717 index = 0; 718 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 719 for (i = 0; i < HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS; i++) { 720 index += qdf_snprint(&str_buf[index], 721 DP_MAX_STRING_LEN - index, 722 " %d:%d,", i, dp_stats_buf->rx_stbc[i]); 723 } 724 DP_TRACE_STATS(FATAL, "rx_stbc = %s ", str_buf); 725 726 index = 0; 727 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 728 for (i = 0; i < DP_HTT_RX_BW_LEN; i++) { 729 index += qdf_snprint(&str_buf[index], 730 DP_MAX_STRING_LEN - index, 731 " %d:%d,", i, dp_stats_buf->rx_bw[i]); 732 } 733 DP_TRACE_STATS(FATAL, "rx_bw = %s ", str_buf); 734 735 for (j = 0; j < DP_HTT_PEER_NUM_SS; j++) { 736 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 737 index = 0; 738 for (i = 0; i < HTT_RX_PEER_STATS_NUM_BW_COUNTERS; i++) { 739 index += qdf_snprint(&rssi_chain[j][index], 740 DP_MAX_STRING_LEN - index, 741 " %d:%d,", i, 742 dp_stats_buf->rssi_chain[j][i]); 743 } 744 DP_TRACE_STATS(FATAL, "rssi_chain[%d] = %s ", j, rssi_chain[j]); 745 } 746 747 for (j = 0; j < HTT_RX_PEER_STATS_NUM_GI_COUNTERS; j++) { 748 index = 0; 749 for (i = 0; i < HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS; i++) { 750 index += qdf_snprint(&rx_gi[j][index], 751 DP_MAX_STRING_LEN - index, 752 " %d:%d,", i, 753 dp_stats_buf->rx_gi[j][i]); 754 } 755 DP_TRACE_STATS(FATAL, "rx_gi[%d] = %s ", j, rx_gi[j]); 756 } 757 index = 0; 758 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 759 for (i = 0; i < DP_HTT_RX_PREAM_LEN; i++) { 760 index += qdf_snprint(&str_buf[index], 761 DP_MAX_STRING_LEN - index, 762 " %d:%d,", i, dp_stats_buf->rx_pream[i]); 763 } 764 DP_TRACE_STATS(FATAL, "rx_pream = %s\n", str_buf); 765 766 for (i = 0; i < DP_HTT_PEER_NUM_SS; i++) 767 qdf_mem_free(rssi_chain[i]); 768 for (i = 0; i < HTT_RX_PEER_STATS_NUM_GI_COUNTERS; i++) 769 qdf_mem_free(rx_gi[i]); 770 } 771 772 /* 773 * dp_print_tx_hwq_mu_mimo_sch_stats_tlv: display htt_tx_hwq_mu_mimo_sch_stats 774 * @tag_buf: buffer containing the tlv htt_tx_hwq_mu_mimo_sch_stats_tlv 775 * 776 * return:void 777 */ 778 static inline void dp_print_tx_hwq_mu_mimo_sch_stats_tlv(uint32_t *tag_buf) 779 { 780 htt_tx_hwq_mu_mimo_sch_stats_tlv *dp_stats_buf = 781 (htt_tx_hwq_mu_mimo_sch_stats_tlv *)tag_buf; 782 783 DP_TRACE_STATS(FATAL, "HTT_TX_HWQ_MU_MIMO_SCH_STATS_TLV:"); 784 DP_TRACE_STATS(FATAL, "mu_mimo_sch_posted = %d", 785 dp_stats_buf->mu_mimo_sch_posted); 786 DP_TRACE_STATS(FATAL, "mu_mimo_sch_failed = %d", 787 dp_stats_buf->mu_mimo_sch_failed); 788 DP_TRACE_STATS(FATAL, "mu_mimo_ppdu_posted = %d\n", 789 dp_stats_buf->mu_mimo_ppdu_posted); 790 } 791 792 /* 793 * dp_print_tx_hwq_mu_mimo_mpdu_stats_tlv: display htt_tx_hwq_mu_mimo_mpdu_stats 794 * @tag_buf: buffer containing the tlv htt_tx_hwq_mu_mimo_mpdu_stats_tlv 795 * 796 * return:void 797 */ 798 static inline void dp_print_tx_hwq_mu_mimo_mpdu_stats_tlv(uint32_t *tag_buf) 799 { 800 htt_tx_hwq_mu_mimo_mpdu_stats_tlv *dp_stats_buf = 801 (htt_tx_hwq_mu_mimo_mpdu_stats_tlv *)tag_buf; 802 803 DP_TRACE_STATS(FATAL, "HTT_TX_HWQ_MU_MIMO_MPDU_STATS_TLV:"); 804 DP_TRACE_STATS(FATAL, "mu_mimo_mpdus_queued_usr = %d", 805 dp_stats_buf->mu_mimo_mpdus_queued_usr); 806 DP_TRACE_STATS(FATAL, "mu_mimo_mpdus_tried_usr = %d", 807 dp_stats_buf->mu_mimo_mpdus_tried_usr); 808 DP_TRACE_STATS(FATAL, "mu_mimo_mpdus_failed_usr = %d", 809 dp_stats_buf->mu_mimo_mpdus_failed_usr); 810 DP_TRACE_STATS(FATAL, "mu_mimo_mpdus_requeued_usr = %d", 811 dp_stats_buf->mu_mimo_mpdus_requeued_usr); 812 DP_TRACE_STATS(FATAL, "mu_mimo_err_no_ba_usr = %d", 813 dp_stats_buf->mu_mimo_err_no_ba_usr); 814 DP_TRACE_STATS(FATAL, "mu_mimo_mpdu_underrun_usr = %d", 815 dp_stats_buf->mu_mimo_mpdu_underrun_usr); 816 DP_TRACE_STATS(FATAL, "mu_mimo_ampdu_underrun_usr = %d\n", 817 dp_stats_buf->mu_mimo_ampdu_underrun_usr); 818 } 819 820 /* 821 * dp_print_tx_hwq_mu_mimo_cmn_stats_tlv: display htt_tx_hwq_mu_mimo_cmn_stats 822 * @tag_buf: buffer containing the tlv htt_tx_hwq_mu_mimo_cmn_stats_tlv 823 * 824 * return:void 825 */ 826 static inline void dp_print_tx_hwq_mu_mimo_cmn_stats_tlv(uint32_t *tag_buf) 827 { 828 htt_tx_hwq_mu_mimo_cmn_stats_tlv *dp_stats_buf = 829 (htt_tx_hwq_mu_mimo_cmn_stats_tlv *)tag_buf; 830 831 DP_TRACE_STATS(FATAL, "HTT_TX_HWQ_MU_MIMO_CMN_STATS_TLV:"); 832 DP_TRACE_STATS(FATAL, "mac_id__hwq_id__word = %d\n", 833 dp_stats_buf->mac_id__hwq_id__word); 834 } 835 836 /* 837 * dp_print_tx_hwq_stats_cmn_tlv: display htt_tx_hwq_stats_cmn_tlv 838 * @tag_buf: buffer containing the tlv htt_tx_hwq_stats_cmn_tlv 839 * 840 * return:void 841 */ 842 static inline void dp_print_tx_hwq_stats_cmn_tlv(uint32_t *tag_buf) 843 { 844 htt_tx_hwq_stats_cmn_tlv *dp_stats_buf = 845 (htt_tx_hwq_stats_cmn_tlv *)tag_buf; 846 847 DP_TRACE_STATS(FATAL, "HTT_TX_HWQ_STATS_CMN_TLV:"); 848 DP_TRACE_STATS(FATAL, "mac_id__hwq_id__word = %d", 849 dp_stats_buf->mac_id__hwq_id__word); 850 DP_TRACE_STATS(FATAL, "xretry = %d", 851 dp_stats_buf->xretry); 852 DP_TRACE_STATS(FATAL, "underrun_cnt = %d", 853 dp_stats_buf->underrun_cnt); 854 DP_TRACE_STATS(FATAL, "flush_cnt = %d", 855 dp_stats_buf->flush_cnt); 856 DP_TRACE_STATS(FATAL, "filt_cnt = %d", 857 dp_stats_buf->filt_cnt); 858 DP_TRACE_STATS(FATAL, "null_mpdu_bmap = %d", 859 dp_stats_buf->null_mpdu_bmap); 860 DP_TRACE_STATS(FATAL, "user_ack_failure = %d", 861 dp_stats_buf->user_ack_failure); 862 DP_TRACE_STATS(FATAL, "ack_tlv_proc = %d", 863 dp_stats_buf->ack_tlv_proc); 864 DP_TRACE_STATS(FATAL, "sched_id_proc = %d", 865 dp_stats_buf->sched_id_proc); 866 DP_TRACE_STATS(FATAL, "null_mpdu_tx_count = %d", 867 dp_stats_buf->null_mpdu_tx_count); 868 DP_TRACE_STATS(FATAL, "mpdu_bmap_not_recvd = %d", 869 dp_stats_buf->mpdu_bmap_not_recvd); 870 DP_TRACE_STATS(FATAL, "num_bar = %d", 871 dp_stats_buf->num_bar); 872 DP_TRACE_STATS(FATAL, "rts = %d", 873 dp_stats_buf->rts); 874 DP_TRACE_STATS(FATAL, "cts2self = %d", 875 dp_stats_buf->cts2self); 876 DP_TRACE_STATS(FATAL, "qos_null = %d", 877 dp_stats_buf->qos_null); 878 DP_TRACE_STATS(FATAL, "mpdu_tried_cnt = %d", 879 dp_stats_buf->mpdu_tried_cnt); 880 DP_TRACE_STATS(FATAL, "mpdu_queued_cnt = %d", 881 dp_stats_buf->mpdu_queued_cnt); 882 DP_TRACE_STATS(FATAL, "mpdu_ack_fail_cnt = %d", 883 dp_stats_buf->mpdu_ack_fail_cnt); 884 DP_TRACE_STATS(FATAL, "mpdu_filt_cnt = %d", 885 dp_stats_buf->mpdu_filt_cnt); 886 DP_TRACE_STATS(FATAL, "false_mpdu_ack_count = %d\n", 887 dp_stats_buf->false_mpdu_ack_count); 888 } 889 890 /* 891 * dp_print_tx_hwq_difs_latency_stats_tlv_v: display 892 * htt_tx_hwq_difs_latency_stats_tlv_v 893 * @tag_buf: buffer containing the tlv htt_tx_hwq_difs_latency_stats_tlv_v 894 * 895 *return:void 896 */ 897 static inline void dp_print_tx_hwq_difs_latency_stats_tlv_v(uint32_t *tag_buf) 898 { 899 htt_tx_hwq_difs_latency_stats_tlv_v *dp_stats_buf = 900 (htt_tx_hwq_difs_latency_stats_tlv_v *)tag_buf; 901 uint8_t i; 902 uint16_t index = 0; 903 char difs_latency_hist[DP_MAX_STRING_LEN]; 904 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 905 906 tag_len = qdf_min(tag_len, 907 (uint32_t)HTT_TX_HWQ_MAX_DIFS_LATENCY_BINS) - 1; 908 909 DP_TRACE_STATS(FATAL, "HTT_TX_HWQ_DIFS_LATENCY_STATS_TLV_V:"); 910 DP_TRACE_STATS(FATAL, "hist_intvl = %d", 911 dp_stats_buf->hist_intvl); 912 913 for (i = 0; i < tag_len; i++) { 914 index += qdf_snprint(&difs_latency_hist[index], 915 DP_MAX_STRING_LEN - index, 916 " %d:%d,", i, 917 dp_stats_buf->difs_latency_hist[i]); 918 } 919 DP_TRACE_STATS(FATAL, "difs_latency_hist = %s\n", difs_latency_hist); 920 } 921 922 /* 923 * dp_print_tx_hwq_cmd_result_stats_tlv_v: display htt_tx_hwq_cmd_result_stats 924 * @tag_buf: buffer containing the tlv htt_tx_hwq_cmd_result_stats_tlv_v 925 * 926 * return:void 927 */ 928 static inline void dp_print_tx_hwq_cmd_result_stats_tlv_v(uint32_t *tag_buf) 929 { 930 htt_tx_hwq_cmd_result_stats_tlv_v *dp_stats_buf = 931 (htt_tx_hwq_cmd_result_stats_tlv_v *)tag_buf; 932 uint8_t i; 933 uint16_t index = 0; 934 char cmd_result[DP_MAX_STRING_LEN]; 935 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 936 937 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_HWQ_MAX_CMD_RESULT_STATS); 938 939 DP_TRACE_STATS(FATAL, "HTT_TX_HWQ_CMD_RESULT_STATS_TLV_V:"); 940 for (i = 0; i < tag_len; i++) { 941 index += qdf_snprint(&cmd_result[index], 942 DP_MAX_STRING_LEN - index, 943 " %d:%d,", i, dp_stats_buf->cmd_result[i]); 944 } 945 DP_TRACE_STATS(FATAL, "cmd_result = %s ", cmd_result); 946 } 947 948 /* 949 * dp_print_tx_hwq_cmd_stall_stats_tlv_v: display htt_tx_hwq_cmd_stall_stats_tlv 950 * @tag_buf: buffer containing the tlv htt_tx_hwq_cmd_stall_stats_tlv_v 951 * 952 * return:void 953 */ 954 static inline void dp_print_tx_hwq_cmd_stall_stats_tlv_v(uint32_t *tag_buf) 955 { 956 htt_tx_hwq_cmd_stall_stats_tlv_v *dp_stats_buf = 957 (htt_tx_hwq_cmd_stall_stats_tlv_v *)tag_buf; 958 uint8_t i; 959 uint16_t index = 0; 960 char cmd_stall_status[DP_MAX_STRING_LEN]; 961 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 962 963 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_HWQ_MAX_CMD_STALL_STATS); 964 965 DP_TRACE_STATS(FATAL, "HTT_TX_HWQ_CMD_STALL_STATS_TLV_V:"); 966 for (i = 0; i < tag_len; i++) { 967 index += qdf_snprint(&cmd_stall_status[index], 968 DP_MAX_STRING_LEN - index, 969 " %d:%d,", i, 970 dp_stats_buf->cmd_stall_status[i]); 971 } 972 DP_TRACE_STATS(FATAL, "cmd_stall_status = %s\n", cmd_stall_status); 973 } 974 975 /* 976 * dp_print_tx_hwq_fes_result_stats_tlv_v: display htt_tx_hwq_fes_result_stats 977 * @tag_buf: buffer containing the tlv htt_tx_hwq_fes_result_stats_tlv_v 978 * 979 * return:void 980 */ 981 static inline void dp_print_tx_hwq_fes_result_stats_tlv_v(uint32_t *tag_buf) 982 { 983 htt_tx_hwq_fes_result_stats_tlv_v *dp_stats_buf = 984 (htt_tx_hwq_fes_result_stats_tlv_v *)tag_buf; 985 uint8_t i; 986 uint16_t index = 0; 987 char fes_result[DP_MAX_STRING_LEN]; 988 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 989 990 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_HWQ_MAX_FES_RESULT_STATS); 991 992 DP_TRACE_STATS(FATAL, "HTT_TX_HWQ_FES_RESULT_STATS_TLV_V:"); 993 for (i = 0; i < tag_len; i++) { 994 index += qdf_snprint(&fes_result[index], 995 DP_MAX_STRING_LEN - index, 996 " %d:%d,", i, dp_stats_buf->fes_result[i]); 997 } 998 DP_TRACE_STATS(FATAL, "fes_result = %s ", fes_result); 999 } 1000 1001 /* 1002 * dp_print_tx_selfgen_cmn_stats_tlv: display htt_tx_selfgen_cmn_stats_tlv 1003 * @tag_buf: buffer containing the tlv htt_tx_selfgen_cmn_stats_tlv 1004 * 1005 * return:void 1006 */ 1007 static inline void dp_print_tx_selfgen_cmn_stats_tlv(uint32_t *tag_buf) 1008 { 1009 htt_tx_selfgen_cmn_stats_tlv *dp_stats_buf = 1010 (htt_tx_selfgen_cmn_stats_tlv *)tag_buf; 1011 1012 DP_TRACE_STATS(FATAL, "HTT_TX_SELFGEN_CMN_STATS_TLV:"); 1013 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 1014 dp_stats_buf->mac_id__word); 1015 DP_TRACE_STATS(FATAL, "su_bar = %d", 1016 dp_stats_buf->su_bar); 1017 DP_TRACE_STATS(FATAL, "rts = %d", 1018 dp_stats_buf->rts); 1019 DP_TRACE_STATS(FATAL, "cts2self = %d", 1020 dp_stats_buf->cts2self); 1021 DP_TRACE_STATS(FATAL, "qos_null = %d", 1022 dp_stats_buf->qos_null); 1023 DP_TRACE_STATS(FATAL, "delayed_bar_1 = %d", 1024 dp_stats_buf->delayed_bar_1); 1025 DP_TRACE_STATS(FATAL, "delayed_bar_2 = %d", 1026 dp_stats_buf->delayed_bar_2); 1027 DP_TRACE_STATS(FATAL, "delayed_bar_3 = %d", 1028 dp_stats_buf->delayed_bar_3); 1029 DP_TRACE_STATS(FATAL, "delayed_bar_4 = %d", 1030 dp_stats_buf->delayed_bar_4); 1031 DP_TRACE_STATS(FATAL, "delayed_bar_5 = %d", 1032 dp_stats_buf->delayed_bar_5); 1033 DP_TRACE_STATS(FATAL, "delayed_bar_6 = %d", 1034 dp_stats_buf->delayed_bar_6); 1035 DP_TRACE_STATS(FATAL, "delayed_bar_7 = %d\n", 1036 dp_stats_buf->delayed_bar_7); 1037 } 1038 1039 /* 1040 * dp_print_tx_selfgen_ac_stats_tlv: display htt_tx_selfgen_ac_stats_tlv 1041 * @tag_buf: buffer containing the tlv htt_tx_selfgen_ac_stats_tlv 1042 * 1043 * return:void 1044 */ 1045 static inline void dp_print_tx_selfgen_ac_stats_tlv(uint32_t *tag_buf) 1046 { 1047 htt_tx_selfgen_ac_stats_tlv *dp_stats_buf = 1048 (htt_tx_selfgen_ac_stats_tlv *)tag_buf; 1049 1050 DP_TRACE_STATS(FATAL, "HTT_TX_SELFGEN_AC_STATS_TLV:"); 1051 DP_TRACE_STATS(FATAL, "ac_su_ndpa = %d", 1052 dp_stats_buf->ac_su_ndpa); 1053 DP_TRACE_STATS(FATAL, "ac_su_ndp = %d", 1054 dp_stats_buf->ac_su_ndp); 1055 DP_TRACE_STATS(FATAL, "ac_mu_mimo_ndpa = %d", 1056 dp_stats_buf->ac_mu_mimo_ndpa); 1057 DP_TRACE_STATS(FATAL, "ac_mu_mimo_ndp = %d", 1058 dp_stats_buf->ac_mu_mimo_ndp); 1059 DP_TRACE_STATS(FATAL, "ac_mu_mimo_brpoll_1 = %d", 1060 dp_stats_buf->ac_mu_mimo_brpoll_1); 1061 DP_TRACE_STATS(FATAL, "ac_mu_mimo_brpoll_2 = %d", 1062 dp_stats_buf->ac_mu_mimo_brpoll_2); 1063 DP_TRACE_STATS(FATAL, "ac_mu_mimo_brpoll_3 = %d\n", 1064 dp_stats_buf->ac_mu_mimo_brpoll_3); 1065 } 1066 1067 /* 1068 * dp_print_tx_selfgen_ax_stats_tlv: display htt_tx_selfgen_ax_stats_tlv 1069 * @tag_buf: buffer containing the tlv htt_tx_selfgen_ax_stats_tlv 1070 * 1071 * return:void 1072 */ 1073 static inline void dp_print_tx_selfgen_ax_stats_tlv(uint32_t *tag_buf) 1074 { 1075 htt_tx_selfgen_ax_stats_tlv *dp_stats_buf = 1076 (htt_tx_selfgen_ax_stats_tlv *)tag_buf; 1077 1078 DP_TRACE_STATS(FATAL, "HTT_TX_SELFGEN_AX_STATS_TLV:"); 1079 DP_TRACE_STATS(FATAL, "ax_su_ndpa = %d", 1080 dp_stats_buf->ax_su_ndpa); 1081 DP_TRACE_STATS(FATAL, "ax_su_ndp = %d", 1082 dp_stats_buf->ax_su_ndp); 1083 DP_TRACE_STATS(FATAL, "ax_mu_mimo_ndpa = %d", 1084 dp_stats_buf->ax_mu_mimo_ndpa); 1085 DP_TRACE_STATS(FATAL, "ax_mu_mimo_ndp = %d", 1086 dp_stats_buf->ax_mu_mimo_ndp); 1087 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brpoll_1 = %d", 1088 dp_stats_buf->ax_mu_mimo_brpoll_1); 1089 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brpoll_2 = %d", 1090 dp_stats_buf->ax_mu_mimo_brpoll_2); 1091 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brpoll_3 = %d", 1092 dp_stats_buf->ax_mu_mimo_brpoll_3); 1093 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brpoll_4 = %d", 1094 dp_stats_buf->ax_mu_mimo_brpoll_4); 1095 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brpoll_5 = %d", 1096 dp_stats_buf->ax_mu_mimo_brpoll_5); 1097 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brpoll_6 = %d", 1098 dp_stats_buf->ax_mu_mimo_brpoll_6); 1099 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brpoll_7 = %d", 1100 dp_stats_buf->ax_mu_mimo_brpoll_7); 1101 DP_TRACE_STATS(FATAL, "ax_basic_trigger = %d", 1102 dp_stats_buf->ax_basic_trigger); 1103 DP_TRACE_STATS(FATAL, "ax_bsr_trigger = %d", 1104 dp_stats_buf->ax_bsr_trigger); 1105 DP_TRACE_STATS(FATAL, "ax_mu_bar_trigger = %d", 1106 dp_stats_buf->ax_mu_bar_trigger); 1107 DP_TRACE_STATS(FATAL, "ax_mu_rts_trigger = %d\n", 1108 dp_stats_buf->ax_mu_rts_trigger); 1109 } 1110 1111 /* 1112 * dp_print_tx_selfgen_ac_err_stats_tlv: display htt_tx_selfgen_ac_err_stats_tlv 1113 * @tag_buf: buffer containing the tlv htt_tx_selfgen_ac_err_stats_tlv 1114 * 1115 * return:void 1116 */ 1117 static inline void dp_print_tx_selfgen_ac_err_stats_tlv(uint32_t *tag_buf) 1118 { 1119 htt_tx_selfgen_ac_err_stats_tlv *dp_stats_buf = 1120 (htt_tx_selfgen_ac_err_stats_tlv *)tag_buf; 1121 1122 DP_TRACE_STATS(FATAL, "HTT_TX_SELFGEN_AC_ERR_STATS_TLV:"); 1123 DP_TRACE_STATS(FATAL, "ac_su_ndp_err = %d", 1124 dp_stats_buf->ac_su_ndp_err); 1125 DP_TRACE_STATS(FATAL, "ac_su_ndpa_err = %d", 1126 dp_stats_buf->ac_su_ndpa_err); 1127 DP_TRACE_STATS(FATAL, "ac_mu_mimo_ndpa_err = %d", 1128 dp_stats_buf->ac_mu_mimo_ndpa_err); 1129 DP_TRACE_STATS(FATAL, "ac_mu_mimo_ndp_err = %d", 1130 dp_stats_buf->ac_mu_mimo_ndp_err); 1131 DP_TRACE_STATS(FATAL, "ac_mu_mimo_brp1_err = %d", 1132 dp_stats_buf->ac_mu_mimo_brp1_err); 1133 DP_TRACE_STATS(FATAL, "ac_mu_mimo_brp2_err = %d", 1134 dp_stats_buf->ac_mu_mimo_brp2_err); 1135 DP_TRACE_STATS(FATAL, "ac_mu_mimo_brp3_err = %d\n", 1136 dp_stats_buf->ac_mu_mimo_brp3_err); 1137 } 1138 1139 /* 1140 * dp_print_tx_selfgen_ax_err_stats_tlv: display htt_tx_selfgen_ax_err_stats_tlv 1141 * @tag_buf: buffer containing the tlv htt_tx_selfgen_ax_err_stats_tlv 1142 * 1143 * return:void 1144 */ 1145 static inline void dp_print_tx_selfgen_ax_err_stats_tlv(uint32_t *tag_buf) 1146 { 1147 htt_tx_selfgen_ax_err_stats_tlv *dp_stats_buf = 1148 (htt_tx_selfgen_ax_err_stats_tlv *)tag_buf; 1149 1150 DP_TRACE_STATS(FATAL, "HTT_TX_SELFGEN_AX_ERR_STATS_TLV:"); 1151 DP_TRACE_STATS(FATAL, "ax_su_ndp_err = %d", 1152 dp_stats_buf->ax_su_ndp_err); 1153 DP_TRACE_STATS(FATAL, "ax_su_ndpa_err = %d", 1154 dp_stats_buf->ax_su_ndpa_err); 1155 DP_TRACE_STATS(FATAL, "ax_mu_mimo_ndpa_err = %d", 1156 dp_stats_buf->ax_mu_mimo_ndpa_err); 1157 DP_TRACE_STATS(FATAL, "ax_mu_mimo_ndp_err = %d", 1158 dp_stats_buf->ax_mu_mimo_ndp_err); 1159 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brp1_err = %d", 1160 dp_stats_buf->ax_mu_mimo_brp1_err); 1161 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brp2_err = %d", 1162 dp_stats_buf->ax_mu_mimo_brp2_err); 1163 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brp3_err = %d", 1164 dp_stats_buf->ax_mu_mimo_brp3_err); 1165 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brp4_err = %d", 1166 dp_stats_buf->ax_mu_mimo_brp4_err); 1167 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brp5_err = %d", 1168 dp_stats_buf->ax_mu_mimo_brp5_err); 1169 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brp6_err = %d", 1170 dp_stats_buf->ax_mu_mimo_brp6_err); 1171 DP_TRACE_STATS(FATAL, "ax_mu_mimo_brp7_err = %d", 1172 dp_stats_buf->ax_mu_mimo_brp7_err); 1173 DP_TRACE_STATS(FATAL, "ax_basic_trigger_err = %d", 1174 dp_stats_buf->ax_basic_trigger_err); 1175 DP_TRACE_STATS(FATAL, "ax_bsr_trigger_err = %d", 1176 dp_stats_buf->ax_bsr_trigger_err); 1177 DP_TRACE_STATS(FATAL, "ax_mu_bar_trigger_err = %d", 1178 dp_stats_buf->ax_mu_bar_trigger_err); 1179 DP_TRACE_STATS(FATAL, "ax_mu_rts_trigger_err = %d\n", 1180 dp_stats_buf->ax_mu_rts_trigger_err); 1181 } 1182 1183 /* 1184 * dp_print_tx_pdev_mu_mimo_sch_stats_tlv: display htt_tx_pdev_mu_mimo_sch_stats 1185 * @tag_buf: buffer containing the tlv htt_tx_pdev_mu_mimo_sch_stats_tlv 1186 * 1187 * return:void 1188 */ 1189 static inline void dp_print_tx_pdev_mu_mimo_sch_stats_tlv(uint32_t *tag_buf) 1190 { 1191 htt_tx_pdev_mu_mimo_sch_stats_tlv *dp_stats_buf = 1192 (htt_tx_pdev_mu_mimo_sch_stats_tlv *)tag_buf; 1193 1194 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_MU_MIMO_SCH_STATS_TLV:"); 1195 DP_TRACE_STATS(FATAL, "mu_mimo_sch_posted = %d", 1196 dp_stats_buf->mu_mimo_sch_posted); 1197 DP_TRACE_STATS(FATAL, "mu_mimo_sch_failed = %d", 1198 dp_stats_buf->mu_mimo_sch_failed); 1199 DP_TRACE_STATS(FATAL, "mu_mimo_ppdu_posted = %d\n", 1200 dp_stats_buf->mu_mimo_ppdu_posted); 1201 } 1202 1203 /* 1204 * dp_print_tx_pdev_mu_mimo_mpdu_stats_tlv: display 1205 * htt_tx_pdev_mu_mimo_mpdu_stats_tlv 1206 * @tag_buf: buffer containing the tlv htt_tx_pdev_mu_mimo_mpdu_stats_tlv 1207 * 1208 * return:void 1209 */ 1210 static inline void dp_print_tx_pdev_mu_mimo_mpdu_stats_tlv(uint32_t *tag_buf) 1211 { 1212 htt_tx_pdev_mu_mimo_mpdu_stats_tlv *dp_stats_buf = 1213 (htt_tx_pdev_mu_mimo_mpdu_stats_tlv *)tag_buf; 1214 1215 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_MU_MIMO_MPDU_STATS_TLV:"); 1216 DP_TRACE_STATS(FATAL, "mu_mimo_mpdus_queued_usr = %d", 1217 dp_stats_buf->mu_mimo_mpdus_queued_usr); 1218 DP_TRACE_STATS(FATAL, "mu_mimo_mpdus_tried_usr = %d", 1219 dp_stats_buf->mu_mimo_mpdus_tried_usr); 1220 DP_TRACE_STATS(FATAL, "mu_mimo_mpdus_failed_usr = %d", 1221 dp_stats_buf->mu_mimo_mpdus_failed_usr); 1222 DP_TRACE_STATS(FATAL, "mu_mimo_mpdus_requeued_usr = %d", 1223 dp_stats_buf->mu_mimo_mpdus_requeued_usr); 1224 DP_TRACE_STATS(FATAL, "mu_mimo_err_no_ba_usr = %d", 1225 dp_stats_buf->mu_mimo_err_no_ba_usr); 1226 DP_TRACE_STATS(FATAL, "mu_mimo_mpdu_underrun_usr = %d", 1227 dp_stats_buf->mu_mimo_mpdu_underrun_usr); 1228 DP_TRACE_STATS(FATAL, "mu_mimo_ampdu_underrun_usr = %d\n", 1229 dp_stats_buf->mu_mimo_ampdu_underrun_usr); 1230 } 1231 1232 /* 1233 * dp_print_sched_txq_cmd_posted_tlv_v: display htt_sched_txq_cmd_posted_tlv_v 1234 * @tag_buf: buffer containing the tlv htt_sched_txq_cmd_posted_tlv_v 1235 * 1236 * return:void 1237 */ 1238 static inline void dp_print_sched_txq_cmd_posted_tlv_v(uint32_t *tag_buf) 1239 { 1240 htt_sched_txq_cmd_posted_tlv_v *dp_stats_buf = 1241 (htt_sched_txq_cmd_posted_tlv_v *)tag_buf; 1242 uint8_t i; 1243 uint16_t index = 0; 1244 char sched_cmd_posted[DP_MAX_STRING_LEN]; 1245 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 1246 1247 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_PDEV_SCHED_TX_MODE_MAX); 1248 1249 DP_TRACE_STATS(FATAL, "HTT_SCHED_TXQ_CMD_POSTED_TLV_V:"); 1250 for (i = 0; i < tag_len; i++) { 1251 index += qdf_snprint(&sched_cmd_posted[index], 1252 DP_MAX_STRING_LEN - index, 1253 " %d:%d,", i, 1254 dp_stats_buf->sched_cmd_posted[i]); 1255 } 1256 DP_TRACE_STATS(FATAL, "sched_cmd_posted = %s\n", sched_cmd_posted); 1257 } 1258 1259 /* 1260 * dp_print_sched_txq_cmd_reaped_tlv_v: display htt_sched_txq_cmd_reaped_tlv_v 1261 * @tag_buf: buffer containing the tlv htt_sched_txq_cmd_reaped_tlv_v 1262 * 1263 * return:void 1264 */ 1265 static inline void dp_print_sched_txq_cmd_reaped_tlv_v(uint32_t *tag_buf) 1266 { 1267 htt_sched_txq_cmd_reaped_tlv_v *dp_stats_buf = 1268 (htt_sched_txq_cmd_reaped_tlv_v *)tag_buf; 1269 uint8_t i; 1270 uint16_t index = 0; 1271 char sched_cmd_reaped[DP_MAX_STRING_LEN]; 1272 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 1273 1274 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_PDEV_SCHED_TX_MODE_MAX); 1275 1276 DP_TRACE_STATS(FATAL, "HTT_SCHED_TXQ_CMD_REAPED_TLV_V:"); 1277 for (i = 0; i < tag_len; i++) { 1278 index += qdf_snprint(&sched_cmd_reaped[index], 1279 DP_MAX_STRING_LEN - index, 1280 " %d:%d,", i, 1281 dp_stats_buf->sched_cmd_reaped[i]); 1282 } 1283 DP_TRACE_STATS(FATAL, "sched_cmd_reaped = %s\n", sched_cmd_reaped); 1284 } 1285 1286 /* 1287 * dp_print_tx_pdev_stats_sched_per_txq_tlv: display 1288 * htt_tx_pdev_stats_sched_per_txq_tlv 1289 * @tag_buf: buffer containing the tlv htt_tx_pdev_stats_sched_per_txq_tlv 1290 * 1291 * return:void 1292 */ 1293 static inline void dp_print_tx_pdev_stats_sched_per_txq_tlv(uint32_t *tag_buf) 1294 { 1295 htt_tx_pdev_stats_sched_per_txq_tlv *dp_stats_buf = 1296 (htt_tx_pdev_stats_sched_per_txq_tlv *)tag_buf; 1297 1298 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TLV:"); 1299 DP_TRACE_STATS(FATAL, "mac_id__txq_id__word = %d", 1300 dp_stats_buf->mac_id__txq_id__word); 1301 DP_TRACE_STATS(FATAL, "sched_policy = %d", 1302 dp_stats_buf->sched_policy); 1303 DP_TRACE_STATS(FATAL, "last_sched_cmd_posted_timestamp = %d", 1304 dp_stats_buf->last_sched_cmd_posted_timestamp); 1305 DP_TRACE_STATS(FATAL, "last_sched_cmd_compl_timestamp = %d", 1306 dp_stats_buf->last_sched_cmd_compl_timestamp); 1307 DP_TRACE_STATS(FATAL, "sched_2_tac_lwm_count = %d", 1308 dp_stats_buf->sched_2_tac_lwm_count); 1309 DP_TRACE_STATS(FATAL, "sched_2_tac_ring_full = %d", 1310 dp_stats_buf->sched_2_tac_ring_full); 1311 DP_TRACE_STATS(FATAL, "sched_cmd_post_failure = %d", 1312 dp_stats_buf->sched_cmd_post_failure); 1313 DP_TRACE_STATS(FATAL, "num_active_tids = %d", 1314 dp_stats_buf->num_active_tids); 1315 DP_TRACE_STATS(FATAL, "num_ps_schedules = %d", 1316 dp_stats_buf->num_ps_schedules); 1317 DP_TRACE_STATS(FATAL, "sched_cmds_pending = %d", 1318 dp_stats_buf->sched_cmds_pending); 1319 DP_TRACE_STATS(FATAL, "num_tid_register = %d", 1320 dp_stats_buf->num_tid_register); 1321 DP_TRACE_STATS(FATAL, "num_tid_unregister = %d", 1322 dp_stats_buf->num_tid_unregister); 1323 DP_TRACE_STATS(FATAL, "num_qstats_queried = %d", 1324 dp_stats_buf->num_qstats_queried); 1325 DP_TRACE_STATS(FATAL, "qstats_update_pending = %d", 1326 dp_stats_buf->qstats_update_pending); 1327 DP_TRACE_STATS(FATAL, "last_qstats_query_timestamp = %d", 1328 dp_stats_buf->last_qstats_query_timestamp); 1329 DP_TRACE_STATS(FATAL, "num_tqm_cmdq_full = %d", 1330 dp_stats_buf->num_tqm_cmdq_full); 1331 DP_TRACE_STATS(FATAL, "num_de_sched_algo_trigger = %d", 1332 dp_stats_buf->num_de_sched_algo_trigger); 1333 DP_TRACE_STATS(FATAL, "num_rt_sched_algo_trigger = %d", 1334 dp_stats_buf->num_rt_sched_algo_trigger); 1335 DP_TRACE_STATS(FATAL, "num_tqm_sched_algo_trigger = %d", 1336 dp_stats_buf->num_tqm_sched_algo_trigger); 1337 DP_TRACE_STATS(FATAL, "notify_sched = %d\n", 1338 dp_stats_buf->notify_sched); 1339 } 1340 1341 /* 1342 * dp_print_stats_tx_sched_cmn_tlv: display htt_stats_tx_sched_cmn_tlv 1343 * @tag_buf: buffer containing the tlv htt_stats_tx_sched_cmn_tlv 1344 * 1345 * return:void 1346 */ 1347 static inline void dp_print_stats_tx_sched_cmn_tlv(uint32_t *tag_buf) 1348 { 1349 htt_stats_tx_sched_cmn_tlv *dp_stats_buf = 1350 (htt_stats_tx_sched_cmn_tlv *)tag_buf; 1351 1352 DP_TRACE_STATS(FATAL, "HTT_STATS_TX_SCHED_CMN_TLV:"); 1353 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 1354 dp_stats_buf->mac_id__word); 1355 DP_TRACE_STATS(FATAL, "current_timestamp = %d\n", 1356 dp_stats_buf->current_timestamp); 1357 } 1358 1359 /* 1360 * dp_print_tx_tqm_gen_mpdu_stats_tlv_v: display htt_tx_tqm_gen_mpdu_stats_tlv_v 1361 * @tag_buf: buffer containing the tlv htt_tx_tqm_gen_mpdu_stats_tlv_v 1362 * 1363 * return:void 1364 */ 1365 static inline void dp_print_tx_tqm_gen_mpdu_stats_tlv_v(uint32_t *tag_buf) 1366 { 1367 htt_tx_tqm_gen_mpdu_stats_tlv_v *dp_stats_buf = 1368 (htt_tx_tqm_gen_mpdu_stats_tlv_v *)tag_buf; 1369 uint8_t i; 1370 uint16_t index = 0; 1371 char gen_mpdu_end_reason[DP_MAX_STRING_LEN]; 1372 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 1373 1374 tag_len = qdf_min(tag_len, 1375 (uint32_t)HTT_TX_TQM_MAX_GEN_MPDU_END_REASON); 1376 1377 DP_TRACE_STATS(FATAL, "HTT_TX_TQM_GEN_MPDU_STATS_TLV_V:"); 1378 for (i = 0; i < tag_len; i++) { 1379 index += qdf_snprint(&gen_mpdu_end_reason[index], 1380 DP_MAX_STRING_LEN - index, 1381 " %d:%d,", i, 1382 dp_stats_buf->gen_mpdu_end_reason[i]); 1383 } 1384 DP_TRACE_STATS(FATAL, "gen_mpdu_end_reason = %s\n", gen_mpdu_end_reason); 1385 } 1386 1387 /* 1388 * dp_print_tx_tqm_list_mpdu_stats_tlv_v: display htt_tx_tqm_list_mpdu_stats_tlv 1389 * @tag_buf: buffer containing the tlv htt_tx_tqm_list_mpdu_stats_tlv_v 1390 * 1391 * return:void 1392 */ 1393 static inline void dp_print_tx_tqm_list_mpdu_stats_tlv_v(uint32_t *tag_buf) 1394 { 1395 htt_tx_tqm_list_mpdu_stats_tlv_v *dp_stats_buf = 1396 (htt_tx_tqm_list_mpdu_stats_tlv_v *)tag_buf; 1397 uint8_t i; 1398 uint16_t index = 0; 1399 char list_mpdu_end_reason[DP_MAX_STRING_LEN]; 1400 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 1401 1402 tag_len = qdf_min(tag_len, 1403 (uint32_t)HTT_TX_TQM_MAX_LIST_MPDU_END_REASON); 1404 1405 DP_TRACE_STATS(FATAL, "HTT_TX_TQM_LIST_MPDU_STATS_TLV_V:"); 1406 for (i = 0; i < tag_len; i++) { 1407 index += qdf_snprint(&list_mpdu_end_reason[index], 1408 DP_MAX_STRING_LEN - index, 1409 " %d:%d,", i, 1410 dp_stats_buf->list_mpdu_end_reason[i]); 1411 } 1412 DP_TRACE_STATS(FATAL, "list_mpdu_end_reason = %s\n", 1413 list_mpdu_end_reason); 1414 } 1415 1416 /* 1417 * dp_print_tx_tqm_list_mpdu_cnt_tlv_v: display htt_tx_tqm_list_mpdu_cnt_tlv_v 1418 * @tag_buf: buffer containing the tlv htt_tx_tqm_list_mpdu_cnt_tlv_v 1419 * 1420 * return:void 1421 */ 1422 static inline void dp_print_tx_tqm_list_mpdu_cnt_tlv_v(uint32_t *tag_buf) 1423 { 1424 htt_tx_tqm_list_mpdu_cnt_tlv_v *dp_stats_buf = 1425 (htt_tx_tqm_list_mpdu_cnt_tlv_v *)tag_buf; 1426 uint8_t i; 1427 uint16_t index = 0; 1428 char list_mpdu_cnt_hist[DP_MAX_STRING_LEN]; 1429 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 1430 1431 tag_len = qdf_min(tag_len, 1432 (uint32_t)HTT_TX_TQM_MAX_LIST_MPDU_CNT_HISTOGRAM_BINS); 1433 1434 DP_TRACE_STATS(FATAL, "HTT_TX_TQM_LIST_MPDU_CNT_TLV_V:"); 1435 for (i = 0; i < tag_len; i++) { 1436 index += qdf_snprint(&list_mpdu_cnt_hist[index], 1437 DP_MAX_STRING_LEN - index, 1438 " %d:%d,", i, 1439 dp_stats_buf->list_mpdu_cnt_hist[i]); 1440 } 1441 DP_TRACE_STATS(FATAL, "list_mpdu_cnt_hist = %s\n", list_mpdu_cnt_hist); 1442 } 1443 1444 /* 1445 * dp_print_tx_tqm_pdev_stats_tlv_v: display htt_tx_tqm_pdev_stats_tlv_v 1446 * @tag_buf: buffer containing the tlv htt_tx_tqm_pdev_stats_tlv_v 1447 * 1448 * return:void 1449 */ 1450 static inline void dp_print_tx_tqm_pdev_stats_tlv_v(uint32_t *tag_buf) 1451 { 1452 htt_tx_tqm_pdev_stats_tlv_v *dp_stats_buf = 1453 (htt_tx_tqm_pdev_stats_tlv_v *)tag_buf; 1454 1455 DP_TRACE_STATS(FATAL, "HTT_TX_TQM_PDEV_STATS_TLV_V:"); 1456 DP_TRACE_STATS(FATAL, "msdu_count = %d", 1457 dp_stats_buf->msdu_count); 1458 DP_TRACE_STATS(FATAL, "mpdu_count = %d", 1459 dp_stats_buf->mpdu_count); 1460 DP_TRACE_STATS(FATAL, "remove_msdu = %d", 1461 dp_stats_buf->remove_msdu); 1462 DP_TRACE_STATS(FATAL, "remove_mpdu = %d", 1463 dp_stats_buf->remove_mpdu); 1464 DP_TRACE_STATS(FATAL, "remove_msdu_ttl = %d", 1465 dp_stats_buf->remove_msdu_ttl); 1466 DP_TRACE_STATS(FATAL, "send_bar = %d", 1467 dp_stats_buf->send_bar); 1468 DP_TRACE_STATS(FATAL, "bar_sync = %d", 1469 dp_stats_buf->bar_sync); 1470 DP_TRACE_STATS(FATAL, "notify_mpdu = %d", 1471 dp_stats_buf->notify_mpdu); 1472 DP_TRACE_STATS(FATAL, "sync_cmd = %d", 1473 dp_stats_buf->sync_cmd); 1474 DP_TRACE_STATS(FATAL, "write_cmd = %d", 1475 dp_stats_buf->write_cmd); 1476 DP_TRACE_STATS(FATAL, "hwsch_trigger = %d", 1477 dp_stats_buf->hwsch_trigger); 1478 DP_TRACE_STATS(FATAL, "ack_tlv_proc = %d", 1479 dp_stats_buf->ack_tlv_proc); 1480 DP_TRACE_STATS(FATAL, "gen_mpdu_cmd = %d", 1481 dp_stats_buf->gen_mpdu_cmd); 1482 DP_TRACE_STATS(FATAL, "gen_list_cmd = %d", 1483 dp_stats_buf->gen_list_cmd); 1484 DP_TRACE_STATS(FATAL, "remove_mpdu_cmd = %d", 1485 dp_stats_buf->remove_mpdu_cmd); 1486 DP_TRACE_STATS(FATAL, "remove_mpdu_tried_cmd = %d", 1487 dp_stats_buf->remove_mpdu_tried_cmd); 1488 DP_TRACE_STATS(FATAL, "mpdu_queue_stats_cmd = %d", 1489 dp_stats_buf->mpdu_queue_stats_cmd); 1490 DP_TRACE_STATS(FATAL, "mpdu_head_info_cmd = %d", 1491 dp_stats_buf->mpdu_head_info_cmd); 1492 DP_TRACE_STATS(FATAL, "msdu_flow_stats_cmd = %d", 1493 dp_stats_buf->msdu_flow_stats_cmd); 1494 DP_TRACE_STATS(FATAL, "remove_msdu_cmd = %d", 1495 dp_stats_buf->remove_msdu_cmd); 1496 DP_TRACE_STATS(FATAL, "remove_msdu_ttl_cmd = %d", 1497 dp_stats_buf->remove_msdu_ttl_cmd); 1498 DP_TRACE_STATS(FATAL, "flush_cache_cmd = %d", 1499 dp_stats_buf->flush_cache_cmd); 1500 DP_TRACE_STATS(FATAL, "update_mpduq_cmd = %d", 1501 dp_stats_buf->update_mpduq_cmd); 1502 DP_TRACE_STATS(FATAL, "enqueue = %d", 1503 dp_stats_buf->enqueue); 1504 DP_TRACE_STATS(FATAL, "enqueue_notify = %d", 1505 dp_stats_buf->enqueue_notify); 1506 DP_TRACE_STATS(FATAL, "notify_mpdu_at_head = %d", 1507 dp_stats_buf->notify_mpdu_at_head); 1508 DP_TRACE_STATS(FATAL, "notify_mpdu_state_valid = %d\n", 1509 dp_stats_buf->notify_mpdu_state_valid); 1510 } 1511 1512 /* 1513 * dp_print_tx_tqm_cmn_stats_tlv: display htt_tx_tqm_cmn_stats_tlv 1514 * @tag_buf: buffer containing the tlv htt_tx_tqm_cmn_stats_tlv 1515 * 1516 * return:void 1517 */ 1518 static inline void dp_print_tx_tqm_cmn_stats_tlv(uint32_t *tag_buf) 1519 { 1520 htt_tx_tqm_cmn_stats_tlv *dp_stats_buf = 1521 (htt_tx_tqm_cmn_stats_tlv *)tag_buf; 1522 1523 DP_TRACE_STATS(FATAL, "HTT_TX_TQM_CMN_STATS_TLV:"); 1524 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 1525 dp_stats_buf->mac_id__word); 1526 DP_TRACE_STATS(FATAL, "max_cmdq_id = %d", 1527 dp_stats_buf->max_cmdq_id); 1528 DP_TRACE_STATS(FATAL, "list_mpdu_cnt_hist_intvl = %d", 1529 dp_stats_buf->list_mpdu_cnt_hist_intvl); 1530 DP_TRACE_STATS(FATAL, "add_msdu = %d", 1531 dp_stats_buf->add_msdu); 1532 DP_TRACE_STATS(FATAL, "q_empty = %d", 1533 dp_stats_buf->q_empty); 1534 DP_TRACE_STATS(FATAL, "q_not_empty = %d", 1535 dp_stats_buf->q_not_empty); 1536 DP_TRACE_STATS(FATAL, "drop_notification = %d", 1537 dp_stats_buf->drop_notification); 1538 DP_TRACE_STATS(FATAL, "desc_threshold = %d\n", 1539 dp_stats_buf->desc_threshold); 1540 } 1541 1542 /* 1543 * dp_print_tx_tqm_error_stats_tlv: display htt_tx_tqm_error_stats_tlv 1544 * @tag_buf: buffer containing the tlv htt_tx_tqm_error_stats_tlv 1545 * 1546 * return:void 1547 */ 1548 static inline void dp_print_tx_tqm_error_stats_tlv(uint32_t *tag_buf) 1549 { 1550 htt_tx_tqm_error_stats_tlv *dp_stats_buf = 1551 (htt_tx_tqm_error_stats_tlv *)tag_buf; 1552 1553 DP_TRACE_STATS(FATAL, "HTT_TX_TQM_ERROR_STATS_TLV:"); 1554 DP_TRACE_STATS(FATAL, "q_empty_failure = %d", 1555 dp_stats_buf->q_empty_failure); 1556 DP_TRACE_STATS(FATAL, "q_not_empty_failure = %d", 1557 dp_stats_buf->q_not_empty_failure); 1558 DP_TRACE_STATS(FATAL, "add_msdu_failure = %d\n", 1559 dp_stats_buf->add_msdu_failure); 1560 } 1561 1562 /* 1563 * dp_print_tx_tqm_cmdq_status_tlv: display htt_tx_tqm_cmdq_status_tlv 1564 * @tag_buf: buffer containing the tlv htt_tx_tqm_cmdq_status_tlv 1565 * 1566 * return:void 1567 */ 1568 static inline void dp_print_tx_tqm_cmdq_status_tlv(uint32_t *tag_buf) 1569 { 1570 htt_tx_tqm_cmdq_status_tlv *dp_stats_buf = 1571 (htt_tx_tqm_cmdq_status_tlv *)tag_buf; 1572 1573 DP_TRACE_STATS(FATAL, "HTT_TX_TQM_CMDQ_STATUS_TLV:"); 1574 DP_TRACE_STATS(FATAL, "mac_id__cmdq_id__word = %d", 1575 dp_stats_buf->mac_id__cmdq_id__word); 1576 DP_TRACE_STATS(FATAL, "sync_cmd = %d", 1577 dp_stats_buf->sync_cmd); 1578 DP_TRACE_STATS(FATAL, "write_cmd = %d", 1579 dp_stats_buf->write_cmd); 1580 DP_TRACE_STATS(FATAL, "gen_mpdu_cmd = %d", 1581 dp_stats_buf->gen_mpdu_cmd); 1582 DP_TRACE_STATS(FATAL, "mpdu_queue_stats_cmd = %d", 1583 dp_stats_buf->mpdu_queue_stats_cmd); 1584 DP_TRACE_STATS(FATAL, "mpdu_head_info_cmd = %d", 1585 dp_stats_buf->mpdu_head_info_cmd); 1586 DP_TRACE_STATS(FATAL, "msdu_flow_stats_cmd = %d", 1587 dp_stats_buf->msdu_flow_stats_cmd); 1588 DP_TRACE_STATS(FATAL, "remove_mpdu_cmd = %d", 1589 dp_stats_buf->remove_mpdu_cmd); 1590 DP_TRACE_STATS(FATAL, "remove_msdu_cmd = %d", 1591 dp_stats_buf->remove_msdu_cmd); 1592 DP_TRACE_STATS(FATAL, "flush_cache_cmd = %d", 1593 dp_stats_buf->flush_cache_cmd); 1594 DP_TRACE_STATS(FATAL, "update_mpduq_cmd = %d", 1595 dp_stats_buf->update_mpduq_cmd); 1596 DP_TRACE_STATS(FATAL, "update_msduq_cmd = %d\n", 1597 dp_stats_buf->update_msduq_cmd); 1598 } 1599 1600 /* 1601 * dp_print_tx_de_eapol_packets_stats_tlv: display htt_tx_de_eapol_packets_stats 1602 * @tag_buf: buffer containing the tlv htt_tx_de_eapol_packets_stats_tlv 1603 * 1604 * return:void 1605 */ 1606 static inline void dp_print_tx_de_eapol_packets_stats_tlv(uint32_t *tag_buf) 1607 { 1608 htt_tx_de_eapol_packets_stats_tlv *dp_stats_buf = 1609 (htt_tx_de_eapol_packets_stats_tlv *)tag_buf; 1610 1611 DP_TRACE_STATS(FATAL, "HTT_TX_DE_EAPOL_PACKETS_STATS_TLV:"); 1612 DP_TRACE_STATS(FATAL, "m1_packets = %d", 1613 dp_stats_buf->m1_packets); 1614 DP_TRACE_STATS(FATAL, "m2_packets = %d", 1615 dp_stats_buf->m2_packets); 1616 DP_TRACE_STATS(FATAL, "m3_packets = %d", 1617 dp_stats_buf->m3_packets); 1618 DP_TRACE_STATS(FATAL, "m4_packets = %d", 1619 dp_stats_buf->m4_packets); 1620 DP_TRACE_STATS(FATAL, "g1_packets = %d", 1621 dp_stats_buf->g1_packets); 1622 DP_TRACE_STATS(FATAL, "g2_packets = %d\n", 1623 dp_stats_buf->g2_packets); 1624 } 1625 1626 /* 1627 * dp_print_tx_de_classify_failed_stats_tlv: display 1628 * htt_tx_de_classify_failed_stats_tlv 1629 * @tag_buf: buffer containing the tlv htt_tx_de_classify_failed_stats_tlv 1630 * 1631 * return:void 1632 */ 1633 static inline void dp_print_tx_de_classify_failed_stats_tlv(uint32_t *tag_buf) 1634 { 1635 htt_tx_de_classify_failed_stats_tlv *dp_stats_buf = 1636 (htt_tx_de_classify_failed_stats_tlv *)tag_buf; 1637 1638 DP_TRACE_STATS(FATAL, "HTT_TX_DE_CLASSIFY_FAILED_STATS_TLV:"); 1639 DP_TRACE_STATS(FATAL, "ap_bss_peer_not_found = %d", 1640 dp_stats_buf->ap_bss_peer_not_found); 1641 DP_TRACE_STATS(FATAL, "ap_bcast_mcast_no_peer = %d", 1642 dp_stats_buf->ap_bcast_mcast_no_peer); 1643 DP_TRACE_STATS(FATAL, "sta_delete_in_progress = %d", 1644 dp_stats_buf->sta_delete_in_progress); 1645 DP_TRACE_STATS(FATAL, "ibss_no_bss_peer = %d", 1646 dp_stats_buf->ibss_no_bss_peer); 1647 DP_TRACE_STATS(FATAL, "invaild_vdev_type = %d", 1648 dp_stats_buf->invaild_vdev_type); 1649 DP_TRACE_STATS(FATAL, "invalid_ast_peer_entry = %d", 1650 dp_stats_buf->invalid_ast_peer_entry); 1651 DP_TRACE_STATS(FATAL, "peer_entry_invalid = %d", 1652 dp_stats_buf->peer_entry_invalid); 1653 DP_TRACE_STATS(FATAL, "ethertype_not_ip = %d", 1654 dp_stats_buf->ethertype_not_ip); 1655 DP_TRACE_STATS(FATAL, "eapol_lookup_failed = %d", 1656 dp_stats_buf->eapol_lookup_failed); 1657 DP_TRACE_STATS(FATAL, "qpeer_not_allow_data = %d", 1658 dp_stats_buf->qpeer_not_allow_data); 1659 DP_TRACE_STATS(FATAL, "fse_tid_override = %d\n", 1660 dp_stats_buf->fse_tid_override); 1661 } 1662 1663 /* 1664 * dp_print_tx_de_classify_stats_tlv: display htt_tx_de_classify_stats_tlv 1665 * @tag_buf: buffer containing the tlv htt_tx_de_classify_stats_tlv 1666 * 1667 * return:void 1668 */ 1669 static inline void dp_print_tx_de_classify_stats_tlv(uint32_t *tag_buf) 1670 { 1671 htt_tx_de_classify_stats_tlv *dp_stats_buf = 1672 (htt_tx_de_classify_stats_tlv *)tag_buf; 1673 1674 DP_TRACE_STATS(FATAL, "HTT_TX_DE_CLASSIFY_STATS_TLV:"); 1675 DP_TRACE_STATS(FATAL, "arp_packets = %d", 1676 dp_stats_buf->arp_packets); 1677 DP_TRACE_STATS(FATAL, "igmp_packets = %d", 1678 dp_stats_buf->igmp_packets); 1679 DP_TRACE_STATS(FATAL, "dhcp_packets = %d", 1680 dp_stats_buf->dhcp_packets); 1681 DP_TRACE_STATS(FATAL, "host_inspected = %d", 1682 dp_stats_buf->host_inspected); 1683 DP_TRACE_STATS(FATAL, "htt_included = %d", 1684 dp_stats_buf->htt_included); 1685 DP_TRACE_STATS(FATAL, "htt_valid_mcs = %d", 1686 dp_stats_buf->htt_valid_mcs); 1687 DP_TRACE_STATS(FATAL, "htt_valid_nss = %d", 1688 dp_stats_buf->htt_valid_nss); 1689 DP_TRACE_STATS(FATAL, "htt_valid_preamble_type = %d", 1690 dp_stats_buf->htt_valid_preamble_type); 1691 DP_TRACE_STATS(FATAL, "htt_valid_chainmask = %d", 1692 dp_stats_buf->htt_valid_chainmask); 1693 DP_TRACE_STATS(FATAL, "htt_valid_guard_interval = %d", 1694 dp_stats_buf->htt_valid_guard_interval); 1695 DP_TRACE_STATS(FATAL, "htt_valid_retries = %d", 1696 dp_stats_buf->htt_valid_retries); 1697 DP_TRACE_STATS(FATAL, "htt_valid_bw_info = %d", 1698 dp_stats_buf->htt_valid_bw_info); 1699 DP_TRACE_STATS(FATAL, "htt_valid_power = %d", 1700 dp_stats_buf->htt_valid_power); 1701 DP_TRACE_STATS(FATAL, "htt_valid_key_flags = %d", 1702 dp_stats_buf->htt_valid_key_flags); 1703 DP_TRACE_STATS(FATAL, "htt_valid_no_encryption = %d", 1704 dp_stats_buf->htt_valid_no_encryption); 1705 DP_TRACE_STATS(FATAL, "fse_entry_count = %d", 1706 dp_stats_buf->fse_entry_count); 1707 DP_TRACE_STATS(FATAL, "fse_priority_be = %d", 1708 dp_stats_buf->fse_priority_be); 1709 DP_TRACE_STATS(FATAL, "fse_priority_high = %d", 1710 dp_stats_buf->fse_priority_high); 1711 DP_TRACE_STATS(FATAL, "fse_priority_low = %d", 1712 dp_stats_buf->fse_priority_low); 1713 DP_TRACE_STATS(FATAL, "fse_traffic_ptrn_be = %d", 1714 dp_stats_buf->fse_traffic_ptrn_be); 1715 DP_TRACE_STATS(FATAL, "fse_traffic_ptrn_over_sub = %d", 1716 dp_stats_buf->fse_traffic_ptrn_over_sub); 1717 DP_TRACE_STATS(FATAL, "fse_traffic_ptrn_bursty = %d", 1718 dp_stats_buf->fse_traffic_ptrn_bursty); 1719 DP_TRACE_STATS(FATAL, "fse_traffic_ptrn_interactive = %d", 1720 dp_stats_buf->fse_traffic_ptrn_interactive); 1721 DP_TRACE_STATS(FATAL, "fse_traffic_ptrn_periodic = %d", 1722 dp_stats_buf->fse_traffic_ptrn_periodic); 1723 DP_TRACE_STATS(FATAL, "fse_hwqueue_alloc = %d", 1724 dp_stats_buf->fse_hwqueue_alloc); 1725 DP_TRACE_STATS(FATAL, "fse_hwqueue_created = %d", 1726 dp_stats_buf->fse_hwqueue_created); 1727 DP_TRACE_STATS(FATAL, "fse_hwqueue_send_to_host = %d", 1728 dp_stats_buf->fse_hwqueue_send_to_host); 1729 DP_TRACE_STATS(FATAL, "mcast_entry = %d", 1730 dp_stats_buf->mcast_entry); 1731 DP_TRACE_STATS(FATAL, "bcast_entry = %d\n", 1732 dp_stats_buf->bcast_entry); 1733 } 1734 1735 /* 1736 * dp_print_tx_de_classify_status_stats_tlv: display 1737 * htt_tx_de_classify_status_stats_tlv 1738 * @tag_buf: buffer containing the tlv htt_tx_de_classify_status_stats_tlv 1739 * 1740 * return:void 1741 */ 1742 static inline void dp_print_tx_de_classify_status_stats_tlv(uint32_t *tag_buf) 1743 { 1744 htt_tx_de_classify_status_stats_tlv *dp_stats_buf = 1745 (htt_tx_de_classify_status_stats_tlv *)tag_buf; 1746 1747 DP_TRACE_STATS(FATAL, "HTT_TX_DE_CLASSIFY_STATUS_STATS_TLV:"); 1748 DP_TRACE_STATS(FATAL, "eok = %d", 1749 dp_stats_buf->eok); 1750 DP_TRACE_STATS(FATAL, "classify_done = %d", 1751 dp_stats_buf->classify_done); 1752 DP_TRACE_STATS(FATAL, "lookup_failed = %d", 1753 dp_stats_buf->lookup_failed); 1754 DP_TRACE_STATS(FATAL, "send_host_dhcp = %d", 1755 dp_stats_buf->send_host_dhcp); 1756 DP_TRACE_STATS(FATAL, "send_host_mcast = %d", 1757 dp_stats_buf->send_host_mcast); 1758 DP_TRACE_STATS(FATAL, "send_host_unknown_dest = %d", 1759 dp_stats_buf->send_host_unknown_dest); 1760 DP_TRACE_STATS(FATAL, "send_host = %d", 1761 dp_stats_buf->send_host); 1762 DP_TRACE_STATS(FATAL, "status_invalid = %d\n", 1763 dp_stats_buf->status_invalid); 1764 } 1765 1766 /* 1767 * dp_print_tx_de_enqueue_packets_stats_tlv: display 1768 * htt_tx_de_enqueue_packets_stats_tlv 1769 * @tag_buf: buffer containing the tlv htt_tx_de_enqueue_packets_stats_tlv 1770 * 1771 * return:void 1772 */ 1773 static inline void dp_print_tx_de_enqueue_packets_stats_tlv(uint32_t *tag_buf) 1774 { 1775 htt_tx_de_enqueue_packets_stats_tlv *dp_stats_buf = 1776 (htt_tx_de_enqueue_packets_stats_tlv *)tag_buf; 1777 1778 DP_TRACE_STATS(FATAL, "HTT_TX_DE_ENQUEUE_PACKETS_STATS_TLV:"); 1779 DP_TRACE_STATS(FATAL, "enqueued_pkts = %d", 1780 dp_stats_buf->enqueued_pkts); 1781 DP_TRACE_STATS(FATAL, "to_tqm = %d", 1782 dp_stats_buf->to_tqm); 1783 DP_TRACE_STATS(FATAL, "to_tqm_bypass = %d\n", 1784 dp_stats_buf->to_tqm_bypass); 1785 } 1786 1787 /* 1788 * dp_print_tx_de_enqueue_discard_stats_tlv: display 1789 * htt_tx_de_enqueue_discard_stats_tlv 1790 * @tag_buf: buffer containing the tlv htt_tx_de_enqueue_discard_stats_tlv 1791 * 1792 * return:void 1793 */ 1794 static inline void dp_print_tx_de_enqueue_discard_stats_tlv(uint32_t *tag_buf) 1795 { 1796 htt_tx_de_enqueue_discard_stats_tlv *dp_stats_buf = 1797 (htt_tx_de_enqueue_discard_stats_tlv *)tag_buf; 1798 1799 DP_TRACE_STATS(FATAL, "HTT_TX_DE_ENQUEUE_DISCARD_STATS_TLV:"); 1800 DP_TRACE_STATS(FATAL, "discarded_pkts = %d", 1801 dp_stats_buf->discarded_pkts); 1802 DP_TRACE_STATS(FATAL, "local_frames = %d", 1803 dp_stats_buf->local_frames); 1804 DP_TRACE_STATS(FATAL, "is_ext_msdu = %d\n", 1805 dp_stats_buf->is_ext_msdu); 1806 } 1807 1808 /* 1809 * dp_print_tx_de_compl_stats_tlv: display htt_tx_de_compl_stats_tlv 1810 * @tag_buf: buffer containing the tlv htt_tx_de_compl_stats_tlv 1811 * 1812 * return:void 1813 */ 1814 static inline void dp_print_tx_de_compl_stats_tlv(uint32_t *tag_buf) 1815 { 1816 htt_tx_de_compl_stats_tlv *dp_stats_buf = 1817 (htt_tx_de_compl_stats_tlv *)tag_buf; 1818 1819 DP_TRACE_STATS(FATAL, "HTT_TX_DE_COMPL_STATS_TLV:"); 1820 DP_TRACE_STATS(FATAL, "tcl_dummy_frame = %d", 1821 dp_stats_buf->tcl_dummy_frame); 1822 DP_TRACE_STATS(FATAL, "tqm_dummy_frame = %d", 1823 dp_stats_buf->tqm_dummy_frame); 1824 DP_TRACE_STATS(FATAL, "tqm_notify_frame = %d", 1825 dp_stats_buf->tqm_notify_frame); 1826 DP_TRACE_STATS(FATAL, "fw2wbm_enq = %d", 1827 dp_stats_buf->fw2wbm_enq); 1828 DP_TRACE_STATS(FATAL, "tqm_bypass_frame = %d\n", 1829 dp_stats_buf->tqm_bypass_frame); 1830 } 1831 1832 /* 1833 * dp_print_tx_de_cmn_stats_tlv: display htt_tx_de_cmn_stats_tlv 1834 * @tag_buf: buffer containing the tlv htt_tx_de_cmn_stats_tlv 1835 * 1836 * return:void 1837 */ 1838 static inline void dp_print_tx_de_cmn_stats_tlv(uint32_t *tag_buf) 1839 { 1840 htt_tx_de_cmn_stats_tlv *dp_stats_buf = 1841 (htt_tx_de_cmn_stats_tlv *)tag_buf; 1842 1843 DP_TRACE_STATS(FATAL, "HTT_TX_DE_CMN_STATS_TLV:"); 1844 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 1845 dp_stats_buf->mac_id__word); 1846 DP_TRACE_STATS(FATAL, "tcl2fw_entry_count = %d", 1847 dp_stats_buf->tcl2fw_entry_count); 1848 DP_TRACE_STATS(FATAL, "not_to_fw = %d", 1849 dp_stats_buf->not_to_fw); 1850 DP_TRACE_STATS(FATAL, "invalid_pdev_vdev_peer = %d", 1851 dp_stats_buf->invalid_pdev_vdev_peer); 1852 DP_TRACE_STATS(FATAL, "tcl_res_invalid_addrx = %d", 1853 dp_stats_buf->tcl_res_invalid_addrx); 1854 DP_TRACE_STATS(FATAL, "wbm2fw_entry_count = %d", 1855 dp_stats_buf->wbm2fw_entry_count); 1856 DP_TRACE_STATS(FATAL, "invalid_pdev = %d\n", 1857 dp_stats_buf->invalid_pdev); 1858 } 1859 1860 /* 1861 * dp_print_ring_if_stats_tlv: display htt_ring_if_stats_tlv 1862 * @tag_buf: buffer containing the tlv htt_ring_if_stats_tlv 1863 * 1864 * return:void 1865 */ 1866 static inline void dp_print_ring_if_stats_tlv(uint32_t *tag_buf) 1867 { 1868 htt_ring_if_stats_tlv *dp_stats_buf = 1869 (htt_ring_if_stats_tlv *)tag_buf; 1870 uint8_t i; 1871 uint16_t index = 0; 1872 char low_wm_hit_count[DP_MAX_STRING_LEN]; 1873 char high_wm_hit_count[DP_MAX_STRING_LEN]; 1874 1875 DP_TRACE_STATS(FATAL, "HTT_RING_IF_STATS_TLV:"); 1876 DP_TRACE_STATS(FATAL, "base_addr = %d", 1877 dp_stats_buf->base_addr); 1878 DP_TRACE_STATS(FATAL, "elem_size = %d", 1879 dp_stats_buf->elem_size); 1880 DP_TRACE_STATS(FATAL, "num_elems__prefetch_tail_idx = %d", 1881 dp_stats_buf->num_elems__prefetch_tail_idx); 1882 DP_TRACE_STATS(FATAL, "head_idx__tail_idx = %d", 1883 dp_stats_buf->head_idx__tail_idx); 1884 DP_TRACE_STATS(FATAL, "shadow_head_idx__shadow_tail_idx = %d", 1885 dp_stats_buf->shadow_head_idx__shadow_tail_idx); 1886 DP_TRACE_STATS(FATAL, "num_tail_incr = %d", 1887 dp_stats_buf->num_tail_incr); 1888 DP_TRACE_STATS(FATAL, "lwm_thresh__hwm_thresh = %d", 1889 dp_stats_buf->lwm_thresh__hwm_thresh); 1890 DP_TRACE_STATS(FATAL, "overrun_hit_count = %d", 1891 dp_stats_buf->overrun_hit_count); 1892 DP_TRACE_STATS(FATAL, "underrun_hit_count = %d", 1893 dp_stats_buf->underrun_hit_count); 1894 DP_TRACE_STATS(FATAL, "prod_blockwait_count = %d", 1895 dp_stats_buf->prod_blockwait_count); 1896 DP_TRACE_STATS(FATAL, "cons_blockwait_count = %d", 1897 dp_stats_buf->cons_blockwait_count); 1898 1899 for (i = 0; i < DP_HTT_LOW_WM_HIT_COUNT_LEN; i++) { 1900 index += qdf_snprint(&low_wm_hit_count[index], 1901 DP_MAX_STRING_LEN - index, 1902 " %d:%d,", i, 1903 dp_stats_buf->low_wm_hit_count[i]); 1904 } 1905 DP_TRACE_STATS(FATAL, "low_wm_hit_count = %s ", low_wm_hit_count); 1906 1907 index = 0; 1908 for (i = 0; i < DP_HTT_HIGH_WM_HIT_COUNT_LEN; i++) { 1909 index += qdf_snprint(&high_wm_hit_count[index], 1910 DP_MAX_STRING_LEN - index, 1911 " %d:%d,", i, 1912 dp_stats_buf->high_wm_hit_count[i]); 1913 } 1914 DP_TRACE_STATS(FATAL, "high_wm_hit_count = %s\n", high_wm_hit_count); 1915 } 1916 1917 /* 1918 * dp_print_ring_if_cmn_tlv: display htt_ring_if_cmn_tlv 1919 * @tag_buf: buffer containing the tlv htt_ring_if_cmn_tlv 1920 * 1921 * return:void 1922 */ 1923 static inline void dp_print_ring_if_cmn_tlv(uint32_t *tag_buf) 1924 { 1925 htt_ring_if_cmn_tlv *dp_stats_buf = 1926 (htt_ring_if_cmn_tlv *)tag_buf; 1927 1928 DP_TRACE_STATS(FATAL, "HTT_RING_IF_CMN_TLV:"); 1929 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 1930 dp_stats_buf->mac_id__word); 1931 DP_TRACE_STATS(FATAL, "num_records = %d\n", 1932 dp_stats_buf->num_records); 1933 } 1934 1935 /* 1936 * dp_print_sfm_client_user_tlv_v: display htt_sfm_client_user_tlv_v 1937 * @tag_buf: buffer containing the tlv htt_sfm_client_user_tlv_v 1938 * 1939 * return:void 1940 */ 1941 static inline void dp_print_sfm_client_user_tlv_v(uint32_t *tag_buf) 1942 { 1943 htt_sfm_client_user_tlv_v *dp_stats_buf = 1944 (htt_sfm_client_user_tlv_v *)tag_buf; 1945 uint8_t i; 1946 uint16_t index = 0; 1947 char dwords_used_by_user_n[DP_MAX_STRING_LEN]; 1948 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 1949 1950 DP_TRACE_STATS(FATAL, "HTT_SFM_CLIENT_USER_TLV_V:"); 1951 for (i = 0; i < tag_len; i++) { 1952 index += qdf_snprint(&dwords_used_by_user_n[index], 1953 DP_MAX_STRING_LEN - index, 1954 " %d:%d,", i, 1955 dp_stats_buf->dwords_used_by_user_n[i]); 1956 } 1957 DP_TRACE_STATS(FATAL, "dwords_used_by_user_n = %s\n", 1958 dwords_used_by_user_n); 1959 } 1960 1961 /* 1962 * dp_print_sfm_client_tlv: display htt_sfm_client_tlv 1963 * @tag_buf: buffer containing the tlv htt_sfm_client_tlv 1964 * 1965 * return:void 1966 */ 1967 static inline void dp_print_sfm_client_tlv(uint32_t *tag_buf) 1968 { 1969 htt_sfm_client_tlv *dp_stats_buf = 1970 (htt_sfm_client_tlv *)tag_buf; 1971 1972 DP_TRACE_STATS(FATAL, "HTT_SFM_CLIENT_TLV:"); 1973 DP_TRACE_STATS(FATAL, "client_id = %d", 1974 dp_stats_buf->client_id); 1975 DP_TRACE_STATS(FATAL, "buf_min = %d", 1976 dp_stats_buf->buf_min); 1977 DP_TRACE_STATS(FATAL, "buf_max = %d", 1978 dp_stats_buf->buf_max); 1979 DP_TRACE_STATS(FATAL, "buf_busy = %d", 1980 dp_stats_buf->buf_busy); 1981 DP_TRACE_STATS(FATAL, "buf_alloc = %d", 1982 dp_stats_buf->buf_alloc); 1983 DP_TRACE_STATS(FATAL, "buf_avail = %d", 1984 dp_stats_buf->buf_avail); 1985 DP_TRACE_STATS(FATAL, "num_users = %d\n", 1986 dp_stats_buf->num_users); 1987 } 1988 1989 /* 1990 * dp_print_sfm_cmn_tlv: display htt_sfm_cmn_tlv 1991 * @tag_buf: buffer containing the tlv htt_sfm_cmn_tlv 1992 * 1993 * return:void 1994 */ 1995 static inline void dp_print_sfm_cmn_tlv(uint32_t *tag_buf) 1996 { 1997 htt_sfm_cmn_tlv *dp_stats_buf = 1998 (htt_sfm_cmn_tlv *)tag_buf; 1999 2000 DP_TRACE_STATS(FATAL, "HTT_SFM_CMN_TLV:"); 2001 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 2002 dp_stats_buf->mac_id__word); 2003 DP_TRACE_STATS(FATAL, "buf_total = %d", 2004 dp_stats_buf->buf_total); 2005 DP_TRACE_STATS(FATAL, "mem_empty = %d", 2006 dp_stats_buf->mem_empty); 2007 DP_TRACE_STATS(FATAL, "deallocate_bufs = %d", 2008 dp_stats_buf->deallocate_bufs); 2009 DP_TRACE_STATS(FATAL, "num_records = %d\n", 2010 dp_stats_buf->num_records); 2011 } 2012 2013 /* 2014 * dp_print_sring_stats_tlv: display htt_sring_stats_tlv 2015 * @tag_buf: buffer containing the tlv htt_sring_stats_tlv 2016 * 2017 * return:void 2018 */ 2019 static inline void dp_print_sring_stats_tlv(uint32_t *tag_buf) 2020 { 2021 htt_sring_stats_tlv *dp_stats_buf = 2022 (htt_sring_stats_tlv *)tag_buf; 2023 2024 DP_TRACE_STATS(FATAL, "HTT_SRING_STATS_TLV:"); 2025 DP_TRACE_STATS(FATAL, "mac_id__ring_id__arena__ep = %d", 2026 dp_stats_buf->mac_id__ring_id__arena__ep); 2027 DP_TRACE_STATS(FATAL, "base_addr_lsb = %d", 2028 dp_stats_buf->base_addr_lsb); 2029 DP_TRACE_STATS(FATAL, "base_addr_msb = %d", 2030 dp_stats_buf->base_addr_msb); 2031 DP_TRACE_STATS(FATAL, "ring_size = %d", 2032 dp_stats_buf->ring_size); 2033 DP_TRACE_STATS(FATAL, "elem_size = %d", 2034 dp_stats_buf->elem_size); 2035 DP_TRACE_STATS(FATAL, "num_avail_words__num_valid_words = %d", 2036 dp_stats_buf->num_avail_words__num_valid_words); 2037 DP_TRACE_STATS(FATAL, "head_ptr__tail_ptr = %d", 2038 dp_stats_buf->head_ptr__tail_ptr); 2039 DP_TRACE_STATS(FATAL, "consumer_empty__producer_full = %d", 2040 dp_stats_buf->consumer_empty__producer_full); 2041 DP_TRACE_STATS(FATAL, "prefetch_count__internal_tail_ptr = %d\n", 2042 dp_stats_buf->prefetch_count__internal_tail_ptr); 2043 } 2044 2045 /* 2046 * dp_print_sring_cmn_tlv: display htt_sring_cmn_tlv 2047 * @tag_buf: buffer containing the tlv htt_sring_cmn_tlv 2048 * 2049 * return:void 2050 */ 2051 static inline void dp_print_sring_cmn_tlv(uint32_t *tag_buf) 2052 { 2053 htt_sring_cmn_tlv *dp_stats_buf = 2054 (htt_sring_cmn_tlv *)tag_buf; 2055 2056 DP_TRACE_STATS(FATAL, "HTT_SRING_CMN_TLV:"); 2057 DP_TRACE_STATS(FATAL, "num_records = %d\n", 2058 dp_stats_buf->num_records); 2059 } 2060 2061 /* 2062 * dp_print_tx_pdev_rate_stats_tlv: display htt_tx_pdev_rate_stats_tlv 2063 * @tag_buf: buffer containing the tlv htt_tx_pdev_rate_stats_tlv 2064 * 2065 * return:void 2066 */ 2067 static inline void dp_print_tx_pdev_rate_stats_tlv(uint32_t *tag_buf) 2068 { 2069 htt_tx_pdev_rate_stats_tlv *dp_stats_buf = 2070 (htt_tx_pdev_rate_stats_tlv *)tag_buf; 2071 uint8_t i, j; 2072 uint16_t index = 0; 2073 char str_buf[DP_MAX_STRING_LEN]; 2074 char *tx_gi[HTT_TX_PEER_STATS_NUM_GI_COUNTERS]; 2075 2076 for (i = 0; i < HTT_TX_PEER_STATS_NUM_GI_COUNTERS; i++) { 2077 tx_gi[i] = (char *)qdf_mem_malloc(DP_MAX_STRING_LEN); 2078 } 2079 2080 DP_TRACE_STATS(FATAL, "HTT_TX_PDEV_RATE_STATS_TLV:"); 2081 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 2082 dp_stats_buf->mac_id__word); 2083 DP_TRACE_STATS(FATAL, "tx_ldpc = %d", 2084 dp_stats_buf->tx_ldpc); 2085 DP_TRACE_STATS(FATAL, "rts_cnt = %d", 2086 dp_stats_buf->rts_cnt); 2087 DP_TRACE_STATS(FATAL, "ack_rssi = %d", 2088 dp_stats_buf->ack_rssi); 2089 2090 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2091 for (i = 0; i < DP_HTT_TX_MCS_LEN; i++) { 2092 index += qdf_snprint(&str_buf[index], 2093 DP_MAX_STRING_LEN - index, 2094 " %d:%d,", i, dp_stats_buf->tx_mcs[i]); 2095 } 2096 DP_TRACE_STATS(FATAL, "tx_mcs = %s ", str_buf); 2097 2098 index = 0; 2099 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2100 for (i = 0; i < DP_HTT_TX_SU_MCS_LEN; i++) { 2101 index += qdf_snprint(&str_buf[index], 2102 DP_MAX_STRING_LEN - index, 2103 " %d:%d,", i, dp_stats_buf->tx_su_mcs[i]); 2104 } 2105 DP_TRACE_STATS(FATAL, "tx_su_mcs = %s ", str_buf); 2106 2107 index = 0; 2108 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2109 for (i = 0; i < DP_HTT_TX_MU_MCS_LEN; i++) { 2110 index += qdf_snprint(&str_buf[index], 2111 DP_MAX_STRING_LEN - index, 2112 " %d:%d,", i, dp_stats_buf->tx_mu_mcs[i]); 2113 } 2114 DP_TRACE_STATS(FATAL, "tx_mu_mcs = %s ", str_buf); 2115 2116 index = 0; 2117 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2118 for (i = 0; i < DP_HTT_TX_NSS_LEN; i++) { 2119 index += qdf_snprint(&str_buf[index], 2120 DP_MAX_STRING_LEN - index, 2121 " %d:%d,", i, dp_stats_buf->tx_nss[i]); 2122 } 2123 DP_TRACE_STATS(FATAL, "tx_nss = %s ", str_buf); 2124 2125 index = 0; 2126 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2127 for (i = 0; i < DP_HTT_TX_BW_LEN; i++) { 2128 index += qdf_snprint(&str_buf[index], 2129 DP_MAX_STRING_LEN - index, 2130 " %d:%d,", i, dp_stats_buf->tx_bw[i]); 2131 } 2132 DP_TRACE_STATS(FATAL, "tx_bw = %s ", str_buf); 2133 2134 index = 0; 2135 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2136 for (i = 0; i < HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS; i++) { 2137 index += qdf_snprint(&str_buf[index], 2138 DP_MAX_STRING_LEN - index, 2139 " %d:%d,", i, dp_stats_buf->tx_stbc[i]); 2140 } 2141 DP_TRACE_STATS(FATAL, "tx_stbc = %s ", str_buf); 2142 2143 index = 0; 2144 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2145 for (i = 0; i < DP_HTT_TX_PREAM_LEN; i++) { 2146 index += qdf_snprint(&str_buf[index], 2147 DP_MAX_STRING_LEN - index, 2148 " %d:%d,", i, dp_stats_buf->tx_pream[i]); 2149 } 2150 DP_TRACE_STATS(FATAL, "tx_pream = %s ", str_buf); 2151 2152 for (j = 0; j < DP_HTT_PDEV_TX_GI_LEN; j++) { 2153 index = 0; 2154 for (i = 0; i < HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS; i++) { 2155 index += qdf_snprint(&tx_gi[j][index], 2156 DP_MAX_STRING_LEN - index, 2157 " %d:%d,", i, 2158 dp_stats_buf->tx_gi[j][i]); 2159 } 2160 DP_TRACE_STATS(FATAL, "tx_gi[%d] = %s ", j, tx_gi[j]); 2161 } 2162 2163 index = 0; 2164 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2165 for (i = 0; i < DP_HTT_TX_DCM_LEN; i++) { 2166 index += qdf_snprint(&str_buf[index], 2167 DP_MAX_STRING_LEN - index, 2168 " %d:%d,", i, dp_stats_buf->tx_dcm[i]); 2169 } 2170 DP_TRACE_STATS(FATAL, "tx_dcm = %s\n", str_buf); 2171 2172 for (i = 0; i < HTT_TX_PEER_STATS_NUM_GI_COUNTERS; i++) 2173 qdf_mem_free(tx_gi[i]); 2174 } 2175 2176 /* 2177 * dp_print_rx_pdev_rate_stats_tlv: display htt_rx_pdev_rate_stats_tlv 2178 * @tag_buf: buffer containing the tlv htt_rx_pdev_rate_stats_tlv 2179 * 2180 * return:void 2181 */ 2182 static inline void dp_print_rx_pdev_rate_stats_tlv(uint32_t *tag_buf) 2183 { 2184 htt_rx_pdev_rate_stats_tlv *dp_stats_buf = 2185 (htt_rx_pdev_rate_stats_tlv *)tag_buf; 2186 uint8_t i, j; 2187 uint16_t index = 0; 2188 char *rssi_chain[DP_HTT_RSSI_CHAIN_LEN]; 2189 char *rx_gi[HTT_RX_PDEV_STATS_NUM_GI_COUNTERS]; 2190 char str_buf[DP_MAX_STRING_LEN]; 2191 2192 for (i = 0; i < DP_HTT_RSSI_CHAIN_LEN; i++) 2193 rssi_chain[i] = qdf_mem_malloc(DP_MAX_STRING_LEN); 2194 for (i = 0; i < HTT_RX_PDEV_STATS_NUM_GI_COUNTERS; i++) 2195 rx_gi[i] = qdf_mem_malloc(DP_MAX_STRING_LEN); 2196 2197 DP_TRACE_STATS(FATAL, "HTT_RX_PDEV_RATE_STATS_TLV:"); 2198 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 2199 dp_stats_buf->mac_id__word); 2200 DP_TRACE_STATS(FATAL, "nsts = %d", 2201 dp_stats_buf->nsts); 2202 DP_TRACE_STATS(FATAL, "rx_ldpc = %d", 2203 dp_stats_buf->rx_ldpc); 2204 DP_TRACE_STATS(FATAL, "rts_cnt = %d", 2205 dp_stats_buf->rts_cnt); 2206 DP_TRACE_STATS(FATAL, "rssi_mgmt = %d", 2207 dp_stats_buf->rssi_mgmt); 2208 DP_TRACE_STATS(FATAL, "rssi_data = %d", 2209 dp_stats_buf->rssi_data); 2210 DP_TRACE_STATS(FATAL, "rssi_comb = %d", 2211 dp_stats_buf->rssi_comb); 2212 2213 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2214 for (i = 0; i < DP_HTT_RX_MCS_LEN; i++) { 2215 index += qdf_snprint(&str_buf[index], 2216 DP_MAX_STRING_LEN - index, 2217 " %d:%d,", i, dp_stats_buf->rx_mcs[i]); 2218 } 2219 DP_TRACE_STATS(FATAL, "rx_mcs = %s ", str_buf); 2220 2221 index = 0; 2222 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2223 for (i = 0; i < DP_HTT_RX_NSS_LEN; i++) { 2224 index += qdf_snprint(&str_buf[index], 2225 DP_MAX_STRING_LEN - index, 2226 " %d:%d,", i, dp_stats_buf->rx_nss[i]); 2227 } 2228 DP_TRACE_STATS(FATAL, "rx_nss = %s ", str_buf); 2229 2230 index = 0; 2231 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2232 for (i = 0; i < DP_HTT_RX_DCM_LEN; i++) { 2233 index += qdf_snprint(&str_buf[index], 2234 DP_MAX_STRING_LEN - index, 2235 " %d:%d,", i, dp_stats_buf->rx_dcm[i]); 2236 } 2237 DP_TRACE_STATS(FATAL, "rx_dcm = %s ", str_buf); 2238 2239 index = 0; 2240 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2241 for (i = 0; i < HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS; i++) { 2242 index += qdf_snprint(&str_buf[index], 2243 DP_MAX_STRING_LEN - index, 2244 " %d:%d,", i, dp_stats_buf->rx_stbc[i]); 2245 } 2246 DP_TRACE_STATS(FATAL, "rx_stbc = %s ", str_buf); 2247 2248 index = 0; 2249 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2250 for (i = 0; i < DP_HTT_RX_BW_LEN; i++) { 2251 index += qdf_snprint(&str_buf[index], 2252 DP_MAX_STRING_LEN - index, 2253 " %d:%d,", i, dp_stats_buf->rx_bw[i]); 2254 } 2255 DP_TRACE_STATS(FATAL, "rx_bw = %s ", str_buf); 2256 2257 for (j = 0; j < DP_HTT_RSSI_CHAIN_LEN; j++) { 2258 index = 0; 2259 for (i = 0; i < HTT_RX_PDEV_STATS_NUM_BW_COUNTERS; i++) { 2260 index += qdf_snprint(&rssi_chain[j][index], 2261 DP_MAX_STRING_LEN - index, 2262 " %d:%d,", i, 2263 dp_stats_buf->rssi_chain[j][i]); 2264 } 2265 DP_TRACE_STATS(FATAL, "rssi_chain[%d] = %s ", j, rssi_chain[j]); 2266 } 2267 2268 for (j = 0; j < DP_HTT_RX_GI_LEN; j++) { 2269 index = 0; 2270 for (i = 0; i < HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS; i++) { 2271 index += qdf_snprint(&rx_gi[j][index], 2272 DP_MAX_STRING_LEN - index, 2273 " %d:%d,", i, 2274 dp_stats_buf->rx_gi[j][i]); 2275 } 2276 DP_TRACE_STATS(FATAL, "rx_gi[%d] = %s ", j, rx_gi[j]); 2277 } 2278 2279 index = 0; 2280 qdf_mem_set(str_buf, DP_MAX_STRING_LEN, 0x0); 2281 for (i = 0; i < DP_HTT_RX_PREAM_LEN; i++) { 2282 index += qdf_snprint(&str_buf[index], 2283 DP_MAX_STRING_LEN - index, 2284 " %d:%d,", i, dp_stats_buf->rx_pream[i]); 2285 } 2286 DP_TRACE_STATS(FATAL, "rx_pream = %s\n", str_buf); 2287 for (i = 0; i < DP_HTT_RSSI_CHAIN_LEN; i++) 2288 qdf_mem_free(rssi_chain[i]); 2289 for (i = 0; i < HTT_RX_PDEV_STATS_NUM_GI_COUNTERS; i++) 2290 qdf_mem_free(rx_gi[i]); 2291 } 2292 2293 /* 2294 * dp_print_rx_soc_fw_stats_tlv: display htt_rx_soc_fw_stats_tlv 2295 * @tag_buf: buffer containing the tlv htt_rx_soc_fw_stats_tlv 2296 * 2297 * return:void 2298 */ 2299 static inline void dp_print_rx_soc_fw_stats_tlv(uint32_t *tag_buf) 2300 { 2301 htt_rx_soc_fw_stats_tlv *dp_stats_buf = 2302 (htt_rx_soc_fw_stats_tlv *)tag_buf; 2303 2304 DP_TRACE_STATS(FATAL, "HTT_RX_SOC_FW_STATS_TLV:"); 2305 DP_TRACE_STATS(FATAL, "fw_reo_ring_data_msdu = %d", 2306 dp_stats_buf->fw_reo_ring_data_msdu); 2307 DP_TRACE_STATS(FATAL, "fw_to_host_data_msdu_bcmc = %d", 2308 dp_stats_buf->fw_to_host_data_msdu_bcmc); 2309 DP_TRACE_STATS(FATAL, "fw_to_host_data_msdu_uc = %d", 2310 dp_stats_buf->fw_to_host_data_msdu_uc); 2311 DP_TRACE_STATS(FATAL, "ofld_remote_data_buf_recycle_cnt = %d", 2312 dp_stats_buf->ofld_remote_data_buf_recycle_cnt); 2313 DP_TRACE_STATS(FATAL, "ofld_remote_free_buf_indication_cnt = %d\n", 2314 dp_stats_buf->ofld_remote_free_buf_indication_cnt); 2315 } 2316 2317 /* 2318 * dp_print_rx_soc_fw_refill_ring_empty_tlv_v: display 2319 * htt_rx_soc_fw_refill_ring_empty_tlv_v 2320 * @tag_buf: buffer containing the tlv htt_rx_soc_fw_refill_ring_empty_tlv_v 2321 * 2322 * return:void 2323 */ 2324 static inline void dp_print_rx_soc_fw_refill_ring_empty_tlv_v(uint32_t *tag_buf) 2325 { 2326 htt_rx_soc_fw_refill_ring_empty_tlv_v *dp_stats_buf = 2327 (htt_rx_soc_fw_refill_ring_empty_tlv_v *)tag_buf; 2328 uint8_t i; 2329 uint16_t index = 0; 2330 char refill_ring_empty_cnt[DP_MAX_STRING_LEN]; 2331 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 2332 2333 tag_len = qdf_min(tag_len, (uint32_t)HTT_RX_STATS_REFILL_MAX_RING); 2334 2335 DP_TRACE_STATS(FATAL, "HTT_RX_SOC_FW_REFILL_RING_EMPTY_TLV_V:"); 2336 for (i = 0; i < tag_len; i++) { 2337 index += qdf_snprint(&refill_ring_empty_cnt[index], 2338 DP_MAX_STRING_LEN - index, 2339 " %d:%d,", i, 2340 dp_stats_buf->refill_ring_empty_cnt[i]); 2341 } 2342 DP_TRACE_STATS(FATAL, "refill_ring_empty_cnt = %s\n", 2343 refill_ring_empty_cnt); 2344 } 2345 2346 /* 2347 * dp_print_rx_soc_fw_refill_ring_num_refill_tlv_v: display 2348 * htt_rx_soc_fw_refill_ring_num_refill_tlv_v 2349 * @tag_buf: buffer containing the tlv htt_rx_soc_fw_refill_ring_num_refill_tlv 2350 * 2351 * return:void 2352 */ 2353 static inline void dp_print_rx_soc_fw_refill_ring_num_refill_tlv_v( 2354 uint32_t *tag_buf) 2355 { 2356 htt_rx_soc_fw_refill_ring_num_refill_tlv_v *dp_stats_buf = 2357 (htt_rx_soc_fw_refill_ring_num_refill_tlv_v *)tag_buf; 2358 uint8_t i; 2359 uint16_t index = 0; 2360 char refill_ring_num_refill[DP_MAX_STRING_LEN]; 2361 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 2362 2363 tag_len = qdf_min(tag_len, (uint32_t)HTT_TX_PDEV_MAX_URRN_STATS); 2364 2365 DP_TRACE_STATS(FATAL, "HTT_RX_SOC_FW_REFILL_RING_NUM_REFILL_TLV_V:"); 2366 for (i = 0; i < tag_len; i++) { 2367 index += qdf_snprint(&refill_ring_num_refill[index], 2368 DP_MAX_STRING_LEN - index, 2369 " %d:%d,", i, 2370 dp_stats_buf->refill_ring_num_refill[i]); 2371 } 2372 DP_TRACE_STATS(FATAL, "refill_ring_num_refill = %s\n", 2373 refill_ring_num_refill); 2374 } 2375 2376 /* 2377 * dp_print_rx_pdev_fw_stats_tlv: display htt_rx_pdev_fw_stats_tlv 2378 * @tag_buf: buffer containing the tlv htt_rx_pdev_fw_stats_tlv 2379 * 2380 * return:void 2381 */ 2382 static inline void dp_print_rx_pdev_fw_stats_tlv(uint32_t *tag_buf) 2383 { 2384 htt_rx_pdev_fw_stats_tlv *dp_stats_buf = 2385 (htt_rx_pdev_fw_stats_tlv *)tag_buf; 2386 uint8_t i; 2387 uint16_t index = 0; 2388 char fw_ring_mgmt_subtype[DP_MAX_STRING_LEN]; 2389 char fw_ring_ctrl_subtype[DP_MAX_STRING_LEN]; 2390 2391 DP_TRACE_STATS(FATAL, "HTT_RX_PDEV_FW_STATS_TLV:"); 2392 DP_TRACE_STATS(FATAL, "mac_id__word = %d", 2393 dp_stats_buf->mac_id__word); 2394 DP_TRACE_STATS(FATAL, "ppdu_recvd = %d", 2395 dp_stats_buf->ppdu_recvd); 2396 DP_TRACE_STATS(FATAL, "mpdu_cnt_fcs_ok = %d", 2397 dp_stats_buf->mpdu_cnt_fcs_ok); 2398 DP_TRACE_STATS(FATAL, "mpdu_cnt_fcs_err = %d", 2399 dp_stats_buf->mpdu_cnt_fcs_err); 2400 DP_TRACE_STATS(FATAL, "tcp_msdu_cnt = %d", 2401 dp_stats_buf->tcp_msdu_cnt); 2402 DP_TRACE_STATS(FATAL, "tcp_ack_msdu_cnt = %d", 2403 dp_stats_buf->tcp_ack_msdu_cnt); 2404 DP_TRACE_STATS(FATAL, "udp_msdu_cnt = %d", 2405 dp_stats_buf->udp_msdu_cnt); 2406 DP_TRACE_STATS(FATAL, "other_msdu_cnt = %d", 2407 dp_stats_buf->other_msdu_cnt); 2408 DP_TRACE_STATS(FATAL, "fw_ring_mpdu_ind = %d", 2409 dp_stats_buf->fw_ring_mpdu_ind); 2410 2411 for (i = 0; i < DP_HTT_FW_RING_MGMT_SUBTYPE_LEN; i++) { 2412 index += qdf_snprint(&fw_ring_mgmt_subtype[index], 2413 DP_MAX_STRING_LEN - index, 2414 " %d:%d,", i, 2415 dp_stats_buf->fw_ring_mgmt_subtype[i]); 2416 } 2417 DP_TRACE_STATS(FATAL, "fw_ring_mgmt_subtype = %s ", fw_ring_mgmt_subtype); 2418 2419 index = 0; 2420 for (i = 0; i < DP_HTT_FW_RING_CTRL_SUBTYPE_LEN; i++) { 2421 index += qdf_snprint(&fw_ring_ctrl_subtype[index], 2422 DP_MAX_STRING_LEN - index, 2423 " %d:%d,", i, 2424 dp_stats_buf->fw_ring_ctrl_subtype[i]); 2425 } 2426 DP_TRACE_STATS(FATAL, "fw_ring_ctrl_subtype = %s ", fw_ring_ctrl_subtype); 2427 DP_TRACE_STATS(FATAL, "fw_ring_mcast_data_msdu = %d", 2428 dp_stats_buf->fw_ring_mcast_data_msdu); 2429 DP_TRACE_STATS(FATAL, "fw_ring_bcast_data_msdu = %d", 2430 dp_stats_buf->fw_ring_bcast_data_msdu); 2431 DP_TRACE_STATS(FATAL, "fw_ring_ucast_data_msdu = %d", 2432 dp_stats_buf->fw_ring_ucast_data_msdu); 2433 DP_TRACE_STATS(FATAL, "fw_ring_null_data_msdu = %d", 2434 dp_stats_buf->fw_ring_null_data_msdu); 2435 DP_TRACE_STATS(FATAL, "fw_ring_mpdu_drop = %d", 2436 dp_stats_buf->fw_ring_mpdu_drop); 2437 DP_TRACE_STATS(FATAL, "ofld_local_data_ind_cnt = %d", 2438 dp_stats_buf->ofld_local_data_ind_cnt); 2439 DP_TRACE_STATS(FATAL, "ofld_local_data_buf_recycle_cnt = %d", 2440 dp_stats_buf->ofld_local_data_buf_recycle_cnt); 2441 DP_TRACE_STATS(FATAL, "drx_local_data_ind_cnt = %d", 2442 dp_stats_buf->drx_local_data_ind_cnt); 2443 DP_TRACE_STATS(FATAL, "drx_local_data_buf_recycle_cnt = %d", 2444 dp_stats_buf->drx_local_data_buf_recycle_cnt); 2445 DP_TRACE_STATS(FATAL, "local_nondata_ind_cnt = %d", 2446 dp_stats_buf->local_nondata_ind_cnt); 2447 DP_TRACE_STATS(FATAL, "local_nondata_buf_recycle_cnt = %d", 2448 dp_stats_buf->local_nondata_buf_recycle_cnt); 2449 DP_TRACE_STATS(FATAL, "fw_status_buf_ring_refill_cnt = %d", 2450 dp_stats_buf->fw_status_buf_ring_refill_cnt); 2451 DP_TRACE_STATS(FATAL, "fw_status_buf_ring_empty_cnt = %d", 2452 dp_stats_buf->fw_status_buf_ring_empty_cnt); 2453 DP_TRACE_STATS(FATAL, "fw_pkt_buf_ring_refill_cnt = %d", 2454 dp_stats_buf->fw_pkt_buf_ring_refill_cnt); 2455 DP_TRACE_STATS(FATAL, "fw_pkt_buf_ring_empty_cnt = %d", 2456 dp_stats_buf->fw_pkt_buf_ring_empty_cnt); 2457 DP_TRACE_STATS(FATAL, "fw_link_buf_ring_refill_cnt = %d", 2458 dp_stats_buf->fw_link_buf_ring_refill_cnt); 2459 DP_TRACE_STATS(FATAL, "fw_link_buf_ring_empty_cnt = %d", 2460 dp_stats_buf->fw_link_buf_ring_empty_cnt); 2461 DP_TRACE_STATS(FATAL, "host_pkt_buf_ring_refill_cnt = %d", 2462 dp_stats_buf->host_pkt_buf_ring_refill_cnt); 2463 DP_TRACE_STATS(FATAL, "host_pkt_buf_ring_empty_cnt = %d", 2464 dp_stats_buf->host_pkt_buf_ring_empty_cnt); 2465 DP_TRACE_STATS(FATAL, "mon_pkt_buf_ring_refill_cnt = %d", 2466 dp_stats_buf->mon_pkt_buf_ring_refill_cnt); 2467 DP_TRACE_STATS(FATAL, "mon_pkt_buf_ring_empty_cnt = %d", 2468 dp_stats_buf->mon_pkt_buf_ring_empty_cnt); 2469 DP_TRACE_STATS(FATAL, "mon_status_buf_ring_refill_cnt = %d", 2470 dp_stats_buf->mon_status_buf_ring_refill_cnt); 2471 DP_TRACE_STATS(FATAL, "mon_status_buf_ring_empty_cnt = %d", 2472 dp_stats_buf->mon_status_buf_ring_empty_cnt); 2473 DP_TRACE_STATS(FATAL, "mon_desc_buf_ring_refill_cnt = %d", 2474 dp_stats_buf->mon_desc_buf_ring_refill_cnt); 2475 DP_TRACE_STATS(FATAL, "mon_desc_buf_ring_empty_cnt = %d", 2476 dp_stats_buf->mon_desc_buf_ring_empty_cnt); 2477 DP_TRACE_STATS(FATAL, "mon_dest_ring_update_cnt = %d", 2478 dp_stats_buf->mon_dest_ring_update_cnt); 2479 DP_TRACE_STATS(FATAL, "mon_dest_ring_full_cnt = %d", 2480 dp_stats_buf->mon_dest_ring_full_cnt); 2481 DP_TRACE_STATS(FATAL, "rx_suspend_cnt = %d", 2482 dp_stats_buf->rx_suspend_cnt); 2483 DP_TRACE_STATS(FATAL, "rx_suspend_fail_cnt = %d", 2484 dp_stats_buf->rx_suspend_fail_cnt); 2485 DP_TRACE_STATS(FATAL, "rx_resume_cnt = %d", 2486 dp_stats_buf->rx_resume_cnt); 2487 DP_TRACE_STATS(FATAL, "rx_resume_fail_cnt = %d", 2488 dp_stats_buf->rx_resume_fail_cnt); 2489 DP_TRACE_STATS(FATAL, "rx_ring_switch_cnt = %d", 2490 dp_stats_buf->rx_ring_switch_cnt); 2491 DP_TRACE_STATS(FATAL, "rx_ring_restore_cnt = %d", 2492 dp_stats_buf->rx_ring_restore_cnt); 2493 DP_TRACE_STATS(FATAL, "rx_flush_cnt = %d\n", 2494 dp_stats_buf->rx_flush_cnt); 2495 } 2496 2497 /* 2498 * dp_print_rx_pdev_fw_ring_mpdu_err_tlv_v: display 2499 * htt_rx_pdev_fw_ring_mpdu_err_tlv_v 2500 * @tag_buf: buffer containing the tlv htt_rx_pdev_fw_ring_mpdu_err_tlv_v 2501 * 2502 * return:void 2503 */ 2504 static inline void dp_print_rx_pdev_fw_ring_mpdu_err_tlv_v(uint32_t *tag_buf) 2505 { 2506 htt_rx_pdev_fw_ring_mpdu_err_tlv_v *dp_stats_buf = 2507 (htt_rx_pdev_fw_ring_mpdu_err_tlv_v *)tag_buf; 2508 uint8_t i; 2509 uint16_t index = 0; 2510 char fw_ring_mpdu_err[DP_MAX_STRING_LEN]; 2511 2512 DP_TRACE_STATS(FATAL, "HTT_RX_PDEV_FW_RING_MPDU_ERR_TLV_V:"); 2513 for (i = 0; i < DP_HTT_FW_RING_MPDU_ERR_LEN; i++) { 2514 index += qdf_snprint(&fw_ring_mpdu_err[index], 2515 DP_MAX_STRING_LEN - index, 2516 " %d:%d,", i, 2517 dp_stats_buf->fw_ring_mpdu_err[i]); 2518 } 2519 DP_TRACE_STATS(FATAL, "fw_ring_mpdu_err = %s\n", fw_ring_mpdu_err); 2520 } 2521 2522 /* 2523 * dp_print_rx_pdev_fw_mpdu_drop_tlv_v: display htt_rx_pdev_fw_mpdu_drop_tlv_v 2524 * @tag_buf: buffer containing the tlv htt_rx_pdev_fw_mpdu_drop_tlv_v 2525 * 2526 * return:void 2527 */ 2528 static inline void dp_print_rx_pdev_fw_mpdu_drop_tlv_v(uint32_t *tag_buf) 2529 { 2530 htt_rx_pdev_fw_mpdu_drop_tlv_v *dp_stats_buf = 2531 (htt_rx_pdev_fw_mpdu_drop_tlv_v *)tag_buf; 2532 uint8_t i; 2533 uint16_t index = 0; 2534 char fw_mpdu_drop[DP_MAX_STRING_LEN]; 2535 uint32_t tag_len = (HTT_STATS_TLV_LENGTH_GET(*tag_buf) >> 2); 2536 2537 tag_len = qdf_min(tag_len, (uint32_t)HTT_RX_STATS_FW_DROP_REASON_MAX); 2538 2539 DP_TRACE_STATS(FATAL, "HTT_RX_PDEV_FW_MPDU_DROP_TLV_V:"); 2540 for (i = 0; i < tag_len; i++) { 2541 index += qdf_snprint(&fw_mpdu_drop[index], 2542 DP_MAX_STRING_LEN - index, 2543 " %d:%d,", i, dp_stats_buf->fw_mpdu_drop[i]); 2544 } 2545 DP_TRACE_STATS(FATAL, "fw_mpdu_drop = %s\n", fw_mpdu_drop); 2546 } 2547 2548 /* 2549 * dp_htt_stats_print_tag: function to select the tag type and 2550 * print the corresponding tag structure 2551 * @tag_type: tag type that is to be printed 2552 * @tag_buf: pointer to the tag structure 2553 * 2554 * return: void 2555 */ 2556 void dp_htt_stats_print_tag(uint8_t tag_type, uint32_t *tag_buf) 2557 { 2558 switch (tag_type) { 2559 case HTT_STATS_TX_PDEV_CMN_TAG: 2560 dp_print_tx_pdev_stats_cmn_tlv(tag_buf); 2561 break; 2562 case HTT_STATS_TX_PDEV_UNDERRUN_TAG: 2563 dp_print_tx_pdev_stats_urrn_tlv_v(tag_buf); 2564 break; 2565 case HTT_STATS_TX_PDEV_SIFS_TAG: 2566 dp_print_tx_pdev_stats_sifs_tlv_v(tag_buf); 2567 break; 2568 case HTT_STATS_TX_PDEV_FLUSH_TAG: 2569 dp_print_tx_pdev_stats_flush_tlv_v(tag_buf); 2570 break; 2571 2572 case HTT_STATS_TX_PDEV_PHY_ERR_TAG: 2573 dp_print_tx_pdev_stats_phy_err_tlv_v(tag_buf); 2574 break; 2575 2576 case HTT_STATS_STRING_TAG: 2577 dp_print_stats_string_tlv(tag_buf); 2578 break; 2579 2580 case HTT_STATS_TX_HWQ_CMN_TAG: 2581 dp_print_tx_hwq_stats_cmn_tlv(tag_buf); 2582 break; 2583 2584 case HTT_STATS_TX_HWQ_DIFS_LATENCY_TAG: 2585 dp_print_tx_hwq_difs_latency_stats_tlv_v(tag_buf); 2586 break; 2587 2588 case HTT_STATS_TX_HWQ_CMD_RESULT_TAG: 2589 dp_print_tx_hwq_cmd_result_stats_tlv_v(tag_buf); 2590 break; 2591 2592 case HTT_STATS_TX_HWQ_CMD_STALL_TAG: 2593 dp_print_tx_hwq_cmd_stall_stats_tlv_v(tag_buf); 2594 break; 2595 2596 case HTT_STATS_TX_HWQ_FES_STATUS_TAG: 2597 dp_print_tx_hwq_fes_result_stats_tlv_v(tag_buf); 2598 break; 2599 2600 case HTT_STATS_TX_TQM_GEN_MPDU_TAG: 2601 dp_print_tx_tqm_gen_mpdu_stats_tlv_v(tag_buf); 2602 break; 2603 2604 case HTT_STATS_TX_TQM_LIST_MPDU_TAG: 2605 dp_print_tx_tqm_list_mpdu_stats_tlv_v(tag_buf); 2606 break; 2607 2608 case HTT_STATS_TX_TQM_LIST_MPDU_CNT_TAG: 2609 dp_print_tx_tqm_list_mpdu_cnt_tlv_v(tag_buf); 2610 break; 2611 2612 case HTT_STATS_TX_TQM_CMN_TAG: 2613 dp_print_tx_tqm_cmn_stats_tlv(tag_buf); 2614 break; 2615 2616 case HTT_STATS_TX_TQM_PDEV_TAG: 2617 dp_print_tx_tqm_pdev_stats_tlv_v(tag_buf); 2618 break; 2619 2620 case HTT_STATS_TX_TQM_CMDQ_STATUS_TAG: 2621 dp_print_tx_tqm_cmdq_status_tlv(tag_buf); 2622 break; 2623 2624 case HTT_STATS_TX_DE_EAPOL_PACKETS_TAG: 2625 dp_print_tx_de_eapol_packets_stats_tlv(tag_buf); 2626 break; 2627 2628 case HTT_STATS_TX_DE_CLASSIFY_FAILED_TAG: 2629 dp_print_tx_de_classify_failed_stats_tlv(tag_buf); 2630 break; 2631 2632 case HTT_STATS_TX_DE_CLASSIFY_STATS_TAG: 2633 dp_print_tx_de_classify_stats_tlv(tag_buf); 2634 break; 2635 2636 case HTT_STATS_TX_DE_CLASSIFY_STATUS_TAG: 2637 dp_print_tx_de_classify_status_stats_tlv(tag_buf); 2638 break; 2639 2640 case HTT_STATS_TX_DE_ENQUEUE_PACKETS_TAG: 2641 dp_print_tx_de_enqueue_packets_stats_tlv(tag_buf); 2642 break; 2643 2644 case HTT_STATS_TX_DE_ENQUEUE_DISCARD_TAG: 2645 dp_print_tx_de_enqueue_discard_stats_tlv(tag_buf); 2646 break; 2647 2648 case HTT_STATS_TX_DE_CMN_TAG: 2649 dp_print_tx_de_cmn_stats_tlv(tag_buf); 2650 break; 2651 2652 case HTT_STATS_RING_IF_TAG: 2653 dp_print_ring_if_stats_tlv(tag_buf); 2654 break; 2655 2656 case HTT_STATS_TX_PDEV_MU_MIMO_STATS_TAG: 2657 dp_print_tx_pdev_mu_mimo_sch_stats_tlv(tag_buf); 2658 break; 2659 2660 case HTT_STATS_SFM_CMN_TAG: 2661 dp_print_sfm_cmn_tlv(tag_buf); 2662 break; 2663 2664 case HTT_STATS_SRING_STATS_TAG: 2665 dp_print_sring_stats_tlv(tag_buf); 2666 break; 2667 2668 case HTT_STATS_RX_PDEV_FW_STATS_TAG: 2669 dp_print_rx_pdev_fw_stats_tlv(tag_buf); 2670 break; 2671 2672 case HTT_STATS_RX_PDEV_FW_RING_MPDU_ERR_TAG: 2673 dp_print_rx_pdev_fw_ring_mpdu_err_tlv_v(tag_buf); 2674 break; 2675 2676 case HTT_STATS_RX_PDEV_FW_MPDU_DROP_TAG: 2677 dp_print_rx_pdev_fw_mpdu_drop_tlv_v(tag_buf); 2678 break; 2679 2680 case HTT_STATS_RX_SOC_FW_STATS_TAG: 2681 dp_print_rx_soc_fw_stats_tlv(tag_buf); 2682 break; 2683 2684 case HTT_STATS_RX_SOC_FW_REFILL_RING_EMPTY_TAG: 2685 dp_print_rx_soc_fw_refill_ring_empty_tlv_v(tag_buf); 2686 break; 2687 2688 case HTT_STATS_RX_SOC_FW_REFILL_RING_NUM_REFILL_TAG: 2689 dp_print_rx_soc_fw_refill_ring_num_refill_tlv_v( 2690 tag_buf); 2691 break; 2692 2693 case HTT_STATS_TX_PDEV_RATE_STATS_TAG: 2694 dp_print_tx_pdev_rate_stats_tlv(tag_buf); 2695 break; 2696 2697 case HTT_STATS_RX_PDEV_RATE_STATS_TAG: 2698 dp_print_rx_pdev_rate_stats_tlv(tag_buf); 2699 break; 2700 2701 case HTT_STATS_TX_PDEV_SCHEDULER_TXQ_STATS_TAG: 2702 dp_print_tx_pdev_stats_sched_per_txq_tlv(tag_buf); 2703 break; 2704 2705 case HTT_STATS_TX_SCHED_CMN_TAG: 2706 dp_print_stats_tx_sched_cmn_tlv(tag_buf); 2707 break; 2708 2709 case HTT_STATS_TX_PDEV_MUMIMO_MPDU_STATS_TAG: 2710 dp_print_tx_pdev_mu_mimo_mpdu_stats_tlv(tag_buf); 2711 break; 2712 2713 case HTT_STATS_SCHED_TXQ_CMD_POSTED_TAG: 2714 dp_print_sched_txq_cmd_posted_tlv_v(tag_buf); 2715 break; 2716 2717 case HTT_STATS_RING_IF_CMN_TAG: 2718 dp_print_ring_if_cmn_tlv(tag_buf); 2719 break; 2720 2721 case HTT_STATS_SFM_CLIENT_USER_TAG: 2722 dp_print_sfm_client_user_tlv_v(tag_buf); 2723 break; 2724 2725 case HTT_STATS_SFM_CLIENT_TAG: 2726 dp_print_sfm_client_tlv(tag_buf); 2727 break; 2728 2729 case HTT_STATS_TX_TQM_ERROR_STATS_TAG: 2730 dp_print_tx_tqm_error_stats_tlv(tag_buf); 2731 break; 2732 2733 case HTT_STATS_SCHED_TXQ_CMD_REAPED_TAG: 2734 dp_print_sched_txq_cmd_reaped_tlv_v(tag_buf); 2735 break; 2736 2737 case HTT_STATS_SRING_CMN_TAG: 2738 dp_print_sring_cmn_tlv(tag_buf); 2739 break; 2740 2741 case HTT_STATS_TX_SELFGEN_AC_ERR_STATS_TAG: 2742 dp_print_tx_selfgen_ac_err_stats_tlv(tag_buf); 2743 break; 2744 2745 case HTT_STATS_TX_SELFGEN_CMN_STATS_TAG: 2746 dp_print_tx_selfgen_cmn_stats_tlv(tag_buf); 2747 break; 2748 2749 case HTT_STATS_TX_SELFGEN_AC_STATS_TAG: 2750 dp_print_tx_selfgen_ac_stats_tlv(tag_buf); 2751 break; 2752 2753 case HTT_STATS_TX_SELFGEN_AX_STATS_TAG: 2754 dp_print_tx_selfgen_ax_stats_tlv(tag_buf); 2755 break; 2756 2757 case HTT_STATS_TX_SELFGEN_AX_ERR_STATS_TAG: 2758 dp_print_tx_selfgen_ax_err_stats_tlv(tag_buf); 2759 break; 2760 2761 case HTT_STATS_TX_HWQ_MUMIMO_SCH_STATS_TAG: 2762 dp_print_tx_hwq_mu_mimo_sch_stats_tlv(tag_buf); 2763 break; 2764 2765 case HTT_STATS_TX_HWQ_MUMIMO_MPDU_STATS_TAG: 2766 dp_print_tx_hwq_mu_mimo_mpdu_stats_tlv(tag_buf); 2767 break; 2768 2769 case HTT_STATS_TX_HWQ_MUMIMO_CMN_STATS_TAG: 2770 dp_print_tx_hwq_mu_mimo_cmn_stats_tlv(tag_buf); 2771 break; 2772 2773 case HTT_STATS_HW_INTR_MISC_TAG: 2774 dp_print_hw_stats_intr_misc_tlv(tag_buf); 2775 break; 2776 2777 case HTT_STATS_HW_WD_TIMEOUT_TAG: 2778 dp_print_hw_stats_wd_timeout_tlv(tag_buf); 2779 break; 2780 2781 case HTT_STATS_HW_PDEV_ERRS_TAG: 2782 dp_print_hw_stats_pdev_errs_tlv(tag_buf); 2783 break; 2784 2785 case HTT_STATS_COUNTER_NAME_TAG: 2786 dp_print_counter_tlv(tag_buf); 2787 break; 2788 2789 case HTT_STATS_TX_TID_DETAILS_TAG: 2790 dp_print_tx_tid_stats_tlv(tag_buf); 2791 break; 2792 2793 case HTT_STATS_RX_TID_DETAILS_TAG: 2794 dp_print_rx_tid_stats_tlv(tag_buf); 2795 break; 2796 2797 case HTT_STATS_PEER_STATS_CMN_TAG: 2798 dp_print_peer_stats_cmn_tlv(tag_buf); 2799 break; 2800 2801 case HTT_STATS_PEER_DETAILS_TAG: 2802 dp_print_peer_details_tlv(tag_buf); 2803 break; 2804 2805 case HTT_STATS_PEER_MSDU_FLOWQ_TAG: 2806 dp_print_msdu_flow_stats_tlv(tag_buf); 2807 break; 2808 2809 case HTT_STATS_PEER_TX_RATE_STATS_TAG: 2810 dp_print_tx_peer_rate_stats_tlv(tag_buf); 2811 break; 2812 2813 case HTT_STATS_PEER_RX_RATE_STATS_TAG: 2814 dp_print_rx_peer_rate_stats_tlv(tag_buf); 2815 break; 2816 case HTT_STATS_TX_DE_COMPL_STATS_TAG: 2817 dp_print_tx_de_compl_stats_tlv(tag_buf); 2818 break; 2819 default: 2820 break; 2821 } 2822 } 2823