On Sunday 07 June 2009 11:24:48 matthieu castet wrote: > matthieu castet wrote: > > Michael Buesch wrote: > >> On Thursday 04 June 2009 23:16:13 Georgy Berdyshev wrote: > >>> Hi, > >>> > >>> that's the inline version: > >>> ------- > >>> mac80211 is checking is the skb is aligned on 32 bit boundary. > >>> But it is checking against ethernet header, whereas Linux expect IP > >>> header aligned. > >>> And ethernet ether size is 6*2+2=14, so aligning ethernet header make > >>> IP header unaligned. > >>> > >>> Signed-off-by: Matthieu CASTET <castet.matthieu@xxxxxxx> > >>> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c > >>> index 9776f73..0845fb3 100644 > >>> --- a/net/mac80211/rx.c > >>> +++ b/net/mac80211/rx.c > >>> @@ -1397,7 +1397,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data > >>> *rx) > >>> * mac80211. That also explains the __skb_push() > >>> * below. > >>> */ > >>> - align = (unsigned long)skb->data & 3; > >>> + align = ((unsigned long)(skb->data + sizeof(struct ethhdr))) > >>> & 3; > >>> if (align) { > >>> if (WARN_ON(skb_headroom(skb) < 3)) { > >>> dev_kfree_skb(skb); > >> > >> Uhm, can you give a more verbose explanation? Without that I'd say > >> this patch is plain wrong. > >> What the hell does struct ethhdr have to do with wireless? > > > This is not ethernet. It's 802.11. There is no such thing as an > > > ethernet header in a 802.11 packet. > > > > > Where are in ieee80211_deliver_skb that is called after > > ieee80211_data_to_8023. So it is not 802.11. > > > Do you want more explanation ? No reply always means "ok" on this list ;) -- Greetings, Michael. -- 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