]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
wcn36xx: handle new hal response format
authorAndy Green <andy.green@linaro.org>
Tue, 10 Nov 2015 08:25:53 +0000 (03:25 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 30 Nov 2015 12:36:55 +0000 (14:36 +0200)
wcn3620 has a new message structure for the reply to some hal
commands.  This patch adds the struct and helper routine that
uses it if the chip is wcn3620, or falls back to the old
helper routine.

We don't know what to do with the candidate list he sends back,
but we can at least accept and ignore it nicely instead of dying.

Signed-off-by: Andy Green <andy.green@linaro.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wcn36xx/smd.c
drivers/net/wireless/ath/wcn36xx/smd.h

index be317f4fa7165ba72ff3fcf7b6fa9c94a75482a2..b7e61a0efc1bb7a058d3c4267df1f6f680c986e6 100644 (file)
@@ -302,6 +302,22 @@ static int wcn36xx_smd_rsp_status_check(void *buf, size_t len)
        return 0;
 }
 
+static int wcn36xx_smd_rsp_status_check_v2(struct wcn36xx *wcn, void *buf,
+                                            size_t len)
+{
+       struct wcn36xx_fw_msg_status_rsp_v2 *rsp;
+
+       if (len < sizeof(struct wcn36xx_hal_msg_header) + sizeof(*rsp))
+               return wcn36xx_smd_rsp_status_check(buf, len);
+
+       rsp = buf + sizeof(struct wcn36xx_hal_msg_header);
+
+       if (WCN36XX_FW_MSG_RESULT_SUCCESS != rsp->status)
+               return rsp->status;
+
+       return 0;
+}
+
 int wcn36xx_smd_load_nv(struct wcn36xx *wcn)
 {
        struct nv_data *nv_d;
index 008d03423dbf460fc3316924147a872552d47a94..8361f9e3995bfef0ec7034796a5a95841d043ca3 100644 (file)
@@ -44,6 +44,15 @@ struct wcn36xx_fw_msg_status_rsp {
        u32     status;
 } __packed;
 
+/* wcn3620 returns this for tigger_ba */
+
+struct wcn36xx_fw_msg_status_rsp_v2 {
+       u8      bss_id[6];
+       u32     status __packed;
+       u16     count_following_candidates __packed;
+       /* candidate list follows */
+};
+
 struct wcn36xx_hal_ind_msg {
        struct list_head list;
        u8 *msg;