]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/wireless/wl12xx/wl1271_acx.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[net-next-2.6.git] / drivers / net / wireless / wl12xx / wl1271_acx.h
index 420e7e2fc021b357032a861b67acd2bb82007eff..4235bc56f750eb4b40b036952cd246dc2e67db6c 100644 (file)
@@ -75,7 +75,7 @@ struct acx_header {
 
        /* payload length (not including headers */
        __le16 len;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_error_counter {
        struct acx_header header;
@@ -98,7 +98,7 @@ struct acx_error_counter {
        /* the number of missed sequence numbers in the squentially */
        /* values of frames seq numbers */
        __le32 seq_num_miss;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_revision {
        struct acx_header header;
@@ -127,7 +127,7 @@ struct acx_revision {
         * bits 24 - 31: Chip ID - The WiLink chip ID.
         */
        __le32 hw_version;
-} __attribute__ ((packed));
+} __packed;
 
 enum wl1271_psm_mode {
        /* Active mode */
@@ -149,7 +149,7 @@ struct acx_sleep_auth {
        /* 2 - ELP mode: Deep / Max sleep*/
        u8  sleep_auth;
        u8  padding[3];
-} __attribute__ ((packed));
+} __packed;
 
 enum {
        HOSTIF_PCI_MASTER_HOST_INDIRECT,
@@ -187,7 +187,7 @@ struct acx_rx_msdu_lifetime {
         * firmware discards the MSDU.
         */
        __le32 lifetime;
-} __attribute__ ((packed));
+} __packed;
 
 /*
  * RX Config Options Table
@@ -275,13 +275,13 @@ struct acx_rx_config {
 
        __le32 config_options;
        __le32 filter_options;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_packet_detection {
        struct acx_header header;
 
        __le32 threshold;
-} __attribute__ ((packed));
+} __packed;
 
 
 enum acx_slot_type {
@@ -299,7 +299,7 @@ struct acx_slot {
        u8 wone_index; /* Reserved */
        u8 slot_time;
        u8 reserved[6];
-} __attribute__ ((packed));
+} __packed;
 
 
 #define ACX_MC_ADDRESS_GROUP_MAX       (8)
@@ -312,21 +312,21 @@ struct acx_dot11_grp_addr_tbl {
        u8 num_groups;
        u8 pad[2];
        u8 mac_table[ADDRESS_GROUP_MAX_LEN];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_rx_timeout {
        struct acx_header header;
 
        __le16 ps_poll_timeout;
        __le16 upsd_timeout;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_rts_threshold {
        struct acx_header header;
 
        __le16 threshold;
        u8 pad[2];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_beacon_filter_option {
        struct acx_header header;
@@ -342,7 +342,7 @@ struct acx_beacon_filter_option {
         */
        u8 max_num_beacons;
        u8 pad[2];
-} __attribute__ ((packed));
+} __packed;
 
 /*
  * ACXBeaconFilterEntry (not 221)
@@ -383,21 +383,21 @@ struct acx_beacon_filter_ie_table {
        u8 num_ie;
        u8 pad[3];
        u8 table[BEACON_FILTER_TABLE_MAX_SIZE];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_conn_monit_params {
        struct acx_header header;
 
        __le32 synch_fail_thold; /* number of beacons missed */
        __le32 bss_lose_timeout; /* number of TU's from synch fail */
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_bt_wlan_coex {
        struct acx_header header;
 
        u8 enable;
        u8 pad[3];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_bt_wlan_coex_param {
        struct acx_header header;
@@ -405,7 +405,7 @@ struct acx_bt_wlan_coex_param {
        __le32 params[CONF_SG_PARAMS_MAX];
        u8 param_idx;
        u8 padding[3];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_dco_itrim_params {
        struct acx_header header;
@@ -413,7 +413,7 @@ struct acx_dco_itrim_params {
        u8 enable;
        u8 padding[3];
        __le32 timeout;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_energy_detection {
        struct acx_header header;
@@ -422,7 +422,7 @@ struct acx_energy_detection {
        __le16 rx_cca_threshold;
        u8 tx_energy_detection;
        u8 pad;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_beacon_broadcast {
        struct acx_header header;
@@ -436,14 +436,14 @@ struct acx_beacon_broadcast {
        /* Consecutive PS Poll failures before updating the host */
        u8 ps_poll_threshold;
        u8 pad[2];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_event_mask {
        struct acx_header header;
 
        __le32 event_mask;
        __le32 high_event_mask; /* Unused */
-} __attribute__ ((packed));
+} __packed;
 
 #define CFG_RX_FCS             BIT(2)
 #define CFG_RX_ALL_GOOD                BIT(3)
@@ -488,14 +488,14 @@ struct acx_feature_config {
 
        __le32 options;
        __le32 data_flow_options;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_current_tx_power {
        struct acx_header header;
 
        u8  current_tx_power;
        u8  padding[3];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_wake_up_condition {
        struct acx_header header;
@@ -503,7 +503,7 @@ struct acx_wake_up_condition {
        u8 wake_up_event; /* Only one bit can be set */
        u8 listen_interval;
        u8 pad[2];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_aid {
        struct acx_header header;
@@ -513,7 +513,7 @@ struct acx_aid {
         */
        __le16 aid;
        u8 pad[2];
-} __attribute__ ((packed));
+} __packed;
 
 enum acx_preamble_type {
        ACX_PREAMBLE_LONG = 0,
@@ -529,7 +529,7 @@ struct acx_preamble {
         */
        u8 preamble;
        u8 padding[3];
-} __attribute__ ((packed));
+} __packed;
 
 enum acx_ctsprotect_type {
        CTSPROTECT_DISABLE = 0,
@@ -540,11 +540,11 @@ struct acx_ctsprotect {
        struct acx_header header;
        u8 ctsprotect;
        u8 padding[3];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_tx_statistics {
        __le32 internal_desc_overflow;
-}  __attribute__ ((packed));
+}  __packed;
 
 struct acx_rx_statistics {
        __le32 out_of_mem;
@@ -555,14 +555,14 @@ struct acx_rx_statistics {
        __le32 xfr_hint_trig;
        __le32 path_reset;
        __le32 reset_counter;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_dma_statistics {
        __le32 rx_requested;
        __le32 rx_errors;
        __le32 tx_requested;
        __le32 tx_errors;
-}  __attribute__ ((packed));
+}  __packed;
 
 struct acx_isr_statistics {
        /* host command complete */
@@ -621,7 +621,7 @@ struct acx_isr_statistics {
 
        /* (INT_STS_ND & INT_TRIG_LOW_RSSI) */
        __le32 low_rssi;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_wep_statistics {
        /* WEP address keys configured */
@@ -643,7 +643,7 @@ struct acx_wep_statistics {
 
        /* WEP decrypt interrupts */
        __le32 interrupt;
-} __attribute__ ((packed));
+} __packed;
 
 #define ACX_MISSED_BEACONS_SPREAD 10
 
@@ -703,12 +703,12 @@ struct acx_pwr_statistics {
 
        /* the number of beacons in awake mode */
        __le32 rcvd_awake_beacons;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_mic_statistics {
        __le32 rx_pkts;
        __le32 calc_failure;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_aes_statistics {
        __le32 encrypt_fail;
@@ -717,7 +717,7 @@ struct acx_aes_statistics {
        __le32 decrypt_packets;
        __le32 encrypt_interrupt;
        __le32 decrypt_interrupt;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_event_statistics {
        __le32 heart_beat;
@@ -728,7 +728,7 @@ struct acx_event_statistics {
        __le32 oom_late;
        __le32 phy_transmit_error;
        __le32 tx_stuck;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_ps_statistics {
        __le32 pspoll_timeouts;
@@ -738,7 +738,7 @@ struct acx_ps_statistics {
        __le32 pspoll_max_apturn;
        __le32 pspoll_utilization;
        __le32 upsd_utilization;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_rxpipe_statistics {
        __le32 rx_prep_beacon_drop;
@@ -746,7 +746,7 @@ struct acx_rxpipe_statistics {
        __le32 beacon_buffer_thres_host_int_trig_rx_data;
        __le32 missed_beacon_host_int_trig_rx_data;
        __le32 tx_xfr_host_int_trig_rx_data;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_statistics {
        struct acx_header header;
@@ -762,7 +762,7 @@ struct acx_statistics {
        struct acx_event_statistics event;
        struct acx_ps_statistics ps;
        struct acx_rxpipe_statistics rxpipe;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_rate_class {
        __le32 enabled_rates;
@@ -780,7 +780,7 @@ struct acx_rate_policy {
 
        __le32 rate_class_cnt;
        struct acx_rate_class rate_class[CONF_TX_MAX_RATE_CLASSES];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_ac_cfg {
        struct acx_header header;
@@ -790,7 +790,7 @@ struct acx_ac_cfg {
        u8 aifsn;
        u8 reserved;
        __le16 tx_op_limit;
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_tid_config {
        struct acx_header header;
@@ -801,19 +801,19 @@ struct acx_tid_config {
        u8 ack_policy;
        u8 padding[3];
        __le32 apsd_conf[2];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_frag_threshold {
        struct acx_header header;
        __le16 frag_threshold;
        u8 padding[2];
-} __attribute__ ((packed));
+} __packed;
 
 struct acx_tx_config_options {
        struct acx_header header;
        __le16 tx_compl_timeout;     /* msec */
        __le16 tx_compl_threshold;   /* number of packets */
-} __attribute__ ((packed));
+} __packed;
 
 #define ACX_RX_MEM_BLOCKS     70
 #define ACX_TX_MIN_MEM_BLOCKS 40
@@ -828,7 +828,7 @@ struct wl1271_acx_config_memory {
        u8 num_stations;
        u8 num_ssid_profiles;
        __le32 total_tx_descriptors;
-} __attribute__ ((packed));
+} __packed;
 
 struct wl1271_acx_mem_map {
        struct acx_header header;
@@ -872,7 +872,7 @@ struct wl1271_acx_mem_map {
        u8 *rx_cbuf;
        __le32 rx_ctrl;
        __le32 tx_ctrl;
-} __attribute__ ((packed));
+} __packed;
 
 struct wl1271_acx_rx_config_opt {
        struct acx_header header;
@@ -882,7 +882,7 @@ struct wl1271_acx_rx_config_opt {
        __le16 timeout;
        u8 queue_type;
        u8 reserved;
-} __attribute__ ((packed));
+} __packed;
 
 
 struct wl1271_acx_bet_enable {
@@ -891,7 +891,7 @@ struct wl1271_acx_bet_enable {
        u8 enable;
        u8 max_consecutive;
        u8 padding[2];
-} __attribute__ ((packed));
+} __packed;
 
 #define ACX_IPV4_VERSION 4
 #define ACX_IPV6_VERSION 6
@@ -905,7 +905,7 @@ struct wl1271_acx_arp_filter {
                               requests directed to this IP address will pass
                               through. For IPv4, the first four bytes are
                               used. */
-} __attribute__((packed));
+} __packed;
 
 struct wl1271_acx_pm_config {
        struct acx_header header;
@@ -913,14 +913,14 @@ struct wl1271_acx_pm_config {
        __le32 host_clk_settling_time;
        u8 host_fast_wakeup_support;
        u8 padding[3];
-} __attribute__ ((packed));
+} __packed;
 
 struct wl1271_acx_keep_alive_mode {
        struct acx_header header;
 
        u8 enabled;
        u8 padding[3];
-} __attribute__ ((packed));
+} __packed;
 
 enum {
        ACX_KEEP_ALIVE_NO_TX = 0,
@@ -940,7 +940,7 @@ struct wl1271_acx_keep_alive_config {
        u8 tpl_validation;
        u8 trigger;
        u8 padding;
-} __attribute__ ((packed));
+} __packed;
 
 enum {
        WL1271_ACX_TRIG_TYPE_LEVEL = 0,
@@ -993,6 +993,17 @@ struct wl1271_acx_rssi_snr_avg_weights {
        u8 snr_data;
 };
 
+struct wl1271_acx_fw_tsf_information {
+       struct acx_header header;
+
+       __le32 current_tsf_high;
+       __le32 current_tsf_low;
+       __le32 last_bttt_high;
+       __le32 last_tbtt_low;
+       u8 last_dtim_count;
+       u8 padding[3];
+} __packed;
+
 enum {
        ACX_WAKE_UP_CONDITIONS      = 0x0002,
        ACX_MEM_CFG                 = 0x0003,
@@ -1106,13 +1117,13 @@ int wl1271_acx_init_mem_config(struct wl1271 *wl);
 int wl1271_acx_init_rx_interrupt(struct wl1271 *wl);
 int wl1271_acx_smart_reflex(struct wl1271 *wl);
 int wl1271_acx_bet_enable(struct wl1271 *wl, bool enable);
-int wl1271_acx_arp_ip_filter(struct wl1271 *wl, bool enable, u8 *address,
-                            u8 version);
+int wl1271_acx_arp_ip_filter(struct wl1271 *wl, bool enable, __be32 address);
 int wl1271_acx_pm_config(struct wl1271 *wl);
 int wl1271_acx_keep_alive_mode(struct wl1271 *wl, bool enable);
 int wl1271_acx_keep_alive_config(struct wl1271 *wl, u8 index, u8 tpl_valid);
 int wl1271_acx_rssi_snr_trigger(struct wl1271 *wl, bool enable,
                                s16 thold, u8 hyst);
 int wl1271_acx_rssi_snr_avg_weights(struct wl1271 *wl);
+int wl1271_acx_tsf_info(struct wl1271 *wl, u64 *mactime);
 
 #endif /* __WL1271_ACX_H__ */