public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 00/30] -stable review
@ 2006-11-16  2:43 Chris Wright
  2006-11-16  2:43 ` [patch 01/30] S390: user readable uninitialised kernel memory, take 2 Chris Wright
                   ` (30 more replies)
  0 siblings, 31 replies; 42+ messages in thread
From: Chris Wright @ 2006-11-16  2:43 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	torvalds, akpm, alan

This is the start of the stable review cycle for the 2.6.18.3 release.
There are 30 patches in this series, all will be posted as a response to
this one.  If anyone has any issues with these being applied, please let
us know.  If anyone is a maintainer of the proper subsystem, and wants
to add a Signed-off-by: line to the patch, please respond with it.

These patches are sent out with a number of different people on the
Cc: line.  If you wish to be a reviewer, please email stable@kernel.org
to add your name to the list.  If you want to be off the reviewer list,
also email us.

Responses should be made by Sat Nov 18 02:35 UTC.  Anything received
after that time might be too late.

thanks,

the -stable release team
--

^ permalink raw reply	[flat|nested] 42+ messages in thread
* Re: [patch 07/30] bcm43xx: Drain TX status before starting IRQs
@ 2006-11-21  6:43 Ray Lee
  2006-11-21  8:52 ` Michael Buesch
  0 siblings, 1 reply; 42+ messages in thread
From: Ray Lee @ 2006-11-21  6:43 UTC (permalink / raw)
  To: Larry Finger, LKML, Bcm43xx-dev, Michael Buesch, John Linville

On 11/18/06, Larry Finger <Larry.Finger@lwfinger.net> wrote:
> The regression turns out to be a locking problem involving bcm43xx,
> wpa_supplicant, and NetworkManager. The exact cause is unknown; however,
> this patch is clearly not the problem. Please
> reinstate it for inclusion in -stable.

This patch is different from the patch that I claim is wrong. The patch that I
think is bad *actually changes locking* (merge error?); it is different than
the -stable patch that was submitted.

Michael et al please read the patch (diff portion) below as if you're seeing
it for the first time. Please note the locking changes introduced.

user:        Michael Buesch <mb@bu3sch.de>
date:        Wed Nov 01 08:15:40 2006 +0500
files:       drivers/net/wireless/bcm43xx/bcm43xx_main.c
description:
[PATCH] bcm43xx: Fix low-traffic netdev watchdog TX timeouts

This fixes a netdev watchdog timeout problem.
The software needs to call netif_tx_disable before running the
hardware calibration code. The problem condition can be shown by the
following timegraph.

|---5secs - ~10 jiffies time---|---|OOPS
^                              ^
last real TX                   periodic work stops netif

At OOPS, the following happens:
The watchdog timer triggers, because the timeout of 5secs
is over. The watchdog first checks for stopped TX.
_Usually_ TX is only stopped from the TX handler to indicate
a full TX queue. But this is different. We need to stop TX here,
regardless of the TX queue state. So the watchdog recognizes
the stopped device and assumes it is stopped due to full
TX queues (Which is a _wrong_ assumption in this case). It then
tests how far the last TX has been in the past. If it's more than
5secs (which is the case for low or no traffic), it will fire
a TX timeout.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

committer: John W. Linville <linville@laptop.(none)> 1162350940 -0500


diff -r 41ff0150cbadd56e692f148adb1bfd4ca420e3e0 -r
ca97546422bd9a52a7000607d657ca2915f31104
drivers/net/wireless/bcm43xx/bcm43xx_main.c
--- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c       Wed Nov 01 08:15:39
2006 +0500
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c       Wed Nov 01 08:15:40
2006 +0500
@@ -3163,9 +3163,11 @@ static void bcm43xx_periodic_work_handle
 static void bcm43xx_periodic_work_handler(void *d)
 {
        struct bcm43xx_private *bcm = d;
+       struct net_device *net_dev = bcm->net_dev;
        unsigned long flags;
        u32 savedirqs = 0;
        int badness;
+       unsigned long orig_trans_start = 0;

        mutex_lock(&bcm->mutex);
        badness = estimate_periodic_work_badness(bcm->periodic_state);
@@ -3173,7 +3175,18 @@ static void bcm43xx_periodic_work_handle
                /* Periodic work will take a long time, so we want it to
                 * be preemtible.
                 */
-               netif_tx_disable(bcm->net_dev);
+
+               netif_tx_lock_bh(net_dev);
+               /* We must fake a started transmission here, as we are going to
+                * disable TX. If we wouldn't fake a TX, it would be possible to
+                * trigger the netdev watchdog, if the last real TX is already
+                * some time on the past (slightly less than 5secs)
+                */
+               orig_trans_start = net_dev->trans_start;
+               net_dev->trans_start = jiffies;
+               netif_stop_queue(net_dev);
+               netif_tx_unlock_bh(net_dev);
+
                spin_lock_irqsave(&bcm->irq_lock, flags);
                bcm43xx_mac_suspend(bcm);
                if (bcm43xx_using_pio(bcm))
@@ -3198,6 +3211,7 @@ static void bcm43xx_periodic_work_handle
                        bcm43xx_pio_thaw_txqueues(bcm);
                bcm43xx_mac_enable(bcm);
                netif_wake_queue(bcm->net_dev);
+               net_dev->trans_start = orig_trans_start;
        }
        mmiowb();
        spin_unlock_irqrestore(&bcm->irq_lock, flags);

or the patch via gitweb:
http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=81e171b95d2d06a64465a1e6ab1e2fb864ea2448

Ray



^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2006-11-21  8:54 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-16  2:43 [patch 00/30] -stable review Chris Wright
2006-11-16  2:43 ` [patch 01/30] S390: user readable uninitialised kernel memory, take 2 Chris Wright
2006-11-16  2:43 ` [patch 02/30] POWERPC: Make alignment exception always check exception table Chris Wright
2006-11-16  2:43 ` [patch 03/30] SPARC64: Fix futex_atomic_cmpxchg_inatomic implementation Chris Wright
2006-11-16  2:43 ` [patch 04/30] Fix sys_move_pages when a NULL node list is passed Chris Wright
2006-11-16  2:43 ` [patch 05/30] splice: fix problem introduced with inode diet Chris Wright
2006-11-17  2:52   ` Dave Jones
2006-11-17  6:16     ` [stable] " Chris Wright
2006-11-16  2:43 ` [patch 06/30] SPARC: Fix missed bump of NR_SYSCALLS Chris Wright
2006-11-16  2:43 ` [patch 07/30] bcm43xx: Drain TX status before starting IRQs Chris Wright
2006-11-16 16:09   ` Larry Finger
2006-11-16 18:38     ` Chris Wright
2006-11-18 19:06   ` Larry Finger
2006-11-19  4:11     ` Chris Wright
2006-11-19 23:51     ` Dan Williams
2006-11-16  2:43 ` [patch 08/30] fix UFS superblock alignment issues Chris Wright
2006-11-16  2:43 ` [patch 09/30] ipmi_si_intf.c sets bad class_mask with PCI_DEVICE_CLASS Chris Wright
2006-11-16  2:43 ` [patch 10/30] init_reap_node() initialization fix Chris Wright
2006-11-16  2:43 ` [patch 11/30] USB: failure in usblps error path Chris Wright
2006-11-16  2:43 ` [patch 12/30] usbtouchscreen: use endpoint address from endpoint descriptor Chris Wright
2006-11-16  2:43 ` [patch 13/30] e1000: Fix regression: garbled stats and irq allocation during swsusp Chris Wright
2006-11-16  2:43 ` [patch 14/30] NET: __alloc_pages() failures reported due to fragmentation Chris Wright
2006-11-16  2:43 ` [patch 15/30] Input: psmouse - fix attribute access on 64-bit systems Chris Wright
2006-11-16  2:43 ` [patch 16/30] x86_64: Fix FPU corruption Chris Wright
2006-11-16  2:43 ` [patch 17/30] correct keymapping on Powerbook built-in USB ISO keyboards Chris Wright
2006-11-16  2:43 ` [patch 18/30] TCP: Dont use highmem in tcp hash size calculation Chris Wright
2006-11-16  2:43 ` [patch 19/30] NET: Set truesize in pskb_copy Chris Wright
2006-11-16  2:43 ` [patch 20/30] fix via586 irq routing for pirq 5 Chris Wright
2006-11-16  2:43 ` [patch 21/30] security/seclvl.c: fix time wrap (CVE-2005-4352) Chris Wright
2006-11-16  2:43 ` [patch 22/30] CPUFREQ: Make acpi-cpufreq unsticky again Chris Wright
2006-11-16  2:43 ` [patch 23/30] Patch for nvidia divide by zero error for 7600 pci-express card Chris Wright
2006-11-16  2:43 ` [patch 24/30] pci: dont try to remove sysfs files before they are setup Chris Wright
2006-11-16  2:43 ` [patch 25/30] block: Fix bad data direction in SG_IO Chris Wright
2006-11-16  2:43 ` [patch 26/30] Char: isicom, fix close bug Chris Wright
2006-11-16  2:43 ` [patch 27/30] cpqarray: fix iostat Chris Wright
2006-11-16  2:44 ` [patch 28/30] cciss: " Chris Wright
2006-11-16  2:44 ` [patch 29/30] CIFS: report rename failure when target file is locked by Windows Chris Wright
2006-11-16  2:44 ` [patch 30/30] CIFS: New POSIX locking code not setting rc properly to zero on successful Chris Wright
2006-11-16 21:57 ` [patch 00/30] -stable review Dave Jones
2006-11-16 22:22   ` Chris Wright
  -- strict thread matches above, loose matches on Subject: below --
2006-11-21  6:43 [patch 07/30] bcm43xx: Drain TX status before starting IRQs Ray Lee
2006-11-21  8:52 ` Michael Buesch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox