mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
mac80211: handle failed restart/resume better
When the driver fails during HW restart or resume, the whole stack goes into a very confused state with interfaces being up while the hardware is down etc. Address this by shutting down everything; we'll run into a lot of warnings in the process but that's better than having the whole stack get messed up. Reviewed-by: Arik Nemtsov <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
This commit is contained in:
parent
f29f58a9e5
commit
f6837ba8c9
6 changed files with 153 additions and 51 deletions
|
|
@ -210,15 +210,12 @@ void cfg80211_stop_p2p_device(struct cfg80211_registered_device *rdev,
|
|||
}
|
||||
}
|
||||
|
||||
static int cfg80211_rfkill_set_block(void *data, bool blocked)
|
||||
void cfg80211_shutdown_all_interfaces(struct wiphy *wiphy)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev = data;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
|
||||
struct wireless_dev *wdev;
|
||||
|
||||
if (!blocked)
|
||||
return 0;
|
||||
|
||||
rtnl_lock();
|
||||
ASSERT_RTNL();
|
||||
|
||||
list_for_each_entry(wdev, &rdev->wdev_list, list) {
|
||||
if (wdev->netdev) {
|
||||
|
|
@ -234,7 +231,18 @@ static int cfg80211_rfkill_set_block(void *data, bool blocked)
|
|||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cfg80211_shutdown_all_interfaces);
|
||||
|
||||
static int cfg80211_rfkill_set_block(void *data, bool blocked)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev = data;
|
||||
|
||||
if (!blocked)
|
||||
return 0;
|
||||
|
||||
rtnl_lock();
|
||||
cfg80211_shutdown_all_interfaces(&rdev->wiphy);
|
||||
rtnl_unlock();
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue