diff options
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; |