diff options
author | Michael Wu <flamingice@sourmilk.net> | 2007-07-27 09:43:23 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:47:37 -0400 |
commit | be8755e1804d6f60e6a96a46ac6bc46ce6dfca53 (patch) | |
tree | a3038a924114f49aa2372ab7c9417d4e072c4b20 /net/mac80211/ieee80211_iface.c | |
parent | c2d1560ad8c2f6e0dd0d34102d022f3709325c26 (diff) |
[MAC80211]: improve locking of sta_info related structures
The sta_info code has some awkward locking which prevents some driver
callbacks from being allowed to sleep. This patch makes the locking more
focused so code that calls driver callbacks are allowed to sleep. It also
converts sta_lock to a rwlock.
Signed-off-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: Jiri Benc <jbenc@suse.cz>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_iface.c')
-rw-r--r-- | net/mac80211/ieee80211_iface.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mac80211/ieee80211_iface.c b/net/mac80211/ieee80211_iface.c index 8532a5ccdd1e..6db67767801d 100644 --- a/net/mac80211/ieee80211_iface.c +++ b/net/mac80211/ieee80211_iface.c | |||
@@ -272,8 +272,8 @@ void ieee80211_if_reinit(struct net_device *dev) | |||
272 | case IEEE80211_IF_TYPE_WDS: | 272 | case IEEE80211_IF_TYPE_WDS: |
273 | sta = sta_info_get(local, sdata->u.wds.remote_addr); | 273 | sta = sta_info_get(local, sdata->u.wds.remote_addr); |
274 | if (sta) { | 274 | if (sta) { |
275 | sta_info_free(sta); | ||
275 | sta_info_put(sta); | 276 | sta_info_put(sta); |
276 | sta_info_free(sta, 0); | ||
277 | } else { | 277 | } else { |
278 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | 278 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG |
279 | printk(KERN_DEBUG "%s: Someone had deleted my STA " | 279 | printk(KERN_DEBUG "%s: Someone had deleted my STA " |