diff options
author | Thomas Pedersen <thomas@cozybit.com> | 2011-08-12 23:01:00 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-08-22 14:46:00 -0400 |
commit | 8db098507c5cbe499061d0f6aea426a36e7c72d7 (patch) | |
tree | bf7062fff64f56ae376cb16ffa5c3cd85c09296b /net/mac80211/rx.c | |
parent | 54ef656b05103f700ff8fc2aaf0382cfd0e54fe4 (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.c | 18 |
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; |