From patchwork Sun Nov 16 14:39:55 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Buesch X-Patchwork-Id: 8985 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 95A5DDDDFB for ; Mon, 17 Nov 2008 02:26:47 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752264AbYKPP0o (ORCPT ); Sun, 16 Nov 2008 10:26:44 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752114AbYKPP0m (ORCPT ); Sun, 16 Nov 2008 10:26:42 -0500 Received: from bu3sch.de ([62.75.166.246]:49862 "EHLO vs166246.vserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752046AbYKPP0k (ORCPT ); Sun, 16 Nov 2008 10:26:40 -0500 Received: from p5b09fe80.dip.t-dialin.net ([91.9.254.128] helo=powermac.local) by vs166246.vserver.de with esmtpa (Exim 4.63) (envelope-from ) id 1L1jWH-00034f-Ij; Sun, 16 Nov 2008 15:26:37 +0000 From: Michael Buesch To: Jeff Garzik Subject: [PATCH] b44: Disable device on shutdown Date: Sun, 16 Nov 2008 15:39:55 +0100 User-Agent: KMail/1.9.6 (enterprise 0.20070907.709405) Cc: netdev@vger.kernel.org, Pantelis Koukousoulas , Gary Zambrano , stable@kernel.org MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200811161539.55557.mb@bu3sch.de> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Disable the SSB core on device shutdown. This has two advantages: 1) A clean device shutdown is always desired here, because we disable the device's global crystal in the next statement. 2) This fixes a bug where the device will come up with the enable-bit set on the next initialization (without a reboot inbetween). This causes breakage on the second initialization due to code that checks this bit (ssb_device_is_enabled() checks). Reported-by: Pantelis Koukousoulas Signed-off-by: Michael Buesch Cc: stable@kernel.org --- I think this should go in for 2.6.28, as it fixes a device-doesn't-work-anymore bug after a insmod-rmmod-insmod cycle. Index: wireless-testing/drivers/net/b44.c =================================================================== --- wireless-testing.orig/drivers/net/b44.c 2008-11-16 14:45:08.000000000 +0100 +++ wireless-testing/drivers/net/b44.c 2008-11-16 14:47:06.000000000 +0100 @@ -2233,6 +2233,7 @@ static void __devexit b44_remove_one(str struct net_device *dev = ssb_get_drvdata(sdev); unregister_netdev(dev); + ssb_device_disable(sdev, 0); ssb_bus_may_powerdown(sdev->bus); free_netdev(dev); ssb_pcihost_set_power_state(sdev, PCI_D3hot);