mac80211: fix WARN_ON in the new work code
authorFelix Fietkau <nbd@openwrt.org>
Sun, 24 Jan 2010 19:44:35 +0000 (20:44 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 25 Jan 2010 21:36:28 +0000 (16:36 -0500)
ieee80211_work_rx_mgmt currently enqueues various management frames,
including deauth and disassoc frames, however the function
ieee80211_work_rx_queued_mgmt does not handle these, as they should
only occur if the AP is buggy. It does emit a WARN_ON when this happens
though, and several users have reported such instances.
Fix the WARN_ON by not queueing such frames in the first place.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/work.c

index 81bd5d592bb489f837018a93e15ed5a49a0bc258..df8277cdb4d00f3b15237fe4931e61599a55ae95 100644 (file)
@@ -1022,8 +1022,6 @@ ieee80211_rx_result ieee80211_work_rx_mgmt(struct ieee80211_sub_if_data *sdata,
                case IEEE80211_STYPE_PROBE_RESP:
                case IEEE80211_STYPE_ASSOC_RESP:
                case IEEE80211_STYPE_REASSOC_RESP:
-               case IEEE80211_STYPE_DEAUTH:
-               case IEEE80211_STYPE_DISASSOC:
                        skb_queue_tail(&local->work_skb_queue, skb);
                        ieee80211_queue_work(&local->hw, &local->work_work);
                        return RX_QUEUED;