| From a1fe52801a992e590cdaee2fb47a94bac9b5da90 Mon Sep 17 00:00:00 2001 |
| From: Piotr Haber <phaber@broadcom.com> |
| Date: Thu, 10 Jan 2013 11:20:48 +0100 |
| Subject: brcmsmac: increase timer reference count for new timers only |
| |
| From: Piotr Haber <phaber@broadcom.com> |
| |
| commit a1fe52801a992e590cdaee2fb47a94bac9b5da90 upstream. |
| |
| On hardware reintialization reference count of |
| already existing timers would be increased again. |
| This leads to problems on module unloading. |
| |
| Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> |
| Reviewed-by: Hante Meuleman <meuleman@broadcom.com> |
| Reviewed-by: Arend van Spriel <arend@broadcom.com> |
| Signed-off-by: Piotr Haber <phaber@broadcom.com> |
| Signed-off-by: Arend van Spriel <arend@broadcom.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c | 7 ++++--- |
| 1 file changed, 4 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c |
| +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c |
| @@ -1401,9 +1401,10 @@ void brcms_add_timer(struct brcms_timer |
| #endif |
| t->ms = ms; |
| t->periodic = (bool) periodic; |
| - t->set = true; |
| - |
| - atomic_inc(&t->wl->callbacks); |
| + if (!t->set) { |
| + t->set = true; |
| + atomic_inc(&t->wl->callbacks); |
| + } |
| |
| ieee80211_queue_delayed_work(hw, &t->dly_wrk, msecs_to_jiffies(ms)); |
| } |