wl1251: enable beacon early termination while in power-saving mode
[pandora-wifi.git] / drivers / net / wireless / wl12xx / wl1251_acx.h
index 842df31..fb745fd 100644 (file)
@@ -37,7 +37,7 @@ struct acx_header {
 
        /* payload length (not including headers */
        u16 len;
-};
+} __packed;
 
 struct acx_error_counter {
        struct acx_header header;
@@ -459,8 +459,8 @@ struct acx_beacon_filter_ie_table {
        struct acx_header header;
 
        u8 num_ie;
-       u8 table[BEACON_FILTER_TABLE_MAX_SIZE];
        u8 pad[3];
+       u8 table[BEACON_FILTER_TABLE_MAX_SIZE];
 } __packed;
 
 #define SYNCH_FAIL_DEFAULT_THRESHOLD    10     /* number of beacons */
@@ -471,7 +471,7 @@ struct acx_conn_monit_params {
 
        u32 synch_fail_thold; /* number of beacons missed */
        u32 bss_lose_timeout; /* number of TU's from synch fail */
-};
+} __packed;
 
 enum {
        SG_ENABLE = 0,
@@ -1056,7 +1056,7 @@ struct acx_rate_class {
        u8 long_retry_limit;
        u8 aflags;
        u8 reserved;
-};
+} __packed;
 
 struct acx_rate_policy {
        struct acx_header header;
@@ -1166,6 +1166,31 @@ struct wl1251_acx_wr_tbtt_and_dtim {
        u8  padding;
 } __packed;
 
+enum wl1251_acx_bet_mode {
+       WL1251_ACX_BET_DISABLE = 0,
+       WL1251_ACX_BET_ENABLE = 1,
+};
+
+struct wl1251_acx_bet_enable {
+       struct acx_header header;
+
+       /*
+        * Specifies if beacon early termination procedure is enabled or
+        * disabled, see enum wl1251_acx_bet_mode.
+        */
+       u8 enable;
+
+       /*
+        * Specifies the maximum number of consecutive beacons that may be
+        * early terminated. After this number is reached at least one full
+        * beacon must be correctly received in FW before beacon ET
+        * resumes. Range 0 - 255.
+        */
+       u8 max_consecutive;
+
+       u8 padding[2];
+} __packed;
+
 struct wl1251_acx_ac_cfg {
        struct acx_header header;
 
@@ -1274,10 +1299,10 @@ struct wl1251_acx_tid_cfg {
 /* OBSOLETE */
 #define WL1251_ACX_INTR_WAKE_ON_HOST   BIT(6)
 
-/* Trace meassge on MBOX #A */
+/* Trace message on MBOX #A */
 #define WL1251_ACX_INTR_TRACE_A                BIT(7)
 
-/* Trace meassge on MBOX #B */
+/* Trace message on MBOX #B */
 #define WL1251_ACX_INTR_TRACE_B                BIT(8)
 
 /* Command processing completion */
@@ -1403,6 +1428,8 @@ int wl1251_acx_tsf_info(struct wl1251 *wl, u64 *mactime);
 int wl1251_acx_rate_policies(struct wl1251 *wl);
 int wl1251_acx_mem_cfg(struct wl1251 *wl);
 int wl1251_acx_wr_tbtt_and_dtim(struct wl1251 *wl, u16 tbtt, u8 dtim);
+int wl1251_acx_bet_enable(struct wl1251 *wl, enum wl1251_acx_bet_mode mode,
+                         u8 max_consecutive);
 int wl1251_acx_ac_cfg(struct wl1251 *wl, u8 ac, u8 cw_min, u16 cw_max,
                      u8 aifs, u16 txop);
 int wl1251_acx_tid_cfg(struct wl1251 *wl, u8 queue,