xref: /wlan-dirver/qca-wifi-host-cmn/umac/regulatory/core/src/reg_build_chan_list.h (revision fa47688f04ef001a6dcafaebdcc3c031f15ee75e)
1 /*
2  * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
3  *
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /**
21  * DOC: reg_build_chan_list.h
22  * This file provides prototypes of the regulatory component to build master
23  * and current channel list.
24  */
25 
26 #ifndef __REG_BUILD_CHAN_LIST_H__
27 #define __REG_BUILD_CHAN_LIST_H__
28 
29 /**
30  * reg_reset_reg_rules() - provides the reg domain rules info
31  * @reg_rules: reg rules pointer
32  *
33  * Return: None
34  */
35 void reg_reset_reg_rules(struct reg_rule_info *reg_rules);
36 
37 /**
38  * reg_init_pdev_mas_chan_list() - Initialize pdev master channel list
39  * @pdev_priv_obj: Pointer to regdb pdev private object.
40  * @mas_chan_params: Master channel params.
41  */
42 void reg_init_pdev_mas_chan_list(
43 		struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj,
44 		struct mas_chan_params *mas_chan_params);
45 
46 /**
47  * reg_save_reg_rules_to_pdev() - Save psoc reg-rules to pdev.
48  * @pdev_priv_obj: Pointer to regdb pdev private object.
49  */
50 void reg_save_reg_rules_to_pdev(
51 		struct reg_rule_info *psoc_reg_rules,
52 		struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj);
53 
54 /**
55  * reg_compute_pdev_current_chan_list() - Compute pdev current channel list.
56  * @pdev_priv_obj: Pointer to regdb pdev private object.
57  */
58 void reg_compute_pdev_current_chan_list(
59 		struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj);
60 
61 /**
62  * reg_propagate_mas_chan_list_to_pdev() - Propagate master channel list to pdev
63  * @psoc: Pointer to psoc object.
64  * @object: Void pointer to pdev object.
65  * @arg: Pointer to direction.
66  */
67 void reg_propagate_mas_chan_list_to_pdev(struct wlan_objmgr_psoc *psoc,
68 					 void *object, void *arg);
69 
70 /**
71  * reg_process_master_chan_list() - Compute master channel list based on the
72  * regulatory rules.
73  * @reg_info: Pointer to regulatory info
74  *
75  * Return: QDF_STATUS
76  */
77 QDF_STATUS reg_process_master_chan_list(struct cur_regulatory_info *reg_info);
78 
79 QDF_STATUS reg_get_current_chan_list(struct wlan_objmgr_pdev *pdev,
80 				     struct regulatory_channel *chan_list);
81 
82 /**
83  * reg_update_nol_history_ch() - Set nol-history flag for the channels in the
84  * list.
85  *
86  * @pdev: Pdev ptr.
87  * @ch_list: Input channel list.
88  * @num_ch: Number of channels.
89  * @nol_history_ch: NOL-History flag.
90  *
91  * Return: void
92  */
93 void reg_update_nol_history_ch(struct wlan_objmgr_pdev *pdev,
94 			       uint8_t *chan_list,
95 			       uint8_t num_chan,
96 			       bool nol_history_chan);
97 
98 #endif
99