]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
ath10k: sdio: allocate correct size for RECV_1MORE_BLOCK rx packets
authorAlagu Sankar <alagusankar@silex-india.com>
Fri, 29 Jun 2018 13:27:58 +0000 (16:27 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 2 Jul 2018 14:21:37 +0000 (17:21 +0300)
Without this, when receiving a packet that has this flag set
from firmware, we will read invalid trailer data from the packet,
which will be shown as various errors, e.g. "sdio mbox lookahead
is zero" or "invalid rx packet" or "payload length x exceeds max
htc length".

Co-Developed-by: Niklas Cassel <niklas.cassel@linaro.org>
Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/htc.h
drivers/net/wireless/ath/ath10k/sdio.c

index d69bb83049c4461093669c3ade30275addc56108..51fda6c23f6939661f179eaac3090b9e3a40df5a 100644 (file)
@@ -59,6 +59,7 @@ enum ath10k_htc_tx_flags {
 };
 
 enum ath10k_htc_rx_flags {
+       ATH10K_HTC_FLAGS_RECV_1MORE_BLOCK = 0x01,
        ATH10K_HTC_FLAG_TRAILER_PRESENT = 0x02,
        ATH10K_HTC_FLAG_BUNDLE_MASK     = 0xF0
 };
index 4c018a9f3755abb8de54bed1f5932bea7e1ef1bf..848f0afc21e57e9c335a5048ee064f2b2b07329a 100644 (file)
@@ -604,6 +604,9 @@ static int ath10k_sdio_mbox_rx_alloc(struct ath10k *ar,
                 * ATH10K_HTC_FLAG_BUNDLE_MASK flag set, all bundled
                 * packet skb's have been allocated in the previous step.
                 */
+               if (htc_hdr->flags & ATH10K_HTC_FLAGS_RECV_1MORE_BLOCK)
+                       full_len += ATH10K_HIF_MBOX_BLOCK_SIZE;
+
                ret = ath10k_sdio_mbox_alloc_rx_pkt(&ar_sdio->rx_pkts[i],
                                                    act_len,
                                                    full_len,