From 306b79ea6ece18d66bea80876983ae693d66ed52 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 20 Mar 2020 11:38:35 +0100 Subject: [PATCH] nl80211: clarify code in nl80211_del_station() The long if chain of interface types is hard to read, especially now with the additional condition after it. Use a switch statement to clarify this code. Signed-off-by: Johannes Berg Link: https://lore.kernel.org/r/20200320113834.2c51b9e8e341.I3fa5dc3f7d3cb1dbbd77191d764586f7da993f3f@changeid Signed-off-by: Johannes Berg --- net/wireless/nl80211.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index bc7d81231547..ad87e9db9a91 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -6285,16 +6285,22 @@ static int nl80211_del_station(struct sk_buff *skb, struct genl_info *info) if (info->attrs[NL80211_ATTR_MAC]) params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]); - if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP && - dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP_VLAN && - dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT && - dev->ieee80211_ptr->iftype != NL80211_IFTYPE_P2P_GO && - dev->ieee80211_ptr->iftype != NL80211_IFTYPE_ADHOC) + switch (dev->ieee80211_ptr->iftype) { + case NL80211_IFTYPE_AP: + case NL80211_IFTYPE_AP_VLAN: + case NL80211_IFTYPE_MESH_POINT: + case NL80211_IFTYPE_P2P_GO: + /* always accept these */ + break; + case NL80211_IFTYPE_ADHOC: + /* conditionally accept */ + if (wiphy_ext_feature_isset(&rdev->wiphy, + NL80211_EXT_FEATURE_DEL_IBSS_STA)) + break; return -EINVAL; - if (dev->ieee80211_ptr->iftype == NL80211_IFTYPE_ADHOC && - !wiphy_ext_feature_isset(&rdev->wiphy, - NL80211_EXT_FEATURE_DEL_IBSS_STA)) + default: return -EINVAL; + } if (!rdev->ops->del_station) return -EOPNOTSUPP; -- 2.30.2