Bug 9656

Summary: IWL3945 generates WARNING in mac80211/rx.c code
Product: Drivers Reporter: Zdenek Kabelac (zdenek.kabelac)
Component: network-wirelessAssignee: Zhu Yi (yi.zhu)
Status: CLOSED CODE_FIX    
Severity: low CC: johannes, linville, protasnb, yi.zhu
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.24-rc6 Subsystem:
Regression: --- Bisected commit-id:

Description Zdenek Kabelac 2007-12-28 12:58:23 UTC
Most recent kernel where this bug did not occur:  2.6.24-rc6
Distribution: fedora rawhide
Hardware Environment: T61
Software Environment:
Problem Description:  Warning appears in the log when NetworkManager tries to initialize wifi - driver works normally

NetworkManager: <info>  (eth0) supplicant interface is now in state 1 (from 0).
NetworkManager: <info>  (wlan0) supplicant manager is now in state 1 (from 0).
NetworkManager: <info>  (eth0) supplicant interface is now in state 2 (from 1).
NetworkManager: <info>  (wlan0) supplicant interface is now in state 2 (from 1).
WARNING: at net/mac80211/rx.c:1486 __ieee80211_rx()
Pid: 0, comm: swapper Not tainted 2.6.24-rc6 #8

Call Trace:
 <IRQ>  [<ffffffff88123d89>] :mac80211:__ieee80211_rx+0xc69/0xd30
 [<ffffffff812abd86>] _spin_lock_irqsave+0x26/0xa0
 [<ffffffff812ac3a5>] _spin_unlock_irqrestore+0x15/0x30
 [<ffffffff8815af91>] :iwl3945:iwl_rx_queue_restock+0xd1/0x160
 [<ffffffff812abd86>] _spin_lock_irqsave+0x26/0xa0
 [<ffffffff88114f7b>] :mac80211:ieee80211_tasklet_handler+0xbb/0x120
 [<ffffffff810420a7>] tasklet_action+0x47/0xb0
 [<ffffffff81041fb9>] __do_softirq+0x59/0xd0
 [<ffffffff8100d5dc>] call_softirq+0x1c/0x30
 [<ffffffff8100f975>] do_softirq+0x35/0x90
 [<ffffffff81041ee5>] irq_exit+0x85/0x90
 [<ffffffff8100fa54>] do_IRQ+0x84/0x100
 [<ffffffff8100c931>] ret_from_intr+0x0/0xa
 <EOI>  [<ffffffff811a312f>] acpi_idle_enter_bm+0x272/0x2de
 [<ffffffff811a3125>] acpi_idle_enter_bm+0x268/0x2de
 [<ffffffff81230357>] cpuidle_idle_call+0x97/0xd0
 [<ffffffff812302c0>] cpuidle_idle_call+0x0/0xd0
 [<ffffffff8100b001>] cpu_idle+0x71/0xe0



Steps to reproduce:
Comment 1 Johannes Berg 2007-12-28 14:17:22 UTC
That is

        /*
         * Drivers are required to align the payload data to a four-byte
         * boundary, so the last two bits of the address where it starts
         * may not be set. The header is required to be directly before
         * the payload data, padding like atheros hardware adds which is
         * inbetween the 802.11 header and the payload is not supported,
         * the driver is required to move the 802.11 header further back
         * in that case.
         */
        hdrlen = ieee80211_get_hdrlen(rx.fc);
        WARN_ON_ONCE(((unsigned long)(skb->data + hdrlen)) & 3);
Comment 2 Natalie Protasevich 2008-02-04 22:45:12 UTC
It looks like the drivers has been ipdated
commits 691ba2346d5b88cec62fe8db0bf336a58a07b926
        6feeb8aad7925b4c00f785eac3039c772629b42f