drivers/net/wireless/broadcom/b43legacy/main.h
Source file repositories/reference/linux-study-clean/drivers/net/wireless/broadcom/b43legacy/main.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/broadcom/b43legacy/main.h- Extension
.h- Size
- 2992 bytes
- Lines
- 115
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
b43legacy.h
Detected Declarations
function Copyrightfunction b43legacy_freq_to_channelfunction b43legacy_channel_to_freq_bgfunction b43legacy_channel_to_freqfunction b43legacy_is_cck_ratefunction b43legacy_is_ofdm_rate
Annotated Snippet
Broadcom B43legacy wireless driver
Copyright (c) 2005 Martin Langer <martin-langer@gmx.de>,
Copyright (c) 2005 Stefano Brivio <stefano.brivio@polimi.it>
Copyright (c) 2005, 2006 Michael Buesch <m@bues.ch>
Copyright (c) 2005 Danny van Dyk <kugelfang@gentoo.org>
Copyright (c) 2005 Andreas Jaggi <andreas.jaggi@waterwave.ch>
Copyright (c) 2007 Larry Finger <Larry.Finger@lwfinger.net>
Some parts of the code in this file are derived from the ipw2200
driver Copyright(c) 2003 - 2004 Intel Corporation.
*/
#ifndef B43legacy_MAIN_H_
#define B43legacy_MAIN_H_
#include "b43legacy.h"
#define P4D_BYT3S(magic, nr_bytes) u8 __p4dding##magic[nr_bytes]
#define P4D_BYTES(line, nr_bytes) P4D_BYT3S(line, nr_bytes)
/* Magic helper macro to pad structures. Ignore those above. It's magic. */
#define PAD_BYTES(nr_bytes) P4D_BYTES(__LINE__ , (nr_bytes))
/* Lightweight function to convert a frequency (in Mhz) to a channel number. */
static inline
u8 b43legacy_freq_to_channel_bg(int freq)
{
u8 channel;
if (freq == 2484)
channel = 14;
else
channel = (freq - 2407) / 5;
return channel;
}
static inline
u8 b43legacy_freq_to_channel(struct b43legacy_wldev *dev,
int freq)
{
return b43legacy_freq_to_channel_bg(freq);
}
/* Lightweight function to convert a channel number to a frequency (in Mhz). */
static inline
int b43legacy_channel_to_freq_bg(u8 channel)
{
int freq;
if (channel == 14)
freq = 2484;
else
freq = 2407 + (5 * channel);
return freq;
}
static inline
int b43legacy_channel_to_freq(struct b43legacy_wldev *dev,
u8 channel)
{
return b43legacy_channel_to_freq_bg(channel);
}
static inline
int b43legacy_is_cck_rate(int rate)
{
return (rate == B43legacy_CCK_RATE_1MB ||
rate == B43legacy_CCK_RATE_2MB ||
rate == B43legacy_CCK_RATE_5MB ||
rate == B43legacy_CCK_RATE_11MB);
}
static inline
int b43legacy_is_ofdm_rate(int rate)
{
return !b43legacy_is_cck_rate(rate);
}
void b43legacy_tsf_read(struct b43legacy_wldev *dev, u64 *tsf);
void b43legacy_tsf_write(struct b43legacy_wldev *dev, u64 tsf);
u32 b43legacy_shm_read32(struct b43legacy_wldev *dev,
u16 routing, u16 offset);
u16 b43legacy_shm_read16(struct b43legacy_wldev *dev,
u16 routing, u16 offset);
Annotation
- Immediate include surface: `b43legacy.h`.
- Detected declarations: `function Copyright`, `function b43legacy_freq_to_channel`, `function b43legacy_channel_to_freq_bg`, `function b43legacy_channel_to_freq`, `function b43legacy_is_cck_rate`, `function b43legacy_is_ofdm_rate`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
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.