aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 8a861a50b12f..1617e0bd4ca6 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2436,6 +2436,36 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
2436 } 2436 }
2437 2437
2438 break; 2438 break;
2439 case WLAN_CATEGORY_VHT:
2440 if (sdata->vif.type != NL80211_IFTYPE_STATION &&
2441 sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
2442 sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
2443 sdata->vif.type != NL80211_IFTYPE_AP &&
2444 sdata->vif.type != NL80211_IFTYPE_ADHOC)
2445 break;
2446
2447 /* verify action code is present */
2448 if (len < IEEE80211_MIN_ACTION_SIZE + 1)
2449 goto invalid;
2450
2451 switch (mgmt->u.action.u.vht_opmode_notif.action_code) {
2452 case WLAN_VHT_ACTION_OPMODE_NOTIF: {
2453 u8 opmode;
2454
2455 /* verify opmode is present */
2456 if (len < IEEE80211_MIN_ACTION_SIZE + 2)
2457 goto invalid;
2458
2459 opmode = mgmt->u.action.u.vht_opmode_notif.operating_mode;
2460
2461 ieee80211_vht_handle_opmode(rx->sdata, rx->sta,
2462 opmode, status->band);
2463 goto handled;
2464 }
2465 default:
2466 break;
2467 }
2468 break;
2439 case WLAN_CATEGORY_BACK: 2469 case WLAN_CATEGORY_BACK:
2440 if (sdata->vif.type != NL80211_IFTYPE_STATION && 2470 if (sdata->vif.type != NL80211_IFTYPE_STATION &&
2441 sdata->vif.type != NL80211_IFTYPE_MESH_POINT && 2471 sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&