xref: /wlan-dirver/qca-wifi-host-cmn/umac/dfs/core/src/filtering/dfs_debug.c (revision 0626a4da6c07f30da06dd6747e8cc290a60371d8)
1 /*
2  * Copyright (c) 2013, 2016-2018 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 void dfs_print_delayline(struct wlan_dfs *dfs, struct dfs_delayline *dl)
24 {
25 	int i = 0, index;
26 	struct dfs_delayelem *de;
27 
28 	index = dl->dl_firstelem;
29 	for (i = 0; i < dl->dl_numelems; i++) {
30 		de = &dl->dl_elems[index];
31 		dfs_debug(dfs, WLAN_DEBUG_DFS2,
32 				"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",
33 				i, de->de_ts, de->de_time, de->de_time,
34 				de->de_dur, de->de_seg_id, de->de_sidx,
35 				de->de_delta_peak, de->de_psidx_diff,
36 				de->de_seq_num);
37 
38 		index = (index + 1) & DFS_MAX_DL_MASK;
39 	}
40 }
41 
42 void dfs_print_filter(struct wlan_dfs *dfs, struct dfs_filter *rf)
43 {
44 	dfs_debug(dfs, WLAN_DEBUG_DFS1,
45 		"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",
46 		rf->rf_pulseid, rf->rf_numpulses, rf->rf_minpri, rf->rf_maxpri,
47 		rf->rf_threshold, rf->rf_filterlen, rf->rf_mindur,
48 		rf->rf_maxdur);
49 }
50 
51 /**
52  * dfs_print_filtertype() - Print the filtertype
53  * @dfs: Pointer to wlan_dfs structure.
54  * @ft:  Pointer to dfs_filtertype structure.
55  */
56 static void dfs_print_filtertype(
57 		struct wlan_dfs *dfs,
58 		struct dfs_filtertype *ft)
59 {
60 	uint32_t j;
61 	struct dfs_filter *rf;
62 
63 	for (j = 0; j < ft->ft_numfilters; j++) {
64 		rf = ft->ft_filters[j];
65 		dfs_debug(dfs, WLAN_DEBUG_DFS2,
66 				"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",
67 				j, rf->rf_pulseid, rf->rf_numpulses,
68 				rf->rf_minpri, rf->rf_maxpri,
69 				rf->rf_threshold, rf->rf_filterlen,
70 				rf->rf_mindur, rf->rf_maxdur);
71 	}
72 }
73 
74 void dfs_print_filters(struct wlan_dfs *dfs)
75 {
76 	struct dfs_filtertype *ft = NULL;
77 	uint8_t i;
78 
79 	if (!dfs) {
80 		dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,  "dfs is NULL");
81 		return;
82 	}
83 
84 	for (i = 0; i < DFS_MAX_RADAR_TYPES; i++) {
85 		if (dfs->dfs_radarf[i] != NULL) {
86 			ft = dfs->dfs_radarf[i];
87 			if ((ft->ft_numfilters > DFS_MAX_NUM_RADAR_FILTERS) ||
88 					(!ft->ft_numfilters)) {
89 				continue;
90 			}
91 			dfs_debug(dfs, WLAN_DEBUG_DFS2,
92 					"===========ft->ft_numfilters = %u===========",
93 					ft->ft_numfilters);
94 			dfs_print_filtertype(dfs, ft);
95 		}
96 	}
97 }
98