This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

System Hang up When pluging out wireless card



Kernel: v2.6.37_TI81XXPSP_04.04.00.02.patch1

The USB wireless card: EDIMAX EW-7711UTn

And the driver is from the kernel “drivers/net/wireless/rt2x00”, the firmware is from http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git

The driver could work. But if we plug out the wireless card, the system will hang up, and did not give any response.

Here are the steps to make the phenomenon reappear:

1. print the kernel debug information to stdout "echo 9 9 9 9 > /proc/sys/kernel/printk"

2. load the driver: "modprobe rt2800usb"

3. plug in the USB wireless card.

4. bring up the wlan0 "ifconfig wlan0 up"

5. plug out the USB wireless card.

6. System hangs up

Here are the outputs:

/home/kylin # ifconfig
/home/kylin # echo "9 9 9 9" > /proc/sys/kernel/printk
/home/kylin # modprobe rt2800usb
usbcore: registered new interface driver rt2800usb
/home/kylin # hub 1-1:1.0: state 7 ports 2 chg 0000 evt 0004
hub 1-1:1.0: port 2, status 0101, change 0001, 12 Mb/s
hub 1-1:1.0: debounce: port 2: total 100ms stable 100ms status 0x101
hub 1-1:1.0: port 2 not reset yet, waiting 10ms
usb 1-1.2: new high speed USB device using musb-hdrc and address 3
hub 1-1:1.0: port 2 not reset yet, waiting 10ms
usb 1-1.2: default language 0x0409
usb 1-1.2: udev 3, busnum 1, minor = 2
usb 1-1.2: New USB device found, idVendor=7392, idProduct=7711
usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.2: Product: 802.11 n WLAN
usb 1-1.2: Manufacturer: Ralink
usb 1-1.2: SerialNumber: 1.0
usb 1-1.2: usb_probe_device
usb 1-1.2: configuration #1 chosen from 1 choice
usb 1-1.2: adding 1-1.2:1.0 (config #1, interface 0)
rt2800usb 1-1.2:1.0: usb_probe_interface
rt2800usb 1-1.2:1.0: usb_probe_interface - got id
phy0 -> rt2x00_set_chip: Info - Chipset detected - rt: 3070, rf: 0005, rev: 0200.
ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
Registered led device: rt2800usb-phy0::radio
Registered led device: rt2800usb-phy0::assoc
Registered led device: rt2800usb-phy0::quality
drivers/usb/core/inode.c: creating file '003'
hub 1-1:1.0: state 7 ports 2 chg 0000 evt 0004

/home/kylin # ifconfig
/home/kylin # ifconfig wlan0 up
phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'.
phy0 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 0.29.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 102.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 4, CWmax: 5, Aifs: 2, TXop: 188.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 3, TXop: 0.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 7, TXop: 0.
/home/kylin # ifconfig
wlan0     Link encap:Ethernet  HWaddr 00:1F:1F:4A:B8:44
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/home/kylin # musb-hdrc musb-hdrc.0: Data toggle same as previous (=0) on ep2
hub 1-1:1.0: state 7 ports 2 chg 0000 evt 0004
hub 1-1:1.0: port 2, status 0100, change 0001, 12 Mb/s
usb 1-1.2: USB disconnect, address 3
usb 1-1.2: unregistering device
usb 1-1.2: unregistering interface 1-1.2:1.0
musb-hdrc musb-hdrc.0: shutdown urb d2b35f00 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35a00 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35d80 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35b00 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35980 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35100 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35300 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35d00 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35b80 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d33c9a00 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d33c9980 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d33c9880 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d33c9380 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d33c9900 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d33c9f00 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d33c9800 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d33c9d00 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d32d4d80 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d32d4f00 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35280 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35580 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35800 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35e80 ep1in-bulk
musb-hdrc musb-hdrc.0: shutdown urb d2b35480 ep1in-bulk

And if I don't bring up the wlan0 "ifconfig wlan0 up", and pluging out the USB wireless card, the system does not hangs up, it works fine.

/home/kylin # hub 1-1:1.0: state 7 ports 2 chg 0000 evt 0004
hub 1-1:1.0: port 2, status 0100, change 0001, 12 Mb/s
usb 1-1.2: USB disconnect, address 4
usb 1-1.2: unregistering device
usb 1-1.2: unregistering interface 1-1.2:1.0
usb 1-1.2: usb_disable_device nuking all URBs
hub 1-1:1.0: debounce: port 2: total 100ms stable 100ms status 0x100

/home/kylin #

  • Yulang,

    Can you try this on the DM816x TI EVM with the latest linux kernel available at the below link. Do you observe the same issue?

    arago-project.org/.../projects;a=shortlog;h=refs/heads/ti81xx-master

    BR
    Pavel
  • Thanks Pavel for your reply. I have tried the latest kernel, but the issue is still there.

    zhaoyl@UbuntuWS1:~/disk2/source/linux/linux-omap3$ git branch
      master
    * ti81xx-master
    zhaoyl@UbuntuWS1:~/disk2/source/linux/linux-omap3$ git log | head
    commit 4f1fb3bea4cc381c76e8e439f8af393c1a698dfc
    Author: Sriramakrishnan A G <srk@ti.com>
    Date:   Wed Oct 16 13:19:48 2013 +0530
    
        net/cpsw : acknowledge any pending interrupts on driver close
    
        Signed-off-by: Sriramakrishnan A G <srk@ti.com>
    
    commit d083cdae102926d4b063ff5655b1d56b3d8576cb
    Author: Sebastian Siewior <bigeasy@linutronix.de>

    and in the test, I " cat /proc/driver/musb_hdrc.1", I hope it may be helpful.

    /home/kylin # uname -a
    Linux (none) 2.6.37+ #1 Thu Feb 5 17:13:31 CST 2015 armv7l GNU/Linux
    /home/kylin # echo 9 9 9 9 > /proc/sys/kernel/printk
    /home/kylin # modprobe rt2800usb
    usbcore: registered new interface driver rt2800usb
    /home/kylin # hub 2-0:1.0: state 7 ports 1 chg 0000 evt 0002
    hub 2-0:1.0: port 1, status 0101, change 0001, 12 Mb/s
    hub 2-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x101
    usb 2-1: new high speed USB device using musb-hdrc and address 2
    usb 2-1: default language 0x0409
    usb 2-1: udev 2, busnum 2, minor = 129
    usb 2-1: New USB device found, idVendor=7392, idProduct=7711
    usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 2-1: Product: 802.11 n WLAN
    usb 2-1: Manufacturer: Ralink
    usb 2-1: SerialNumber: 1.0
    usb 2-1: usb_probe_device
    usb 2-1: configuration #1 chosen from 1 choice
    usb 2-1: adding 2-1:1.0 (config #1, interface 0)
    rt2800usb 2-1:1.0: usb_probe_interface
    rt2800usb 2-1:1.0: usb_probe_interface - got id
    phy0 -> rt2x00_set_chip: Info - Chipset detected - rt: 3070, rf: 0005, rev: 0200.
    ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
    Registered led device: rt2800usb-phy0::radio
    Registered led device: rt2800usb-phy0::assoc
    Registered led device: rt2800usb-phy0::quality
    drivers/usb/core/inode.c: creating file '002'
    hub 2-0:1.0: state 7 ports 1 chg 0000 evt 0002
    hub 2-0:1.0: port 1 enable change, status 00000503
    
    /home/kylin # ifconfig
    /home/kylin # cat /proc/driver/musb_hdrc.1
    Status: MHDRC, Mode=Host (Power=f0, DevCtl=5d)
    OTG state: a_host; active
    Options: ?dma?, host, debug=0 [eps=16]
    Root port status: 00000503
    CPPI: txcr=0 txsrc=0 txena=0; rxcr=0 rxsrc=280de80 rxena=0
    /home/kylin # ifconfig wlan0 up
    phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'.
    phy0 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 0.29.
    phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 102.
    phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 4, CWmax: 5, Aifs: 2, TXop: 188.
    phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 3, TXop: 0.
    phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 7, TXop: 0.
    /home/kylin # ifconfig
    wlan0     Link encap:Ethernet  HWaddr 00:1F:1F:4A:B8:44
              UP BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    /home/kylin # cat /proc/driver/musb_hdrc.1
    Status: MHDRC, Mode=Host (Power=f0, DevCtl=5d)
    OTG state: a_host; active
    Options: ?dma?, host, debug=0 [eps=16]
    Root port status: 00000503
    CPPI: txcr=0 txsrc=0 txena=0; rxcr=0 rxsrc=280de80 rxena=0
    
    RX2: 1buf rxcsr 2020 interval 00 max 0200 type 61; dev 2 hub 0 port 0
        rx dma1: 270926084 left,00000000 00000000, 00000000 00000000; 00000000 00000000 00000000 .. 00000000
        qh d2812700 dev2 ep1-bulk max512
            in urb d33bb500 0/3860
            in urb d33bb100 0/3860
            in urb d3398c00 0/3860
            in urb d3398b80 0/3860
            in urb d3398f00 0/3860
            in urb d3398d80 0/3860
            in urb d33eeb00 0/3860
            in urb d33eef00 0/3860
            in urb d33eed80 0/3860
            in urb d33eec80 0/3860
            in urb d33ee280 0/3860
            in urb d33ee800 0/3860
            in urb d33eee00 0/3860
            in urb d33eec00 0/3860
            in urb d33ee880 0/3860
            in urb d3375e80 0/3860
            in urb d3375f80 0/3860
            in urb d33bbd00 0/3860
            in urb d33bb480 0/3860
            in urb d33bb400 0/3860
            in urb d33bb900 0/3860
            in urb d33bbf00 0/3860
            in urb d33bbe00 0/3860
            in urb d33bbe80 0/3860
    /home/kylin # hub 2-0:1.0: state 7 ports 1 chg 0000 evt 0002
    hub 2-0:1.0: port 1, status 0100, change 0001, 12 Mb/s
    usb 2-1: USB disconnect, address 2
    usb 2-1: unregistering device
    usb 2-1: unregistering interface 2-1:1.0
    musb-hdrc musb-hdrc.1: shutdown urb d33bb500 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33bb100 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d3398c00 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d3398b80 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d3398f00 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d3398d80 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33eeb00 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33eef00 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33eed80 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33eec80 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33ee280 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33ee800 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33eee00 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33eec00 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33ee880 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d3375e80 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d3375f80 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33bbd00 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33bb480 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33bb400 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33bb900 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33bbf00 ep1in-bulk
    musb-hdrc musb-hdrc.1: shutdown urb d33bbe00 ep1in-bulk
    

  • Have you tried with the DM816x TI EVM?