From patchwork Thu Jan 10 10:20:48 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arend van Spriel X-Patchwork-Id: 1959321 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 493963FF0F for ; Thu, 10 Jan 2013 10:21:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753169Ab3AJKVE (ORCPT ); Thu, 10 Jan 2013 05:21:04 -0500 Received: from mms1.broadcom.com ([216.31.210.17]:3544 "EHLO mms1.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752298Ab3AJKVB (ORCPT ); Thu, 10 Jan 2013 05:21:01 -0500 Received: from [10.9.208.53] by mms1.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Thu, 10 Jan 2013 02:18:57 -0800 X-Server-Uuid: 06151B78-6688-425E-9DE2-57CB27892261 Received: from IRVEXCHSMTP3.corp.ad.broadcom.com (10.9.207.53) by IRVEXCHCAS06.corp.ad.broadcom.com (10.9.208.53) with Microsoft SMTP Server (TLS) id 14.1.355.2; Thu, 10 Jan 2013 02:20:51 -0800 Received: from mail-sj1-12.sj.broadcom.com (10.10.10.20) by IRVEXCHSMTP3.corp.ad.broadcom.com (10.9.207.53) with Microsoft SMTP Server id 14.1.355.2; Thu, 10 Jan 2013 02:20:51 -0800 Received: from linux-e6410-1 (unknown [10.176.68.145]) by mail-sj1-12.sj.broadcom.com (Postfix) with ESMTP id 610C5207C4; Thu, 10 Jan 2013 02:20:51 -0800 (PST) Received: from arend by linux-e6410-1 with local (Exim 4.80) ( envelope-from ) id 1TtFFi-0002m2-0n; Thu, 10 Jan 2013 11:20:50 +0100 From: "Arend van Spriel" To: "John W. Linville" cc: "Linux Wireless List" , "Piotr Haber" , stable@vger.kernel.org, "Arend van Spriel" Subject: [PATCH for 3.8] brcmsmac: increase timer reference count for new timers only Date: Thu, 10 Jan 2013 11:20:48 +0100 Message-ID: <1357813248-10630-1-git-send-email-arend@broadcom.com> X-Mailer: git-send-email 1.7.10.4 MIME-Version: 1.0 X-WSS-ID: 7CF04A1B1ZS1446041-01-01 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Piotr Haber On hardware reintialization reference count of already existing timers would be increased again. This leads to problems on module unloading. Cc: stable@vger.kernel.org Reviewed-by: Pieter-Paul Giesberts Reviewed-by: Hante Meuleman Reviewed-by: Arend van Spriel Signed-off-by: Piotr Haber Signed-off-by: Arend van Spriel --- Hi John, This patch fixes driver unload issue after driver restart due to fatal hardware problem. Because for 3.8 brcmsmac has been reported to restart (looking into that) this fix may be helpful to at least get the driver removed. Gr. AvS --- drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c index 1fbd8ec..0f71d1d 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c @@ -1407,9 +1407,10 @@ void brcms_add_timer(struct brcms_timer *t, uint ms, int periodic) #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)); }