mwifiex: fix out of memory issue observed for USB chipsets
authorAmitkumar Karwar <akarwar@marvell.com>
Wed, 5 Nov 2014 11:34:29 +0000 (17:04 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 11 Nov 2014 21:31:12 +0000 (16:31 -0500)
commitcf6a64fd603ae0f7391f7589b0f3568d4e79605c
tree0995759fefa625fb07b44ebe5c318f70eaff4fc1
parent041bfab5bbb6ec721c743f487e3e22b87f666996
mwifiex: fix out of memory issue observed for USB chipsets

On some platforms, system goes out of memory during heavy
Rx traffic with our USB chipsets.

In case of SDIO/PCIe, after receiving 50 packets in Rx queue
we stop processing interrupts till packets pending fall below
low threshold i.e 20. We don't have similar logic for USB,
so if host platform is slow, we would hit a case where firmware
keeps on pushing packets at high speed than driver/kernel can
process.

We will stop submitting URBs for Rx data when pending packet
count reaches high threshold and restart them when enough
packets are consumed to solve the problem.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=85071
Reported-by: Marek Belisko <marek.belisko@gmail.com>
Tested-by: Marek Belisko <marek.belisko@gmail.com>
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwifiex/main.c
drivers/net/wireless/mwifiex/main.h
drivers/net/wireless/mwifiex/usb.c