aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch')
-rw-r--r--target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch b/target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch
new file mode 100644
index 0000000000..8f9914fb10
--- /dev/null
+++ b/target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch
@@ -0,0 +1,37 @@
+From df25859babd9c164a61e86d953d5c88400009a14 Mon Sep 17 00:00:00 2001
+From: Hante Meuleman <meuleman@broadcom.com>
+Date: Wed, 29 Jan 2014 15:32:16 +0100
+Subject: [PATCH] brcmfmac: fix sdio sending of large buffers.
+
+the function brcmf_sdiod_ramrw is supposed to be able to send
+large blobs of data. However inside the loop the skb->len field
+did not correctly get reset each round. As a result only small
+blobs could be sent. This patch fixes this problem.
+
+Reviewed-by: Arend Van Spriel <arend@broadcom.com>
+Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
+Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
+Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
+Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
+Signed-off-by: Arend van Spriel <arend@broadcom.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+---
+ drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+index fa35b23..bd19323 100644
+--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
++++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+@@ -827,7 +827,7 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address,
+ }
+ if (!write)
+ memcpy(data, pkt->data, dsize);
+- skb_trim(pkt, dsize);
++ skb_trim(pkt, 0);
+
+ /* Adjust for next transfer (if any) */
+ size -= dsize;
+--
+2.0.3
+