--- x/net/mac80211/main.c +++ y/net/mac80211/main.c @@ -427,9 +427,12 @@ static void ieee80211_tasklet_handler(st { struct ieee80211_local *local = from_tasklet(local, t, tasklet); struct sk_buff *skb; + unsigned int loop = 0; while ((skb = skb_dequeue(&local->skb_queue)) || (skb = skb_dequeue(&local->skb_queue_unreliable))) { + if (++loop == 64) + return; switch (skb->pkt_type) { case IEEE80211_RX_MSG: /* Clear skb->pkt_type in order to not confuse kernel