Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
acx.h
Go to the documentation of this file.
1 /*
2  * This file is part of wl1271
3  *
4  * Copyright (C) 1998-2009 Texas Instruments. All rights reserved.
5  * Copyright (C) 2008-2010 Nokia Corporation
6  *
7  * Contact: Luciano Coelho <[email protected]>
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License
11  * version 2 as published by the Free Software Foundation.
12  *
13  * This program is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21  * 02110-1301 USA
22  *
23  */
24 
25 #ifndef __ACX_H__
26 #define __ACX_H__
27 
28 #include "wlcore.h"
29 #include "cmd.h"
30 
31 /*************************************************************************
32 
33  Host Interrupt Register (WiLink -> Host)
34 
35 **************************************************************************/
36 /* HW Initiated interrupt Watchdog timer expiration */
37 #define WL1271_ACX_INTR_WATCHDOG BIT(0)
38 /* Init sequence is done (masked interrupt, detection through polling only ) */
39 #define WL1271_ACX_INTR_INIT_COMPLETE BIT(1)
40 /* Event was entered to Event MBOX #A*/
41 #define WL1271_ACX_INTR_EVENT_A BIT(2)
42 /* Event was entered to Event MBOX #B*/
43 #define WL1271_ACX_INTR_EVENT_B BIT(3)
44 /* Command processing completion*/
45 #define WL1271_ACX_INTR_CMD_COMPLETE BIT(4)
46 /* Signaling the host on HW wakeup */
47 #define WL1271_ACX_INTR_HW_AVAILABLE BIT(5)
48 /* The MISC bit is used for aggregation of RX, TxComplete and TX rate update */
49 #define WL1271_ACX_INTR_DATA BIT(6)
50 /* Trace message on MBOX #A */
51 #define WL1271_ACX_INTR_TRACE_A BIT(7)
52 /* Trace message on MBOX #B */
53 #define WL1271_ACX_INTR_TRACE_B BIT(8)
54 /* SW FW Initiated interrupt Watchdog timer expiration */
55 #define WL1271_ACX_SW_INTR_WATCHDOG BIT(9)
56 
57 #define WL1271_ACX_INTR_ALL 0xFFFFFFFF
58 
59 /* all possible interrupts - only appropriate ones will be masked in */
60 #define WLCORE_ALL_INTR_MASK (WL1271_ACX_INTR_WATCHDOG | \
61  WL1271_ACX_INTR_EVENT_A | \
62  WL1271_ACX_INTR_EVENT_B | \
63  WL1271_ACX_INTR_HW_AVAILABLE | \
64  WL1271_ACX_INTR_DATA | \
65  WL1271_ACX_SW_INTR_WATCHDOG)
66 
67 /* Target's information element */
68 struct acx_header {
70 
71  /* acx (or information element) header */
73 
74  /* payload length (not including headers */
76 } __packed;
77 
78 struct acx_error_counter {
79  struct acx_header header;
80 
81  /* The number of PLCP errors since the last time this */
82  /* information element was interrogated. This field is */
83  /* automatically cleared when it is interrogated.*/
85 
86  /* The number of FCS errors since the last time this */
87  /* information element was interrogated. This field is */
88  /* automatically cleared when it is interrogated.*/
90 
91  /* The number of MPDUs without PLCP header errors received*/
92  /* since the last time this information element was interrogated. */
93  /* This field is automatically cleared when it is interrogated.*/
95 
96  /* the number of missed sequence numbers in the squentially */
97  /* values of frames seq numbers */
99 } __packed;
100 
108 
110 };
111 
113  /* Active mode */
115 
116  /* Power save mode */
118 
119  /* Extreme low power */
121 
123 
124  /* illegal out of band value of PSM mode */
126 };
127 
128 struct acx_sleep_auth {
129  struct acx_header header;
130 
131  /* The sleep level authorization of the device. */
132  /* 0 - Always active*/
133  /* 1 - Power down mode: light / fast sleep*/
134  /* 2 - ELP mode: Deep / Max sleep*/
135  u8 sleep_auth;
136  u8 padding[3];
137 } __packed;
138 
139 enum {
145 };
146 
147 #define DEFAULT_UCAST_PRIORITY 0
148 #define DEFAULT_RX_Q_PRIORITY 0
149 #define DEFAULT_RXQ_PRIORITY 0 /* low 0 .. 15 high */
150 #define DEFAULT_RXQ_TYPE 0x07 /* All frames, Data/Ctrl/Mgmt */
151 #define TRACE_BUFFER_MAX_SIZE 256
152 
153 #define DP_RX_PACKET_RING_CHUNK_SIZE 1600
154 #define DP_TX_PACKET_RING_CHUNK_SIZE 1600
155 #define DP_RX_PACKET_RING_CHUNK_NUM 2
156 #define DP_TX_PACKET_RING_CHUNK_NUM 2
157 #define DP_TX_COMPLETE_TIME_OUT 20
158 
159 #define TX_MSDU_LIFETIME_MIN 0
160 #define TX_MSDU_LIFETIME_MAX 3000
161 #define TX_MSDU_LIFETIME_DEF 512
162 #define RX_MSDU_LIFETIME_MIN 0
163 #define RX_MSDU_LIFETIME_MAX 0xFFFFFFFF
164 #define RX_MSDU_LIFETIME_DEF 512000
165 
166 struct acx_rx_msdu_lifetime {
167  struct acx_header header;
168 
169  /*
170  * The maximum amount of time, in TU, before the
171  * firmware discards the MSDU.
172  */
174 } __packed;
175 
181 };
182 
183 #define STATION_WONE_INDEX 0
184 
185 struct acx_slot {
186  struct acx_header header;
187 
189  u8 wone_index; /* Reserved */
190  u8 slot_time;
191  u8 reserved[5];
192 } __packed;
193 
194 
195 #define ACX_MC_ADDRESS_GROUP_MAX (8)
196 #define ADDRESS_GROUP_MAX_LEN (ETH_ALEN * ACX_MC_ADDRESS_GROUP_MAX)
197 
198 struct acx_dot11_grp_addr_tbl {
199  struct acx_header header;
200 
202  u8 enabled;
203  u8 num_groups;
204  u8 pad[1];
206 } __packed;
207 
208 struct acx_rx_timeout {
209  struct acx_header header;
210 
216 } __packed;
217 
218 struct acx_rts_threshold {
219  struct acx_header header;
220 
224 } __packed;
225 
227  struct acx_header header;
228 
230  u8 enable;
231  /*
232  * The number of beacons without the unicast TIM
233  * bit set that the firmware buffers before
234  * signaling the host about ready frames.
235  * When set to 0 and the filter is enabled, beacons
236  * without the unicast TIM bit set are dropped.
237  */
239  u8 pad[1];
240 } __packed;
241 
242 /*
243  * ACXBeaconFilterEntry (not 221)
244  * Byte Offset Size (Bytes) Definition
245  * =========== ============ ==========
246  * 0 1 IE identifier
247  * 1 1 Treatment bit mask
248  *
249  * ACXBeaconFilterEntry (221)
250  * Byte Offset Size (Bytes) Definition
251  * =========== ============ ==========
252  * 0 1 IE identifier
253  * 1 1 Treatment bit mask
254  * 2 3 OUI
255  * 5 1 Type
256  * 6 2 Version
257  *
258  *
259  * Treatment bit mask - The information element handling:
260  * bit 0 - The information element is compared and transferred
261  * in case of change.
262  * bit 1 - The information element is transferred to the host
263  * with each appearance or disappearance.
264  * Note that both bits can be set at the same time.
265  */
266 #define BEACON_FILTER_TABLE_MAX_IE_NUM (32)
267 #define BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM (6)
268 #define BEACON_FILTER_TABLE_IE_ENTRY_SIZE (2)
269 #define BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE (6)
270 #define BEACON_FILTER_TABLE_MAX_SIZE ((BEACON_FILTER_TABLE_MAX_IE_NUM * \
271  BEACON_FILTER_TABLE_IE_ENTRY_SIZE) + \
272  (BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM * \
273  BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE))
274 
276  struct acx_header header;
277 
279  u8 num_ie;
280  u8 pad[2];
282 } __packed;
283 
284 struct acx_conn_monit_params {
285  struct acx_header header;
286 
289  __le32 synch_fail_thold; /* number of beacons missed */
290  __le32 bss_lose_timeout; /* number of TU's from synch fail */
291 } __packed;
292 
293 struct acx_bt_wlan_coex {
294  struct acx_header header;
295 
296  u8 enable;
297  u8 pad[3];
298 } __packed;
299 
300 struct acx_bt_wlan_coex_param {
301  struct acx_header header;
302 
306 } __packed;
307 
310 
314 } __packed;
315 
316 struct acx_energy_detection {
317  struct acx_header header;
318 
319  /* The RX Clear Channel Assessment threshold in the PHY */
322  u8 pad;
323 } __packed;
324 
325 struct acx_beacon_broadcast {
326  struct acx_header header;
327 
329  /* Enables receiving of broadcast packets in PS mode */
331 
334 
335  /* Consecutive PS Poll failures before updating the host */
337  u8 pad[1];
338 } __packed;
339 
340 struct acx_event_mask {
341  struct acx_header header;
342 
344  __le32 high_event_mask; /* Unused */
345 } __packed;
346 
347 #define SCAN_PASSIVE BIT(0)
348 #define SCAN_5GHZ_BAND BIT(1)
349 #define SCAN_TRIGGERED BIT(2)
350 #define SCAN_PRIORITY_HIGH BIT(3)
351 
352 /* When set, disable HW encryption */
353 #define DF_ENCRYPTION_DISABLE 0x01
354 #define DF_SNIFF_MODE_ENABLE 0x80
355 
356 struct acx_feature_config {
357  struct acx_header header;
358 
363 } __packed;
364 
365 struct acx_current_tx_power {
366  struct acx_header header;
367 
370  u8 padding[2];
371 } __packed;
372 
373 struct acx_wake_up_condition {
374  struct acx_header header;
375 
377  u8 wake_up_event; /* Only one bit can be set */
379  u8 pad[1];
380 } __packed;
381 
382 struct acx_aid {
383  struct acx_header header;
384 
385  /*
386  * To be set when associated with an AP.
387  */
391 } __packed;
392 
396 };
397 
398 struct acx_preamble {
399  struct acx_header header;
400 
401  /*
402  * When set, the WiLink transmits the frames with a short preamble and
403  * when cleared, the WiLink transmits the frames with a long preamble.
404  */
406  u8 preamble;
407  u8 padding[2];
408 } __packed;
409 
413 };
414 
415 struct acx_ctsprotect {
416  struct acx_header header;
418  u8 ctsprotect;
419  u8 padding[2];
420 } __packed;
421 
422 struct acx_rate_class {
426  u8 aflags;
427  u8 reserved;
428 };
429 
430 struct acx_rate_policy {
431  struct acx_header header;
432 
435 } __packed;
436 
437 struct acx_ac_cfg {
445 } __packed;
446 
457 } __packed;
458 
463 } __packed;
464 
468  __le16 tx_compl_threshold; /* number of packets */
469 } __packed;
470 
473 
485 } __packed;
486 
489 
492 
495 
498 
501 
502  /* Address of the TX result interface (control block) */
505 
508 
511 
514 
517 
518  /* Number of blocks FW allocated for TX packets */
520 
521  /* Number of blocks FW allocated for RX packets */
523 
524  /* the following 4 fields are valid in SLAVE mode only */
529 } __packed;
530 
533 
539 } __packed;
540 
541 
544 
549 } __packed;
550 
551 #define ACX_IPV4_VERSION 4
552 #define ACX_IPV6_VERSION 6
553 #define ACX_IPV4_ADDR_SIZE 4
554 
555 /* bitmap of enabled arp_filter features */
556 #define ACX_ARP_FILTER_ARP_FILTERING BIT(0)
557 #define ACX_ARP_FILTER_AUTO_ARP BIT(1)
558 
562  u8 version; /* ACX_IPV4_VERSION, ACX_IPV6_VERSION */
563  u8 enable; /* bitmap of enabled ARP filtering features */
565  u8 address[16]; /* The configured device IP address - all ARP
566  requests directed to this IP address will pass
567  through. For IPv4, the first four bytes are
568  used. */
569 } __packed;
570 
573 
577 } __packed;
578 
581 
585 } __packed;
586 
587 enum {
590 };
591 
592 enum {
595 };
596 
599 
605 } __packed;
606 
607 /* TODO: maybe this needs to be moved somewhere else? */
608 #define HOST_IF_CFG_RX_FIFO_ENABLE BIT(0)
609 #define HOST_IF_CFG_TX_EXTRA_BLKS_SWAP BIT(1)
610 #define HOST_IF_CFG_TX_PAD_TO_SDIO_BLK BIT(3)
611 #define HOST_IF_CFG_RX_PAD_TO_SDIO_BLK BIT(4)
612 #define HOST_IF_CFG_ADD_RX_ALIGNMENT BIT(6)
613 
614 enum {
617 };
618 
619 enum {
623 };
624 
625 enum {
628 };
629 
630 enum {
635 };
636 
637 enum {
640 };
641 
644 
650  __le16 pacing; /* 0 - 60000 ms */
655 };
656 
659 
666 };
667 
668 
669 /* special capability bit (not employed by the 802.11n spec) */
670 #define WL12XX_HT_CAP_HT_OPERATION BIT(16)
671 
672 /*
673  * ACX_PEER_HT_CAP
674  * Configure HT capabilities - declare the capabilities of the peer
675  * we are connected to.
676  */
679 
680  /* bitmask of capability bits supported by the peer */
682 
683  /* Indicates to which link these capabilities apply. */
685 
686  /*
687  * This the maximum A-MPDU length supported by the AP. The FW may not
688  * exceed this length when sending A-MPDUs
689  */
691 
692  /* This is the minimal spacing required when sending A-MPDUs to the AP*/
694 
696 } __packed;
697 
698 /*
699  * ACX_HT_BSS_OPERATION
700  * Configure HT capabilities - AP rules for behavior in the BSS.
701  */
704 
706 
707  /* Values: 0 - RIFS not allowed, 1 - RIFS allowed */
709 
710  /* Values: 0 - 3 like in spec */
712 
713  /* Values: 0 - GF protection not required, 1 - GF protection required */
715 
716  /*Values: 0 - TX Burst limit not required, 1 - TX Burst Limit required*/
718 
719  /*
720  * Values: 0 - Dual CTS protection not required,
721  * 1 - Dual CTS Protection required
722  * Note: When this value is set to 1 FW will protect all TXOP with RTS
723  * frame and will not use CTS-to-self regardless of the value of the
724  * ACX_CTS_PROTECTION information element
725  */
727 
729 } __packed;
730 
731 #define RX_BA_MAX_SESSIONS 3
732 
735 
736  /* Specifies role Id, Range 0-7, 0xFF means ANY role. */
738 
739  /*
740  * Per TID setting for allowing TX BA. Set a bit to 1 to allow
741  * TX BA sessions for the corresponding TID.
742  */
744 
745  /* Windows size in number of packets */
747 
749 
750  /* As initiator inactivity timeout in time units(TU) of 1024us */
752 
754 } __packed;
755 
758 
759  /* Specifies link id, range 0-31 */
761 
763 
765 
766  /* Windows size in number of packets */
768 
769  /* BA session starting sequence number. RANGE 0-FFF */
771 
773 } __packed;
774 
777 
786 } __packed;
787 
790 
794 
795  /* interval between triggers (10-100 msec) */
797 
798  /* timeout before first trigger (0-200 msec) */
801 } __packed;
802 
805 
808 
809  /*
810  * the number of frames transmission failures before
811  * issuing the aging event.
812  */
814 } __packed;
815 
818 
823 } __packed;
824 
827 
830 } __packed;
831 
832 /*
833  * ACX_FM_COEX_CFG
834  * set the FM co-existence parameters.
835  */
838  /* enable(1) / disable(0) the FM Coex feature */
840  /*
841  * Swallow period used in COEX PLL swallowing mechanism.
842  * 0xFF = use FW default
843  */
845  /*
846  * The N divider used in COEX PLL swallowing mechanism for Fref of
847  * 38.4/19.2 Mhz. 0xFF = use FW default
848  */
850  /*
851  * The N divider used in COEX PLL swallowing mechanism for Fref of
852  * 26/52 Mhz. 0xFF = use FW default
853  */
855  /*
856  * The M divider used in COEX PLL swallowing mechanism for Fref of
857  * 38.4/19.2 Mhz. 0xFFFF = use FW default
858  */
860  /*
861  * The M divider used in COEX PLL swallowing mechanism for Fref of
862  * 26/52 Mhz. 0xFFFF = use FW default
863  */
865  /*
866  * The time duration in uSec required for COEX PLL to stabilize.
867  * 0xFFFFFFFF = use FW default
868  */
870  /*
871  * The time duration in uSec required for LDO to stabilize.
872  * 0xFFFFFFFF = use FW default
873  */
875  /*
876  * The disturbed frequency band margin around the disturbed frequency
877  * center (single sided).
878  * For example, if 2 is configured, the following channels will be
879  * considered disturbed channel:
880  * 80 +- 0.1 MHz, 91 +- 0.1 MHz, 98 +- 0.1 MHz, 102 +- 0.1 MH
881  * 0xFF = use FW default
882  */
884  /*
885  * The swallow clock difference of the swallowing mechanism.
886  * 0xFF = use FW default
887  */
889 } __packed;
890 
891 #define ACX_RATE_MGMT_ALL_PARAMS 0xff
894 
895  u8 index; /* 0xff to configure all params */
913 } __packed;
914 
917 
930 } __packed;
931 
932 
936 
937  /* action of type FILTER_XXX */
939 
940  u8 pad[2];
941 } __packed;
942 
943 
946 
948 
949  /* 0 - WL1271_MAX_RX_FILTERS-1 */
951 
953 
955  u8 fields[0];
956 } __packed;
957 
958 enum {
960  ACX_MEM_CFG = 0x0001,
961  ACX_SLOT = 0x0002,
962  ACX_AC_CFG = 0x0003,
963  ACX_MEM_MAP = 0x0004,
964  ACX_AID = 0x0005,
966  ACX_STATISTICS = 0x0007,
968  ACX_TID_CFG = 0x0009,
971  ACX_NOISE_HIST = 0x000C,
972  ACX_HDK_VERSION = 0x000D,
980  ACX_SG_ENABLE = 0x0015,
981  ACX_SG_CFG = 0x0016,
982  ACX_FM_COEX_CFG = 0x0017,
986  ACX_RATE_POLICY = 0x001B,
988  ACX_SLEEP_AUTH = 0x001D,
990  ACX_ERROR_CNT = 0x001F,
991  ACX_IBSS_FILTER = 0x0020,
993  ACX_TSF_INFO = 0x0022,
999  ACX_FRAG_CFG = 0x0028,
1000  ACX_BET_ENABLE = 0x0029,
1010  ACX_BURST_MODE = 0x0033,
1015  ACX_GEN_FW_CMD = 0x0038,
1023  ACX_PM_CONFIG = 0x0040,
1024  ACX_CONFIG_PS = 0x0041,
1029 };
1030 
1031 
1032 int wl1271_acx_wake_up_conditions(struct wl1271 *wl,
1033  struct wl12xx_vif *wlvif,
1034  u8 wake_up_event, u8 listen_interval);
1035 int wl1271_acx_sleep_auth(struct wl1271 *wl, u8 sleep_auth);
1036 int wl1271_acx_tx_power(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1037  int power);
1038 int wl1271_acx_feature_cfg(struct wl1271 *wl, struct wl12xx_vif *wlvif);
1039 int wl1271_acx_mem_map(struct wl1271 *wl,
1040  struct acx_header *mem_map, size_t len);
1041 int wl1271_acx_rx_msdu_life_time(struct wl1271 *wl);
1042 int wl1271_acx_slot(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1043  enum acx_slot_type slot_time);
1044 int wl1271_acx_group_address_tbl(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1045  bool enable, void *mc_list, u32 mc_list_len);
1047  struct wl12xx_vif *wlvif);
1048 int wl1271_acx_rts_threshold(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1049  u32 rts_threshold);
1050 int wl1271_acx_dco_itrim_params(struct wl1271 *wl);
1051 int wl1271_acx_beacon_filter_opt(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1052  bool enable_filter);
1053 int wl1271_acx_beacon_filter_table(struct wl1271 *wl,
1054  struct wl12xx_vif *wlvif);
1055 int wl1271_acx_conn_monit_params(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1056  bool enable);
1057 int wl1271_acx_sg_enable(struct wl1271 *wl, bool enable);
1058 int wl12xx_acx_sg_cfg(struct wl1271 *wl);
1059 int wl1271_acx_cca_threshold(struct wl1271 *wl);
1060 int wl1271_acx_bcn_dtim_options(struct wl1271 *wl, struct wl12xx_vif *wlvif);
1061 int wl1271_acx_aid(struct wl1271 *wl, struct wl12xx_vif *wlvif, u16 aid);
1062 int wl1271_acx_event_mbox_mask(struct wl1271 *wl, u32 event_mask);
1063 int wl1271_acx_set_preamble(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1064  enum acx_preamble_type preamble);
1065 int wl1271_acx_cts_protect(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1066  enum acx_ctsprotect_type ctsprotect);
1067 int wl1271_acx_statistics(struct wl1271 *wl, void *stats);
1068 int wl1271_acx_sta_rate_policies(struct wl1271 *wl, struct wl12xx_vif *wlvif);
1069 int wl1271_acx_ap_rate_policy(struct wl1271 *wl, struct conf_tx_rate_class *c,
1070  u8 idx);
1071 int wl1271_acx_ac_cfg(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1072  u8 ac, u8 cw_min, u16 cw_max, u8 aifsn, u16 txop);
1073 int wl1271_acx_tid_cfg(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1074  u8 queue_id, u8 channel_type,
1075  u8 tsid, u8 ps_scheme, u8 ack_policy,
1076  u32 apsd_conf0, u32 apsd_conf1);
1078 int wl1271_acx_tx_config_options(struct wl1271 *wl);
1079 int wl12xx_acx_mem_cfg(struct wl1271 *wl);
1080 int wl1271_acx_init_mem_config(struct wl1271 *wl);
1081 int wl1271_acx_init_rx_interrupt(struct wl1271 *wl);
1082 int wl1271_acx_smart_reflex(struct wl1271 *wl);
1083 int wl1271_acx_bet_enable(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1084  bool enable);
1085 int wl1271_acx_arp_ip_filter(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1086  u8 enable, __be32 address);
1087 int wl1271_acx_pm_config(struct wl1271 *wl);
1088 int wl1271_acx_keep_alive_mode(struct wl1271 *wl, struct wl12xx_vif *vif,
1089  bool enable);
1090 int wl1271_acx_keep_alive_config(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1091  u8 index, u8 tpl_valid);
1092 int wl1271_acx_rssi_snr_trigger(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1093  bool enable, s16 thold, u8 hyst);
1095  struct wl12xx_vif *wlvif);
1096 int wl1271_acx_set_ht_capabilities(struct wl1271 *wl,
1097  struct ieee80211_sta_ht_cap *ht_cap,
1098  bool allow_ht_operation, u8 hlid);
1099 int wl1271_acx_set_ht_information(struct wl1271 *wl,
1100  struct wl12xx_vif *wlvif,
1101  u16 ht_operation_mode);
1103  struct wl12xx_vif *wlvif);
1104 int wl12xx_acx_set_ba_receiver_session(struct wl1271 *wl, u8 tid_index,
1105  u16 ssn, bool enable, u8 peer_hlid);
1106 int wl12xx_acx_tsf_info(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1107  u64 *mactime);
1108 int wl1271_acx_ps_rx_streaming(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1109  bool enable);
1110 int wl1271_acx_ap_max_tx_retry(struct wl1271 *wl, struct wl12xx_vif *wlvif);
1111 int wl12xx_acx_config_ps(struct wl1271 *wl, struct wl12xx_vif *wlvif);
1112 int wl1271_acx_set_inconnection_sta(struct wl1271 *wl, u8 *addr);
1113 int wl1271_acx_fm_coex(struct wl1271 *wl);
1114 int wl12xx_acx_set_rate_mgmt_params(struct wl1271 *wl);
1115 int wl12xx_acx_config_hangover(struct wl1271 *wl);
1116 
1117 #ifdef CONFIG_PM
1118 int wl1271_acx_default_rx_filter_enable(struct wl1271 *wl, bool enable,
1119  enum rx_filter_action action);
1120 int wl1271_acx_set_rx_filter(struct wl1271 *wl, u8 index, bool enable,
1121  struct wl12xx_rx_filter *filter);
1122 #endif /* CONFIG_PM */
1123 #endif /* __WL1271_ACX_H__ */