mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type
authorJonas Dreßler <verdre@v0yd.nl>
Tue, 14 Sep 2021 19:59:03 +0000 (21:59 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:16:10 +0000 (19:16 +0100)
[ Upstream commit c2e9666cdffd347460a2b17988db4cfaf2a68fb9 ]

We currently handle changing from the P2P to the STATION virtual
interface type slightly different than changing from P2P to ADHOC: When
changing to STATION, we don't send the SET_BSS_MODE command. We do send
that command on all other type-changes though, and it probably makes
sense to send the command since after all we just changed our BSS_MODE.
Looking at prior changes to this part of the code, it seems that this is
simply a leftover from old refactorings.

Since sending the SET_BSS_MODE command is the only difference between
mwifiex_change_vif_to_sta_adhoc() and the current code, we can now use
mwifiex_change_vif_to_sta_adhoc() for both switching to ADHOC and
STATION interface type.

This does not fix any particular bug and just "looked right", so there's
a small chance it might be a regression.

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-4-verdre@v0yd.nl
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/marvell/mwifiex/cfg80211.c

index 0961f4a5e415c906b17d4ecd05cae176ab1b7c59..93eb5f109949fdee566914b7c977913ac25e2d94 100644 (file)
@@ -1229,29 +1229,15 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
                break;
        case NL80211_IFTYPE_P2P_CLIENT:
        case NL80211_IFTYPE_P2P_GO:
+               if (mwifiex_cfg80211_deinit_p2p(priv))
+                       return -EFAULT;
+
                switch (type) {
-               case NL80211_IFTYPE_STATION:
-                       if (mwifiex_cfg80211_deinit_p2p(priv))
-                               return -EFAULT;
-                       priv->adapter->curr_iface_comb.p2p_intf--;
-                       priv->adapter->curr_iface_comb.sta_intf++;
-                       dev->ieee80211_ptr->iftype = type;
-                       if (mwifiex_deinit_priv_params(priv))
-                               return -1;
-                       if (mwifiex_init_new_priv_params(priv, dev, type))
-                               return -1;
-                       if (mwifiex_sta_init_cmd(priv, false, false))
-                               return -1;
-                       break;
                case NL80211_IFTYPE_ADHOC:
-                       if (mwifiex_cfg80211_deinit_p2p(priv))
-                               return -EFAULT;
+               case NL80211_IFTYPE_STATION:
                        return mwifiex_change_vif_to_sta_adhoc(dev, curr_iftype,
                                                               type, params);
-                       break;
                case NL80211_IFTYPE_AP:
-                       if (mwifiex_cfg80211_deinit_p2p(priv))
-                               return -EFAULT;
                        return mwifiex_change_vif_to_ap(dev, curr_iftype, type,
                                                        params);
                case NL80211_IFTYPE_UNSPECIFIED: