Search Linux Wireless

Re: PROBLEM: skb_push called from rt2x00 panics occasionally

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 30, 2014 at 12:33:42PM +0000, Tuomas Räsänen wrote:
> =================================================
>  skb_push called from rt2x00 panics occasionally
> =================================================
> 
> We have been experiencing occasional skb_push panics with rt2x00 driver
> throughout the stable v3.10 -series. Problems occur with hosts acting as
> accesspoints, managed by hostapd 2.0. Some hosts panic reportedly
> several times per week, some almost never. All hosts have identical
> kernels and WiFi adapters.
> 
> We have not been able to reproduce panics in a controlled manner.
> 
> I'd be very happy to get some advice how to proceed in debugging and fixing
> this problem and even better, to understand the whole issue
> thoroughly. Unfortunately, all I know now is that the skb headroom is
> not big enough for the frame the AP is trying to transmit, right?
> Hopefully someone can shed some light on this problem.

Yes, is possible that we have no headroom for frame retransmitted
several times, but I do not see bug in code for that so far. 
We remove and add again l2 pad for retransmit frame, that should
not utilize more headroom than for first frame transmission (as long
mac80211 does not increase header length, but that seems to be not
possible and sensible).

For know you can try to increase headroom like on below patch or use
module with nohwcrypt=1. Please check if any of that stops panics or 
just make it less reproducible.

You can also configure kdump to dump memory to see how skb looks when
kernel crashes.

Stanislaw

diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index e4ba2ce..50fc3e7 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -115,7 +115,7 @@
  * Constants for extra TX headroom for alignment purposes.
  */
 #define RT2X00_ALIGN_SIZE	4 /* Only whole frame needs alignment */
-#define RT2X00_L2PAD_SIZE	8 /* Both header & payload need alignment */
+#define RT2X00_L2PAD_SIZE	12 /* Both header & payload need alignment */
 
 /*
  * Standard timing and size defines.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux