diff options
author | Felix Fietkau <nbd@nbd.name> | 2016-06-26 19:00:01 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2016-07-02 19:34:50 +0200 |
commit | 67a7daa938671a5c7006e5d689c297a26499d75c (patch) | |
tree | c11db1b831745bcc356f105f421cefbba938cb41 /package/kernel/mac80211/patches/305-ath10k-Clean-up-peer-when-sta-goes-away.patch | |
parent | de165b66be47497906d3cf4f1ca6071ee25e2003 (diff) | |
download | upstream-67a7daa938671a5c7006e5d689c297a26499d75c.tar.gz upstream-67a7daa938671a5c7006e5d689c297a26499d75c.tar.bz2 upstream-67a7daa938671a5c7006e5d689c297a26499d75c.zip |
mac80211: update to wireless-testing 2016-06-20
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211/patches/305-ath10k-Clean-up-peer-when-sta-goes-away.patch')
-rw-r--r-- | package/kernel/mac80211/patches/305-ath10k-Clean-up-peer-when-sta-goes-away.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/305-ath10k-Clean-up-peer-when-sta-goes-away.patch b/package/kernel/mac80211/patches/305-ath10k-Clean-up-peer-when-sta-goes-away.patch new file mode 100644 index 0000000000..7248a8cecf --- /dev/null +++ b/package/kernel/mac80211/patches/305-ath10k-Clean-up-peer-when-sta-goes-away.patch @@ -0,0 +1,32 @@ +From: Ben Greear <greearb@candelatech.com> +Date: Fri, 1 Apr 2016 14:12:11 -0700 +Subject: [PATCH] ath10k: Clean up peer when sta goes away. + +If WMI and/or firmware has issues removing the peer object, +then we still need to clean up the peer object in the driver. + +Signed-off-by: Ben Greear <greearb@candelatech.com> +--- + +--- a/drivers/net/wireless/ath/ath10k/mac.c ++++ b/drivers/net/wireless/ath/ath10k/mac.c +@@ -5992,9 +5992,17 @@ static int ath10k_sta_state(struct ieee8 + continue; + + if (peer->sta == sta) { +- ath10k_warn(ar, "found sta peer %pM entry on vdev %i after it was supposedly removed\n", +- sta->addr, arvif->vdev_id); ++ ath10k_warn(ar, "found sta peer %pM (ptr %p id %d) entry on vdev %i after it was supposedly removed\n", ++ sta->addr, peer, i, arvif->vdev_id); + peer->sta = NULL; ++ ++ /* Clean up the peer object as well since we ++ * must have failed to do this above. ++ */ ++ list_del(&peer->list); ++ ar->peer_map[i] = NULL; ++ kfree(peer); ++ ar->num_peers--; + } + } + spin_unlock_bh(&ar->data_lock); |