diff options
author | Thomas Pedersen <thomas@cozybit.com> | 2011-08-13 07:01:00 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-08-22 22:46:00 +0400 |
commit | 8db098507c5cbe499061d0f6aea426a36e7c72d7 (patch) | |
tree | bf7062fff64f56ae376cb16ffa5c3cd85c09296b /net/mac80211/rx.c | |
parent | 54ef656b05103f700ff8fc2aaf0382cfd0e54fe4 (diff) | |
download | linux-8db098507c5cbe499061d0f6aea426a36e7c72d7.tar.xz |
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) goto handled; } break; + case WLAN_CATEGORY_SELF_PROTECTED: + switch (mgmt->u.action.u.self_prot.action_code) { + case WLAN_SP_MESH_PEERING_OPEN: + case WLAN_SP_MESH_PEERING_CLOSE: + case WLAN_SP_MESH_PEERING_CONFIRM: + if (!ieee80211_vif_is_mesh(&sdata->vif)) + goto invalid; + if (sdata->u.mesh.security != IEEE80211_MESH_SEC_NONE) + /* userspace handles this frame */ + break; + goto queue; + case WLAN_SP_MGK_INFORM: + case WLAN_SP_MGK_ACK: + if (!ieee80211_vif_is_mesh(&sdata->vif)) + goto invalid; + break; + } + break; case WLAN_CATEGORY_MESH_ACTION: if (!ieee80211_vif_is_mesh(&sdata->vif)) break; |