Commit b913e330 authored by Alexei Avshalom Lazar's avatar Alexei Avshalom Lazar Committed by Kalle Valo

wil6210: do not reset FW in STA to P2P client interface switch

Currently the FW is reset on every interface type change, because
of various FW bugs.
FW reset is not required when switching from STA to P2P client, hence
can be skipped.
Signed-off-by: default avatarAlexei Avshalom Lazar <ailizaro@codeaurora.org>
Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent ce564170
...@@ -643,6 +643,16 @@ static int wil_cfg80211_del_iface(struct wiphy *wiphy, ...@@ -643,6 +643,16 @@ static int wil_cfg80211_del_iface(struct wiphy *wiphy,
return rc; return rc;
} }
static bool wil_is_safe_switch(enum nl80211_iftype from,
enum nl80211_iftype to)
{
if (from == NL80211_IFTYPE_STATION &&
to == NL80211_IFTYPE_P2P_CLIENT)
return true;
return false;
}
static int wil_cfg80211_change_iface(struct wiphy *wiphy, static int wil_cfg80211_change_iface(struct wiphy *wiphy,
struct net_device *ndev, struct net_device *ndev,
enum nl80211_iftype type, enum nl80211_iftype type,
...@@ -668,7 +678,8 @@ static int wil_cfg80211_change_iface(struct wiphy *wiphy, ...@@ -668,7 +678,8 @@ static int wil_cfg80211_change_iface(struct wiphy *wiphy,
* because it can cause significant disruption * because it can cause significant disruption
*/ */
if (!wil_has_other_active_ifaces(wil, ndev, true, false) && if (!wil_has_other_active_ifaces(wil, ndev, true, false) &&
netif_running(ndev) && !wil_is_recovery_blocked(wil)) { netif_running(ndev) && !wil_is_recovery_blocked(wil) &&
!wil_is_safe_switch(wdev->iftype, type)) {
wil_dbg_misc(wil, "interface is up. resetting...\n"); wil_dbg_misc(wil, "interface is up. resetting...\n");
mutex_lock(&wil->mutex); mutex_lock(&wil->mutex);
__wil_down(wil); __wil_down(wil);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment