Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c165c97 authored by Sujith Manoharan's avatar Sujith Manoharan Committed by John W. Linville
Browse files

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: default avatarSujith Manoharan <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 29bbfb24
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;

+6 −1
Original line number Diff line number Diff line
@@ -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:
+6 −0
Original line number Diff line number Diff line
@@ -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;