Bug 9954

Summary: iwl3945: not only it periodically dies, it also BUG()s
Product: Drivers Reporter: Rafael J. Wysocki (rjw)
Component: network-wirelessAssignee: drivers_network-wireless (drivers_network-wireless)
Status: CLOSED CODE_FIX    
Severity: normal CC: pavel, reinette.chatre
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.5.25-rc0 Tree: Mainline
Regression: Yes
Bug Depends on:    
Bug Blocks: 9832    

Description Rafael J. Wysocki 2008-02-13 06:02:52 UTC
Subject         : ipw3945: not only it periodically dies, it also BUG()s
Submitter       : Pavel Machek <pavel@ucw.cz>
Date            : 2008-02-05 22:44
References      : http://lkml.org/lkml/2008/2/5/453
Handled-By      : "Chatre, Reinette" <reinette.chatre@intel.com>

This entry is being used for tracking a regression from 2.6.24.  Please don't
close it until the problem is fixed in the mainline.
Comment 1 John W. Linville 2008-02-26 08:20:17 UTC
http://www.bughost.org/bugzilla/show_bug.cgi?id=1620
Comment 2 Natalie Protasevich 2008-03-11 18:06:38 UTC
Date  Tue, 5 Feb 2008 22:44:41 +0100
  From  Pavel Machek <>
  Subject  ipw3945: not only it periodically dies, it also BUG()s
Digg This  Hi!

Under not-even-high load, it periodically restarts:

Feb  5 21:08:50 amd kernel: iwl3945: Microcode SW error detected.
Restarting 0x82000008.
Feb  5 21:08:52 amd kernel: iwl3945: Can't stop Rx DMA.
Feb  5 21:12:51 amd kernel: iwl3945: Microcode SW error detected.
Restarting 0x82000008.
Feb  5 21:12:53 amd kernel: iwl3945: Can't stop Rx DMA.
Feb  5 21:21:44 amd kernel: iwl3945: Microcode SW error detected.
Restarting 0x82000008.
Feb  5 21:21:46 amd kernel: iwl3945: Can't stop Rx DMA.
Feb  5 21:27:32 amd kernel: iwl3945: Microcode SW error detected.
Restarting 0x82000008.
Feb  5 21:27:34 amd kernel: iwl3945: Can't stop Rx DMA.
Feb  5 21:41:29 amd -- MARK --
Feb  5 22:01:29 amd -- MARK --
Feb  5 22:09:11 amd kernel: iwl3945: Microcode SW error detected.
Restarting 0x82000008.
Feb  5 22:09:12 amd kernel: iwl3945: Can't stop Rx DMA.
...I've reported this before, with full debugging. Not sure if
anything happened.

Now, I got BUG() in iwl3945-base.c: 3824

static void iwl3945_tx_cmd_complete(struct iwl3945_priv *priv,
                                struct iwl3945_rx_mem_buffer *rxb)
{
        struct iwl3945_rx_packet *pkt = (struct iwl3945_rx_packet
*)rxb->skb->data;
        u16 sequence = le16_to_cpu(pkt->hdr.sequence);
        int txq_id = SEQ_TO_QUEUE(sequence);
        int index = SEQ_TO_INDEX(sequence);
        int huge = sequence & SEQ_HUGE_FRAME;
        int cmd_index;
        struct iwl3945_cmd *cmd;
        /* If a Tx command is being handled and it isn't in the actual
         * command queue then there a command routing bug has been
introduced
         * in the queue management code. */
        if (txq_id != IWL_CMD_QUEUE_NUM)
                IWL_ERROR("Error wrong command queue %d command id
0x%X\n",
                          txq_id, pkt->hdr.cmd);
        BUG_ON(txq_id != IWL_CMD_QUEUE_NUM);
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here. Any ideas?

More work on debugging of this bug:

http://www.bughost.org/bugzilla/show_bug.cgi?id=1593
Comment 3 Rafael J. Wysocki 2008-03-14 12:05:14 UTC
Pavel said:

"I only seen the BUG() once. iwl3945 seems to work slightly better, big
part of problem was CGROUP_SCHED... All problems with iwl are not
solved, but it probably works as well as it did in 2.6.24 now..."

Closing.