• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/net/wireless/wl12xx/
1/*
2 * This file is part of wl1271
3 *
4 * Copyright (C) 2009 Nokia Corporation
5 *
6 * Contact: Luciano Coelho <luciano.coelho@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * version 2 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 *
22 */
23
24#ifndef __WL1271_CONF_H__
25#define __WL1271_CONF_H__
26
27enum {
28	CONF_HW_BIT_RATE_1MBPS   = BIT(0),
29	CONF_HW_BIT_RATE_2MBPS   = BIT(1),
30	CONF_HW_BIT_RATE_5_5MBPS = BIT(2),
31	CONF_HW_BIT_RATE_6MBPS   = BIT(3),
32	CONF_HW_BIT_RATE_9MBPS   = BIT(4),
33	CONF_HW_BIT_RATE_11MBPS  = BIT(5),
34	CONF_HW_BIT_RATE_12MBPS  = BIT(6),
35	CONF_HW_BIT_RATE_18MBPS  = BIT(7),
36	CONF_HW_BIT_RATE_22MBPS  = BIT(8),
37	CONF_HW_BIT_RATE_24MBPS  = BIT(9),
38	CONF_HW_BIT_RATE_36MBPS  = BIT(10),
39	CONF_HW_BIT_RATE_48MBPS  = BIT(11),
40	CONF_HW_BIT_RATE_54MBPS  = BIT(12),
41	CONF_HW_BIT_RATE_MCS_0   = BIT(13),
42	CONF_HW_BIT_RATE_MCS_1   = BIT(14),
43	CONF_HW_BIT_RATE_MCS_2   = BIT(15),
44	CONF_HW_BIT_RATE_MCS_3   = BIT(16),
45	CONF_HW_BIT_RATE_MCS_4   = BIT(17),
46	CONF_HW_BIT_RATE_MCS_5   = BIT(18),
47	CONF_HW_BIT_RATE_MCS_6   = BIT(19),
48	CONF_HW_BIT_RATE_MCS_7   = BIT(20)
49};
50
51enum {
52	CONF_HW_RATE_INDEX_1MBPS   = 0,
53	CONF_HW_RATE_INDEX_2MBPS   = 1,
54	CONF_HW_RATE_INDEX_5_5MBPS = 2,
55	CONF_HW_RATE_INDEX_6MBPS   = 3,
56	CONF_HW_RATE_INDEX_9MBPS   = 4,
57	CONF_HW_RATE_INDEX_11MBPS  = 5,
58	CONF_HW_RATE_INDEX_12MBPS  = 6,
59	CONF_HW_RATE_INDEX_18MBPS  = 7,
60	CONF_HW_RATE_INDEX_22MBPS  = 8,
61	CONF_HW_RATE_INDEX_24MBPS  = 9,
62	CONF_HW_RATE_INDEX_36MBPS  = 10,
63	CONF_HW_RATE_INDEX_48MBPS  = 11,
64	CONF_HW_RATE_INDEX_54MBPS  = 12,
65	CONF_HW_RATE_INDEX_MAX     = CONF_HW_RATE_INDEX_54MBPS,
66};
67
68enum {
69	CONF_HW_RXTX_RATE_MCS7 = 0,
70	CONF_HW_RXTX_RATE_MCS6,
71	CONF_HW_RXTX_RATE_MCS5,
72	CONF_HW_RXTX_RATE_MCS4,
73	CONF_HW_RXTX_RATE_MCS3,
74	CONF_HW_RXTX_RATE_MCS2,
75	CONF_HW_RXTX_RATE_MCS1,
76	CONF_HW_RXTX_RATE_MCS0,
77	CONF_HW_RXTX_RATE_54,
78	CONF_HW_RXTX_RATE_48,
79	CONF_HW_RXTX_RATE_36,
80	CONF_HW_RXTX_RATE_24,
81	CONF_HW_RXTX_RATE_22,
82	CONF_HW_RXTX_RATE_18,
83	CONF_HW_RXTX_RATE_12,
84	CONF_HW_RXTX_RATE_11,
85	CONF_HW_RXTX_RATE_9,
86	CONF_HW_RXTX_RATE_6,
87	CONF_HW_RXTX_RATE_5_5,
88	CONF_HW_RXTX_RATE_2,
89	CONF_HW_RXTX_RATE_1,
90	CONF_HW_RXTX_RATE_MAX,
91	CONF_HW_RXTX_RATE_UNSUPPORTED = 0xff
92};
93
94enum {
95	CONF_SG_DISABLE = 0,
96	CONF_SG_PROTECTIVE,
97	CONF_SG_OPPORTUNISTIC
98};
99
100enum {
101	/*
102	 * PER threshold in PPM of the BT voice
103	 *
104	 * Range: 0 - 10000000
105	 */
106	CONF_SG_BT_PER_THRESHOLD = 0,
107
108	/*
109	 * Number of consequent RX_ACTIVE activities to override BT voice
110	 * frames to ensure WLAN connection
111	 *
112	 * Range: 0 - 100
113	 */
114	CONF_SG_HV3_MAX_OVERRIDE,
115
116	/*
117	 * Defines the PER threshold of the BT voice
118	 *
119	 * Range: 0 - 65000
120	 */
121	CONF_SG_BT_NFS_SAMPLE_INTERVAL,
122
123	/*
124	 * Defines the load ratio of BT
125	 *
126	 * Range: 0 - 100 (%)
127	 */
128	CONF_SG_BT_LOAD_RATIO,
129
130	/*
131	 * Defines whether the SG will force WLAN host to enter/exit PSM
132	 *
133	 * Range: 1 - SG can force, 0 - host handles PSM
134	 */
135	CONF_SG_AUTO_PS_MODE,
136
137	/*
138	 * Compensation percentage of probe requests when scan initiated
139	 * during BT voice/ACL link.
140	 *
141	 * Range: 0 - 255 (%)
142	 */
143	CONF_SG_AUTO_SCAN_PROBE_REQ,
144
145	/*
146	 * Compensation percentage of probe requests when active scan initiated
147	 * during BT voice
148	 *
149	 * Range: 0 - 255 (%)
150	 */
151	CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_HV3,
152
153	/*
154	 * Defines antenna configuration (single/dual antenna)
155	 *
156	 * Range: 0 - single antenna, 1 - dual antenna
157	 */
158	CONF_SG_ANTENNA_CONFIGURATION,
159
160	/*
161	 * The threshold (percent) of max consequtive beacon misses before
162	 * increasing priority of beacon reception.
163	 *
164	 * Range: 0 - 100 (%)
165	 */
166	CONF_SG_BEACON_MISS_PERCENT,
167
168	/*
169	 * The rate threshold below which receiving a data frame from the AP
170	 * will increase the priority of the data frame above BT traffic.
171	 *
172	 * Range: 0,2, 5(=5.5), 6, 9, 11, 12, 18, 24, 36, 48, 54
173	 */
174	CONF_SG_RATE_ADAPT_THRESH,
175
176	/*
177	 * Not used currently.
178	 *
179	 * Range: 0
180	 */
181	CONF_SG_RATE_ADAPT_SNR,
182
183	/*
184	 * Configure the min and max time BT gains the antenna
185	 * in WLAN PSM / BT master basic rate
186	 *
187	 * Range: 0 - 255 (ms)
188	 */
189	CONF_SG_WLAN_PS_BT_ACL_MASTER_MIN_BR,
190	CONF_SG_WLAN_PS_BT_ACL_MASTER_MAX_BR,
191
192	/*
193	 * The time after it expires no new WLAN trigger frame is trasmitted
194	 * in WLAN PSM / BT master basic rate
195	 *
196	 * Range: 0 - 255 (ms)
197	 */
198	CONF_SG_WLAN_PS_MAX_BT_ACL_MASTER_BR,
199
200	/*
201	 * Configure the min and max time BT gains the antenna
202	 * in WLAN PSM / BT slave basic rate
203	 *
204	 * Range: 0 - 255 (ms)
205	 */
206	CONF_SG_WLAN_PS_BT_ACL_SLAVE_MIN_BR,
207	CONF_SG_WLAN_PS_BT_ACL_SLAVE_MAX_BR,
208
209	/*
210	 * The time after it expires no new WLAN trigger frame is trasmitted
211	 * in WLAN PSM / BT slave basic rate
212	 *
213	 * Range: 0 - 255 (ms)
214	 */
215	CONF_SG_WLAN_PS_MAX_BT_ACL_SLAVE_BR,
216
217	/*
218	 * Configure the min and max time BT gains the antenna
219	 * in WLAN PSM / BT master EDR
220	 *
221	 * Range: 0 - 255 (ms)
222	 */
223	CONF_SG_WLAN_PS_BT_ACL_MASTER_MIN_EDR,
224	CONF_SG_WLAN_PS_BT_ACL_MASTER_MAX_EDR,
225
226	/*
227	 * The time after it expires no new WLAN trigger frame is trasmitted
228	 * in WLAN PSM / BT master EDR
229	 *
230	 * Range: 0 - 255 (ms)
231	 */
232	CONF_SG_WLAN_PS_MAX_BT_ACL_MASTER_EDR,
233
234	/*
235	 * Configure the min and max time BT gains the antenna
236	 * in WLAN PSM / BT slave EDR
237	 *
238	 * Range: 0 - 255 (ms)
239	 */
240	CONF_SG_WLAN_PS_BT_ACL_SLAVE_MIN_EDR,
241	CONF_SG_WLAN_PS_BT_ACL_SLAVE_MAX_EDR,
242
243	/*
244	 * The time after it expires no new WLAN trigger frame is trasmitted
245	 * in WLAN PSM / BT slave EDR
246	 *
247	 * Range: 0 - 255 (ms)
248	 */
249	CONF_SG_WLAN_PS_MAX_BT_ACL_SLAVE_EDR,
250
251	/*
252	 * RX guard time before the beginning of a new BT voice frame during
253	 * which no new WLAN trigger frame is transmitted.
254	 *
255	 * Range: 0 - 100000 (us)
256	 */
257	CONF_SG_RXT,
258
259	/*
260	 * TX guard time before the beginning of a new BT voice frame during
261	 * which no new WLAN frame is transmitted.
262	 *
263	 * Range: 0 - 100000 (us)
264	 */
265
266	CONF_SG_TXT,
267
268	/*
269	 * Enable adaptive RXT/TXT algorithm. If disabled, the host values
270	 * will be utilized.
271	 *
272	 * Range: 0 - disable, 1 - enable
273	 */
274	CONF_SG_ADAPTIVE_RXT_TXT,
275
276	/*
277	 * The used WLAN legacy service period during active BT ACL link
278	 *
279	 * Range: 0 - 255 (ms)
280	 */
281	CONF_SG_PS_POLL_TIMEOUT,
282
283	/*
284	 * The used WLAN UPSD service period during active BT ACL link
285	 *
286	 * Range: 0 - 255 (ms)
287	 */
288	CONF_SG_UPSD_TIMEOUT,
289
290	/*
291	 * Configure the min and max time BT gains the antenna
292	 * in WLAN Active / BT master EDR
293	 *
294	 * Range: 0 - 255 (ms)
295	 */
296	CONF_SG_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR,
297	CONF_SG_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR,
298
299	/*
300	 * The maximum time WLAN can gain the antenna for
301	 * in WLAN Active / BT master EDR
302	 *
303	 * Range: 0 - 255 (ms)
304	 */
305	CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR,
306
307	/*
308	 * Configure the min and max time BT gains the antenna
309	 * in WLAN Active / BT slave EDR
310	 *
311	 * Range: 0 - 255 (ms)
312	 */
313	CONF_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR,
314	CONF_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR,
315
316	/*
317	 * The maximum time WLAN can gain the antenna for
318	 * in WLAN Active / BT slave EDR
319	 *
320	 * Range: 0 - 255 (ms)
321	 */
322	CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR,
323
324	/*
325	 * Configure the min and max time BT gains the antenna
326	 * in WLAN Active / BT basic rate
327	 *
328	 * Range: 0 - 255 (ms)
329	 */
330	CONF_SG_WLAN_ACTIVE_BT_ACL_MIN_BR,
331	CONF_SG_WLAN_ACTIVE_BT_ACL_MAX_BR,
332
333	/*
334	 * The maximum time WLAN can gain the antenna for
335	 * in WLAN Active / BT basic rate
336	 *
337	 * Range: 0 - 255 (ms)
338	 */
339	CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_BR,
340
341	/*
342	 * Compensation percentage of WLAN passive scan window if initiated
343	 * during BT voice
344	 *
345	 * Range: 0 - 1000 (%)
346	 */
347	CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_HV3,
348
349	/*
350	 * Compensation percentage of WLAN passive scan window if initiated
351	 * during BT A2DP
352	 *
353	 * Range: 0 - 1000 (%)
354	 */
355	CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_A2DP,
356
357	/*
358	 * Fixed time ensured for BT traffic to gain the antenna during WLAN
359	 * passive scan.
360	 *
361	 * Range: 0 - 1000 ms
362	 */
363	CONF_SG_PASSIVE_SCAN_A2DP_BT_TIME,
364
365	/*
366	 * Fixed time ensured for WLAN traffic to gain the antenna during WLAN
367	 * passive scan.
368	 *
369	 * Range: 0 - 1000 ms
370	 */
371	CONF_SG_PASSIVE_SCAN_A2DP_WLAN_TIME,
372
373	/*
374	 * Number of consequent BT voice frames not interrupted by WLAN
375	 *
376	 * Range: 0 - 100
377	 */
378	CONF_SG_HV3_MAX_SERVED,
379
380	/*
381	 * Protection time of the DHCP procedure.
382	 *
383	 * Range: 0 - 100000 (ms)
384	 */
385	CONF_SG_DHCP_TIME,
386
387	/*
388	 * Compensation percentage of WLAN active scan window if initiated
389	 * during BT A2DP
390	 *
391	 * Range: 0 - 1000 (%)
392	 */
393	CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_A2DP,
394	CONF_SG_TEMP_PARAM_1,
395	CONF_SG_TEMP_PARAM_2,
396	CONF_SG_TEMP_PARAM_3,
397	CONF_SG_TEMP_PARAM_4,
398	CONF_SG_TEMP_PARAM_5,
399	CONF_SG_PARAMS_MAX,
400	CONF_SG_PARAMS_ALL = 0xff
401};
402
403struct conf_sg_settings {
404	u32 params[CONF_SG_PARAMS_MAX];
405	u8 state;
406};
407
408enum conf_rx_queue_type {
409	CONF_RX_QUEUE_TYPE_LOW_PRIORITY,  /* All except the high priority */
410	CONF_RX_QUEUE_TYPE_HIGH_PRIORITY, /* Management and voice packets */
411};
412
413struct conf_rx_settings {
414	/*
415	 * The maximum amount of time, in TU, before the
416	 * firmware discards the MSDU.
417	 *
418	 * Range: 0 - 0xFFFFFFFF
419	 */
420	u32 rx_msdu_life_time;
421
422	u32 packet_detection_threshold;
423
424	/*
425	 * The longest time the STA will wait to receive traffic from the AP
426	 * after a PS-poll has been transmitted.
427	 *
428	 * Range: 0 - 200000
429	 */
430	u16 ps_poll_timeout;
431	/*
432	 * The longest time the STA will wait to receive traffic from the AP
433	 * after a frame has been sent from an UPSD enabled queue.
434	 *
435	 * Range: 0 - 200000
436	 */
437	u16 upsd_timeout;
438
439	/*
440	 * The number of octets in an MPDU, below which an RTS/CTS
441	 * handshake is not performed.
442	 *
443	 * Range: 0 - 4096
444	 */
445	u16 rts_threshold;
446
447	/*
448	 * The RX Clear Channel Assessment threshold in the PHY
449	 * (the energy threshold).
450	 *
451	 * Range: ENABLE_ENERGY_D  == 0x140A
452	 *        DISABLE_ENERGY_D == 0xFFEF
453	 */
454	u16 rx_cca_threshold;
455
456	/*
457	 * Occupied Rx mem-blocks number which requires interrupting the host
458	 * (0 = no buffering, 0xffff = disabled).
459	 *
460	 * Range: u16
461	 */
462	u16 irq_blk_threshold;
463
464	/*
465	 * Rx packets number which requires interrupting the host
466	 * (0 = no buffering).
467	 *
468	 * Range: u16
469	 */
470	u16 irq_pkt_threshold;
471
472	/*
473	 * Max time in msec the FW may delay RX-Complete interrupt.
474	 *
475	 * Range: 1 - 100
476	 */
477	u16 irq_timeout;
478
479	/*
480	 * The RX queue type.
481	 *
482	 * Range: RX_QUEUE_TYPE_RX_LOW_PRIORITY, RX_QUEUE_TYPE_RX_HIGH_PRIORITY,
483	 */
484	u8 queue_type;
485};
486
487#define CONF_TX_MAX_RATE_CLASSES       8
488
489#define CONF_TX_RATE_MASK_UNSPECIFIED  0
490#define CONF_TX_RATE_MASK_BASIC        (CONF_HW_BIT_RATE_1MBPS | \
491					CONF_HW_BIT_RATE_2MBPS)
492#define CONF_TX_RATE_RETRY_LIMIT       10
493
494struct conf_tx_rate_class {
495
496	/*
497	 * The rates enabled for this rate class.
498	 *
499	 * Range: CONF_HW_BIT_RATE_* bit mask
500	 */
501	u32 enabled_rates;
502
503	/*
504	 * The dot11 short retry limit used for TX retries.
505	 *
506	 * Range: u8
507	 */
508	u8 short_retry_limit;
509
510	/*
511	 * The dot11 long retry limit used for TX retries.
512	 *
513	 * Range: u8
514	 */
515	u8 long_retry_limit;
516
517	/*
518	 * Flags controlling the attributes of TX transmission.
519	 *
520	 * Range: bit 0: Truncate - when set, FW attempts to send a frame stop
521	 *               when the total valid per-rate attempts have
522	 *               been exhausted; otherwise transmissions
523	 *               will continue at the lowest available rate
524	 *               until the appropriate one of the
525	 *               short_retry_limit, long_retry_limit,
526	 *               dot11_max_transmit_msdu_life_time, or
527	 *               max_tx_life_time, is exhausted.
528	 *            1: Preamble Override - indicates if the preamble type
529	 *               should be used in TX.
530	 *            2: Preamble Type - the type of the preamble to be used by
531	 *               the policy (0 - long preamble, 1 - short preamble.
532	 */
533	u8 aflags;
534};
535
536#define CONF_TX_MAX_AC_COUNT 4
537
538/* Slot number setting to start transmission at PIFS interval */
539#define CONF_TX_AIFS_PIFS 1
540/* Slot number setting to start transmission at DIFS interval normal
541 * DCF access */
542#define CONF_TX_AIFS_DIFS 2
543
544
545enum conf_tx_ac {
546	CONF_TX_AC_BE = 0,         /* best effort / legacy */
547	CONF_TX_AC_BK = 1,         /* background */
548	CONF_TX_AC_VI = 2,         /* video */
549	CONF_TX_AC_VO = 3,         /* voice */
550	CONF_TX_AC_CTS2SELF = 4,   /* fictious AC, follows AC_VO */
551	CONF_TX_AC_ANY_TID = 0x1f
552};
553
554struct conf_tx_ac_category {
555	/*
556	 * The AC class identifier.
557	 *
558	 * Range: enum conf_tx_ac
559	 */
560	u8 ac;
561
562	/*
563	 * The contention window minimum size (in slots) for the access
564	 * class.
565	 *
566	 * Range: u8
567	 */
568	u8 cw_min;
569
570	/*
571	 * The contention window maximum size (in slots) for the access
572	 * class.
573	 *
574	 * Range: u8
575	 */
576	u16 cw_max;
577
578	/*
579	 * The AIF value (in slots) for the access class.
580	 *
581	 * Range: u8
582	 */
583	u8 aifsn;
584
585	/*
586	 * The TX Op Limit (in microseconds) for the access class.
587	 *
588	 * Range: u16
589	 */
590	u16 tx_op_limit;
591};
592
593#define CONF_TX_MAX_TID_COUNT 7
594
595enum {
596	CONF_CHANNEL_TYPE_DCF = 0,   /* DC/LEGACY*/
597	CONF_CHANNEL_TYPE_EDCF = 1,  /* EDCA*/
598	CONF_CHANNEL_TYPE_HCCA = 2,  /* HCCA*/
599};
600
601enum {
602	CONF_PS_SCHEME_LEGACY = 0,
603	CONF_PS_SCHEME_UPSD_TRIGGER = 1,
604	CONF_PS_SCHEME_LEGACY_PSPOLL = 2,
605	CONF_PS_SCHEME_SAPSD = 3,
606};
607
608enum {
609	CONF_ACK_POLICY_LEGACY = 0,
610	CONF_ACK_POLICY_NO_ACK = 1,
611	CONF_ACK_POLICY_BLOCK = 2,
612};
613
614
615struct conf_tx_tid {
616	u8 queue_id;
617	u8 channel_type;
618	u8 tsid;
619	u8 ps_scheme;
620	u8 ack_policy;
621	u32 apsd_conf[2];
622};
623
624struct conf_tx_settings {
625	/*
626	 * The TX ED value for TELEC Enable/Disable.
627	 *
628	 * Range: 0, 1
629	 */
630	u8 tx_energy_detection;
631
632	/*
633	 * Configuration for rate classes for TX (currently only one
634	 * rate class supported.)
635	 */
636	struct conf_tx_rate_class rc_conf;
637
638	/*
639	 * Configuration for access categories for TX rate control.
640	 */
641	u8 ac_conf_count;
642	struct conf_tx_ac_category ac_conf[CONF_TX_MAX_AC_COUNT];
643
644	/*
645	 * Configuration for TID parameters.
646	 */
647	u8 tid_conf_count;
648	struct conf_tx_tid tid_conf[CONF_TX_MAX_TID_COUNT];
649
650	/*
651	 * The TX fragmentation threshold.
652	 *
653	 * Range: u16
654	 */
655	u16 frag_threshold;
656
657	/*
658	 * Max time in msec the FW may delay frame TX-Complete interrupt.
659	 *
660	 * Range: u16
661	 */
662	u16 tx_compl_timeout;
663
664	/*
665	 * Completed TX packet count which requires to issue the TX-Complete
666	 * interrupt.
667	 *
668	 * Range: u16
669	 */
670	u16 tx_compl_threshold;
671
672	/*
673	 * The rate used for control messages and scanning on the 2.4GHz band
674	 *
675	 * Range: CONF_HW_BIT_RATE_* bit mask
676	 */
677	u32 basic_rate;
678
679	/*
680	 * The rate used for control messages and scanning on the 5GHz band
681	 *
682	 * Range: CONF_HW_BIT_RATE_* bit mask
683	 */
684	u32 basic_rate_5;
685};
686
687enum {
688	CONF_WAKE_UP_EVENT_BEACON    = 0x01, /* Wake on every Beacon*/
689	CONF_WAKE_UP_EVENT_DTIM      = 0x02, /* Wake on every DTIM*/
690	CONF_WAKE_UP_EVENT_N_DTIM    = 0x04, /* Wake every Nth DTIM */
691	CONF_WAKE_UP_EVENT_N_BEACONS = 0x08, /* Wake every Nth beacon */
692	CONF_WAKE_UP_EVENT_BITS_MASK = 0x0F
693};
694
695#define CONF_MAX_BCN_FILT_IE_COUNT 32
696
697#define CONF_BCN_RULE_PASS_ON_CHANGE         BIT(0)
698#define CONF_BCN_RULE_PASS_ON_APPEARANCE     BIT(1)
699
700#define CONF_BCN_IE_OUI_LEN    3
701#define CONF_BCN_IE_VER_LEN    2
702
703struct conf_bcn_filt_rule {
704	/*
705	 * IE number to which to associate a rule.
706	 *
707	 * Range: u8
708	 */
709	u8 ie;
710
711	/*
712	 * Rule to associate with the specific ie.
713	 *
714	 * Range: CONF_BCN_RULE_PASS_ON_*
715	 */
716	u8 rule;
717
718	/*
719	 * OUI for the vendor specifie IE (221)
720	 */
721	u8 oui[CONF_BCN_IE_OUI_LEN];
722
723	/*
724	 * Type for the vendor specifie IE (221)
725	 */
726	u8 type;
727
728	/*
729	 * Version for the vendor specifie IE (221)
730	 */
731	u8 version[CONF_BCN_IE_VER_LEN];
732};
733
734#define CONF_MAX_RSSI_SNR_TRIGGERS 8
735
736enum {
737	CONF_TRIG_METRIC_RSSI_BEACON = 0,
738	CONF_TRIG_METRIC_RSSI_DATA,
739	CONF_TRIG_METRIC_SNR_BEACON,
740	CONF_TRIG_METRIC_SNR_DATA
741};
742
743enum {
744	CONF_TRIG_EVENT_TYPE_LEVEL = 0,
745	CONF_TRIG_EVENT_TYPE_EDGE
746};
747
748enum {
749	CONF_TRIG_EVENT_DIR_LOW = 0,
750	CONF_TRIG_EVENT_DIR_HIGH,
751	CONF_TRIG_EVENT_DIR_BIDIR
752};
753
754struct conf_sig_weights {
755
756	/*
757	 * RSSI from beacons average weight.
758	 *
759	 * Range: u8
760	 */
761	u8 rssi_bcn_avg_weight;
762
763	/*
764	 * RSSI from data average weight.
765	 *
766	 * Range: u8
767	 */
768	u8 rssi_pkt_avg_weight;
769
770	/*
771	 * SNR from beacons average weight.
772	 *
773	 * Range: u8
774	 */
775	u8 snr_bcn_avg_weight;
776
777	/*
778	 * SNR from data average weight.
779	 *
780	 * Range: u8
781	 */
782	u8 snr_pkt_avg_weight;
783};
784
785enum conf_bcn_filt_mode {
786	CONF_BCN_FILT_MODE_DISABLED = 0,
787	CONF_BCN_FILT_MODE_ENABLED = 1
788};
789
790enum conf_bet_mode {
791	CONF_BET_MODE_DISABLE = 0,
792	CONF_BET_MODE_ENABLE = 1,
793};
794
795struct conf_conn_settings {
796	/*
797	 * Firmware wakeup conditions configuration. The host may set only
798	 * one bit.
799	 *
800	 * Range: CONF_WAKE_UP_EVENT_*
801	 */
802	u8 wake_up_event;
803
804	/*
805	 * Listen interval for beacons or Dtims.
806	 *
807	 * Range: 0 for beacon and Dtim wakeup
808	 *        1-10 for x Dtims
809	 *        1-255 for x beacons
810	 */
811	u8 listen_interval;
812
813	/*
814	 * Enable or disable the beacon filtering.
815	 *
816	 * Range: CONF_BCN_FILT_MODE_*
817	 */
818	enum conf_bcn_filt_mode bcn_filt_mode;
819
820	/*
821	 * Configure Beacon filter pass-thru rules.
822	 */
823	u8 bcn_filt_ie_count;
824	struct conf_bcn_filt_rule bcn_filt_ie[CONF_MAX_BCN_FILT_IE_COUNT];
825
826	/*
827	 * The number of consequtive beacons to lose, before the firmware
828	 * becomes out of synch.
829	 *
830	 * Range: u32
831	 */
832	u32 synch_fail_thold;
833
834	/*
835	 * After out-of-synch, the number of TU's to wait without a further
836	 * received beacon (or probe response) before issuing the BSS_EVENT_LOSE
837	 * event.
838	 *
839	 * Range: u32
840	 */
841	u32 bss_lose_timeout;
842
843	/*
844	 * Beacon receive timeout.
845	 *
846	 * Range: u32
847	 */
848	u32 beacon_rx_timeout;
849
850	/*
851	 * Broadcast receive timeout.
852	 *
853	 * Range: u32
854	 */
855	u32 broadcast_timeout;
856
857	/*
858	 * Enable/disable reception of broadcast packets in power save mode
859	 *
860	 * Range: 1 - enable, 0 - disable
861	 */
862	u8 rx_broadcast_in_ps;
863
864	/*
865	 * Consequtive PS Poll failures before sending event to driver
866	 *
867	 * Range: u8
868	 */
869	u8 ps_poll_threshold;
870
871	/*
872	 * PS Poll failure recovery ACTIVE period length
873	 *
874	 * Range: u32 (ms)
875	 */
876	u32 ps_poll_recovery_period;
877
878	/*
879	 * Configuration of signal average weights.
880	 */
881	struct conf_sig_weights sig_weights;
882
883	/*
884	 * Specifies if beacon early termination procedure is enabled or
885	 * disabled.
886	 *
887	 * Range: CONF_BET_MODE_*
888	 */
889	u8 bet_enable;
890
891	/*
892	 * Specifies the maximum number of consecutive beacons that may be
893	 * early terminated. After this number is reached at least one full
894	 * beacon must be correctly received in FW before beacon ET
895	 * resumes.
896	 *
897	 * Range 0 - 255
898	 */
899	u8 bet_max_consecutive;
900
901	/*
902	 * Specifies the maximum number of times to try PSM entry if it fails
903	 * (if sending the appropriate null-func message fails.)
904	 *
905	 * Range 0 - 255
906	 */
907	u8 psm_entry_retries;
908
909	/*
910	 *
911	 * Specifies the interval of the connection keep-alive null-func
912	 * frame in ms.
913	 *
914	 * Range: 1000 - 3600000
915	 */
916	u32 keep_alive_interval;
917
918	/*
919	 * Maximum listen interval supported by the driver in units of beacons.
920	 *
921	 * Range: u16
922	 */
923	u8 max_listen_interval;
924};
925
926enum {
927	CONF_REF_CLK_19_2_E,
928	CONF_REF_CLK_26_E,
929	CONF_REF_CLK_38_4_E,
930	CONF_REF_CLK_52_E
931};
932
933enum single_dual_band_enum {
934	CONF_SINGLE_BAND,
935	CONF_DUAL_BAND
936};
937
938#define CONF_RSSI_AND_PROCESS_COMPENSATION_SIZE 15
939#define CONF_NUMBER_OF_SUB_BANDS_5  7
940#define CONF_NUMBER_OF_RATE_GROUPS  6
941#define CONF_NUMBER_OF_CHANNELS_2_4 14
942#define CONF_NUMBER_OF_CHANNELS_5   35
943
944struct conf_radio_parms {
945	/*
946	 * FEM parameter set to use
947	 *
948	 * Range: 0 or 1
949	 */
950	u8 fem;
951};
952
953struct conf_itrim_settings {
954	/* enable dco itrim */
955	u8 enable;
956
957	/* moderation timeout in microsecs from the last TX */
958	u32 timeout;
959};
960
961struct conf_pm_config_settings {
962	/*
963	 * Host clock settling time
964	 *
965	 * Range: 0 - 30000 us
966	 */
967	u32 host_clk_settling_time;
968
969	/*
970	 * Host fast wakeup support
971	 *
972	 * Range: true, false
973	 */
974	bool host_fast_wakeup_support;
975};
976
977struct conf_roam_trigger_settings {
978	/*
979	 * The minimum interval between two trigger events.
980	 *
981	 * Range: 0 - 60000 ms
982	 */
983	u16 trigger_pacing;
984
985	/*
986	 * The weight for rssi/beacon average calculation
987	 *
988	 * Range: 0 - 255
989	 */
990	u8 avg_weight_rssi_beacon;
991
992	/*
993	 * The weight for rssi/data frame average calculation
994	 *
995	 * Range: 0 - 255
996	 */
997	u8 avg_weight_rssi_data;
998
999	/*
1000	 * The weight for snr/beacon average calculation
1001	 *
1002	 * Range: 0 - 255
1003	 */
1004	u8 avg_weight_snr_beacon;
1005
1006	/*
1007	 * The weight for snr/data frame average calculation
1008	 *
1009	 * Range: 0 - 255
1010	 */
1011	u8 avg_weight_snr_data;
1012};
1013
1014struct conf_drv_settings {
1015	struct conf_sg_settings sg;
1016	struct conf_rx_settings rx;
1017	struct conf_tx_settings tx;
1018	struct conf_conn_settings conn;
1019	struct conf_itrim_settings itrim;
1020	struct conf_pm_config_settings pm_config;
1021	struct conf_roam_trigger_settings roam_trigger;
1022};
1023
1024#endif
1025