1  /*
2   * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
3   * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
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_callbks.h
22   * This file provides prototypes of reg callbacks.
23   */
24  
25  #ifndef __REG_CALLBKS_H_
26  #define __REG_CALLBKS_H_
27  
28  #ifdef CONFIG_REG_CLIENT
29  /**
30   * reg_register_chan_change_callback() - Register channel change callbacks
31   * @psoc: Pointer to psoc
32   * @cbk: Pointer to callback function
33   * @arg: List of arguments
34   */
35  void reg_register_chan_change_callback(struct wlan_objmgr_psoc *psoc,
36  				       reg_chan_change_callback cbk, void *arg);
37  
38  /**
39   * reg_unregister_chan_change_callback() - Unregister channel change callbacks
40   * @psoc: Pointer to psoc
41   * @cbk: Pointer to callback function
42   */
43  void reg_unregister_chan_change_callback(struct wlan_objmgr_psoc *psoc,
44  					 reg_chan_change_callback cbk);
45  
46  /**
47   * reg_register_ctry_change_callback() - Register country change callbacks
48   * @psoc: Pointer to psoc
49   * @cbk: Pointer to callback function
50   */
51  void reg_register_ctry_change_callback(struct wlan_objmgr_psoc *psoc,
52  				       reg_ctry_change_callback cbk);
53  
54  /**
55   * reg_unregister_ctry_change_callback() - Unregister country change callbacks
56   * @psoc: Pointer to psoc
57   * @cbk: Pointer to callback function
58   */
59  void reg_unregister_ctry_change_callback(struct wlan_objmgr_psoc *psoc,
60  					 reg_ctry_change_callback cbk);
61  
62  /**
63   * reg_notify_sap_event() - Notify regulatory domain for sap event
64   * @pdev: The physical dev to set the band for
65   * @sap_state: true for sap start else false
66   *
67   * Return: QDF_STATUS
68   */
69  QDF_STATUS reg_notify_sap_event(struct wlan_objmgr_pdev *pdev,
70  				bool sap_state);
71  
72  /**
73   * reg_send_scheduler_msg_sb() - Start scheduler to call list of south bound
74   * callbacks registered whenever current chan list changes.
75   * @psoc: Pointer to PSOC structure.
76   * @pdev: Pointer to PDEV structure.
77   *
78   * Return: QDF_STATUS
79   */
80  QDF_STATUS reg_send_scheduler_msg_sb(struct wlan_objmgr_psoc *psoc,
81  				     struct wlan_objmgr_pdev *pdev);
82  
83  /**
84   * reg_send_scheduler_msg_nb() - Start scheduler to call list of north bound
85   * @psoc: Pointer to global psoc structure.
86   * @pdev: Pointer to global pdev structure.
87   */
88  QDF_STATUS reg_send_scheduler_msg_nb(struct wlan_objmgr_psoc *psoc,
89  				     struct wlan_objmgr_pdev *pdev);
90  /**
91   * reg_register_is_chan_connected_callback() - Register callback to check if
92   *                                             channel is connected
93   * @psoc: Pointer to global psoc structure.
94   * @cbk: Pointer to callback function
95   *
96   * Return: None
97   */
98  void
99  reg_register_is_chan_connected_callback(struct wlan_objmgr_psoc *psoc,
100  			reg_get_connected_chan_for_mode_callback cbk);
101  
102  /**
103   * reg_unregister_is_chan_connected_callback() - Unregister callback to check
104   *                                               if channel is connected
105   * @psoc: Pointer to global psoc structure.
106   * @cbk: Pointer to callback function
107   *
108   * Return: None
109   */
110  void
111  reg_unregister_is_chan_connected_callback(struct wlan_objmgr_psoc *psoc,
112  			reg_get_connected_chan_for_mode_callback cbk);
113  
114  #else
reg_register_chan_change_callback(struct wlan_objmgr_psoc * psoc,reg_chan_change_callback cbk,void * arg)115  static inline void reg_register_chan_change_callback(
116  		struct wlan_objmgr_psoc *psoc, reg_chan_change_callback cbk,
117  		void *arg)
118  {
119  }
120  
reg_unregister_chan_change_callback(struct wlan_objmgr_psoc * psoc,reg_chan_change_callback cbk)121  static inline void reg_unregister_chan_change_callback(
122  		struct wlan_objmgr_psoc *psoc, reg_chan_change_callback cbk)
123  {
124  }
125  
reg_register_ctry_change_callback(struct wlan_objmgr_psoc * psoc,reg_ctry_change_callback cbk)126  static inline void reg_register_ctry_change_callback(
127  		struct wlan_objmgr_psoc *psoc, reg_ctry_change_callback cbk)
128  {
129  }
130  
reg_unregister_ctry_change_callback(struct wlan_objmgr_psoc * psoc,reg_ctry_change_callback cbk)131  static inline void reg_unregister_ctry_change_callback(
132  		struct wlan_objmgr_psoc *psoc, reg_ctry_change_callback cbk)
133  {
134  }
135  
reg_send_scheduler_msg_sb(struct wlan_objmgr_psoc * psoc,struct wlan_objmgr_pdev * pdev)136  static inline QDF_STATUS reg_send_scheduler_msg_sb(
137  		struct wlan_objmgr_psoc *psoc, struct wlan_objmgr_pdev *pdev)
138  {
139  	return QDF_STATUS_SUCCESS;
140  }
141  
reg_send_scheduler_msg_nb(struct wlan_objmgr_psoc * psoc,struct wlan_objmgr_pdev * pdev)142  static inline QDF_STATUS reg_send_scheduler_msg_nb(
143  		struct wlan_objmgr_psoc *psoc, struct wlan_objmgr_pdev *pdev)
144  {
145  	return QDF_STATUS_SUCCESS;
146  }
147  
148  static inline void
reg_register_is_chan_connected_callback(struct wlan_objmgr_psoc * psoc,reg_get_connected_chan_for_mode_callback cbk)149  reg_register_is_chan_connected_callback(struct wlan_objmgr_psoc *psoc,
150  				reg_get_connected_chan_for_mode_callback cbk)
151  {
152  }
153  
154  static inline void
reg_unregister_is_chan_connected_callback(struct wlan_objmgr_psoc * psoc,reg_get_connected_chan_for_mode_callback cbk)155  reg_unregister_is_chan_connected_callback(struct wlan_objmgr_psoc *psoc,
156  				reg_get_connected_chan_for_mode_callback cbk)
157  {
158  }
159  #endif
160  #endif
161