projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ARM64: dts: rockchip: add rkvpu & vpu node in rk3399 android next dtsi
[firefly-linux-kernel-4.4.55.git]
/
net
/
mac80211
/
iface.c
diff --git
a/net/mac80211/iface.c
b/net/mac80211/iface.c
index d0dc1bfaeec2d5440573d114b98e16099616f43d..bcb0a1b645567e5c67e5c75f780fe38ce3356e40 100644
(file)
--- a/
net/mac80211/iface.c
+++ b/
net/mac80211/iface.c
@@
-76,7
+76,8
@@
bool __ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata)
void ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata,
bool update_bss)
{
void ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata,
bool update_bss)
{
- if (__ieee80211_recalc_txpower(sdata) || update_bss)
+ if (__ieee80211_recalc_txpower(sdata) ||
+ (update_bss && ieee80211_sdata_running(sdata)))
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_TXPOWER);
}
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_TXPOWER);
}
@@
-976,7
+977,10
@@
static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
if (sdata->vif.txq) {
struct txq_info *txqi = to_txq_info(sdata->vif.txq);
if (sdata->vif.txq) {
struct txq_info *txqi = to_txq_info(sdata->vif.txq);
+ spin_lock_bh(&txqi->queue.lock);
ieee80211_purge_tx_queue(&local->hw, &txqi->queue);
ieee80211_purge_tx_queue(&local->hw, &txqi->queue);
+ spin_unlock_bh(&txqi->queue.lock);
+
atomic_set(&sdata->txqs_len[txqi->txq.ac], 0);
}
atomic_set(&sdata->txqs_len[txqi->txq.ac], 0);
}
@@
-1746,7
+1750,7
@@
int ieee80211_if_add(struct ieee80211_local *local, const char *name,
ret = dev_alloc_name(ndev, ndev->name);
if (ret < 0) {
ret = dev_alloc_name(ndev, ndev->name);
if (ret < 0) {
-
free_netdev
(ndev);
+
ieee80211_if_free
(ndev);
return ret;
}
return ret;
}
@@
-1832,7
+1836,7
@@
int ieee80211_if_add(struct ieee80211_local *local, const char *name,
ret = register_netdevice(ndev);
if (ret) {
ret = register_netdevice(ndev);
if (ret) {
-
free_netdev
(ndev);
+
ieee80211_if_free
(ndev);
return ret;
}
}
return ret;
}
}
@@
-1861,6
+1865,7
@@
void ieee80211_if_remove(struct ieee80211_sub_if_data *sdata)
unregister_netdevice(sdata->dev);
} else {
cfg80211_unregister_wdev(&sdata->wdev);
unregister_netdevice(sdata->dev);
} else {
cfg80211_unregister_wdev(&sdata->wdev);
+ ieee80211_teardown_sdata(sdata);
kfree(sdata);
}
}
kfree(sdata);
}
}
@@
-1870,7
+1875,6
@@
void ieee80211_sdata_stop(struct ieee80211_sub_if_data *sdata)
if (WARN_ON_ONCE(!test_bit(SDATA_STATE_RUNNING, &sdata->state)))
return;
ieee80211_do_stop(sdata, true);
if (WARN_ON_ONCE(!test_bit(SDATA_STATE_RUNNING, &sdata->state)))
return;
ieee80211_do_stop(sdata, true);
- ieee80211_teardown_sdata(sdata);
}
void ieee80211_remove_interfaces(struct ieee80211_local *local)
}
void ieee80211_remove_interfaces(struct ieee80211_local *local)