misc/30224: No irq - PCI wi card doesn't allow interupt sharing

0 views
Skip to first unread message

Peter Blok

unread,
Aug 30, 2001, 4:03:52 PM8/30/01
to

>Number: 30224
>Category: misc
>Synopsis: No irq - PCI wi card doesn't allow interupt sharing
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Aug 30 12:30:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Peter Blok
>Release: 4.4-RC
>Organization:

>Environment:
FreeBSD bsdpc 4.4-RC FreeBSD 4.4-RC #1: Mon Aug 27 20:41:38 CEST 2001 su@bsdpc:/usr/src/sys/compile/BSDPC i386
>Description:
I have a SMC2602W wireless LAN PCI card. The wi driver recognizes the card, but is not
able to allocate an interrupt and bails out with "NO irq?". The fix is very easy.
Instead bus_alloc_resource with the RF_ACTIVE flag, it should be called with
RF_ACTIVE|RF_SHAREABLE. This hack works for months without a problem. It is
unknown what happens when the wi driver works with a pcmcia card. Can the
interupts be shared in that case as well?
>How-To-Repeat:
Take 4.3-STABLE or 4.4- and a SMC2602W card. Make sure another device is also active on the
same irq.
>Fix:
*** if_wi.c.orig Sun Jul 15 12:06:12 2001
--- if_wi.c Sun Jul 15 11:57:02 2001
***************
*** 1906,1912 ****

sc->irq_rid = 0;
sc->irq = bus_alloc_resource(dev, SYS_RES_IRQ, &sc->irq_rid,
! 0, ~0, 1, RF_ACTIVE);
if (!sc->irq) {
wi_free(dev);
device_printf(dev, "No irq?!\n");
--- 1906,1912 ----

sc->irq_rid = 0;
sc->irq = bus_alloc_resource(dev, SYS_RES_IRQ, &sc->irq_rid,
! 0, ~0, 1, RF_SHAREABLE|RF_ACTIVE);
if (!sc->irq) {
wi_free(dev);
device_printf(dev, "No irq?!\n");

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majo...@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message

Reply all
Reply to author
Forward
0 new messages