diff options
author | Javier Cardona <javier@cozybit.com> | 2010-03-29 11:00:20 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-04-26 07:47:52 -0700 |
commit | a426c6e7ec8c7208cfcaf1a57d10d4d07c5e7f3f (patch) | |
tree | 3c68a669db05309641549f36774cf07724d7e2c3 /net | |
parent | cc0ffdadee6e17cabcb9ce2081b5a637c87113ea (diff) | |
download | kernel-crypto-a426c6e7ec8c7208cfcaf1a57d10d4d07c5e7f3f.tar.gz kernel-crypto-a426c6e7ec8c7208cfcaf1a57d10d4d07c5e7f3f.tar.xz kernel-crypto-a426c6e7ec8c7208cfcaf1a57d10d4d07c5e7f3f.zip |
mac80211: Handle mesh action frames in ieee80211_rx_h_action
commit 1cb561f83793191cf86a2db3948d28f5f42df9ff upstream.
This fixes the problem introduced in commit
8404080568613d93ad7cf0a16dfb68 which broke mesh peer link establishment.
changes:
v2 Added missing break (Johannes)
v3 Broke original patch into two (Johannes)
Signed-off-by: Javier Cardona <javier@cozybit.com>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/mesh.c | 3 | ||||
-rw-r--r-- | net/mac80211/rx.c | 5 |
2 files changed, 5 insertions, 3 deletions
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c index 6a433142959..ba1fadb0119 100644 --- a/net/mac80211/mesh.c +++ b/net/mac80211/mesh.c @@ -749,9 +749,6 @@ ieee80211_mesh_rx_mgmt(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb) switch (fc & IEEE80211_FCTL_STYPE) { case IEEE80211_STYPE_ACTION: - if (skb->len < IEEE80211_MIN_ACTION_SIZE) - return RX_DROP_MONITOR; - /* fall through */ case IEEE80211_STYPE_PROBE_RESP: case IEEE80211_STYPE_BEACON: skb_queue_tail(&ifmsh->skb_queue, skb); diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index da92cdef828..edfa036fc16 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -2355,6 +2355,11 @@ static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata, /* should never get here */ WARN_ON(1); break; + case MESH_PLINK_CATEGORY: + case MESH_PATH_SEL_CATEGORY: + if (ieee80211_vif_is_mesh(&sdata->vif)) + return ieee80211_mesh_rx_mgmt(sdata, rx->skb); + break; } return 1; |