You are not logged in.
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
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
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