cfg80211: allow the plink state blocking for user managed mesh
authorChun-Yeow Yeoh <yeohchunyeow@gmail.com>
Fri, 17 Apr 2015 17:30:02 +0000 (01:30 +0800)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 24 Apr 2015 10:22:36 +0000 (12:22 +0200)
wpa_supplicant or authsae handles the mesh peering in user
space, but the plink state is still managed in kernel space.
Currently, there is no implementation by wpa_supplicant or
authsae to block the plink state after it is set to ESTAB.

By applying this patch, we can use the "iw mesh0 station set
<MAC address> plink_action block" to block the peer mesh STA.
This is useful for experimenting purposes.

Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/nl80211.c

index dd78445c7d50630524b7d33b96b73a2e416c662c..8a33bbae9ec5b480aa8cec3115193dacf3074124 100644 (file)
@@ -4061,7 +4061,8 @@ int cfg80211_check_station_change(struct wiphy *wiphy,
                        return -EINVAL;
                break;
        case CFG80211_STA_MESH_PEER_USER:
-               if (params->plink_action != NL80211_PLINK_ACTION_NO_ACTION)
+               if (params->plink_action != NL80211_PLINK_ACTION_NO_ACTION &&
+                   params->plink_action != NL80211_PLINK_ACTION_BLOCK)
                        return -EINVAL;
                break;
        }