ath6kl: Don't advertise HT40 support in 2.4 Ghz
[deliverable/linux.git] / drivers / net / wireless / ath / ath6kl / wmi.h
index 42ac311eda4e23f84cc61f29a6ac68d01e147bc0..b99e9bdca7c677b2862678c2a5c3652d50ddc358 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2010-2011 Atheros Communications Inc.
+ * Copyright (c) 2011-2012 Qualcomm Atheros, Inc.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -110,6 +111,8 @@ struct wmi {
        u8 fat_pipe_exist;
        struct ath6kl *parent_dev;
        u8 pwr_mode;
+
+       /* protects fat_pipe_exist and stream_exist_for_ac */
        spinlock_t lock;
        enum htc_endpoint_id ep_id;
        struct sq_threshold_params
@@ -149,8 +152,7 @@ enum wmi_msg_type {
 #define WMI_DATA_HDR_PS_MASK        0x1
 #define WMI_DATA_HDR_PS_SHIFT       5
 
-#define WMI_DATA_HDR_MORE_MASK      0x1
-#define WMI_DATA_HDR_MORE_SHIFT     5
+#define WMI_DATA_HDR_MORE      0x20
 
 enum wmi_data_hdr_data_type {
        WMI_DATA_HDR_DATA_TYPE_802_3 = 0,
@@ -160,6 +162,13 @@ enum wmi_data_hdr_data_type {
        WMI_DATA_HDR_DATA_TYPE_ACL,
 };
 
+/* Bitmap of data header flags */
+enum wmi_data_hdr_flags {
+       WMI_DATA_HDR_FLAGS_MORE = 0x1,
+       WMI_DATA_HDR_FLAGS_EOSP = 0x2,
+       WMI_DATA_HDR_FLAGS_UAPSD = 0x4,
+};
+
 #define WMI_DATA_HDR_DATA_TYPE_MASK     0x3
 #define WMI_DATA_HDR_DATA_TYPE_SHIFT    6
 
@@ -173,8 +182,15 @@ enum wmi_data_hdr_data_type {
 #define WMI_DATA_HDR_META_MASK      0x7
 #define WMI_DATA_HDR_META_SHIFT     13
 
+#define WMI_DATA_HDR_PAD_BEFORE_DATA_MASK               0xFF
+#define WMI_DATA_HDR_PAD_BEFORE_DATA_SHIFT              0x8
+
+/* Macros for operating on WMI_DATA_HDR (info3) field */
 #define WMI_DATA_HDR_IF_IDX_MASK    0xF
 
+#define WMI_DATA_HDR_TRIG          0x10
+#define WMI_DATA_HDR_EOSP          0x10
+
 struct wmi_data_hdr {
        s8 rssi;
 
@@ -203,7 +219,8 @@ struct wmi_data_hdr {
        /*
         * usage of info3, 16-bit:
         * b3:b0        - Interface index
-        * b15:b4       - Reserved
+        * b4           - uAPSD trigger in rx & EOSP in tx
+        * b15:b5       - Reserved
         */
        __le16 info3;
 } __packed;
@@ -257,6 +274,9 @@ static inline u8 wmi_data_hdr_get_if_idx(struct wmi_data_hdr *dhdr)
 #define WMI_META_VERSION_1     0x01
 #define WMI_META_VERSION_2     0x02
 
+/* Flag to signal to FW to calculate TCP checksum */
+#define WMI_META_V2_FLAG_CSUM_OFFLOAD 0x01
+
 struct wmi_tx_meta_v1 {
        /* packet ID to identify the tx request */
        u8 pkt_id;
@@ -646,7 +666,6 @@ enum auth_mode {
        WPA2_AUTH_CCKM = 0x40,
 };
 
-#define WMI_MIN_KEY_INDEX   0
 #define WMI_MAX_KEY_INDEX   3
 
 #define WMI_MAX_KEY_LEN     32
@@ -984,6 +1003,12 @@ struct wmi_listen_int_cmd {
        __le16 num_beacons;
 } __packed;
 
+/* WMI_SET_BMISS_TIME_CMDID */
+struct wmi_bmiss_time_cmd {
+       __le16 bmiss_time;
+       __le16 num_beacons;
+};
+
 /* WMI_SET_POWER_MODE_CMDID */
 enum wmi_power_mode {
        REC_POWER = 0x01,
@@ -1001,7 +1026,7 @@ struct wmi_power_mode_cmd {
  */
 enum power_save_fail_event_policy {
        SEND_POWER_SAVE_FAIL_EVENT_ALWAYS = 1,
-       IGNORE_POWER_SAVE_FAIL_EVENT_DURING_SCAN = 2,
+       IGNORE_PS_FAIL_DURING_SCAN = 2,
 };
 
 struct wmi_power_params_cmd {
@@ -1199,7 +1224,7 @@ struct wmi_snr_threshold_params_cmd {
 
 enum wmi_preamble_policy {
        WMI_IGNORE_BARKER_IN_ERP = 0,
-       WMI_DONOT_IGNORE_BARKER_IN_ERP
+       WMI_FOLLOW_BARKER_IN_ERP,
 };
 
 struct wmi_set_lpreamble_cmd {
@@ -1237,6 +1262,15 @@ enum target_event_report_config {
        NO_DISCONN_EVT_IN_RECONN
 };
 
+struct wmi_mcast_filter_cmd {
+       u8 mcast_all_enable;
+} __packed;
+
+#define ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE 6
+struct wmi_mcast_filter_add_del_cmd {
+       u8 mcast_mac[ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE];
+} __packed;
+
 /* Command Replies */
 
 /* WMI_GET_CHANNEL_LIST_CMDID reply */
@@ -1335,6 +1369,8 @@ enum wmi_event_id {
        WMI_P2P_START_SDPD_EVENTID,
        WMI_P2P_SDPD_RX_EVENTID,
 
+       WMI_SET_HOST_SLEEP_MODE_CMD_PROCESSED_EVENTID = 0x1047,
+
        WMI_THIN_RESERVED_START_EVENTID = 0x8000,
        /* Events in this range are reserved for thinmode */
        WMI_THIN_RESERVED_END_EVENTID = 0x8fff,
@@ -1903,7 +1939,7 @@ struct wow_filter {
 
 struct wmi_set_ip_cmd {
        /* IP in network byte order */
-       __le32 ips[MAX_IP_ADDRS];
+       __be32 ips[MAX_IP_ADDRS];
 } __packed;
 
 enum ath6kl_wow_filters {
@@ -2104,7 +2140,29 @@ struct wmi_rx_frame_format_cmd {
        u8 reserved[1];
 } __packed;
 
+struct wmi_ap_hidden_ssid_cmd {
+       u8 hidden_ssid;
+} __packed;
+
+struct wmi_set_inact_period_cmd {
+       __le32 inact_period;
+       u8 num_null_func;
+} __packed;
+
 /* AP mode events */
+struct wmi_ap_set_apsd_cmd {
+       u8 enable;
+} __packed;
+
+enum wmi_ap_apsd_buffered_traffic_flags {
+       WMI_AP_APSD_NO_DELIVERY_FRAMES =  0x1,
+};
+
+struct wmi_ap_apsd_buffered_traffic_cmd {
+       __le16 aid;
+       __le16 bitmap;
+       __le32 flags;
+} __packed;
 
 /* WMI_PS_POLL_EVENT */
 struct wmi_pspoll_event {
@@ -2321,7 +2379,7 @@ enum htc_endpoint_id ath6kl_wmi_get_control_ep(struct wmi *wmi);
 void ath6kl_wmi_set_control_ep(struct wmi *wmi, enum htc_endpoint_id ep_id);
 int ath6kl_wmi_dix_2_dot3(struct wmi *wmi, struct sk_buff *skb);
 int ath6kl_wmi_data_hdr_add(struct wmi *wmi, struct sk_buff *skb,
-                           u8 msg_type, bool more_data,
+                           u8 msg_type, u32 flags,
                            enum wmi_data_hdr_data_type data_type,
                            u8 meta_ver, void *tx_meta_info, u8 if_idx);
 
@@ -2376,6 +2434,8 @@ int ath6kl_wmi_probedssid_cmd(struct wmi *wmi, u8 if_idx, u8 index, u8 flag,
 int ath6kl_wmi_listeninterval_cmd(struct wmi *wmi, u8 if_idx,
                                  u16 listen_interval,
                                  u16 listen_beacons);
+int ath6kl_wmi_bmisstime_cmd(struct wmi *wmi, u8 if_idx,
+                            u16 bmiss_time, u16 num_beacons);
 int ath6kl_wmi_powermode_cmd(struct wmi *wmi, u8 if_idx, u8 pwr_mode);
 int ath6kl_wmi_pmparams_cmd(struct wmi *wmi, u8 if_idx, u16 idle_period,
                            u16 ps_poll_num, u16 dtim_policy,
@@ -2417,7 +2477,8 @@ int ath6kl_wmi_test_cmd(struct wmi *wmi, void *buf, size_t len);
 
 s32 ath6kl_wmi_get_rate(s8 rate_index);
 
-int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, struct wmi_set_ip_cmd *ip_cmd);
+int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, u8 if_idx,
+                         __be32 ips0, __be32 ips1);
 int ath6kl_wmi_set_host_sleep_mode_cmd(struct wmi *wmi, u8 if_idx,
                                       enum ath6kl_host_mode host_mode);
 int ath6kl_wmi_set_wow_mode_cmd(struct wmi *wmi, u8 if_idx,
@@ -2425,14 +2486,28 @@ int ath6kl_wmi_set_wow_mode_cmd(struct wmi *wmi, u8 if_idx,
                                u32 filter, u16 host_req_delay);
 int ath6kl_wmi_add_wow_pattern_cmd(struct wmi *wmi, u8 if_idx,
                                   u8 list_id, u8 filter_size,
-                                  u8 filter_offset, u8 *filter, u8 *mask);
+                                  u8 filter_offset, const u8 *filter,
+                                  const u8 *mask);
 int ath6kl_wmi_del_wow_pattern_cmd(struct wmi *wmi, u8 if_idx,
                                   u16 list_id, u16 filter_id);
 int ath6kl_wmi_set_roam_lrssi_cmd(struct wmi *wmi, u8 lrssi);
 int ath6kl_wmi_force_roam_cmd(struct wmi *wmi, const u8 *bssid);
 int ath6kl_wmi_set_roam_mode_cmd(struct wmi *wmi, enum wmi_roam_mode mode);
+int ath6kl_wmi_mcast_filter_cmd(struct wmi *wmi, u8 if_idx, bool mc_all_on);
+int ath6kl_wmi_add_del_mcast_filter_cmd(struct wmi *wmi, u8 if_idx,
+                                       u8 *filter, bool add_filter);
+/* AP mode uAPSD */
+int ath6kl_wmi_ap_set_apsd(struct wmi *wmi, u8 if_idx, u8 enable);
+
+int ath6kl_wmi_set_apsd_bfrd_traf(struct wmi *wmi,
+                                               u8 if_idx, u16 aid,
+                                               u16 bitmap, u32 flags);
 
+u8 ath6kl_wmi_get_traffic_class(u8 user_priority);
+
+u8 ath6kl_wmi_determine_user_priority(u8 *pkt, u32 layer2_pri);
 /* AP mode */
+int ath6kl_wmi_ap_hidden_ssid(struct wmi *wmi, u8 if_idx, bool enable);
 int ath6kl_wmi_ap_profile_commit(struct wmi *wmip, u8 if_idx,
                                 struct wmi_connect_cmd *p);
 
@@ -2454,9 +2529,6 @@ int ath6kl_wmi_disable_11b_rates_cmd(struct wmi *wmi, bool disable);
 int ath6kl_wmi_remain_on_chnl_cmd(struct wmi *wmi, u8 if_idx, u32 freq,
                                  u32 dur);
 
-int ath6kl_wmi_send_action_cmd(struct wmi *wmi, u8 if_idx, u32 id, u32 freq,
-                              u32 wait, const u8 *data, u16 data_len);
-
 int ath6kl_wmi_send_mgmt_cmd(struct wmi *wmi, u8 if_idx, u32 id, u32 freq,
                               u32 wait, const u8 *data, u16 data_len,
                               u32 no_cck);
@@ -2474,6 +2546,8 @@ int ath6kl_wmi_cancel_remain_on_chnl_cmd(struct wmi *wmi, u8 if_idx);
 int ath6kl_wmi_set_appie_cmd(struct wmi *wmi, u8 if_idx, u8 mgmt_frm_type,
                             const u8 *ie, u8 ie_len);
 
+int ath6kl_wmi_set_inact_period(struct wmi *wmi, u8 if_idx, int inact_timeout);
+
 void ath6kl_wmi_sscan_timer(unsigned long ptr);
 
 struct ath6kl_vif *ath6kl_get_vif_by_index(struct ath6kl *ar, u8 if_idx);
This page took 0.038568 seconds and 5 git commands to generate.