aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath6kl/wmi.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/wmi.h')
-rw-r--r--drivers/net/wireless/ath/ath6kl/wmi.h67
1 files changed, 59 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/wmi.h b/drivers/net/wireless/ath/ath6kl/wmi.h
index 42ac311eda4e..e7919869725e 100644
--- a/drivers/net/wireless/ath/ath6kl/wmi.h
+++ b/drivers/net/wireless/ath/ath6kl/wmi.h
@@ -149,8 +149,7 @@ enum wmi_msg_type {
149#define WMI_DATA_HDR_PS_MASK 0x1 149#define WMI_DATA_HDR_PS_MASK 0x1
150#define WMI_DATA_HDR_PS_SHIFT 5 150#define WMI_DATA_HDR_PS_SHIFT 5
151 151
152#define WMI_DATA_HDR_MORE_MASK 0x1 152#define WMI_DATA_HDR_MORE 0x20
153#define WMI_DATA_HDR_MORE_SHIFT 5
154 153
155enum wmi_data_hdr_data_type { 154enum wmi_data_hdr_data_type {
156 WMI_DATA_HDR_DATA_TYPE_802_3 = 0, 155 WMI_DATA_HDR_DATA_TYPE_802_3 = 0,
@@ -160,6 +159,13 @@ enum wmi_data_hdr_data_type {
160 WMI_DATA_HDR_DATA_TYPE_ACL, 159 WMI_DATA_HDR_DATA_TYPE_ACL,
161}; 160};
162 161
162/* Bitmap of data header flags */
163enum wmi_data_hdr_flags {
164 WMI_DATA_HDR_FLAGS_MORE = 0x1,
165 WMI_DATA_HDR_FLAGS_EOSP = 0x2,
166 WMI_DATA_HDR_FLAGS_UAPSD = 0x4,
167};
168
163#define WMI_DATA_HDR_DATA_TYPE_MASK 0x3 169#define WMI_DATA_HDR_DATA_TYPE_MASK 0x3
164#define WMI_DATA_HDR_DATA_TYPE_SHIFT 6 170#define WMI_DATA_HDR_DATA_TYPE_SHIFT 6
165 171
@@ -173,8 +179,12 @@ enum wmi_data_hdr_data_type {
173#define WMI_DATA_HDR_META_MASK 0x7 179#define WMI_DATA_HDR_META_MASK 0x7
174#define WMI_DATA_HDR_META_SHIFT 13 180#define WMI_DATA_HDR_META_SHIFT 13
175 181
182/* Macros for operating on WMI_DATA_HDR (info3) field */
176#define WMI_DATA_HDR_IF_IDX_MASK 0xF 183#define WMI_DATA_HDR_IF_IDX_MASK 0xF
177 184
185#define WMI_DATA_HDR_TRIG 0x10
186#define WMI_DATA_HDR_EOSP 0x10
187
178struct wmi_data_hdr { 188struct wmi_data_hdr {
179 s8 rssi; 189 s8 rssi;
180 190
@@ -203,7 +213,8 @@ struct wmi_data_hdr {
203 /* 213 /*
204 * usage of info3, 16-bit: 214 * usage of info3, 16-bit:
205 * b3:b0 - Interface index 215 * b3:b0 - Interface index
206 * b15:b4 - Reserved 216 * b4 - uAPSD trigger in rx & EOSP in tx
217 * b15:b5 - Reserved
207 */ 218 */
208 __le16 info3; 219 __le16 info3;
209} __packed; 220} __packed;
@@ -257,6 +268,9 @@ static inline u8 wmi_data_hdr_get_if_idx(struct wmi_data_hdr *dhdr)
257#define WMI_META_VERSION_1 0x01 268#define WMI_META_VERSION_1 0x01
258#define WMI_META_VERSION_2 0x02 269#define WMI_META_VERSION_2 0x02
259 270
271/* Flag to signal to FW to calculate TCP checksum */
272#define WMI_META_V2_FLAG_CSUM_OFFLOAD 0x01
273
260struct wmi_tx_meta_v1 { 274struct wmi_tx_meta_v1 {
261 /* packet ID to identify the tx request */ 275 /* packet ID to identify the tx request */
262 u8 pkt_id; 276 u8 pkt_id;
@@ -646,7 +660,6 @@ enum auth_mode {
646 WPA2_AUTH_CCKM = 0x40, 660 WPA2_AUTH_CCKM = 0x40,
647}; 661};
648 662
649#define WMI_MIN_KEY_INDEX 0
650#define WMI_MAX_KEY_INDEX 3 663#define WMI_MAX_KEY_INDEX 3
651 664
652#define WMI_MAX_KEY_LEN 32 665#define WMI_MAX_KEY_LEN 32
@@ -1237,6 +1250,15 @@ enum target_event_report_config {
1237 NO_DISCONN_EVT_IN_RECONN 1250 NO_DISCONN_EVT_IN_RECONN
1238}; 1251};
1239 1252
1253struct wmi_mcast_filter_cmd {
1254 u8 mcast_all_enable;
1255} __packed;
1256
1257#define ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE 6
1258struct wmi_mcast_filter_add_del_cmd {
1259 u8 mcast_mac[ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE];
1260} __packed;
1261
1240/* Command Replies */ 1262/* Command Replies */
1241 1263
1242/* WMI_GET_CHANNEL_LIST_CMDID reply */ 1264/* WMI_GET_CHANNEL_LIST_CMDID reply */
@@ -1335,6 +1357,8 @@ enum wmi_event_id {
1335 WMI_P2P_START_SDPD_EVENTID, 1357 WMI_P2P_START_SDPD_EVENTID,
1336 WMI_P2P_SDPD_RX_EVENTID, 1358 WMI_P2P_SDPD_RX_EVENTID,
1337 1359
1360 WMI_SET_HOST_SLEEP_MODE_CMD_PROCESSED_EVENTID = 0x1047,
1361
1338 WMI_THIN_RESERVED_START_EVENTID = 0x8000, 1362 WMI_THIN_RESERVED_START_EVENTID = 0x8000,
1339 /* Events in this range are reserved for thinmode */ 1363 /* Events in this range are reserved for thinmode */
1340 WMI_THIN_RESERVED_END_EVENTID = 0x8fff, 1364 WMI_THIN_RESERVED_END_EVENTID = 0x8fff,
@@ -1903,7 +1927,7 @@ struct wow_filter {
1903 1927
1904struct wmi_set_ip_cmd { 1928struct wmi_set_ip_cmd {
1905 /* IP in network byte order */ 1929 /* IP in network byte order */
1906 __le32 ips[MAX_IP_ADDRS]; 1930 __be32 ips[MAX_IP_ADDRS];
1907} __packed; 1931} __packed;
1908 1932
1909enum ath6kl_wow_filters { 1933enum ath6kl_wow_filters {
@@ -2105,6 +2129,19 @@ struct wmi_rx_frame_format_cmd {
2105} __packed; 2129} __packed;
2106 2130
2107/* AP mode events */ 2131/* AP mode events */
2132struct wmi_ap_set_apsd_cmd {
2133 u8 enable;
2134} __packed;
2135
2136enum wmi_ap_apsd_buffered_traffic_flags {
2137 WMI_AP_APSD_NO_DELIVERY_FRAMES = 0x1,
2138};
2139
2140struct wmi_ap_apsd_buffered_traffic_cmd {
2141 __le16 aid;
2142 __le16 bitmap;
2143 __le32 flags;
2144} __packed;
2108 2145
2109/* WMI_PS_POLL_EVENT */ 2146/* WMI_PS_POLL_EVENT */
2110struct wmi_pspoll_event { 2147struct wmi_pspoll_event {
@@ -2321,7 +2358,7 @@ enum htc_endpoint_id ath6kl_wmi_get_control_ep(struct wmi *wmi);
2321void ath6kl_wmi_set_control_ep(struct wmi *wmi, enum htc_endpoint_id ep_id); 2358void ath6kl_wmi_set_control_ep(struct wmi *wmi, enum htc_endpoint_id ep_id);
2322int ath6kl_wmi_dix_2_dot3(struct wmi *wmi, struct sk_buff *skb); 2359int ath6kl_wmi_dix_2_dot3(struct wmi *wmi, struct sk_buff *skb);
2323int ath6kl_wmi_data_hdr_add(struct wmi *wmi, struct sk_buff *skb, 2360int ath6kl_wmi_data_hdr_add(struct wmi *wmi, struct sk_buff *skb,
2324 u8 msg_type, bool more_data, 2361 u8 msg_type, u32 flags,
2325 enum wmi_data_hdr_data_type data_type, 2362 enum wmi_data_hdr_data_type data_type,
2326 u8 meta_ver, void *tx_meta_info, u8 if_idx); 2363 u8 meta_ver, void *tx_meta_info, u8 if_idx);
2327 2364
@@ -2417,7 +2454,8 @@ int ath6kl_wmi_test_cmd(struct wmi *wmi, void *buf, size_t len);
2417 2454
2418s32 ath6kl_wmi_get_rate(s8 rate_index); 2455s32 ath6kl_wmi_get_rate(s8 rate_index);
2419 2456
2420int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, struct wmi_set_ip_cmd *ip_cmd); 2457int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, u8 if_idx,
2458 __be32 ips0, __be32 ips1);
2421int ath6kl_wmi_set_host_sleep_mode_cmd(struct wmi *wmi, u8 if_idx, 2459int ath6kl_wmi_set_host_sleep_mode_cmd(struct wmi *wmi, u8 if_idx,
2422 enum ath6kl_host_mode host_mode); 2460 enum ath6kl_host_mode host_mode);
2423int ath6kl_wmi_set_wow_mode_cmd(struct wmi *wmi, u8 if_idx, 2461int ath6kl_wmi_set_wow_mode_cmd(struct wmi *wmi, u8 if_idx,
@@ -2425,13 +2463,26 @@ int ath6kl_wmi_set_wow_mode_cmd(struct wmi *wmi, u8 if_idx,
2425 u32 filter, u16 host_req_delay); 2463 u32 filter, u16 host_req_delay);
2426int ath6kl_wmi_add_wow_pattern_cmd(struct wmi *wmi, u8 if_idx, 2464int ath6kl_wmi_add_wow_pattern_cmd(struct wmi *wmi, u8 if_idx,
2427 u8 list_id, u8 filter_size, 2465 u8 list_id, u8 filter_size,
2428 u8 filter_offset, u8 *filter, u8 *mask); 2466 u8 filter_offset, const u8 *filter,
2467 const u8 *mask);
2429int ath6kl_wmi_del_wow_pattern_cmd(struct wmi *wmi, u8 if_idx, 2468int ath6kl_wmi_del_wow_pattern_cmd(struct wmi *wmi, u8 if_idx,
2430 u16 list_id, u16 filter_id); 2469 u16 list_id, u16 filter_id);
2431int ath6kl_wmi_set_roam_lrssi_cmd(struct wmi *wmi, u8 lrssi); 2470int ath6kl_wmi_set_roam_lrssi_cmd(struct wmi *wmi, u8 lrssi);
2432int ath6kl_wmi_force_roam_cmd(struct wmi *wmi, const u8 *bssid); 2471int ath6kl_wmi_force_roam_cmd(struct wmi *wmi, const u8 *bssid);
2433int ath6kl_wmi_set_roam_mode_cmd(struct wmi *wmi, enum wmi_roam_mode mode); 2472int ath6kl_wmi_set_roam_mode_cmd(struct wmi *wmi, enum wmi_roam_mode mode);
2473int ath6kl_wmi_mcast_filter_cmd(struct wmi *wmi, u8 if_idx, bool mc_all_on);
2474int ath6kl_wmi_add_del_mcast_filter_cmd(struct wmi *wmi, u8 if_idx,
2475 u8 *filter, bool add_filter);
2476/* AP mode uAPSD */
2477int ath6kl_wmi_ap_set_apsd(struct wmi *wmi, u8 if_idx, u8 enable);
2478
2479int ath6kl_wmi_set_apsd_bfrd_traf(struct wmi *wmi,
2480 u8 if_idx, u16 aid,
2481 u16 bitmap, u32 flags);
2482
2483u8 ath6kl_wmi_get_traffic_class(u8 user_priority);
2434 2484
2485u8 ath6kl_wmi_determine_user_priority(u8 *pkt, u32 layer2_pri);
2435/* AP mode */ 2486/* AP mode */
2436int ath6kl_wmi_ap_profile_commit(struct wmi *wmip, u8 if_idx, 2487int ath6kl_wmi_ap_profile_commit(struct wmi *wmip, u8 if_idx,
2437 struct wmi_connect_cmd *p); 2488 struct wmi_connect_cmd *p);