aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/ieee80211.h5
-rw-r--r--net/mac80211/mesh.c2
-rw-r--r--net/mac80211/mesh_plink.c2
-rw-r--r--net/mac80211/rx.c7
4 files changed, 9 insertions, 7 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 79690b710665..ee1c96a866cc 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -1261,9 +1261,8 @@ enum ieee80211_category {
1261 WLAN_CATEGORY_MULTIHOP_ACTION = 14, 1261 WLAN_CATEGORY_MULTIHOP_ACTION = 14,
1262 WLAN_CATEGORY_SELF_PROTECTED = 15, 1262 WLAN_CATEGORY_SELF_PROTECTED = 15,
1263 WLAN_CATEGORY_WMM = 17, 1263 WLAN_CATEGORY_WMM = 17,
1264 /* TODO: remove MESH_PLINK and MESH_PATH_SEL after */ 1264 /* TODO: remove MESH_PATH_SEL after mesh is updated
1265 /* mesh is updated to current 802.11s draft */ 1265 * to current 802.11s draft */
1266 WLAN_CATEGORY_MESH_PLINK = 30,
1267 WLAN_CATEGORY_MESH_PATH_SEL = 32, 1266 WLAN_CATEGORY_MESH_PATH_SEL = 32,
1268 WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, 1267 WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
1269 WLAN_CATEGORY_VENDOR_SPECIFIC = 127, 1268 WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index 2a59eb345131..75378e852f00 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -600,7 +600,7 @@ static void ieee80211_mesh_rx_mgmt_action(struct ieee80211_sub_if_data *sdata,
600 struct ieee80211_rx_status *rx_status) 600 struct ieee80211_rx_status *rx_status)
601{ 601{
602 switch (mgmt->u.action.category) { 602 switch (mgmt->u.action.category) {
603 case WLAN_CATEGORY_MESH_PLINK: 603 case WLAN_CATEGORY_MESH_ACTION:
604 mesh_rx_plink_frame(sdata, mgmt, len, rx_status); 604 mesh_rx_plink_frame(sdata, mgmt, len, rx_status);
605 break; 605 break;
606 case WLAN_CATEGORY_MESH_PATH_SEL: 606 case WLAN_CATEGORY_MESH_PATH_SEL:
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
index 87abf8deb369..0120e9e36286 100644
--- a/net/mac80211/mesh_plink.c
+++ b/net/mac80211/mesh_plink.c
@@ -182,7 +182,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
182 memcpy(mgmt->da, da, ETH_ALEN); 182 memcpy(mgmt->da, da, ETH_ALEN);
183 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); 183 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN);
184 /* BSSID is left zeroed, wildcard value */ 184 /* BSSID is left zeroed, wildcard value */
185 mgmt->u.action.category = WLAN_CATEGORY_MESH_PLINK; 185 mgmt->u.action.category = WLAN_CATEGORY_MESH_ACTION;
186 mgmt->u.action.u.plink_action.action_code = action; 186 mgmt->u.action.u.plink_action.action_code = action;
187 187
188 if (action == PLINK_CLOSE) 188 if (action == PLINK_CLOSE)
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 81241e18f3a4..634f3d97a279 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -495,8 +495,11 @@ ieee80211_rx_mesh_check(struct ieee80211_rx_data *rx)
495 return RX_DROP_MONITOR; 495 return RX_DROP_MONITOR;
496 496
497 if (ieee80211_is_action(hdr->frame_control)) { 497 if (ieee80211_is_action(hdr->frame_control)) {
498 u8 category;
498 mgmt = (struct ieee80211_mgmt *)hdr; 499 mgmt = (struct ieee80211_mgmt *)hdr;
499 if (mgmt->u.action.category != WLAN_CATEGORY_MESH_PLINK) 500 category = mgmt->u.action.category;
501 if (category != WLAN_CATEGORY_MESH_ACTION &&
502 category != WLAN_CATEGORY_SELF_PROTECTED)
500 return RX_DROP_MONITOR; 503 return RX_DROP_MONITOR;
501 return RX_CONTINUE; 504 return RX_CONTINUE;
502 } 505 }
@@ -2205,7 +2208,7 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
2205 goto handled; 2208 goto handled;
2206 } 2209 }
2207 break; 2210 break;
2208 case WLAN_CATEGORY_MESH_PLINK: 2211 case WLAN_CATEGORY_MESH_ACTION:
2209 if (!ieee80211_vif_is_mesh(&sdata->vif)) 2212 if (!ieee80211_vif_is_mesh(&sdata->vif))
2210 break; 2213 break;
2211 goto queue; 2214 goto queue;