drivers/net/wireless/intel/ipw2x00/libipw.h
Source file repositories/reference/linux-study-clean/drivers/net/wireless/intel/ipw2x00/libipw.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/intel/ipw2x00/libipw.h- Extension
.h- Size
- 31257 bytes
- Lines
- 1098
- 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/if_ether.hlinux/kernel.hlinux/wireless.hlinux/ieee80211.hnet/cfg80211.hlinux/netdevice.hlinux/if_arp.hnet/iw_handler.h
Detected Declarations
struct libipw_snap_hdrstruct libipw_rx_statsstruct libipw_frag_entrystruct libipw_statsstruct libipw_devicestruct libipw_securitystruct libipw_hdr_1addrstruct libipw_hdr_2addrstruct libipw_hdr_3addrstruct libipw_hdr_4addrstruct libipw_hdr_3addrqosstruct libipw_info_elementstruct libipw_authstruct libipw_channel_switchstruct libipw_actionstruct libipw_action_exchangestruct libipw_disassocstruct libipw_probe_requeststruct libipw_probe_responsestruct libipw_reassoc_requeststruct libipw_assoc_responsestruct libipw_txbstruct libipw_qos_information_elementstruct libipw_qos_ac_parameterstruct libipw_qos_parameter_infostruct libipw_qos_parametersstruct libipw_qos_datastruct libipw_tim_parametersstruct libipw_tpc_reportstruct libipw_channel_mapstruct libipw_csastruct libipw_quietstruct libipw_networkstruct libipw_channelstruct libipw_geostruct modulestruct libipw_crypto_opsstruct libipw_crypt_infostruct libipw_devicestruct libipw_crypt_dataenum libipw_statefunction libipw_is_valid_modefunction libipw_get_hdrlenfunction libipw_is_ofdm_ratefunction libipw_is_cck_ratefunction libipw_increment_scansfunction libipw_get_scans
Annotated Snippet
struct libipw_snap_hdr {
u8 dsap; /* always 0xAA */
u8 ssap; /* always 0xAA */
u8 ctrl; /* always 0x03 */
u8 oui[P80211_OUI_LEN]; /* organizational universal id */
} __packed;
#define SNAP_SIZE sizeof(struct libipw_snap_hdr)
#define WLAN_FC_GET_VERS(fc) ((fc) & IEEE80211_FCTL_VERS)
#define WLAN_FC_GET_TYPE(fc) ((fc) & IEEE80211_FCTL_FTYPE)
#define WLAN_FC_GET_STYPE(fc) ((fc) & IEEE80211_FCTL_STYPE)
#define WLAN_GET_SEQ_FRAG(seq) ((seq) & IEEE80211_SCTL_FRAG)
#define WLAN_GET_SEQ_SEQ(seq) (((seq) & IEEE80211_SCTL_SEQ) >> 4)
#define LIBIPW_STATMASK_SIGNAL (1<<0)
#define LIBIPW_STATMASK_RSSI (1<<1)
#define LIBIPW_STATMASK_NOISE (1<<2)
#define LIBIPW_STATMASK_RATE (1<<3)
#define LIBIPW_STATMASK_WEMASK 0x7
#define LIBIPW_CCK_MODULATION (1<<0)
#define LIBIPW_OFDM_MODULATION (1<<1)
#define LIBIPW_24GHZ_BAND (1<<0)
#define LIBIPW_52GHZ_BAND (1<<1)
#define LIBIPW_CCK_RATE_1MB 0x02
#define LIBIPW_CCK_RATE_2MB 0x04
#define LIBIPW_CCK_RATE_5MB 0x0B
#define LIBIPW_CCK_RATE_11MB 0x16
#define LIBIPW_OFDM_RATE_6MB 0x0C
#define LIBIPW_OFDM_RATE_9MB 0x12
#define LIBIPW_OFDM_RATE_12MB 0x18
#define LIBIPW_OFDM_RATE_18MB 0x24
#define LIBIPW_OFDM_RATE_24MB 0x30
#define LIBIPW_OFDM_RATE_36MB 0x48
#define LIBIPW_OFDM_RATE_48MB 0x60
#define LIBIPW_OFDM_RATE_54MB 0x6C
#define LIBIPW_BASIC_RATE_MASK 0x80
#define LIBIPW_CCK_RATE_1MB_MASK (1<<0)
#define LIBIPW_CCK_RATE_2MB_MASK (1<<1)
#define LIBIPW_CCK_RATE_5MB_MASK (1<<2)
#define LIBIPW_CCK_RATE_11MB_MASK (1<<3)
#define LIBIPW_OFDM_RATE_6MB_MASK (1<<4)
#define LIBIPW_OFDM_RATE_9MB_MASK (1<<5)
#define LIBIPW_OFDM_RATE_12MB_MASK (1<<6)
#define LIBIPW_OFDM_RATE_18MB_MASK (1<<7)
#define LIBIPW_OFDM_RATE_24MB_MASK (1<<8)
#define LIBIPW_OFDM_RATE_36MB_MASK (1<<9)
#define LIBIPW_OFDM_RATE_48MB_MASK (1<<10)
#define LIBIPW_OFDM_RATE_54MB_MASK (1<<11)
#define LIBIPW_CCK_RATES_MASK 0x0000000F
#define LIBIPW_CCK_BASIC_RATES_MASK (LIBIPW_CCK_RATE_1MB_MASK | \
LIBIPW_CCK_RATE_2MB_MASK)
#define LIBIPW_CCK_DEFAULT_RATES_MASK (LIBIPW_CCK_BASIC_RATES_MASK | \
LIBIPW_CCK_RATE_5MB_MASK | \
LIBIPW_CCK_RATE_11MB_MASK)
#define LIBIPW_OFDM_RATES_MASK 0x00000FF0
#define LIBIPW_OFDM_BASIC_RATES_MASK (LIBIPW_OFDM_RATE_6MB_MASK | \
LIBIPW_OFDM_RATE_12MB_MASK | \
LIBIPW_OFDM_RATE_24MB_MASK)
#define LIBIPW_OFDM_DEFAULT_RATES_MASK (LIBIPW_OFDM_BASIC_RATES_MASK | \
LIBIPW_OFDM_RATE_9MB_MASK | \
LIBIPW_OFDM_RATE_18MB_MASK | \
LIBIPW_OFDM_RATE_36MB_MASK | \
LIBIPW_OFDM_RATE_48MB_MASK | \
LIBIPW_OFDM_RATE_54MB_MASK)
#define LIBIPW_DEFAULT_RATES_MASK (LIBIPW_OFDM_DEFAULT_RATES_MASK | \
LIBIPW_CCK_DEFAULT_RATES_MASK)
#define LIBIPW_NUM_OFDM_RATES 8
#define LIBIPW_NUM_CCK_RATES 4
#define LIBIPW_OFDM_SHIFT_MASK_A 4
/* NOTE: This data is for statistical purposes; not all hardware provides this
* information for frames received.
* For libipw_rx_mgt, you need to set at least the 'len' parameter.
*/
struct libipw_rx_stats {
u32 mac_time;
s8 rssi;
u8 signal;
u8 noise;
Annotation
- Immediate include surface: `linux/if_ether.h`, `linux/kernel.h`, `linux/wireless.h`, `linux/ieee80211.h`, `net/cfg80211.h`, `linux/netdevice.h`, `linux/if_arp.h`, `net/iw_handler.h`.
- Detected declarations: `struct libipw_snap_hdr`, `struct libipw_rx_stats`, `struct libipw_frag_entry`, `struct libipw_stats`, `struct libipw_device`, `struct libipw_security`, `struct libipw_hdr_1addr`, `struct libipw_hdr_2addr`, `struct libipw_hdr_3addr`, `struct libipw_hdr_4addr`.
- 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.