* [PATCH] wl1271: Fix RX path stall
@ 2010-10-25 9:24 juuso.oikarinen
2010-10-25 12:31 ` Tuomas Katila
2010-10-26 10:18 ` Luciano Coelho
0 siblings, 2 replies; 3+ messages in thread
From: juuso.oikarinen @ 2010-10-25 9:24 UTC (permalink / raw)
To: luciano.coelho; +Cc: linux-wireless
From: Juuso Oikarinen <juuso.oikarinen@nokia.com>
The wl1271_rx function loops through packets in an aggregated buffer. Each
packet in the buffer is handled by a call to wl1271_rx_handle_data, which will
fail if skb memory allocation fails or production mode is enabled. These
failures currently prevent the rx counters to be incremented, thus causing the
rx loop to run forever.
Fix this by ignoring error codes reported wl1271_rx_handle_data function.
This essentially means that frames will be dropped in production mode, which
is the intetion, and frames will be dropped if memory allocation fails, which
is a decent way to recover from that situation.
Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
---
drivers/net/wireless/wl12xx/wl1271_rx.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/wl12xx/wl1271_rx.c b/drivers/net/wireless/wl12xx/wl1271_rx.c
index 35448e7..cacfee5 100644
--- a/drivers/net/wireless/wl12xx/wl1271_rx.c
+++ b/drivers/net/wireless/wl12xx/wl1271_rx.c
@@ -184,10 +184,14 @@ void wl1271_rx(struct wl1271 *wl, struct wl1271_fw_status *status)
while (pkt_offset < buf_size) {
pkt_length = wl1271_rx_get_buf_size(status,
drv_rx_counter);
- if (wl1271_rx_handle_data(wl,
- wl->aggr_buf + pkt_offset,
- pkt_length) < 0)
- break;
+ /*
+ * the handle data call can only fail in memory-outage
+ * conditions, in that case the received frame will just
+ * be dropped.
+ */
+ wl1271_rx_handle_data(wl,
+ wl->aggr_buf + pkt_offset,
+ pkt_length);
wl->rx_counter++;
drv_rx_counter++;
drv_rx_counter &= NUM_RX_PKT_DESC_MOD_MASK;
--
1.7.0.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] wl1271: Fix RX path stall
2010-10-25 9:24 [PATCH] wl1271: Fix RX path stall juuso.oikarinen
@ 2010-10-25 12:31 ` Tuomas Katila
2010-10-26 10:18 ` Luciano Coelho
1 sibling, 0 replies; 3+ messages in thread
From: Tuomas Katila @ 2010-10-25 12:31 UTC (permalink / raw)
To: ext juuso.oikarinen@nokia.com
Cc: Coelho Luciano (Nokia-MS/Helsinki),
linux-wireless@vger.kernel.org
On Mon, 2010-10-25 at 11:24 +0200, ext juuso.oikarinen@nokia.com wrote:
> From: Juuso Oikarinen <juuso.oikarinen@nokia.com>
>
> The wl1271_rx function loops through packets in an aggregated buffer. Each
> packet in the buffer is handled by a call to wl1271_rx_handle_data, which will
> fail if skb memory allocation fails or production mode is enabled. These
> failures currently prevent the rx counters to be incremented, thus causing the
> rx loop to run forever.
>
> Fix this by ignoring error codes reported wl1271_rx_handle_data function.
> This essentially means that frames will be dropped in production mode, which
> is the intetion, and frames will be dropped if memory allocation fails, which
> is a decent way to recover from that situation.
>
> Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
> ---
Tested-by: Tuomas Katila <ext-tuomas.2.katila@nokia.com>
I tested this with production mode in the scenario where it was
previously failing, and it is not getting stuck anymore.
-Tuomas
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] wl1271: Fix RX path stall
2010-10-25 9:24 [PATCH] wl1271: Fix RX path stall juuso.oikarinen
2010-10-25 12:31 ` Tuomas Katila
@ 2010-10-26 10:18 ` Luciano Coelho
1 sibling, 0 replies; 3+ messages in thread
From: Luciano Coelho @ 2010-10-26 10:18 UTC (permalink / raw)
To: juuso.oikarinen@nokia.com; +Cc: linux-wireless@vger.kernel.org
On Mon, 2010-10-25 at 11:24 +0200, juuso.oikarinen@nokia.com wrote:
> From: Juuso Oikarinen <juuso.oikarinen@nokia.com>
>
> The wl1271_rx function loops through packets in an aggregated buffer. Each
> packet in the buffer is handled by a call to wl1271_rx_handle_data, which will
> fail if skb memory allocation fails or production mode is enabled. These
> failures currently prevent the rx counters to be incremented, thus causing the
> rx loop to run forever.
>
> Fix this by ignoring error codes reported wl1271_rx_handle_data function.
> This essentially means that frames will be dropped in production mode, which
> is the intetion, and frames will be dropped if memory allocation fails, which
> is a decent way to recover from that situation.
>
> Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
> ---
Reviewed-by: Luciano Coelho <luciano.coelho@nokia.com>
And applied to the wl12xx tree. Thank you!
--
Cheers,
Luca.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-10-26 10:18 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-25 9:24 [PATCH] wl1271: Fix RX path stall juuso.oikarinen
2010-10-25 12:31 ` Tuomas Katila
2010-10-26 10:18 ` Luciano Coelho
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).