mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
mwifiex: Small cleanup for handling virtual interface type changes
Handle the obvious invalid virtual interface type changes with a general check instead of looking at the individual change. For type changes from P2P_CLIENT to P2P_GO and the other way round, this changes the behavior slightly: We now still do nothing, but return -EOPNOTSUPP instead of 0. Now that behavior was incorrect before and still is, because type changes between these two types are actually possible and supported, which we'll fix in a following commit. Signed-off-by: Jonas Dreßler <verdre@v0yd.nl> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20210914195909.36035-2-verdre@v0yd.nl
This commit is contained in:
parent
fe7bc23a8c
commit
babe2a332d
@ -1141,6 +1141,20 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
if (type == NL80211_IFTYPE_UNSPECIFIED) {
|
||||
mwifiex_dbg(priv->adapter, INFO,
|
||||
"%s: no new type specified, keeping old type %d\n",
|
||||
dev->name, curr_iftype);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (curr_iftype == type) {
|
||||
mwifiex_dbg(priv->adapter, INFO,
|
||||
"%s: interface already is of type %d\n",
|
||||
dev->name, curr_iftype);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (curr_iftype) {
|
||||
case NL80211_IFTYPE_ADHOC:
|
||||
switch (type) {
|
||||
@ -1160,12 +1174,6 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
|
||||
case NL80211_IFTYPE_AP:
|
||||
return mwifiex_change_vif_to_ap(dev, curr_iftype, type,
|
||||
params);
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
mwifiex_dbg(priv->adapter, INFO,
|
||||
"%s: kept type as IBSS\n", dev->name);
|
||||
fallthrough;
|
||||
case NL80211_IFTYPE_ADHOC: /* This shouldn't happen */
|
||||
return 0;
|
||||
default:
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
"%s: changing to %d not supported\n",
|
||||
@ -1191,12 +1199,6 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
|
||||
case NL80211_IFTYPE_AP:
|
||||
return mwifiex_change_vif_to_ap(dev, curr_iftype, type,
|
||||
params);
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
mwifiex_dbg(priv->adapter, INFO,
|
||||
"%s: kept type as STA\n", dev->name);
|
||||
fallthrough;
|
||||
case NL80211_IFTYPE_STATION: /* This shouldn't happen */
|
||||
return 0;
|
||||
default:
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
"%s: changing to %d not supported\n",
|
||||
@ -1214,12 +1216,6 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
|
||||
case NL80211_IFTYPE_P2P_GO:
|
||||
return mwifiex_change_vif_to_p2p(dev, curr_iftype,
|
||||
type, params);
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
mwifiex_dbg(priv->adapter, INFO,
|
||||
"%s: kept type as AP\n", dev->name);
|
||||
fallthrough;
|
||||
case NL80211_IFTYPE_AP: /* This shouldn't happen */
|
||||
return 0;
|
||||
default:
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
"%s: changing to %d not supported\n",
|
||||
@ -1254,13 +1250,6 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
|
||||
return -EFAULT;
|
||||
return mwifiex_change_vif_to_ap(dev, curr_iftype, type,
|
||||
params);
|
||||
case NL80211_IFTYPE_UNSPECIFIED:
|
||||
mwifiex_dbg(priv->adapter, INFO,
|
||||
"%s: kept type as P2P\n", dev->name);
|
||||
fallthrough;
|
||||
case NL80211_IFTYPE_P2P_CLIENT:
|
||||
case NL80211_IFTYPE_P2P_GO:
|
||||
return 0;
|
||||
default:
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
"%s: changing to %d not supported\n",
|
||||
|
Loading…
Reference in New Issue
Block a user