Commit c9b3f317 authored by Gavin Li's avatar Gavin Li Committed by Greg Kroah-Hartman

brcmfmac: fix incorrect event channel deduction

commit 8e290cec upstream.

brcmf_sdio_fromevntchan() was being called on the the data frame
rather than the software header, causing some frames to be
mischaracterized as on the event channel rather than the data channel.

This fixes a major performance regression (due to dropped packets). With
this patch the download speed jumped from 1Mbit/s back up to 40MBit/s due
to the sheer amount of packets being incorrectly processed.

Fixes: c56caa9d ("brcmfmac: screening firmware event packet")
Signed-off-by: default avatarGavin Li <git@thegavinli.com>
Acked-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
[kvalo@codeaurora.org: improve commit logs based on email discussion]
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 53d43706
...@@ -1660,7 +1660,7 @@ static u8 brcmf_sdio_rxglom(struct brcmf_sdio *bus, u8 rxseq) ...@@ -1660,7 +1660,7 @@ static u8 brcmf_sdio_rxglom(struct brcmf_sdio *bus, u8 rxseq)
pfirst->len, pfirst->next, pfirst->len, pfirst->next,
pfirst->prev); pfirst->prev);
skb_unlink(pfirst, &bus->glom); skb_unlink(pfirst, &bus->glom);
if (brcmf_sdio_fromevntchan(pfirst->data)) if (brcmf_sdio_fromevntchan(&dptr[SDPCM_HWHDR_LEN]))
brcmf_rx_event(bus->sdiodev->dev, pfirst); brcmf_rx_event(bus->sdiodev->dev, pfirst);
else else
brcmf_rx_frame(bus->sdiodev->dev, pfirst, brcmf_rx_frame(bus->sdiodev->dev, pfirst,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment