drivers/net/wireless/broadcom/b43/b43.h
Source file repositories/reference/linux-study-clean/drivers/net/wireless/broadcom/b43/b43.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/broadcom/b43/b43.h- Extension
.h- Size
- 43359 bytes
- Lines
- 1126
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/kernel.hlinux/spinlock.hlinux/interrupt.hlinux/hw_random.hlinux/bcma/bcma.hlinux/ssb/ssb.hlinux/completion.hnet/mac80211.hdebugfs.hleds.hrfkill.hbus.hlo.hphy_common.h
Detected Declarations
struct b43_dmaringstruct b43_fw_headerstruct b43_ivstruct b43_dmastruct b43_pio_txqueuestruct b43_pio_rxqueuestruct b43_piostruct b43_noise_calculationstruct b43_statsstruct b43_keystruct b43_qos_paramsstruct b43_wlstruct b43_request_fw_contextstruct b43_firmware_filestruct b43_firmwarestruct b43_wldevstruct b43_wlenum b43_firmware_file_typeenum b43_firmware_hdr_formatenum b43_bandfunction b43_is_modefunction b43_current_bandfunction b43_bus_may_powerdownfunction b43_bus_powerupfunction b43_device_is_enabledfunction b43_device_enablefunction b43_device_disablefunction b43_read16function b43_write16function b43_write16ffunction b43_maskset16function b43_read32function b43_write32function b43_maskset32function b43_block_readfunction b43_block_writefunction b43_using_pio_transfersfunction b43_wake_queuefunction b43_stop_queuefunction __b43_warn_on_dummy
Annotated Snippet
struct b43_fw_header {
/* File type */
u8 type;
/* File format version */
u8 ver;
u8 __padding[2];
/* Size of the data. For ucode and PCM this is in bytes.
* For IV this is number-of-ivs. */
__be32 size;
} __packed;
/* Initial Value file format */
#define B43_IV_OFFSET_MASK 0x7FFF
#define B43_IV_32BIT 0x8000
struct b43_iv {
__be16 offset_size;
union {
__be16 d16;
__be32 d32;
} __packed data;
} __packed;
/* Data structures for DMA transmission, per 80211 core. */
struct b43_dma {
struct b43_dmaring *tx_ring_AC_BK; /* Background */
struct b43_dmaring *tx_ring_AC_BE; /* Best Effort */
struct b43_dmaring *tx_ring_AC_VI; /* Video */
struct b43_dmaring *tx_ring_AC_VO; /* Voice */
struct b43_dmaring *tx_ring_mcast; /* Multicast */
struct b43_dmaring *rx_ring;
u32 translation; /* Routing bits */
bool translation_in_low; /* Should translation bit go into low addr? */
bool parity; /* Check for parity */
};
struct b43_pio_txqueue;
struct b43_pio_rxqueue;
/* Data structures for PIO transmission, per 80211 core. */
struct b43_pio {
struct b43_pio_txqueue *tx_queue_AC_BK; /* Background */
struct b43_pio_txqueue *tx_queue_AC_BE; /* Best Effort */
struct b43_pio_txqueue *tx_queue_AC_VI; /* Video */
struct b43_pio_txqueue *tx_queue_AC_VO; /* Voice */
struct b43_pio_txqueue *tx_queue_mcast; /* Multicast */
struct b43_pio_rxqueue *rx_queue;
};
/* Context information for a noise calculation (Link Quality). */
struct b43_noise_calculation {
bool calculation_running;
u8 nr_samples;
s8 samples[8][4];
};
struct b43_stats {
u8 link_noise;
};
struct b43_key {
/* If keyconf is NULL, this key is disabled.
* keyconf is a cookie. Don't derefenrence it outside of the set_key
* path, because b43 doesn't own it. */
struct ieee80211_key_conf *keyconf;
u8 algorithm;
};
/* SHM offsets to the QOS data structures for the 4 different queues. */
#define B43_QOS_QUEUE_NUM 4
#define B43_QOS_PARAMS(queue) (B43_SHM_SH_EDCFQ + \
(B43_NR_QOSPARAMS * sizeof(u16) * (queue)))
#define B43_QOS_BACKGROUND B43_QOS_PARAMS(0)
#define B43_QOS_BESTEFFORT B43_QOS_PARAMS(1)
#define B43_QOS_VIDEO B43_QOS_PARAMS(2)
#define B43_QOS_VOICE B43_QOS_PARAMS(3)
/* QOS parameter hardware data structure offsets. */
#define B43_NR_QOSPARAMS 16
enum {
B43_QOSPARAM_TXOP = 0,
B43_QOSPARAM_CWMIN,
B43_QOSPARAM_CWMAX,
B43_QOSPARAM_CWCUR,
B43_QOSPARAM_AIFS,
B43_QOSPARAM_BSLOTS,
B43_QOSPARAM_REGGAP,
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/spinlock.h`, `linux/interrupt.h`, `linux/hw_random.h`, `linux/bcma/bcma.h`, `linux/ssb/ssb.h`, `linux/completion.h`, `net/mac80211.h`.
- Detected declarations: `struct b43_dmaring`, `struct b43_fw_header`, `struct b43_iv`, `struct b43_dma`, `struct b43_pio_txqueue`, `struct b43_pio_rxqueue`, `struct b43_pio`, `struct b43_noise_calculation`, `struct b43_stats`, `struct b43_key`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.