On Fri, Jan 09, 2009 at 02:10:50PM +0000, Hugh Dickins wrote:
> Good, that should be a lot quicker.

Well I got a lockup doing that, I'll try again later but anyway I see
the bug already, read on if interested.  I should have a patch shortly.

ath5k_tasklet_rx creates a new skb for every packet that is handed to
the upper layers, and the buffer is moved to the end of the rxbuf list.
But ath5k_rxbuf_setup fails skb_alloc so the buffer is left in the rxbuf
list with a null skb.  Once another 40 packets are processed that buffer
comes up again and triggers the BUG_ON.  Disabling the BUG_ON is bad
because we could end up with no available buffers.

The fix would be to create a new skb when we accept a packet, and just
drop the packet if that skb creation fails.  Then swap in the new skb
after ieee80211_rx.  ath9k already does something like this.

-- 
Bob Copeland %% www.bobcopeland.com

_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to