You are not logged in.

#1 2013-11-25 22:37:06

agopad
Member
Registered: 2013-11-25
Posts: 1

Interrupts list that the b43 wireless device driver uses

Where can I get a list of all the interrupts that the b43 wireless driver uses?

Purpose: Academic research to identify b43 dependencies with the Linux kernel and operating system. It is needed to do an anatomy of the workings of the b43 driver.

Any help or guidance would be very much appreciated.

agopad

Offline

#2 2013-11-26 05:25:48

isacdaavid
Member
Registered: 2011-11-21
Posts: 81
Website

Re: Interrupts list that the b43 wireless device driver uses

Have you looked over the source code?

To be honest I don't know if you'll be able to see actual interrupts or rather high-level syscalls to the kernel. There are 2 different drivers as you can see: b43 and b43legacy. Unfortunately, both of these rely on non-free firmware that is extracted from the old Broadcom proprietary driver; so If you want to see a fully working b43 driver with complete source you'll have to take a look at OpenFWWF, a project that was able to reverse-engineer firmware for some few cards. There's an openfwwf package lying around in the AUR, but last time I checked one of its dependencies was broken and you had to manually edit the download URL in the PKGBUILD to get it installed.

I know this because I'm using the b43 driver on my laptop, and that firmware is the single thing keeping me from having a 100% FOSS setup


Also, I think you should have posted this under the Kernel & Hardware section, or at least under Programming & Scripting. You would get more relevant attention there.

Last edited by isacdaavid (2013-11-26 05:29:23)

Offline

#3 2013-11-26 06:10:05

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 20,354

Re: Interrupts list that the b43 wireless device driver uses

I am not certain, but I am fairly sure that the interrupts used are a function of the hardware.  The driver should be able to either assign the interrupts, or be able to discover how the interrupts are hooked up.
I do not think they are constant from machine to machine

For example, look at the output of lspci -vv.  An excerpt from my b43 equipt machine:

02:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)
        Subsystem: Hewlett-Packard Company BCM4312 802.11b/g Wireless LAN Controller
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 18
        Region 0: Memory at d8500000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [40] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=2 PME-
        Capabilities: [58] Vendor Specific Information: Len=78 <?>
        Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [d0] Express (v1) Endpoint, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 128 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <4us, L1 <64us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- Retrain- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                AERCap: First Error Pointer: 14, GenCap+ CGenEn- ChkCap+ ChkEn-
        Capabilities: [13c v1] Virtual Channel
                Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
                Arb:    Fixed- WRR32- WRR64- WRR128-
                Ctrl:   ArbSelect=Fixed
                Status: InProgress-
                VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                        Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                        Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=01
                        Status: NegoPending- InProgress-
        Capabilities: [160 v1] Device Serial Number 45-47-00-ff-ff-d9-00-21
        Capabilities: [16c v1] Power Budgeting <?>
        Kernel driver in use: b43-pci-bridge
        Kernel modules: ssb

It would appear that my machine is using IRQ 18

EDIT:  Also, consider the contents of /proc/interrupts:

ewaller$@$odin /proc 1008 %cat interrupts 
           CPU0       CPU1       
  0:    4737328    4690435   IO-APIC-edge      timer
  1:      37890      37258   IO-APIC-edge      i8042
  4:        116         51   IO-APIC-edge      ene_ir
  8:          0          1   IO-APIC-edge      rtc0
  9:         15         20   IO-APIC-fasteoi   acpi
 12:     173860     175056   IO-APIC-edge      i8042
 16:        357        360   IO-APIC-fasteoi   mmc0, uhci_hcd:usb3, jmb38x_ms:slot0
 17:          0          0   IO-APIC-fasteoi   uhci_hcd:usb4
 18:     904288     892203   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb7, b43
 20:     571291     566642   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb5
 22:          0          0   IO-APIC-fasteoi   uhci_hcd:usb6
 23:          1          1   IO-APIC-edge      lis3lv02d
 45:     166093     165965   PCI-MSI-edge      ahci
 47:     571428     572990   PCI-MSI-edge      i915
 48:        261        256   PCI-MSI-edge      snd_hda_intel
NMI:       2976       2990   Non-maskable interrupts
LOC:    3358989    3353994   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:       2976       2990   Performance monitoring interrupts
IWI:     264947     249447   IRQ work interrupts
RTR:          0          0   APIC ICR read retries
RES:   11622830   11897473   Rescheduling interrupts
CAL:        128         87   Function call interrupts
TLB:     154232     154507   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:        407        407   Machine check polls
ERR:          0
MIS:          0
ewaller$@$odin /proc 1009 %

Last edited by ewaller (2013-11-26 06:11:48)


Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way

Offline

Board footer

Powered by FluxBB