From: Chris Wright Date: Mon, 6 Nov 2006 03:18:41 +0000 (-0800) Subject: bcm43xx patch (plus couple minor format cleanups) X-Git-Tag: v2.6.18.3~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4c08a5526f8b011d6f5b17cc5c879ccd36a1082c;p=thirdparty%2Fkernel%2Fstable-queue.git bcm43xx patch (plus couple minor format cleanups) --- diff --git a/queue-2.6.18/bcm43xx-drain-tx-status-before-starting-irqs.patch b/queue-2.6.18/bcm43xx-drain-tx-status-before-starting-irqs.patch new file mode 100644 index 00000000000..87fa8853ac8 --- /dev/null +++ b/queue-2.6.18/bcm43xx-drain-tx-status-before-starting-irqs.patch @@ -0,0 +1,57 @@ +From stable-bounces@linux.kernel.org Sun Nov 5 13:38:59 2006 +Date: Sun, 05 Nov 2006 15:34:36 -0600 +From: Larry Finger +To: stable@kernel.org +Message-ID: <454E58EC.mail20S110EOC@lwfinger.net> +Cc: netdev@vger.kernel.org, mb@bu3sch.de, greg@kroah.com +Subject: bcm43xx: Drain TX status before starting IRQs + +From: Michael Buesch + +Drain the Microcode TX-status-FIFO before we enable IRQs. +This is required, because the FIFO may still have entries left +from a previous run. Those would immediately fire after enabling +IRQs and would lead to an oops in the DMA TXstatus handling code. + +Cc: "John W. Linville" +Signed-off-by: Michael Buesch +Signed-off-by: Larry Finger +Signed-off-by: Chris Wright +--- + drivers/net/wireless/bcm43xx/bcm43xx_main.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +--- linux-2.6.18.2.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c ++++ linux-2.6.18.2/drivers/net/wireless/bcm43xx/bcm43xx_main.c +@@ -1463,6 +1463,23 @@ static void handle_irq_transmit_status(s + } + } + ++static void drain_txstatus_queue(struct bcm43xx_private *bcm) ++{ ++ u32 dummy; ++ ++ if (bcm->current_core->rev < 5) ++ return; ++ /* Read all entries from the microcode TXstatus FIFO ++ * and throw them away. ++ */ ++ while (1) { ++ dummy = bcm43xx_read32(bcm, BCM43xx_MMIO_XMITSTAT_0); ++ if (!dummy) ++ break; ++ dummy = bcm43xx_read32(bcm, BCM43xx_MMIO_XMITSTAT_1); ++ } ++} ++ + static void bcm43xx_generate_noise_sample(struct bcm43xx_private *bcm) + { + bcm43xx_shm_write16(bcm, BCM43xx_SHM_SHARED, 0x408, 0x7F7F); +@@ -3517,6 +3534,7 @@ int bcm43xx_select_wireless_core(struct + bcm43xx_macfilter_clear(bcm, BCM43xx_MACFILTER_ASSOC); + bcm43xx_macfilter_set(bcm, BCM43xx_MACFILTER_SELF, (u8 *)(bcm->net_dev->dev_addr)); + bcm43xx_security_init(bcm); ++ drain_txstatus_queue(bcm); + ieee80211softmac_start(bcm->net_dev); + + /* Let's go! Be careful after enabling the IRQs. diff --git a/queue-2.6.18/series b/queue-2.6.18/series index ffeaff99b3f..2274ea56756 100644 --- a/queue-2.6.18/series +++ b/queue-2.6.18/series @@ -4,3 +4,4 @@ sparc64-fix-futex_atomic_cmpxchg_inatomic-implementation.patch fix-sys_move_pages-when-a-null-node-list-is-passed.patch splice-fix-problem-introduced-with-inode-diet.patch sparc-fix-missed-bump-of-nr_syscalls.patch +bcm43xx-drain-tx-status-before-starting-irqs.patch diff --git a/queue-2.6.18/sparc-fix-missed-bump-of-nr_syscalls.patch b/queue-2.6.18/sparc-fix-missed-bump-of-nr_syscalls.patch index 27ae9055c71..77304cc3227 100644 --- a/queue-2.6.18/sparc-fix-missed-bump-of-nr_syscalls.patch +++ b/queue-2.6.18/sparc-fix-missed-bump-of-nr_syscalls.patch @@ -12,8 +12,6 @@ unlikely to ever happen again. Signed-off-by: David S. Miller Signed-off-by: Chris Wright ---- - --- arch/sparc/kernel/entry.S | 3 +-- arch/sparc64/kernel/entry.S | 3 +-- diff --git a/queue-2.6.18/sparc64-fix-futex_atomic_cmpxchg_inatomic-implementation.patch b/queue-2.6.18/sparc64-fix-futex_atomic_cmpxchg_inatomic-implementation.patch index 8ea9908e202..23831004180 100644 --- a/queue-2.6.18/sparc64-fix-futex_atomic_cmpxchg_inatomic-implementation.patch +++ b/queue-2.6.18/sparc64-fix-futex_atomic_cmpxchg_inatomic-implementation.patch @@ -13,8 +13,6 @@ Based upon bug reports from Dennis Gilmore and Fabio Massimo. Signed-off-by: David S. Miller Signed-off-by: Chris Wright ---- - --- include/asm-sparc64/futex.h | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-)