| From foo@baz Mon Sep 17 12:33:31 CEST 2018 |
| From: Surabhi Vishnoi <svishnoi@codeaurora.org> |
| Date: Wed, 25 Jul 2018 10:59:41 +0300 |
| Subject: ath10k: disable bundle mgmt tx completion event support |
| |
| From: Surabhi Vishnoi <svishnoi@codeaurora.org> |
| |
| [ Upstream commit 673bc519c55843c68c3aecff71a4101e79d28d2b ] |
| |
| The tx completion of multiple mgmt frames can be bundled |
| in a single event and sent by the firmware to host, if this |
| capability is not disabled explicitly by the host. If the host |
| cannot handle the bundled mgmt tx completion, this capability |
| support needs to be disabled in the wmi init cmd, sent to the firmware. |
| |
| Add the host capability indication flag in the wmi ready command, |
| to let firmware know the features supported by the host driver. |
| This field is ignored if it is not supported by firmware. |
| |
| Set the host capability indication flag(i.e. host_capab) to zero, |
| for disabling the support of bundle mgmt tx completion. This will |
| indicate the firmware to send completion event for every mgmt tx |
| completion, instead of bundling them together and sending in a single |
| event. |
| |
| Tested HW: WCN3990 |
| Tested FW: WLAN.HL.2.0-01188-QCAHLSWMTPLZ-1 |
| |
| Signed-off-by: Surabhi Vishnoi <svishnoi@codeaurora.org> |
| Signed-off-by: Rakesh Pillai <pillair@codeaurora.org> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/wireless/ath/ath10k/wmi-tlv.c | 5 +++++ |
| drivers/net/wireless/ath/ath10k/wmi-tlv.h | 5 +++++ |
| 2 files changed, 10 insertions(+) |
| |
| --- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c |
| +++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c |
| @@ -1451,6 +1451,11 @@ static struct sk_buff *ath10k_wmi_tlv_op |
| cfg->keep_alive_pattern_size = __cpu_to_le32(0); |
| cfg->max_tdls_concurrent_sleep_sta = __cpu_to_le32(1); |
| cfg->max_tdls_concurrent_buffer_sta = __cpu_to_le32(1); |
| + cfg->wmi_send_separate = __cpu_to_le32(0); |
| + cfg->num_ocb_vdevs = __cpu_to_le32(0); |
| + cfg->num_ocb_channels = __cpu_to_le32(0); |
| + cfg->num_ocb_schedules = __cpu_to_le32(0); |
| + cfg->host_capab = __cpu_to_le32(0); |
| |
| ath10k_wmi_put_host_mem_chunks(ar, chunks); |
| |
| --- a/drivers/net/wireless/ath/ath10k/wmi-tlv.h |
| +++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.h |
| @@ -1228,6 +1228,11 @@ struct wmi_tlv_resource_config { |
| __le32 keep_alive_pattern_size; |
| __le32 max_tdls_concurrent_sleep_sta; |
| __le32 max_tdls_concurrent_buffer_sta; |
| + __le32 wmi_send_separate; |
| + __le32 num_ocb_vdevs; |
| + __le32 num_ocb_channels; |
| + __le32 num_ocb_schedules; |
| + __le32 host_capab; |
| } __packed; |
| |
| struct wmi_tlv_init_cmd { |