xref: /OK3568_Linux_fs/external/rkwifibt/drivers/bcmdhd/dhd_config.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun 
2*4882a593Smuzhiyun #ifndef _dhd_config_
3*4882a593Smuzhiyun #define _dhd_config_
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <bcmdevs.h>
6*4882a593Smuzhiyun #include <siutils.h>
7*4882a593Smuzhiyun #include <dngl_stats.h>
8*4882a593Smuzhiyun #include <dhd.h>
9*4882a593Smuzhiyun #include <wlioctl.h>
10*4882a593Smuzhiyun #include <802.11.h>
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define FW_TYPE_STA     0
13*4882a593Smuzhiyun #define FW_TYPE_APSTA   1
14*4882a593Smuzhiyun #define FW_TYPE_P2P     2
15*4882a593Smuzhiyun #define FW_TYPE_MESH    3
16*4882a593Smuzhiyun #define FW_TYPE_EZMESH  4
17*4882a593Smuzhiyun #define FW_TYPE_ES      5
18*4882a593Smuzhiyun #define FW_TYPE_MFG     6
19*4882a593Smuzhiyun #define FW_TYPE_MINIME  7
20*4882a593Smuzhiyun #define FW_TYPE_G       0
21*4882a593Smuzhiyun #define FW_TYPE_AG      1
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #define FW_PATH_AUTO_SELECT 1
24*4882a593Smuzhiyun #ifdef BCMDHD_MDRIVER
25*4882a593Smuzhiyun #define CONFIG_PATH_AUTO_SELECT
26*4882a593Smuzhiyun #else
27*4882a593Smuzhiyun //#define CONFIG_PATH_AUTO_SELECT
28*4882a593Smuzhiyun #endif
29*4882a593Smuzhiyun extern char firmware_path[MOD_PARAM_PATHLEN];
30*4882a593Smuzhiyun #if defined(BCMSDIO) || defined(BCMPCIE)
31*4882a593Smuzhiyun extern uint dhd_rxbound;
32*4882a593Smuzhiyun extern uint dhd_txbound;
33*4882a593Smuzhiyun #endif
34*4882a593Smuzhiyun #ifdef BCMSDIO
35*4882a593Smuzhiyun #define TXGLOM_RECV_OFFSET 8
36*4882a593Smuzhiyun extern uint dhd_doflow;
37*4882a593Smuzhiyun extern uint dhd_slpauto;
38*4882a593Smuzhiyun #endif
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #ifdef SET_FWNV_BY_MAC
41*4882a593Smuzhiyun typedef struct wl_mac_range {
42*4882a593Smuzhiyun 	uint32 oui;
43*4882a593Smuzhiyun 	uint32 nic_start;
44*4882a593Smuzhiyun 	uint32 nic_end;
45*4882a593Smuzhiyun } wl_mac_range_t;
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun typedef struct wl_mac_list {
48*4882a593Smuzhiyun 	int count;
49*4882a593Smuzhiyun 	wl_mac_range_t *mac;
50*4882a593Smuzhiyun 	char name[MOD_PARAM_PATHLEN];
51*4882a593Smuzhiyun } wl_mac_list_t;
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun typedef struct wl_mac_list_ctrl {
54*4882a593Smuzhiyun 	int count;
55*4882a593Smuzhiyun 	struct wl_mac_list *m_mac_list_head;
56*4882a593Smuzhiyun } wl_mac_list_ctrl_t;
57*4882a593Smuzhiyun #endif
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun typedef struct wl_chip_nv_path {
60*4882a593Smuzhiyun 	uint chip;
61*4882a593Smuzhiyun 	uint chiprev;
62*4882a593Smuzhiyun 	char name[MOD_PARAM_PATHLEN];
63*4882a593Smuzhiyun } wl_chip_nv_path_t;
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun typedef struct wl_chip_nv_path_list_ctrl {
66*4882a593Smuzhiyun 	int count;
67*4882a593Smuzhiyun 	struct wl_chip_nv_path *m_chip_nv_path_head;
68*4882a593Smuzhiyun } wl_chip_nv_path_list_ctrl_t;
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define MAX_CTRL_CHANSPECS 256
71*4882a593Smuzhiyun typedef struct wl_channel_list {
72*4882a593Smuzhiyun 	uint32 count;
73*4882a593Smuzhiyun 	uint32 channel[MAX_CTRL_CHANSPECS];
74*4882a593Smuzhiyun } wl_channel_list_t;
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun typedef struct wmes_param {
77*4882a593Smuzhiyun 	int aifsn[AC_COUNT];
78*4882a593Smuzhiyun 	int ecwmin[AC_COUNT];
79*4882a593Smuzhiyun 	int ecwmax[AC_COUNT];
80*4882a593Smuzhiyun 	int txop[AC_COUNT];
81*4882a593Smuzhiyun } wme_param_t;
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun #ifdef PKT_FILTER_SUPPORT
84*4882a593Smuzhiyun #define DHD_CONF_FILTER_MAX	8
85*4882a593Smuzhiyun #define PKT_FILTER_LEN 300
86*4882a593Smuzhiyun #define MAGIC_PKT_FILTER_LEN 450
87*4882a593Smuzhiyun typedef struct conf_pkt_filter_add {
88*4882a593Smuzhiyun 	uint32 count;
89*4882a593Smuzhiyun 	char filter[DHD_CONF_FILTER_MAX][PKT_FILTER_LEN];
90*4882a593Smuzhiyun } conf_pkt_filter_add_t;
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun typedef struct conf_pkt_filter_del {
93*4882a593Smuzhiyun 	uint32 count;
94*4882a593Smuzhiyun 	uint32 id[DHD_CONF_FILTER_MAX];
95*4882a593Smuzhiyun } conf_pkt_filter_del_t;
96*4882a593Smuzhiyun #endif
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define CONFIG_COUNTRY_LIST_SIZE 500
99*4882a593Smuzhiyun typedef struct country_list {
100*4882a593Smuzhiyun 	struct country_list *next;
101*4882a593Smuzhiyun 	wl_country_t cspec;
102*4882a593Smuzhiyun } country_list_t;
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun /* mchan_params */
105*4882a593Smuzhiyun #define MCHAN_MAX_NUM 4
106*4882a593Smuzhiyun #define MIRACAST_SOURCE	1
107*4882a593Smuzhiyun #define MIRACAST_SINK	2
108*4882a593Smuzhiyun typedef struct mchan_params {
109*4882a593Smuzhiyun 	struct mchan_params *next;
110*4882a593Smuzhiyun 	int bw;
111*4882a593Smuzhiyun 	int p2p_mode;
112*4882a593Smuzhiyun 	int miracast_mode;
113*4882a593Smuzhiyun } mchan_params_t;
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun #ifdef SCAN_SUPPRESS
116*4882a593Smuzhiyun enum scan_intput_flags {
117*4882a593Smuzhiyun 	NO_SCAN_INTPUT	= (1 << (0)),
118*4882a593Smuzhiyun 	SCAN_CURCHAN_INTPUT	= (1 << (1)),
119*4882a593Smuzhiyun 	SCAN_LIGHT_INTPUT	= (1 << (2)),
120*4882a593Smuzhiyun };
121*4882a593Smuzhiyun #endif
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun enum war_flags {
124*4882a593Smuzhiyun 	SET_CHAN_INCONN	= (1 << (0)),
125*4882a593Smuzhiyun 	FW_REINIT_INCSA	= (1 << (1)),
126*4882a593Smuzhiyun 	FW_REINIT_EMPTY_SCAN	= (1 << (2)),
127*4882a593Smuzhiyun 	P2P_AP_MAC_CONFLICT	= (1 << (3)),
128*4882a593Smuzhiyun 	RESEND_EAPOL_PKT	= (1 << (4))
129*4882a593Smuzhiyun };
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun enum in4way_flags {
132*4882a593Smuzhiyun 	STA_NO_SCAN_IN4WAY	= (1 << (0)),
133*4882a593Smuzhiyun 	STA_NO_BTC_IN4WAY	= (1 << (1)),
134*4882a593Smuzhiyun 	STA_WAIT_DISCONNECTED	= (1 << (2)),
135*4882a593Smuzhiyun 	AP_WAIT_STA_RECONNECT	= (1 << (3)),
136*4882a593Smuzhiyun 	STA_FAKE_SCAN_IN_CONNECT	= (1 << (4)),
137*4882a593Smuzhiyun 	STA_REASSOC_RETRY	= (1 << (5)),
138*4882a593Smuzhiyun };
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun enum in_suspend_flags {
141*4882a593Smuzhiyun 	NO_EVENT_IN_SUSPEND		= (1 << (0)),
142*4882a593Smuzhiyun 	NO_TXDATA_IN_SUSPEND	= (1 << (1)),
143*4882a593Smuzhiyun 	NO_TXCTL_IN_SUSPEND		= (1 << (2)),
144*4882a593Smuzhiyun 	AP_DOWN_IN_SUSPEND		= (1 << (3)),
145*4882a593Smuzhiyun 	ROAM_OFFLOAD_IN_SUSPEND	= (1 << (4)),
146*4882a593Smuzhiyun 	AP_FILTER_IN_SUSPEND	= (1 << (5)),
147*4882a593Smuzhiyun 	WOWL_IN_SUSPEND			= (1 << (6)),
148*4882a593Smuzhiyun 	ALL_IN_SUSPEND 			= 0xFFFFFFFF,
149*4882a593Smuzhiyun };
150*4882a593Smuzhiyun 
151*4882a593Smuzhiyun enum in_suspend_mode {
152*4882a593Smuzhiyun 	EARLY_SUSPEND = 0,
153*4882a593Smuzhiyun 	PM_NOTIFIER = 1,
154*4882a593Smuzhiyun 	SUSPEND_MODE_2 = 2
155*4882a593Smuzhiyun };
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun #ifdef TPUT_MONITOR
158*4882a593Smuzhiyun enum data_drop_mode {
159*4882a593Smuzhiyun 	NO_DATA_DROP = -1,
160*4882a593Smuzhiyun 	FW_DROP = 0,
161*4882a593Smuzhiyun 	TXPKT_DROP = 1,
162*4882a593Smuzhiyun 	XMIT_DROP = 2
163*4882a593Smuzhiyun };
164*4882a593Smuzhiyun #endif
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun enum conn_state {
167*4882a593Smuzhiyun 	CONN_STATE_IDLE = 0,
168*4882a593Smuzhiyun 	CONN_STATE_CONNECTING = 1,
169*4882a593Smuzhiyun 	CONN_STATE_AUTH_SAE_M1 = 2,
170*4882a593Smuzhiyun 	CONN_STATE_AUTH_SAE_M2 = 3,
171*4882a593Smuzhiyun 	CONN_STATE_AUTH_SAE_M3 = 4,
172*4882a593Smuzhiyun 	CONN_STATE_AUTH_SAE_M4 = 5,
173*4882a593Smuzhiyun 	CONN_STATE_REQID = 6,
174*4882a593Smuzhiyun 	CONN_STATE_RSPID = 7,
175*4882a593Smuzhiyun 	CONN_STATE_WSC_START = 8,
176*4882a593Smuzhiyun 	CONN_STATE_WPS_M1 = 9,
177*4882a593Smuzhiyun 	CONN_STATE_WPS_M2 = 10,
178*4882a593Smuzhiyun 	CONN_STATE_WPS_M3 = 11,
179*4882a593Smuzhiyun 	CONN_STATE_WPS_M4 = 12,
180*4882a593Smuzhiyun 	CONN_STATE_WPS_M5 = 13,
181*4882a593Smuzhiyun 	CONN_STATE_WPS_M6 = 14,
182*4882a593Smuzhiyun 	CONN_STATE_WPS_M7 = 15,
183*4882a593Smuzhiyun 	CONN_STATE_WPS_M8 = 16,
184*4882a593Smuzhiyun 	CONN_STATE_WSC_DONE = 17,
185*4882a593Smuzhiyun 	CONN_STATE_4WAY_M1 = 18,
186*4882a593Smuzhiyun 	CONN_STATE_4WAY_M2 = 19,
187*4882a593Smuzhiyun 	CONN_STATE_4WAY_M3 = 20,
188*4882a593Smuzhiyun 	CONN_STATE_4WAY_M4 = 21,
189*4882a593Smuzhiyun 	CONN_STATE_ADD_KEY = 22,
190*4882a593Smuzhiyun 	CONN_STATE_CONNECTED = 23,
191*4882a593Smuzhiyun 	CONN_STATE_GROUPKEY_M1 = 24,
192*4882a593Smuzhiyun 	CONN_STATE_GROUPKEY_M2 = 25,
193*4882a593Smuzhiyun };
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun enum enq_pkt_type {
196*4882a593Smuzhiyun 	ENQ_PKT_TYPE_EAPOL	= (1 << (0)),
197*4882a593Smuzhiyun 	ENQ_PKT_TYPE_ARP	= (1 << (1)),
198*4882a593Smuzhiyun 	ENQ_PKT_TYPE_DHCP	= (1 << (2)),
199*4882a593Smuzhiyun 	ENQ_PKT_TYPE_ICMP	= (1 << (3)),
200*4882a593Smuzhiyun };
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun typedef struct dhd_conf {
203*4882a593Smuzhiyun 	uint devid;
204*4882a593Smuzhiyun 	uint chip;
205*4882a593Smuzhiyun 	uint chiprev;
206*4882a593Smuzhiyun #if defined(BCMPCIE)
207*4882a593Smuzhiyun 	uint svid;
208*4882a593Smuzhiyun 	uint ssid;
209*4882a593Smuzhiyun #endif
210*4882a593Smuzhiyun #ifdef GET_OTP_MODULE_NAME
211*4882a593Smuzhiyun 	char module_name[16];
212*4882a593Smuzhiyun #endif
213*4882a593Smuzhiyun 	struct ether_addr otp_mac;
214*4882a593Smuzhiyun 	int fw_type;
215*4882a593Smuzhiyun #ifdef SET_FWNV_BY_MAC
216*4882a593Smuzhiyun 	wl_mac_list_ctrl_t fw_by_mac;
217*4882a593Smuzhiyun 	wl_mac_list_ctrl_t nv_by_mac;
218*4882a593Smuzhiyun #endif
219*4882a593Smuzhiyun 	wl_chip_nv_path_list_ctrl_t nv_by_chip;
220*4882a593Smuzhiyun 	country_list_t *country_head;
221*4882a593Smuzhiyun 	int ioctl_ver;
222*4882a593Smuzhiyun 	int band;
223*4882a593Smuzhiyun 	int bw_cap[2];
224*4882a593Smuzhiyun 	wl_country_t cspec;
225*4882a593Smuzhiyun 	wl_channel_list_t channels;
226*4882a593Smuzhiyun 	uint roam_off;
227*4882a593Smuzhiyun 	uint roam_off_suspend;
228*4882a593Smuzhiyun 	int roam_trigger[2];
229*4882a593Smuzhiyun 	int roam_scan_period[2];
230*4882a593Smuzhiyun 	int roam_delta[2];
231*4882a593Smuzhiyun 	int fullroamperiod;
232*4882a593Smuzhiyun 	uint keep_alive_period;
233*4882a593Smuzhiyun 	bool rekey_offload;
234*4882a593Smuzhiyun #ifdef ARP_OFFLOAD_SUPPORT
235*4882a593Smuzhiyun 	bool garp;
236*4882a593Smuzhiyun #endif
237*4882a593Smuzhiyun 	int force_wme_ac;
238*4882a593Smuzhiyun 	wme_param_t wme_sta;
239*4882a593Smuzhiyun 	wme_param_t wme_ap;
240*4882a593Smuzhiyun #ifdef PKT_FILTER_SUPPORT
241*4882a593Smuzhiyun 	conf_pkt_filter_add_t pkt_filter_add;
242*4882a593Smuzhiyun 	conf_pkt_filter_del_t pkt_filter_del;
243*4882a593Smuzhiyun 	char *magic_pkt_filter_add;
244*4882a593Smuzhiyun #endif
245*4882a593Smuzhiyun 	int srl;
246*4882a593Smuzhiyun 	int lrl;
247*4882a593Smuzhiyun 	uint bcn_timeout;
248*4882a593Smuzhiyun 	int disable_proptx;
249*4882a593Smuzhiyun 	int dhd_poll;
250*4882a593Smuzhiyun #ifdef BCMSDIO
251*4882a593Smuzhiyun 	int use_rxchain;
252*4882a593Smuzhiyun 	bool bus_rxglom;
253*4882a593Smuzhiyun 	bool txglom_ext; /* Only for 43362/4330/43340/43341/43241 */
254*4882a593Smuzhiyun 	/* terence 20161011:
255*4882a593Smuzhiyun 	    1) conf->tx_max_offset = 1 to fix credict issue in adaptivity testing
256*4882a593Smuzhiyun 	    2) conf->tx_max_offset = 1 will cause to UDP Tx not work in rxglom supported,
257*4882a593Smuzhiyun 	        but not happened in sw txglom
258*4882a593Smuzhiyun 	*/
259*4882a593Smuzhiyun 	int tx_max_offset;
260*4882a593Smuzhiyun 	uint txglomsize;
261*4882a593Smuzhiyun 	int txctl_tmo_fix;
262*4882a593Smuzhiyun 	bool txglom_mode;
263*4882a593Smuzhiyun 	uint deferred_tx_len;
264*4882a593Smuzhiyun 	/*txglom_bucket_size:
265*4882a593Smuzhiyun 	 * 43362/4330: 1680
266*4882a593Smuzhiyun 	 * 43340/43341/43241: 1684
267*4882a593Smuzhiyun 	 */
268*4882a593Smuzhiyun 	int txglom_bucket_size;
269*4882a593Smuzhiyun 	int txinrx_thres;
270*4882a593Smuzhiyun 	int dhd_txminmax; // -1=DATABUFCNT(bus)
271*4882a593Smuzhiyun #ifdef DYNAMIC_MAX_HDR_READ
272*4882a593Smuzhiyun 	int max_hdr_read;
273*4882a593Smuzhiyun #endif
274*4882a593Smuzhiyun 	bool oob_enabled_later;
275*4882a593Smuzhiyun #ifdef MINIME
276*4882a593Smuzhiyun 	uint32 ramsize;
277*4882a593Smuzhiyun #endif
278*4882a593Smuzhiyun #if defined(SDIO_ISR_THREAD)
279*4882a593Smuzhiyun 	bool intr_extn;
280*4882a593Smuzhiyun #endif
281*4882a593Smuzhiyun #ifdef BCMSDIO_RXLIM_POST
282*4882a593Smuzhiyun 	bool rxlim_en;
283*4882a593Smuzhiyun #endif
284*4882a593Smuzhiyun #ifdef BCMSDIO_TXSEQ_SYNC
285*4882a593Smuzhiyun 	bool txseq_sync;
286*4882a593Smuzhiyun #endif
287*4882a593Smuzhiyun #ifdef BCMSDIO_INTSTATUS_WAR
288*4882a593Smuzhiyun 	uint read_intr_mode;
289*4882a593Smuzhiyun #endif
290*4882a593Smuzhiyun 	int kso_try_max;
291*4882a593Smuzhiyun #ifdef KSO_DEBUG
292*4882a593Smuzhiyun 	uint kso_try_array[10];
293*4882a593Smuzhiyun #endif
294*4882a593Smuzhiyun #endif
295*4882a593Smuzhiyun #ifdef BCMPCIE
296*4882a593Smuzhiyun 	int bus_deepsleep_disable;
297*4882a593Smuzhiyun 	int flow_ring_queue_threshold;
298*4882a593Smuzhiyun 	int d2h_intr_method;
299*4882a593Smuzhiyun 	int d2h_intr_control;
300*4882a593Smuzhiyun 	int enq_hdr_pkt;
301*4882a593Smuzhiyun 	int aspm;
302*4882a593Smuzhiyun 	int l1ss;
303*4882a593Smuzhiyun #endif
304*4882a593Smuzhiyun 	int dpc_cpucore;
305*4882a593Smuzhiyun 	int rxf_cpucore;
306*4882a593Smuzhiyun 	int dhd_dpc_prio;
307*4882a593Smuzhiyun 	int frameburst;
308*4882a593Smuzhiyun 	bool deepsleep;
309*4882a593Smuzhiyun 	int pm;
310*4882a593Smuzhiyun 	int pm_in_suspend;
311*4882a593Smuzhiyun 	int suspend_mode;
312*4882a593Smuzhiyun 	int suspend_bcn_li_dtim;
313*4882a593Smuzhiyun #ifdef DHDTCPACK_SUPPRESS
314*4882a593Smuzhiyun 	uint8 tcpack_sup_mode;
315*4882a593Smuzhiyun 	uint32 tcpack_sup_ratio;
316*4882a593Smuzhiyun 	uint32 tcpack_sup_delay;
317*4882a593Smuzhiyun #endif
318*4882a593Smuzhiyun 	int pktprio8021x;
319*4882a593Smuzhiyun 	uint insuspend;
320*4882a593Smuzhiyun 	bool suspended;
321*4882a593Smuzhiyun 	struct ether_addr bssid_insuspend;
322*4882a593Smuzhiyun #ifdef SUSPEND_EVENT
323*4882a593Smuzhiyun 	char resume_eventmask[WL_EVENTING_MASK_LEN];
324*4882a593Smuzhiyun 	bool wlfc;
325*4882a593Smuzhiyun #endif
326*4882a593Smuzhiyun #ifdef IDHCP
327*4882a593Smuzhiyun 	int dhcpc_enable;
328*4882a593Smuzhiyun 	int dhcpd_enable;
329*4882a593Smuzhiyun 	struct ipv4_addr dhcpd_ip_addr;
330*4882a593Smuzhiyun 	struct ipv4_addr dhcpd_ip_mask;
331*4882a593Smuzhiyun 	struct ipv4_addr dhcpd_ip_start;
332*4882a593Smuzhiyun 	struct ipv4_addr dhcpd_ip_end;
333*4882a593Smuzhiyun #endif
334*4882a593Smuzhiyun #ifdef ISAM_PREINIT
335*4882a593Smuzhiyun 	char isam_init[50];
336*4882a593Smuzhiyun 	char isam_config[300];
337*4882a593Smuzhiyun 	char isam_enable[50];
338*4882a593Smuzhiyun #endif
339*4882a593Smuzhiyun 	int ctrl_resched;
340*4882a593Smuzhiyun 	uint rxcnt_timeout;
341*4882a593Smuzhiyun 	mchan_params_t *mchan;
342*4882a593Smuzhiyun 	char *wl_preinit;
343*4882a593Smuzhiyun 	char *wl_suspend;
344*4882a593Smuzhiyun 	char *wl_resume;
345*4882a593Smuzhiyun 	int tsq;
346*4882a593Smuzhiyun 	int orphan_move;
347*4882a593Smuzhiyun 	uint in4way;
348*4882a593Smuzhiyun 	uint war;
349*4882a593Smuzhiyun #ifdef WL_EXT_WOWL
350*4882a593Smuzhiyun 	uint wowl;
351*4882a593Smuzhiyun #endif
352*4882a593Smuzhiyun #ifdef GET_CUSTOM_MAC_FROM_CONFIG
353*4882a593Smuzhiyun 	char hw_ether[62];
354*4882a593Smuzhiyun #endif
355*4882a593Smuzhiyun 	wait_queue_head_t event_complete;
356*4882a593Smuzhiyun #ifdef PROPTX_MAXCOUNT
357*4882a593Smuzhiyun 	int proptx_maxcnt_2g;
358*4882a593Smuzhiyun 	int proptx_maxcnt_5g;
359*4882a593Smuzhiyun #endif /* DYNAMIC_PROPTX_MAXCOUNT */
360*4882a593Smuzhiyun #ifdef TPUT_MONITOR
361*4882a593Smuzhiyun 	int data_drop_mode;
362*4882a593Smuzhiyun 	unsigned long net_len;
363*4882a593Smuzhiyun 	uint tput_monitor_ms;
364*4882a593Smuzhiyun 	struct osl_timespec tput_ts;
365*4882a593Smuzhiyun 	unsigned long last_tx;
366*4882a593Smuzhiyun 	unsigned long last_rx;
367*4882a593Smuzhiyun 	unsigned long last_net_tx;
368*4882a593Smuzhiyun #ifdef BCMSDIO
369*4882a593Smuzhiyun 	int32 doflow_tput_thresh;
370*4882a593Smuzhiyun #endif
371*4882a593Smuzhiyun #endif
372*4882a593Smuzhiyun #ifdef SCAN_SUPPRESS
373*4882a593Smuzhiyun 	uint scan_intput;
374*4882a593Smuzhiyun 	int scan_busy_thresh;
375*4882a593Smuzhiyun 	int scan_busy_tmo;
376*4882a593Smuzhiyun 	int32 scan_tput_thresh;
377*4882a593Smuzhiyun #endif
378*4882a593Smuzhiyun #ifdef DHD_TPUT_PATCH
379*4882a593Smuzhiyun 	bool tput_patch;
380*4882a593Smuzhiyun 	int mtu;
381*4882a593Smuzhiyun 	bool pktsetsum;
382*4882a593Smuzhiyun #endif
383*4882a593Smuzhiyun #ifdef SET_XPS_CPUS
384*4882a593Smuzhiyun 	bool xps_cpus;
385*4882a593Smuzhiyun #endif
386*4882a593Smuzhiyun #ifdef SET_RPS_CPUS
387*4882a593Smuzhiyun 	bool rps_cpus;
388*4882a593Smuzhiyun #endif
389*4882a593Smuzhiyun #ifdef CHECK_DOWNLOAD_FW
390*4882a593Smuzhiyun 	bool fwchk;
391*4882a593Smuzhiyun #endif
392*4882a593Smuzhiyun 	char *vndr_ie_assocreq;
393*4882a593Smuzhiyun } dhd_conf_t;
394*4882a593Smuzhiyun 
395*4882a593Smuzhiyun #ifdef BCMSDIO
396*4882a593Smuzhiyun void dhd_conf_get_otp(dhd_pub_t *dhd, bcmsdh_info_t *sdh, si_t *sih);
397*4882a593Smuzhiyun #if defined(HW_OOB) || defined(FORCE_WOWLAN)
398*4882a593Smuzhiyun void dhd_conf_set_hw_oob_intr(bcmsdh_info_t *sdh, struct si_pub *sih);
399*4882a593Smuzhiyun #endif
400*4882a593Smuzhiyun void dhd_conf_set_txglom_params(dhd_pub_t *dhd, bool enable);
401*4882a593Smuzhiyun #endif
402*4882a593Smuzhiyun #ifdef BCMPCIE
403*4882a593Smuzhiyun int dhd_conf_get_otp(dhd_pub_t *dhd, si_t *sih);
404*4882a593Smuzhiyun bool dhd_conf_legacy_msi_chip(dhd_pub_t *dhd);
405*4882a593Smuzhiyun #endif
406*4882a593Smuzhiyun #ifdef WL_CFG80211
407*4882a593Smuzhiyun bool dhd_conf_legacy_chip_check(dhd_pub_t *dhd);
408*4882a593Smuzhiyun bool dhd_conf_new_chip_check(dhd_pub_t *dhd);
409*4882a593Smuzhiyun bool dhd_conf_extsae_chip(dhd_pub_t *dhd);
410*4882a593Smuzhiyun #endif
411*4882a593Smuzhiyun void dhd_conf_set_path_params(dhd_pub_t *dhd, char *fw_path, char *nv_path);
412*4882a593Smuzhiyun int dhd_conf_set_intiovar(dhd_pub_t *dhd, int ifidx, uint cmd, char *name,
413*4882a593Smuzhiyun 	int val, int def, bool down);
414*4882a593Smuzhiyun int dhd_conf_get_band(dhd_pub_t *dhd);
415*4882a593Smuzhiyun int dhd_conf_country(dhd_pub_t *dhd, char *cmd, char *buf);
416*4882a593Smuzhiyun int dhd_conf_get_country(dhd_pub_t *dhd, wl_country_t *cspec);
417*4882a593Smuzhiyun #ifdef CCODE_LIST
418*4882a593Smuzhiyun int dhd_ccode_map_country_list(dhd_pub_t *dhd, wl_country_t *cspec);
419*4882a593Smuzhiyun #endif
420*4882a593Smuzhiyun bool dhd_conf_match_channel(dhd_pub_t *dhd, uint32 channel);
421*4882a593Smuzhiyun void dhd_conf_set_wme(dhd_pub_t *dhd, int ifidx, int mode);
422*4882a593Smuzhiyun void dhd_conf_set_mchan_bw(dhd_pub_t *dhd, int go, int source);
423*4882a593Smuzhiyun void dhd_conf_add_pkt_filter(dhd_pub_t *dhd);
424*4882a593Smuzhiyun bool dhd_conf_del_pkt_filter(dhd_pub_t *dhd, uint32 id);
425*4882a593Smuzhiyun void dhd_conf_discard_pkt_filter(dhd_pub_t *dhd);
426*4882a593Smuzhiyun int dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path);
427*4882a593Smuzhiyun int dhd_conf_set_chiprev(dhd_pub_t *dhd, uint chip, uint chiprev);
428*4882a593Smuzhiyun uint dhd_conf_get_chip(void *context);
429*4882a593Smuzhiyun uint dhd_conf_get_chiprev(void *context);
430*4882a593Smuzhiyun int dhd_conf_get_pm(dhd_pub_t *dhd);
431*4882a593Smuzhiyun int dhd_conf_reg2args(dhd_pub_t *dhd, char *cmd, bool set, uint32 index, uint32 *val);
432*4882a593Smuzhiyun int dhd_conf_check_hostsleep(dhd_pub_t *dhd, int cmd, void *buf, int len,
433*4882a593Smuzhiyun 	int *hostsleep_set, int *hostsleep_val, int *ret);
434*4882a593Smuzhiyun void dhd_conf_get_hostsleep(dhd_pub_t *dhd,
435*4882a593Smuzhiyun 	int hostsleep_set, int hostsleep_val, int ret);
436*4882a593Smuzhiyun int dhd_conf_mkeep_alive(dhd_pub_t *dhd, int ifidx, int id, int period,
437*4882a593Smuzhiyun 	char *packet, bool bcast);
438*4882a593Smuzhiyun #ifdef ARP_OFFLOAD_SUPPORT
439*4882a593Smuzhiyun void dhd_conf_set_garp(dhd_pub_t *dhd, int ifidx, uint32 ipa, bool enable);
440*4882a593Smuzhiyun #endif
441*4882a593Smuzhiyun #ifdef PROP_TXSTATUS
442*4882a593Smuzhiyun int dhd_conf_get_disable_proptx(dhd_pub_t *dhd);
443*4882a593Smuzhiyun #endif
444*4882a593Smuzhiyun #ifdef TPUT_MONITOR
445*4882a593Smuzhiyun void dhd_conf_tput_monitor(dhd_pub_t *dhd);
446*4882a593Smuzhiyun #endif
447*4882a593Smuzhiyun uint dhd_conf_get_insuspend(dhd_pub_t *dhd, uint mask);
448*4882a593Smuzhiyun int dhd_conf_set_suspend_resume(dhd_pub_t *dhd, int suspend);
449*4882a593Smuzhiyun void dhd_conf_postinit_ioctls(dhd_pub_t *dhd);
450*4882a593Smuzhiyun #ifdef WL_STATIC_IF
451*4882a593Smuzhiyun void dhd_conf_preinit_ioctls_sta(dhd_pub_t *dhd, int ifidx);
452*4882a593Smuzhiyun #endif /* WL_STATIC_IF */
453*4882a593Smuzhiyun int dhd_conf_preinit(dhd_pub_t *dhd);
454*4882a593Smuzhiyun int dhd_conf_reset(dhd_pub_t *dhd);
455*4882a593Smuzhiyun int dhd_conf_attach(dhd_pub_t *dhd);
456*4882a593Smuzhiyun void dhd_conf_detach(dhd_pub_t *dhd);
457*4882a593Smuzhiyun void *dhd_get_pub(struct net_device *dev);
458*4882a593Smuzhiyun int wl_pattern_atoh(char *src, char *dst);
459*4882a593Smuzhiyun int dhd_conf_suspend_resume_sta(dhd_pub_t *dhd, int ifidx, int suspend);
460*4882a593Smuzhiyun /* Add to adjust 802.1x priority */
461*4882a593Smuzhiyun extern void pktset8021xprio(void *pkt, int prio);
462*4882a593Smuzhiyun #ifdef BCMSDIO
463*4882a593Smuzhiyun extern int dhd_bus_sleep(dhd_pub_t *dhdp, bool sleep, uint32 *intstatus);
464*4882a593Smuzhiyun #endif
465*4882a593Smuzhiyun #endif /* _dhd_config_ */
466