|
@@ -697,9 +697,6 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
|
|
|
if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
|
|
if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
|
|
|
atomic_inc(&local->iff_allmultis);
|
|
atomic_inc(&local->iff_allmultis);
|
|
|
|
|
|
|
|
- if (sdata->flags & IEEE80211_SDATA_PROMISC)
|
|
|
|
|
- atomic_inc(&local->iff_promiscs);
|
|
|
|
|
-
|
|
|
|
|
if (coming_up)
|
|
if (coming_up)
|
|
|
local->open_count++;
|
|
local->open_count++;
|
|
|
|
|
|
|
@@ -827,13 +824,10 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
|
|
|
WARN_ON_ONCE((sdata->vif.type != NL80211_IFTYPE_WDS && flushed > 0) ||
|
|
WARN_ON_ONCE((sdata->vif.type != NL80211_IFTYPE_WDS && flushed > 0) ||
|
|
|
(sdata->vif.type == NL80211_IFTYPE_WDS && flushed != 1));
|
|
(sdata->vif.type == NL80211_IFTYPE_WDS && flushed != 1));
|
|
|
|
|
|
|
|
- /* don't count this interface for promisc/allmulti while it is down */
|
|
|
|
|
|
|
+ /* don't count this interface for allmulti while it is down */
|
|
|
if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
|
|
if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
|
|
|
atomic_dec(&local->iff_allmultis);
|
|
atomic_dec(&local->iff_allmultis);
|
|
|
|
|
|
|
|
- if (sdata->flags & IEEE80211_SDATA_PROMISC)
|
|
|
|
|
- atomic_dec(&local->iff_promiscs);
|
|
|
|
|
-
|
|
|
|
|
if (sdata->vif.type == NL80211_IFTYPE_AP) {
|
|
if (sdata->vif.type == NL80211_IFTYPE_AP) {
|
|
|
local->fif_pspoll--;
|
|
local->fif_pspoll--;
|
|
|
local->fif_probe_req--;
|
|
local->fif_probe_req--;
|
|
@@ -1047,12 +1041,10 @@ static void ieee80211_set_multicast_list(struct net_device *dev)
|
|
|
{
|
|
{
|
|
|
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
|
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
|
|
struct ieee80211_local *local = sdata->local;
|
|
struct ieee80211_local *local = sdata->local;
|
|
|
- int allmulti, promisc, sdata_allmulti, sdata_promisc;
|
|
|
|
|
|
|
+ int allmulti, sdata_allmulti;
|
|
|
|
|
|
|
|
allmulti = !!(dev->flags & IFF_ALLMULTI);
|
|
allmulti = !!(dev->flags & IFF_ALLMULTI);
|
|
|
- promisc = !!(dev->flags & IFF_PROMISC);
|
|
|
|
|
sdata_allmulti = !!(sdata->flags & IEEE80211_SDATA_ALLMULTI);
|
|
sdata_allmulti = !!(sdata->flags & IEEE80211_SDATA_ALLMULTI);
|
|
|
- sdata_promisc = !!(sdata->flags & IEEE80211_SDATA_PROMISC);
|
|
|
|
|
|
|
|
|
|
if (allmulti != sdata_allmulti) {
|
|
if (allmulti != sdata_allmulti) {
|
|
|
if (dev->flags & IFF_ALLMULTI)
|
|
if (dev->flags & IFF_ALLMULTI)
|
|
@@ -1062,13 +1054,6 @@ static void ieee80211_set_multicast_list(struct net_device *dev)
|
|
|
sdata->flags ^= IEEE80211_SDATA_ALLMULTI;
|
|
sdata->flags ^= IEEE80211_SDATA_ALLMULTI;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (promisc != sdata_promisc) {
|
|
|
|
|
- if (dev->flags & IFF_PROMISC)
|
|
|
|
|
- atomic_inc(&local->iff_promiscs);
|
|
|
|
|
- else
|
|
|
|
|
- atomic_dec(&local->iff_promiscs);
|
|
|
|
|
- sdata->flags ^= IEEE80211_SDATA_PROMISC;
|
|
|
|
|
- }
|
|
|
|
|
spin_lock_bh(&local->filter_lock);
|
|
spin_lock_bh(&local->filter_lock);
|
|
|
__hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len);
|
|
__hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len);
|
|
|
spin_unlock_bh(&local->filter_lock);
|
|
spin_unlock_bh(&local->filter_lock);
|