Patrick McHardy a écrit :
François Valenduc wrote:
Patrick McHardy a écrit :
I think I know whats happening (Jussi CCed). That commit introduced
a qdisc_skb_cb, which conflicts with the mac80211 usage of skb->cb.
mac80211 seems to expect the CB to survive the qdisc layer, which
is wrong. One possibility to fix this (or just test my theory)
would be to make sure they don't clash by adding the struct
ieee80211_tx_info to qdisc_skb_cb->data. Something like this patch.
I tested your last patch. Unfortunately, I get the following compile
error:
In file included from net/mac80211/main.c:11:
include/net/mac80211.h: In function ‘IEEE80211_SKB_CB’:
include/net/mac80211.h:347: erreur: size of array ‘type name’ is
negative
I was afraid that might happen. This means skb->cb is not large
enough to hold both the qdisc and the ieee80211 structs.
Just for testing, changing (include/net/mac80211.h):
#define IEEE80211_TX_INFO_DRIVER_DATA_SIZE \
(sizeof(((struct sk_buff *)0)->cb) - 8)
to
#define IEEE80211_TX_INFO_DRIVER_DATA_SIZE \
(sizeof(((struct sk_buff *)0)->cb) - 12)
might help to get it to compile. If that doesn't work, try -16.
That didn't work, neither with -12 or -16.
--
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