diff options
author | Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> | 2013-01-28 11:31:08 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-01-30 15:07:19 -0500 |
commit | 2acb4220b264f9d229db01ccc390b8beb37b55af (patch) | |
tree | 3c4fdff51c92b3591591c7cc93215a40c9cf6961 | |
parent | afda8bb50b950b5ee598e3dd0388b06ad1226eed (diff) |
wil6210: Never delete Rx chain with firmware
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>
-rw-r--r-- | drivers/net/wireless/ath/wil6210/txrx.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/wil6210.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/wmi.c | 22 |
3 files changed, 1 insertions, 26 deletions
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c index 48cfa7e13781..198595118396 100644 --- a/drivers/net/wireless/ath/wil6210/txrx.c +++ b/drivers/net/wireless/ath/wil6210/txrx.c | |||
@@ -511,10 +511,8 @@ void wil_rx_fini(struct wil6210_priv *wil) | |||
511 | { | 511 | { |
512 | struct vring *vring = &wil->vring_rx; | 512 | struct vring *vring = &wil->vring_rx; |
513 | 513 | ||
514 | if (vring->va) { | 514 | if (vring->va) |
515 | wmi_rx_chain_del(wil); | ||
516 | wil_vring_free(wil, vring, 0); | 515 | wil_vring_free(wil, vring, 0); |
517 | } | ||
518 | } | 516 | } |
519 | 517 | ||
520 | int wil_vring_init_tx(struct wil6210_priv *wil, int id, int size, | 518 | int wil_vring_init_tx(struct wil6210_priv *wil, int id, int size, |
diff --git a/drivers/net/wireless/ath/wil6210/wil6210.h b/drivers/net/wireless/ath/wil6210/wil6210.h index 69e5162be28a..aea961ff8f08 100644 --- a/drivers/net/wireless/ath/wil6210/wil6210.h +++ b/drivers/net/wireless/ath/wil6210/wil6210.h | |||
@@ -327,7 +327,6 @@ int wmi_add_cipher_key(struct wil6210_priv *wil, u8 key_index, | |||
327 | const void *mac_addr, int key_len, const void *key); | 327 | const void *mac_addr, int key_len, const void *key); |
328 | int wmi_echo(struct wil6210_priv *wil); | 328 | int wmi_echo(struct wil6210_priv *wil); |
329 | int wmi_set_ie(struct wil6210_priv *wil, u8 type, u16 ie_len, const void *ie); | 329 | int wmi_set_ie(struct wil6210_priv *wil, u8 type, u16 ie_len, const void *ie); |
330 | int wmi_rx_chain_del(struct wil6210_priv *wil); | ||
331 | int wmi_rx_chain_add(struct wil6210_priv *wil, struct vring *vring); | 330 | int wmi_rx_chain_add(struct wil6210_priv *wil, struct vring *vring); |
332 | 331 | ||
333 | int wil6210_init_irq(struct wil6210_priv *wil, int irq); | 332 | int wil6210_init_irq(struct wil6210_priv *wil, int irq); |
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c index 8178cc0ce650..0b70e17cd1fb 100644 --- a/drivers/net/wireless/ath/wil6210/wmi.c +++ b/drivers/net/wireless/ath/wil6210/wmi.c | |||
@@ -902,28 +902,6 @@ int wmi_rx_chain_add(struct wil6210_priv *wil, struct vring *vring) | |||
902 | return rc; | 902 | return rc; |
903 | } | 903 | } |
904 | 904 | ||
905 | int wmi_rx_chain_del(struct wil6210_priv *wil) | ||
906 | { | ||
907 | int rc; | ||
908 | struct wmi_cfg_rx_chain_cmd cmd = { | ||
909 | .action = cpu_to_le32(WMI_RX_CHAIN_DEL), | ||
910 | .rx_sw_ring = { | ||
911 | .max_mpdu_size = cpu_to_le16(RX_BUF_LEN), | ||
912 | }, | ||
913 | }; | ||
914 | struct { | ||
915 | struct wil6210_mbox_hdr_wmi wmi; | ||
916 | struct wmi_cfg_rx_chain_done_event cfg; | ||
917 | } __packed wmi_rx_cfg_reply; | ||
918 | |||
919 | rc = wmi_call(wil, WMI_CFG_RX_CHAIN_CMDID, &cmd, sizeof(cmd), | ||
920 | WMI_CFG_RX_CHAIN_DONE_EVENTID, | ||
921 | &wmi_rx_cfg_reply, sizeof(wmi_rx_cfg_reply), | ||
922 | 100); | ||
923 | |||
924 | return rc; | ||
925 | } | ||
926 | |||
927 | void wmi_event_flush(struct wil6210_priv *wil) | 905 | void wmi_event_flush(struct wil6210_priv *wil) |
928 | { | 906 | { |
929 | struct pending_wmi_event *evt, *t; | 907 | struct pending_wmi_event *evt, *t; |