Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Aug 2001 12:24:01 -0700 (PDT)
From:      Peter Blok <pblok@inter.NL.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   misc/30224: No irq - PCI wi card doesn't allow interupt sharing
Message-ID:  <200108301924.f7UJO1F35935@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>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 majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108301924.f7UJO1F35935>