diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/wmi.h')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/wmi.h | 67 |
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 | ||
155 | enum wmi_data_hdr_data_type { | 154 | enum 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 */ | ||
163 | enum 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 | |||
178 | struct wmi_data_hdr { | 188 | struct 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 | |||
260 | struct wmi_tx_meta_v1 { | 274 | struct 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 | ||
1253 | struct wmi_mcast_filter_cmd { | ||
1254 | u8 mcast_all_enable; | ||
1255 | } __packed; | ||
1256 | |||
1257 | #define ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE 6 | ||
1258 | struct 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 | ||
1904 | struct wmi_set_ip_cmd { | 1928 | struct 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 | ||
1909 | enum ath6kl_wow_filters { | 1933 | enum 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 */ |
2132 | struct wmi_ap_set_apsd_cmd { | ||
2133 | u8 enable; | ||
2134 | } __packed; | ||
2135 | |||
2136 | enum wmi_ap_apsd_buffered_traffic_flags { | ||
2137 | WMI_AP_APSD_NO_DELIVERY_FRAMES = 0x1, | ||
2138 | }; | ||
2139 | |||
2140 | struct 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 */ |
2110 | struct wmi_pspoll_event { | 2147 | struct wmi_pspoll_event { |
@@ -2321,7 +2358,7 @@ enum htc_endpoint_id ath6kl_wmi_get_control_ep(struct wmi *wmi); | |||
2321 | void ath6kl_wmi_set_control_ep(struct wmi *wmi, enum htc_endpoint_id ep_id); | 2358 | void ath6kl_wmi_set_control_ep(struct wmi *wmi, enum htc_endpoint_id ep_id); |
2322 | int ath6kl_wmi_dix_2_dot3(struct wmi *wmi, struct sk_buff *skb); | 2359 | int ath6kl_wmi_dix_2_dot3(struct wmi *wmi, struct sk_buff *skb); |
2323 | int ath6kl_wmi_data_hdr_add(struct wmi *wmi, struct sk_buff *skb, | 2360 | int 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 | ||
2418 | s32 ath6kl_wmi_get_rate(s8 rate_index); | 2455 | s32 ath6kl_wmi_get_rate(s8 rate_index); |
2419 | 2456 | ||
2420 | int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, struct wmi_set_ip_cmd *ip_cmd); | 2457 | int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, u8 if_idx, |
2458 | __be32 ips0, __be32 ips1); | ||
2421 | int ath6kl_wmi_set_host_sleep_mode_cmd(struct wmi *wmi, u8 if_idx, | 2459 | int 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); |
2423 | int ath6kl_wmi_set_wow_mode_cmd(struct wmi *wmi, u8 if_idx, | 2461 | int 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); |
2426 | int ath6kl_wmi_add_wow_pattern_cmd(struct wmi *wmi, u8 if_idx, | 2464 | int 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); | ||
2429 | int ath6kl_wmi_del_wow_pattern_cmd(struct wmi *wmi, u8 if_idx, | 2468 | int 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); |
2431 | int ath6kl_wmi_set_roam_lrssi_cmd(struct wmi *wmi, u8 lrssi); | 2470 | int ath6kl_wmi_set_roam_lrssi_cmd(struct wmi *wmi, u8 lrssi); |
2432 | int ath6kl_wmi_force_roam_cmd(struct wmi *wmi, const u8 *bssid); | 2471 | int ath6kl_wmi_force_roam_cmd(struct wmi *wmi, const u8 *bssid); |
2433 | int ath6kl_wmi_set_roam_mode_cmd(struct wmi *wmi, enum wmi_roam_mode mode); | 2472 | int ath6kl_wmi_set_roam_mode_cmd(struct wmi *wmi, enum wmi_roam_mode mode); |
2473 | int ath6kl_wmi_mcast_filter_cmd(struct wmi *wmi, u8 if_idx, bool mc_all_on); | ||
2474 | int ath6kl_wmi_add_del_mcast_filter_cmd(struct wmi *wmi, u8 if_idx, | ||
2475 | u8 *filter, bool add_filter); | ||
2476 | /* AP mode uAPSD */ | ||
2477 | int ath6kl_wmi_ap_set_apsd(struct wmi *wmi, u8 if_idx, u8 enable); | ||
2478 | |||
2479 | int ath6kl_wmi_set_apsd_bfrd_traf(struct wmi *wmi, | ||
2480 | u8 if_idx, u16 aid, | ||
2481 | u16 bitmap, u32 flags); | ||
2482 | |||
2483 | u8 ath6kl_wmi_get_traffic_class(u8 user_priority); | ||
2434 | 2484 | ||
2485 | u8 ath6kl_wmi_determine_user_priority(u8 *pkt, u32 layer2_pri); | ||
2435 | /* AP mode */ | 2486 | /* AP mode */ |
2436 | int ath6kl_wmi_ap_profile_commit(struct wmi *wmip, u8 if_idx, | 2487 | int ath6kl_wmi_ap_profile_commit(struct wmi *wmip, u8 if_idx, |
2437 | struct wmi_connect_cmd *p); | 2488 | struct wmi_connect_cmd *p); |