diff mbox

[4.3] ath10k: fix DMA related firmware crashes on multiple devices

Message ID 1442176540-34973-1-git-send-email-nbd@openwrt.org (mailing list archive)
State Not Applicable
Delegated to: Kalle Valo
Headers show

Commit Message

Felix Fietkau Sept. 13, 2015, 8:35 p.m. UTC
Some platforms really don't like DMA bursts of 256 bytes, and this
causes the firmware to crash when sending beacons.
Also, changing this based on the firmware version does not seem to make
much sense, so use 128 bytes for all versions.

Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
 drivers/net/wireless/ath/ath10k/hw.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Ben Greear Sept. 13, 2015, 10:08 p.m. UTC | #1
On 09/13/2015 01:35 PM, Felix Fietkau wrote:
> Some platforms really don't like DMA bursts of 256 bytes, and this
> causes the firmware to crash when sending beacons.
> Also, changing this based on the firmware version does not seem to make
> much sense, so use 128 bytes for all versions.

Is there any good reason to allow users to enable this with
module-param or similar on platforms that do support it?

Like better performance perhaps?

Thanks,
Ben

>
> Cc: stable@vger.kernel.org
> Signed-off-by: Felix Fietkau <nbd@openwrt.org>
> ---
>   drivers/net/wireless/ath/ath10k/hw.h | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
> index 23afcda..678d72a 100644
> --- a/drivers/net/wireless/ath/ath10k/hw.h
> +++ b/drivers/net/wireless/ath/ath10k/hw.h
> @@ -337,7 +337,7 @@ enum ath10k_hw_rate_cck {
>   #define TARGET_10X_MAX_FRAG_ENTRIES		0
>
>   /* 10.2 parameters */
> -#define TARGET_10_2_DMA_BURST_SIZE		1
> +#define TARGET_10_2_DMA_BURST_SIZE		0
>
>   /* Target specific defines for WMI-TLV firmware */
>   #define TARGET_TLV_NUM_VDEVS			4
> @@ -391,7 +391,7 @@ enum ath10k_hw_rate_cck {
>
>   #define TARGET_10_4_TX_DBG_LOG_SIZE		1024
>   #define TARGET_10_4_NUM_WDS_ENTRIES		32
> -#define TARGET_10_4_DMA_BURST_SIZE		1
> +#define TARGET_10_4_DMA_BURST_SIZE		0
>   #define TARGET_10_4_MAC_AGGR_DELIM		0
>   #define TARGET_10_4_RX_SKIP_DEFRAG_TIMEOUT_DUP_DETECTION_CHECK 1
>   #define TARGET_10_4_VOW_CONFIG			0
>
Felix Fietkau Sept. 13, 2015, 10:16 p.m. UTC | #2
On 2015-09-14 00:08, Ben Greear wrote:
> 
> 
> On 09/13/2015 01:35 PM, Felix Fietkau wrote:
>> Some platforms really don't like DMA bursts of 256 bytes, and this
>> causes the firmware to crash when sending beacons.
>> Also, changing this based on the firmware version does not seem to make
>> much sense, so use 128 bytes for all versions.
> 
> Is there any good reason to allow users to enable this with
> module-param or similar on platforms that do support it?
> 
> Like better performance perhaps?
Maybe, though I expect the performance gain to be small.

- Felix
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kalle Valo Sept. 14, 2015, 7 a.m. UTC | #3
Felix Fietkau <nbd@openwrt.org> writes:

> Some platforms really don't like DMA bursts of 256 bytes, and this
> causes the firmware to crash when sending beacons.
> Also, changing this based on the firmware version does not seem to make
> much sense, so use 128 bytes for all versions.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Felix Fietkau <nbd@openwrt.org>

Nice, good catch! Just to make sure, this fixes the issues some people
have reported that 10.1 firmware works but 10.2 firmware crashes when
starting beaconing?
Felix Fietkau Sept. 14, 2015, 7:11 a.m. UTC | #4
On 2015-09-14 09:00, Kalle Valo wrote:
> Felix Fietkau <nbd@openwrt.org> writes:
> 
>> Some platforms really don't like DMA bursts of 256 bytes, and this
>> causes the firmware to crash when sending beacons.
>> Also, changing this based on the firmware version does not seem to make
>> much sense, so use 128 bytes for all versions.
>>
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Felix Fietkau <nbd@openwrt.org>
> 
> Nice, good catch! Just to make sure, this fixes the issues some people
> have reported that 10.1 firmware works but 10.2 firmware crashes when
> starting beaconing?
Yes. I was able to reproduce that issue myself on a Gateworks Laguna
device, which is among the affected devices reported in that email
thread. This patch fixes it for me.

- Felix
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kalle Valo Sept. 14, 2015, 7:46 a.m. UTC | #5
Felix Fietkau <nbd@openwrt.org> writes:

> On 2015-09-14 09:00, Kalle Valo wrote:
>> Felix Fietkau <nbd@openwrt.org> writes:
>> 
>>> Some platforms really don't like DMA bursts of 256 bytes, and this
>>> causes the firmware to crash when sending beacons.
>>> Also, changing this based on the firmware version does not seem to make
>>> much sense, so use 128 bytes for all versions.
>>>
>>> Cc: stable@vger.kernel.org
>>> Signed-off-by: Felix Fietkau <nbd@openwrt.org>
>> 
>> Nice, good catch! Just to make sure, this fixes the issues some people
>> have reported that 10.1 firmware works but 10.2 firmware crashes when
>> starting beaconing?
>
> Yes. I was able to reproduce that issue myself on a Gateworks Laguna
> device, which is among the affected devices reported in that email
> thread. This patch fixes it for me.

Awesome. Can you please resend this and CC ath10k@lists.infradead.org
(as well as linux-wireless) so that I get this to the correct patchwork
project? I'll then send it forward to 4.3.
Chris Sept. 15, 2015, 7:03 a.m. UTC | #6
Hi,


Felix Fietkau <nbd@...> writes:

> 
> Some platforms really don't like DMA bursts of 256 bytes, and this
> causes the firmware to crash when sending beacons.
> Also, changing this based on the firmware version does not seem to make
> much sense, so use 128 bytes for all version

i can confirm that now gateworks laguna / Ventana and Compex wpj344 (HW v1
and v2) is how working with one and more 9880 cards, using actual firmwares
(tested firmware-5.bin_10.2.4.70-2 + firmware-5.bin_10.2.4.70.6-2 )




--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 23afcda..678d72a 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -337,7 +337,7 @@  enum ath10k_hw_rate_cck {
 #define TARGET_10X_MAX_FRAG_ENTRIES		0
 
 /* 10.2 parameters */
-#define TARGET_10_2_DMA_BURST_SIZE		1
+#define TARGET_10_2_DMA_BURST_SIZE		0
 
 /* Target specific defines for WMI-TLV firmware */
 #define TARGET_TLV_NUM_VDEVS			4
@@ -391,7 +391,7 @@  enum ath10k_hw_rate_cck {
 
 #define TARGET_10_4_TX_DBG_LOG_SIZE		1024
 #define TARGET_10_4_NUM_WDS_ENTRIES		32
-#define TARGET_10_4_DMA_BURST_SIZE		1
+#define TARGET_10_4_DMA_BURST_SIZE		0
 #define TARGET_10_4_MAC_AGGR_DELIM		0
 #define TARGET_10_4_RX_SKIP_DEFRAG_TIMEOUT_DUP_DETECTION_CHECK 1
 #define TARGET_10_4_VOW_CONFIG			0