wil6210: Never delete Rx chain with firmware
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Mon, 28 Jan 2013 16:31:08 +0000 (18:31 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 30 Jan 2013 20:07:19 +0000 (15:07 -0500)
Firmware crash on attempt to delete Rx chain.
Driver part of Rx chain removed only in preparation for the target reset;
as reset is the only flow that removes Rx chain in the firmware.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/wil6210/txrx.c
drivers/net/wireless/ath/wil6210/wil6210.h
drivers/net/wireless/ath/wil6210/wmi.c

index 48cfa7e13781a54709d30c216b9c8e627048e7dc..198595118396c4309a378dc433c79348fe840080 100644 (file)
@@ -511,10 +511,8 @@ void wil_rx_fini(struct wil6210_priv *wil)
 {
        struct vring *vring = &wil->vring_rx;
 
-       if (vring->va) {
-               wmi_rx_chain_del(wil);
+       if (vring->va)
                wil_vring_free(wil, vring, 0);
-       }
 }
 
 int wil_vring_init_tx(struct wil6210_priv *wil, int id, int size,
index 69e5162be28ac56caec0830df3cdcaaa9645f162..aea961ff8f08c20cdf0c0b0d82047c28d69d10ea 100644 (file)
@@ -327,7 +327,6 @@ int wmi_add_cipher_key(struct wil6210_priv *wil, u8 key_index,
                       const void *mac_addr, int key_len, const void *key);
 int wmi_echo(struct wil6210_priv *wil);
 int wmi_set_ie(struct wil6210_priv *wil, u8 type, u16 ie_len, const void *ie);
-int wmi_rx_chain_del(struct wil6210_priv *wil);
 int wmi_rx_chain_add(struct wil6210_priv *wil, struct vring *vring);
 
 int wil6210_init_irq(struct wil6210_priv *wil, int irq);
index 8178cc0ce650f5c62b663ca038270cc20586db3f..0b70e17cd1fb3c195d2c8e024acca7e6c499394c 100644 (file)
@@ -902,28 +902,6 @@ int wmi_rx_chain_add(struct wil6210_priv *wil, struct vring *vring)
        return rc;
 }
 
-int wmi_rx_chain_del(struct wil6210_priv *wil)
-{
-       int rc;
-       struct wmi_cfg_rx_chain_cmd cmd = {
-               .action = cpu_to_le32(WMI_RX_CHAIN_DEL),
-               .rx_sw_ring = {
-                       .max_mpdu_size = cpu_to_le16(RX_BUF_LEN),
-               },
-       };
-       struct {
-               struct wil6210_mbox_hdr_wmi wmi;
-               struct wmi_cfg_rx_chain_done_event cfg;
-       } __packed wmi_rx_cfg_reply;
-
-       rc = wmi_call(wil, WMI_CFG_RX_CHAIN_CMDID, &cmd, sizeof(cmd),
-                     WMI_CFG_RX_CHAIN_DONE_EVENTID,
-                     &wmi_rx_cfg_reply, sizeof(wmi_rx_cfg_reply),
-                     100);
-
-       return rc;
-}
-
 void wmi_event_flush(struct wil6210_priv *wil)
 {
        struct pending_wmi_event *evt, *t;