aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
authorThomas Pedersen <thomas@cozybit.com>2011-08-12 23:01:00 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-08-22 14:46:00 -0400
commit8db098507c5cbe499061d0f6aea426a36e7c72d7 (patch)
treebf7062fff64f56ae376cb16ffa5c3cd85c09296b /net/mac80211/rx.c
parent54ef656b05103f700ff8fc2aaf0382cfd0e54fe4 (diff)
mac80211: update mesh peering frame format
This patch updates the mesh peering frames to the format specified in the recently ratified 802.11s standard. Several changes took place to make this happen: - Change RX path to handle new self-protected frames - Add new Peering management IE - Remove old Peer Link IE - Remove old plink_action field in ieee80211_mgmt header These changes by themselves would either break peering, or work by coincidence, so squash them all into this patch. Signed-off-by: Thomas Pedersen <thomas@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index fe2c2a717793..3fb6dea36536 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2220,6 +2220,24 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
2220 goto handled; 2220 goto handled;
2221 } 2221 }
2222 break; 2222 break;
2223 case WLAN_CATEGORY_SELF_PROTECTED:
2224 switch (mgmt->u.action.u.self_prot.action_code) {
2225 case WLAN_SP_MESH_PEERING_OPEN:
2226 case WLAN_SP_MESH_PEERING_CLOSE:
2227 case WLAN_SP_MESH_PEERING_CONFIRM:
2228 if (!ieee80211_vif_is_mesh(&sdata->vif))
2229 goto invalid;
2230 if (sdata->u.mesh.security != IEEE80211_MESH_SEC_NONE)
2231 /* userspace handles this frame */
2232 break;
2233 goto queue;
2234 case WLAN_SP_MGK_INFORM:
2235 case WLAN_SP_MGK_ACK:
2236 if (!ieee80211_vif_is_mesh(&sdata->vif))
2237 goto invalid;
2238 break;
2239 }
2240 break;
2223 case WLAN_CATEGORY_MESH_ACTION: 2241 case WLAN_CATEGORY_MESH_ACTION:
2224 if (!ieee80211_vif_is_mesh(&sdata->vif)) 2242 if (!ieee80211_vif_is_mesh(&sdata->vif))
2225 break; 2243 break;