ath9k_htc: Fix WMI and beacon header
Match the beacon header with that of the firmware. Also, the firmware reports the TSF for an SWBA, so store it. Signed-off-by: Sujith Manoharan <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
29bbfb2491
commit
1c165c972b
@ -96,8 +96,8 @@ struct tx_mgmt_hdr {
|
||||
} __packed;
|
||||
|
||||
struct tx_beacon_header {
|
||||
u8 len_changed;
|
||||
u8 vif_index;
|
||||
u8 len_changed;
|
||||
u16 rev;
|
||||
} __packed;
|
||||
|
||||
|
@ -156,6 +156,7 @@ static void ath9k_wmi_ctrl_rx(void *priv, struct sk_buff *skb,
|
||||
struct wmi_cmd_hdr *hdr;
|
||||
u16 cmd_id;
|
||||
void *wmi_event;
|
||||
struct wmi_event_swba *swba;
|
||||
#ifdef CONFIG_ATH9K_HTC_DEBUGFS
|
||||
__be32 txrate;
|
||||
#endif
|
||||
@ -170,7 +171,11 @@ static void ath9k_wmi_ctrl_rx(void *priv, struct sk_buff *skb,
|
||||
wmi_event = skb_pull(skb, sizeof(struct wmi_cmd_hdr));
|
||||
switch (cmd_id) {
|
||||
case WMI_SWBA_EVENTID:
|
||||
wmi->beacon_pending = *(u8 *)wmi_event;
|
||||
swba = (struct wmi_event_swba *) wmi_event;
|
||||
|
||||
wmi->tsf = be64_to_cpu(swba->tsf);
|
||||
wmi->beacon_pending = swba->beacon_pending;
|
||||
|
||||
tasklet_schedule(&wmi->drv_priv->swba_tasklet);
|
||||
break;
|
||||
case WMI_FATAL_EVENTID:
|
||||
|
@ -36,6 +36,11 @@ struct wmi_fw_version {
|
||||
__be16 minor;
|
||||
|
||||
} __packed;
|
||||
|
||||
struct wmi_event_swba {
|
||||
__be64 tsf;
|
||||
u8 beacon_pending;
|
||||
};
|
||||
enum wmi_cmd_id {
|
||||
WMI_ECHO_CMDID = 0x0001,
|
||||
WMI_ACCESS_MEMORY_CMDID,
|
||||
@ -106,6 +111,7 @@ struct wmi {
|
||||
u32 cmd_rsp_len;
|
||||
bool stopped;
|
||||
|
||||
u64 tsf;
|
||||
u8 beacon_pending;
|
||||
spinlock_t wmi_lock;
|
||||
|
||||
|
Reference in New Issue
Block a user