xref: /wlan-dirver/qca-wifi-host-cmn/umac/dfs/core/src/filtering/dfs_debug.c (revision 97b39bfea3401259bed153a56c00d1fddbb9e87d)
1 /*
2  * Copyright (c) 2013, 2016-2020 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2002-2010, Atheros Communications Inc.
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14  */
15 
16 /**
17  * DOC: It contains useful print functions that can be used for debug.
18  * Add all debug related functionality into this file.
19  */
20 #include "../dfs.h"
21 #include "wlan_dfs_lmac_api.h"
22 
23 #if defined(WLAN_DFS_DIRECT_ATTACH) || defined(WLAN_DFS_PARTIAL_OFFLOAD)
24 void dfs_print_delayline(struct wlan_dfs *dfs, struct dfs_delayline *dl)
25 {
26 	int i = 0, index;
27 	struct dfs_delayelem *de;
28 
29 	index = dl->dl_firstelem;
30 	for (i = 0; i < dl->dl_numelems; i++) {
31 		de = &dl->dl_elems[index];
32 		dfs_debug(dfs, WLAN_DEBUG_DFS2,
33 				"Elem %u: ts=%llu diff_ts=%u (0x%x) dur=%u, seg_id=%d sidx=%d delta_peak=%d psidx_diff=%d seq_num=%d",
34 				i, de->de_ts, de->de_time, de->de_time,
35 				de->de_dur, de->de_seg_id, de->de_sidx,
36 				de->de_delta_peak, de->de_psidx_diff,
37 				de->de_seq_num);
38 
39 		index = (index + 1) & DFS_MAX_DL_MASK;
40 	}
41 }
42 #endif
43 
44 void dfs_print_filter(struct wlan_dfs *dfs, struct dfs_filter *rf)
45 {
46 	dfs_debug(dfs, WLAN_DEBUG_DFS1,
47 		"filterID[%d] rf_numpulses=%u; rf->rf_minpri=%u; rf->rf_maxpri=%u; rf->rf_threshold=%u; rf->rf_filterlen=%u; rf->rf_mindur=%u; rf->rf_maxdur=%u",
48 		rf->rf_pulseid, rf->rf_numpulses, rf->rf_minpri, rf->rf_maxpri,
49 		rf->rf_threshold, rf->rf_filterlen, rf->rf_mindur,
50 		rf->rf_maxdur);
51 }
52 
53 /**
54  * dfs_print_filtertype() - Print the filtertype
55  * @dfs: Pointer to wlan_dfs structure.
56  * @ft:  Pointer to dfs_filtertype structure.
57  */
58 static void dfs_print_filtertype(
59 		struct wlan_dfs *dfs,
60 		struct dfs_filtertype *ft)
61 {
62 	uint32_t j;
63 	struct dfs_filter *rf;
64 
65 	for (j = 0; j < ft->ft_numfilters; j++) {
66 		rf = ft->ft_filters[j];
67 		dfs_debug(dfs, WLAN_DEBUG_DFS2,
68 				"filter[%d] filterID = %d rf_numpulses=%u; rf->rf_minpri=%u; rf->rf_maxpri=%u; rf->rf_threshold=%u; rf->rf_filterlen=%u; rf->rf_mindur=%u; rf->rf_maxdur=%u",
69 				j, rf->rf_pulseid, rf->rf_numpulses,
70 				rf->rf_minpri, rf->rf_maxpri,
71 				rf->rf_threshold, rf->rf_filterlen,
72 				rf->rf_mindur, rf->rf_maxdur);
73 	}
74 }
75 
76 void dfs_print_filters(struct wlan_dfs *dfs)
77 {
78 	struct dfs_filtertype *ft = NULL;
79 	uint8_t i;
80 
81 	if (!dfs) {
82 		dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,  "dfs is NULL");
83 		return;
84 	}
85 
86 	for (i = 0; i < DFS_MAX_RADAR_TYPES; i++) {
87 		if (dfs->dfs_radarf[i]) {
88 			ft = dfs->dfs_radarf[i];
89 			if ((ft->ft_numfilters > DFS_MAX_NUM_RADAR_FILTERS) ||
90 					(!ft->ft_numfilters)) {
91 				continue;
92 			}
93 			dfs_debug(dfs, WLAN_DEBUG_DFS2,
94 					"===========ft->ft_numfilters = %u===========",
95 					ft->ft_numfilters);
96 			dfs_print_filtertype(dfs, ft);
97 		}
98 	}
99 }
100