xref: /wlan-driver/qcacld-3.0/core/hdd/src/wlan_hdd_ioctl.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2012-2014, 2017-2019, 2020 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name #if !defined(WLAN_HDD_IOCTL_H)
21*5113495bSYour Name #define WLAN_HDD_IOCTL_H
22*5113495bSYour Name 
23*5113495bSYour Name #include <linux/netdevice.h>
24*5113495bSYour Name #include <uapi/linux/if.h>
25*5113495bSYour Name #include "wlan_hdd_main.h"
26*5113495bSYour Name 
27*5113495bSYour Name extern struct sock *cesium_nl_srv_sock;
28*5113495bSYour Name 
29*5113495bSYour Name /**
30*5113495bSYour Name  * hdd_ioctl() - ioctl handler (wrapper) for wlan network interfaces
31*5113495bSYour Name  * @dev: device upon which the ioctl was received
32*5113495bSYour Name  * @ifr: ioctl request information
33*5113495bSYour Name  * @cmd: ioctl command
34*5113495bSYour Name  *
35*5113495bSYour Name  * This function acts as an SSR-protecting wrapper to __hdd_ioctl()
36*5113495bSYour Name  * which is where the ioctls are really handled.
37*5113495bSYour Name  *
38*5113495bSYour Name  * Return: 0 on success, non-zero on error
39*5113495bSYour Name  */
40*5113495bSYour Name int hdd_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
41*5113495bSYour Name 
42*5113495bSYour Name /**
43*5113495bSYour Name  * hdd_dev_private_ioctl() - private ioctl handler for wlan network interfaces
44*5113495bSYour Name  * @dev: device upon which the ioctl was received
45*5113495bSYour Name  * @ifr: ioctl request information
46*5113495bSYour Name  * @data: pointer to the raw command data in the ioctl request
47*5113495bSYour Name  * @cmd: ioctl command
48*5113495bSYour Name  *
49*5113495bSYour Name  * For Kernel 5.15+, this function acts as an SSR-protecting wrapper
50*5113495bSYour Name  * to __hdd_ioctl(), which is where the ioctls are really handled.
51*5113495bSYour Name  *
52*5113495bSYour Name  * Return: 0 on success, non-zero on error
53*5113495bSYour Name  */
54*5113495bSYour Name int hdd_dev_private_ioctl(struct net_device *dev, struct ifreq *ifr,
55*5113495bSYour Name 			  void __user *data, int cmd);
56*5113495bSYour Name 
57*5113495bSYour Name /**
58*5113495bSYour Name  * wlan_hdd_set_mc_rate() - Function to set MC rate.
59*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
60*5113495bSYour Name  * @target_rate: Target rate to set.
61*5113495bSYour Name  *
62*5113495bSYour Name  * The API sets the value in @target_rate for MC Tx
63*5113495bSYour Name  *
64*5113495bSYour Name  * Return: Non-zero value on failure.
65*5113495bSYour Name  */
66*5113495bSYour Name int wlan_hdd_set_mc_rate(struct wlan_hdd_link_info *link_info, int target_rate);
67*5113495bSYour Name 
68*5113495bSYour Name /**
69*5113495bSYour Name  * hdd_update_smps_antenna_mode() - set smps and antenna mode
70*5113495bSYour Name  * @hdd_ctx: Pointer to hdd context
71*5113495bSYour Name  * @mode: antenna mode
72*5113495bSYour Name  *
73*5113495bSYour Name  * This function will set smps and antenna mode.
74*5113495bSYour Name  *
75*5113495bSYour Name  * Return: QDF_STATUS
76*5113495bSYour Name  */
77*5113495bSYour Name QDF_STATUS hdd_update_smps_antenna_mode(struct hdd_context *hdd_ctx, int mode);
78*5113495bSYour Name 
79*5113495bSYour Name /**
80*5113495bSYour Name  * hdd_set_antenna_mode() - SET ANTENNA MODE command handler
81*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
82*5113495bSYour Name  * @mode: new antenna mode
83*5113495bSYour Name  */
84*5113495bSYour Name int hdd_set_antenna_mode(struct wlan_hdd_link_info *link_info, int mode);
85*5113495bSYour Name 
86*5113495bSYour Name #ifdef WLAN_FEATURE_ROAM_OFFLOAD
87*5113495bSYour Name /**
88*5113495bSYour Name  * hdd_get_roam_scan_ch_cb() - roam scan channel list callback handler
89*5113495bSYour Name  * @hdd_handle: Pointer to hdd context
90*5113495bSYour Name  * @roam_ch: pointer to roam scan ch event data
91*5113495bSYour Name  * @context: cookie
92*5113495bSYour Name  *
93*5113495bSYour Name  * Callback function to processes roam scan chaanel list event. If
94*5113495bSYour Name  * command response field in the response message is set that means
95*5113495bSYour Name  * event received as a response of GETROAMSCANCHANNELS command else
96*5113495bSYour Name  * event was raised by firmware upon disconnection.
97*5113495bSYour Name  *
98*5113495bSYour Name  * Return: none
99*5113495bSYour Name  */
100*5113495bSYour Name void hdd_get_roam_scan_ch_cb(hdd_handle_t hdd_handle,
101*5113495bSYour Name 			     struct roam_scan_ch_resp *roam_ch,
102*5113495bSYour Name 			     void *context);
103*5113495bSYour Name 
104*5113495bSYour Name /**
105*5113495bSYour Name  * hdd_get_roam_scan_freq() - roam scan freq list
106*5113495bSYour Name  * @adapter: Pointer to hdd adapter
107*5113495bSYour Name  * @mac_handle: pointer to mac_handle
108*5113495bSYour Name  * @chan_list: Pointer to hold roam scan freq list
109*5113495bSYour Name  * @num_channels: Pointer to hold num of roam scan channels in list
110*5113495bSYour Name  *
111*5113495bSYour Name  * This function gets roam scan frequencies from FW if FW is capable else
112*5113495bSYour Name  * roam scan frequencies are taken from host maintained list.
113*5113495bSYour Name  *
114*5113495bSYour Name  * Return: 0 on success else error value
115*5113495bSYour Name  */
116*5113495bSYour Name int
117*5113495bSYour Name hdd_get_roam_scan_freq(struct hdd_adapter *adapter, mac_handle_t mac_handle,
118*5113495bSYour Name 		       uint32_t *chan_list, uint8_t *num_channels);
119*5113495bSYour Name #else
120*5113495bSYour Name static inline void
hdd_get_roam_scan_ch_cb(hdd_handle_t hdd_handle,void * roam_ch,void * context)121*5113495bSYour Name hdd_get_roam_scan_ch_cb(hdd_handle_t hdd_handle,
122*5113495bSYour Name 			void *roam_ch,
123*5113495bSYour Name 			void *context)
124*5113495bSYour Name {
125*5113495bSYour Name }
126*5113495bSYour Name 
127*5113495bSYour Name static inline int
hdd_get_roam_scan_freq(struct hdd_adapter * adapter,mac_handle_t mac_handle,uint32_t * chan_list,uint8_t * num_channels)128*5113495bSYour Name hdd_get_roam_scan_freq(struct hdd_adapter *adapter, mac_handle_t mac_handle,
129*5113495bSYour Name 		       uint32_t *chan_list, uint8_t *num_channels)
130*5113495bSYour Name {
131*5113495bSYour Name 	return -EFAULT;
132*5113495bSYour Name }
133*5113495bSYour Name #endif
134*5113495bSYour Name 
135*5113495bSYour Name /**
136*5113495bSYour Name  * hdd_ioctl_log_buffer() - dump log buffer of a type
137*5113495bSYour Name  * @log_id: id of what log type to be
138*5113495bSYour Name  * @count: number of lines to be copied
139*5113495bSYour Name  * @custom_print: custom print function pointer
140*5113495bSYour Name  * @print_ctx: print context for custom print function
141*5113495bSYour Name  *
142*5113495bSYour Name  * If custom print function is NULL, will default to printk
143*5113495bSYour Name  *
144*5113495bSYour Name  * Return: None
145*5113495bSYour Name  */
146*5113495bSYour Name void hdd_ioctl_log_buffer(int log_id, uint32_t count, qdf_abstract_print
147*5113495bSYour Name 							     *custom_print,
148*5113495bSYour Name 							     void *print_ctx);
149*5113495bSYour Name #ifdef WLAN_DUMP_LOG_BUF_CNT
150*5113495bSYour Name /**
151*5113495bSYour Name  * hdd_dump_log_buffer() - dump log buffer history
152*5113495bSYour Name  * @print_ctx: print context for custom print function
153*5113495bSYour Name  * @custom_print: custom print function pointer
154*5113495bSYour Name  *
155*5113495bSYour Name  * If custom print function is NULL, will default to printk
156*5113495bSYour Name  *
157*5113495bSYour Name  * Return: None
158*5113495bSYour Name  */
159*5113495bSYour Name void hdd_dump_log_buffer(void *print_ctx, qdf_abstract_print *custom_print);
160*5113495bSYour Name 
161*5113495bSYour Name #else
162*5113495bSYour Name static inline
hdd_dump_log_buffer(void * print_ctx,qdf_abstract_print * custom_print)163*5113495bSYour Name void hdd_dump_log_buffer(void *print_ctx, qdf_abstract_print *custom_print)
164*5113495bSYour Name {
165*5113495bSYour Name }
166*5113495bSYour Name 
167*5113495bSYour Name #endif
168*5113495bSYour Name #endif /* end #if !defined(WLAN_HDD_IOCTL_H) */
169