summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/ath6kl/wmi.h
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2011-09-05 17:38:45 +0300
committerKalle Valo <kvalo@qca.qualcomm.com>2011-09-06 10:44:03 +0300
commit572e27c00c9d1250ae2b4951eae7e73992174138 (patch)
tree6ce0dd1956526dc3990c37987983c433e9314371 /drivers/net/wireless/ath/ath6kl/wmi.h
parentd6e51e6a0cc50b6dd8d9f3a733427cca3f9afdee (diff)
ath6kl: Fix AP mode connect event parsing and TIM updates
This cleans up the connect event parsing by defining a union in struct wmi_connect_event to match with the three possible sets of fields that the target uses depending on which type of connect event is being indicated. In addition, two AP cases are now separated from ath6kl_connect_event() so that correct field names can be used to make it actually possible to understand what the code is doing. The bug hiding in the previous mess was in parsing the AID incorrectly when processing the new station connecting event in AP mode. The fix here for that is also fixing TIM updates for PS buffering to use the correct AID. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/wmi.h')
-rw-r--r--drivers/net/wireless/ath/ath6kl/wmi.h29
1 files changed, 24 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/wmi.h b/drivers/net/wireless/ath/ath6kl/wmi.h
index e86b81d326e..5ca8c8e904c 100644
--- a/drivers/net/wireless/ath/ath6kl/wmi.h
+++ b/drivers/net/wireless/ath/ath6kl/wmi.h
@@ -1275,11 +1275,30 @@ struct wmi_ready_event_2 {
/* Connect Event */
struct wmi_connect_event {
- __le16 ch;
- u8 bssid[ETH_ALEN];
- __le16 listen_intvl;
- __le16 beacon_intvl;
- __le32 nw_type;
+ union {
+ struct {
+ __le16 ch;
+ u8 bssid[ETH_ALEN];
+ __le16 listen_intvl;
+ __le16 beacon_intvl;
+ __le32 nw_type;
+ } sta;
+ struct {
+ u8 phymode;
+ u8 aid;
+ u8 mac_addr[ETH_ALEN];
+ u8 auth;
+ u8 keymgmt;
+ __le16 cipher;
+ u8 apsd_info;
+ u8 unused[3];
+ } ap_sta;
+ struct {
+ __le16 ch;
+ u8 bssid[ETH_ALEN];
+ u8 unused[8];
+ } ap_bss;
+ } u;
u8 beacon_ie_len;
u8 assoc_req_len;
u8 assoc_resp_len;