Freebsd 7.1 P11 i386 XOrg Dell Latitude C810 Dlink DWL AG660 wireless interrupt storm

I experienced interrupt storms on a Dell Latitude C810 using Dlink DWLAG660 WLAN NIC when hald was loaded. Needed hald in order to get mouse/keyboard to work under Xorg. While trying to figure out what was causing this, I noticed that:

* Cardbus (which wlan nic is using) and USB where sharing the same irq.
* This issue would only come up when hald was loaded. Otherwise the nic worked perfect with no irq storms.

The C810's BIOS is crude and doesn't allow me to assign IRQs. Found material describing how to tell hald to ignore devices. To do this:

** make sure hald is running before doing this...

1. cd /usr/local/share/hal/fdi/preprobe/20thirdparty

2. Create a file called 10-ignore-uhci0.fdi and add the following:

Code:
    <?xml version="1.0" encoding="UTF-8"?>
     
    <deviceinfo version="0.2">
      <device>
        <match key="freebsd.driver" string="uhci">
          <match key="freebsd.unit" int="0">
            <merge key="info.ignore" type="bool">true</merge>
          </match>
        </match>
      </device>
    </deviceinfo>

3. Use lshal | less and locate all the strings with "driver" in it for example:

Code:
    freebsd.driver = 'uhci'    (string)
    freebsd.unit = 0   (0x0)   (int)
etc, etc..

4. Locate all the "driver" strings that contain:

Code:
    ath
    cardbus
    cbb
    pccard
    uhci

and note down the "freebsd.unit" numbers with them. Note: These "driver" strings may appear more than once, for example, I found two instances of "cbb" with freebsd.unit = 0 and freebsd.unit = 1 each. You need to be sure to note down every instance of the above.

5. Create a copy of 10-ignore-uhci0.fdi for each device instance found in step 4 and name them, for example, "ath":

10-ignore-ath.fdi


Note: If a device appears more than once, like "cbb" did for me, you need to make 2 copies of the file for those instances. So in my case I created 10-ignore-cbb.fdi and 10-ignore-cbb2.fdi


6. Then in each file just change "uhci" to the device instances found in step 4. In the case of multiple instances like cbb, change the "freebsd.unit" number to reflect the instance. So for 10-ignore-cbb.fdi, "freebsd.unit" should be 0 and in 10-ignore-cbb2.fdi "freebsd.unit" should be 1.

7. After the changes are made, reboot and the interrupt storms should cease.


I don't know if all those devices needed to be ignored. Frankly, I'm too tired to care right now, it works for me and I'll leave it at that. RFCs appreciated.


References:

http://www.freebsd.org/gnome/docs/halfaq.html under the section "How do I prevent hal from probing a device?"
 
Back
Top