| From 525935a03afd94651daa57d0ec1f121e115a55da Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 14 Sep 2021 21:59:03 +0200 |
| Subject: mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Jonas Dreßler <verdre@v0yd.nl> |
| |
| [ 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> |
| --- |
| .../net/wireless/marvell/mwifiex/cfg80211.c | 22 ++++--------------- |
| 1 file changed, 4 insertions(+), 18 deletions(-) |
| |
| diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c |
| index 9e6dc289ec3e8..b5134f11fc32b 100644 |
| --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c |
| +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c |
| @@ -1233,29 +1233,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: |
| -- |
| 2.33.0 |
| |