hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Common function shared by Linux WEXT, cfg80211 and p2p drivers
 *
 * Copyright (C) 1999-2017, Broadcom Corporation
 * 
 *      Unless you and Broadcom execute a separate written software license
 * agreement governing use of this software, this software is licensed to you
 * under the terms of the GNU General Public License version 2 (the "GPL"),
 * available at http://www.broadcom.com/licenses/GPLv2.php, with the
 * following added to such license:
 * 
 *      As a special exception, the copyright holders of this software give you
 * permission to link this software with independent modules, and to copy and
 * distribute the resulting executable under terms of your choice, provided that
 * you also meet, for each linked independent module, the terms and conditions of
 * the license of that module.  An independent module is a module which is not
 * derived from this software.  The special exception does not apply to any
 * modifications of the software.
 * 
 *      Notwithstanding the above, under no circumstances may you combine this
 * software in any way with any other Broadcom software provided under a license
 * other than the GPL, without Broadcom's express prior written consent.
 *
 *
 * <<Broadcom-WL-IPTag/Open:>>
 *
 * $Id: wldev_common.h 699163 2017-05-12 05:18:23Z $
 */
#ifndef __WLDEV_COMMON_H__
#define __WLDEV_COMMON_H__
 
#include <wlioctl.h>
 
/* wl_dev_ioctl - get/set IOCTLs, will call net_device's do_ioctl (or
 *  netdev_ops->ndo_do_ioctl in new kernels)
 *  @dev: the net_device handle
 */
s32 wldev_ioctl(
   struct net_device *dev, u32 cmd, void *arg, u32 len, u32 set);
 
s32 wldev_ioctl_get(
   struct net_device *dev, u32 cmd, void *arg, u32 len);
 
s32 wldev_ioctl_set(
   struct net_device *dev, u32 cmd, const void *arg, u32 len);
 
/** Retrieve named IOVARs, this function calls wl_dev_ioctl with
 *  WLC_GET_VAR IOCTL code
 */
s32 wldev_iovar_getbuf(
   struct net_device *dev, s8 *iovar_name,
   void *param, s32 paramlen, void *buf, s32 buflen, struct mutex* buf_sync);
 
/** Set named IOVARs, this function calls wl_dev_ioctl with
 *  WLC_SET_VAR IOCTL code
 */
s32 wldev_iovar_setbuf(
   struct net_device *dev, s8 *iovar_name,
   void *param, s32 paramlen, void *buf, s32 buflen, struct mutex* buf_sync);
 
s32 wldev_iovar_setint(
   struct net_device *dev, s8 *iovar, s32 val);
 
s32 wldev_iovar_getint(
   struct net_device *dev, s8 *iovar, s32 *pval);
 
/** The following function can be implemented if there is a need for bsscfg
 *  indexed IOVARs
 */
 
s32 wldev_mkiovar_bsscfg(
   const s8 *iovar_name, s8 *param, s32 paramlen,
   s8 *iovar_buf, s32 buflen, s32 bssidx);
 
/** Retrieve named and bsscfg indexed IOVARs, this function calls wl_dev_ioctl with
 *  WLC_GET_VAR IOCTL code
 */
s32 wldev_iovar_getbuf_bsscfg(
   struct net_device *dev, s8 *iovar_name, void *param, s32 paramlen,
   void *buf, s32 buflen, s32 bsscfg_idx, struct mutex* buf_sync);
 
/** Set named and bsscfg indexed IOVARs, this function calls wl_dev_ioctl with
 *  WLC_SET_VAR IOCTL code
 */
s32 wldev_iovar_setbuf_bsscfg(
   struct net_device *dev, s8 *iovar_name, void *param, s32 paramlen,
   void *buf, s32 buflen, s32 bsscfg_idx, struct mutex* buf_sync);
 
s32 wldev_iovar_getint_bsscfg(
   struct net_device *dev, s8 *iovar, s32 *pval, s32 bssidx);
 
s32 wldev_iovar_setint_bsscfg(
   struct net_device *dev, s8 *iovar, s32 val, s32 bssidx);
 
extern int dhd_net_set_fw_path(struct net_device *dev, char *fw);
extern int dhd_net_bus_suspend(struct net_device *dev);
extern int dhd_net_bus_resume(struct net_device *dev, uint8 stage);
extern int dhd_net_wifi_platform_set_power(struct net_device *dev, bool on,
   unsigned long delay_msec);
extern void dhd_get_customized_country_code(struct net_device *dev, char *country_iso_code,
   wl_country_t *cspec);
extern void dhd_bus_country_set(struct net_device *dev, wl_country_t *cspec, bool notify);
extern bool dhd_force_country_change(struct net_device *dev);
extern void dhd_bus_band_set(struct net_device *dev, uint band);
extern int wldev_set_country(struct net_device *dev, char *country_code, bool notify,
   bool user_enforced, int revinfo);
extern int net_os_wake_lock(struct net_device *dev);
extern int net_os_wake_unlock(struct net_device *dev);
extern int net_os_wake_lock_timeout(struct net_device *dev);
extern int net_os_wake_lock_timeout_enable(struct net_device *dev, int val);
extern int net_os_set_dtim_skip(struct net_device *dev, int val);
extern int net_os_set_suspend_disable(struct net_device *dev, int val);
extern int net_os_set_suspend(struct net_device *dev, int val, int force);
extern int net_os_set_max_dtim_enable(struct net_device *dev, int val);
extern int wl_parse_ssid_list_tlv(char** list_str, wlc_ssid_ext_t* ssid,
   int max, int *bytes_left);
 
/* Get the link speed from dongle, speed is in kpbs */
int wldev_get_link_speed(struct net_device *dev, int *plink_speed);
 
int wldev_get_rssi(struct net_device *dev, scb_val_t *prssi);
 
int wldev_get_ssid(struct net_device *dev, wlc_ssid_t *pssid);
 
int wldev_get_band(struct net_device *dev, uint *pband);
int wldev_get_mode(struct net_device *dev, uint8 *pband, uint8 caplen);
int wldev_get_datarate(struct net_device *dev, int *datarate);
int wldev_set_band(struct net_device *dev, uint band);
 
#endif /* __WLDEV_COMMON_H__ */