drivers/net/wireless/microchip/wilc1000/netdev.h
Source file repositories/reference/linux-study-clean/drivers/net/wireless/microchip/wilc1000/netdev.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/microchip/wilc1000/netdev.h- Extension
.h- Size
- 7062 bytes
- Lines
- 306
- 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/tcp.hlinux/ieee80211.hnet/cfg80211.hnet/ieee80211_radiotap.hlinux/if_arp.hlinux/gpio/consumer.hlinux/rculist.huapi/linux/if_ether.hhif.hwlan.hwlan_cfg.h
Detected Declarations
struct wilc_wfi_statsstruct wilc_wfi_keystruct sta_infostruct wilc_wfi_p2p_listen_paramsstruct wilc_privstruct ack_session_infostruct pending_acksstruct tcp_ack_filterstruct wilc_vifstruct wilc_tx_queue_statusstruct wilcstruct wilc_wfi_mon_priv
Annotated Snippet
struct wilc_wfi_stats {
unsigned long rx_packets;
unsigned long tx_packets;
unsigned long rx_bytes;
unsigned long tx_bytes;
u64 rx_time;
u64 tx_time;
};
struct wilc_wfi_key {
u8 *key;
u8 *seq;
int key_len;
int seq_len;
u32 cipher;
};
struct sta_info {
u8 sta_associated_bss[WILC_MAX_NUM_STA][ETH_ALEN];
};
/* Parameters needed for host interface for remaining on channel */
struct wilc_wfi_p2p_listen_params {
struct ieee80211_channel *listen_ch;
u32 listen_duration;
u64 listen_cookie;
};
static const u32 wilc_cipher_suites[] = {
WLAN_CIPHER_SUITE_TKIP,
WLAN_CIPHER_SUITE_CCMP,
WLAN_CIPHER_SUITE_AES_CMAC
};
#define CHAN2G(_channel, _freq, _flags) { \
.band = NL80211_BAND_2GHZ, \
.center_freq = (_freq), \
.hw_value = (_channel), \
.flags = (_flags), \
.max_antenna_gain = 0, \
.max_power = 30, \
}
static const struct ieee80211_channel wilc_2ghz_channels[] = {
CHAN2G(1, 2412, 0),
CHAN2G(2, 2417, 0),
CHAN2G(3, 2422, 0),
CHAN2G(4, 2427, 0),
CHAN2G(5, 2432, 0),
CHAN2G(6, 2437, 0),
CHAN2G(7, 2442, 0),
CHAN2G(8, 2447, 0),
CHAN2G(9, 2452, 0),
CHAN2G(10, 2457, 0),
CHAN2G(11, 2462, 0),
CHAN2G(12, 2467, 0),
CHAN2G(13, 2472, 0),
CHAN2G(14, 2484, 0)
};
#define RATETAB_ENT(_rate, _hw_value, _flags) { \
.bitrate = (_rate), \
.hw_value = (_hw_value), \
.flags = (_flags), \
}
static struct ieee80211_rate wilc_bitrates[] = {
RATETAB_ENT(10, 0, 0),
RATETAB_ENT(20, 1, 0),
RATETAB_ENT(55, 2, 0),
RATETAB_ENT(110, 3, 0),
RATETAB_ENT(60, 9, 0),
RATETAB_ENT(90, 6, 0),
RATETAB_ENT(120, 7, 0),
RATETAB_ENT(180, 8, 0),
RATETAB_ENT(240, 9, 0),
RATETAB_ENT(360, 10, 0),
RATETAB_ENT(480, 11, 0),
RATETAB_ENT(540, 12, 0)
};
struct wilc_priv {
struct wireless_dev wdev;
struct cfg80211_scan_request *scan_req;
struct wilc_wfi_p2p_listen_params remain_on_ch_params;
u64 tx_cookie;
bool cfg_scanning;
Annotation
- Immediate include surface: `linux/tcp.h`, `linux/ieee80211.h`, `net/cfg80211.h`, `net/ieee80211_radiotap.h`, `linux/if_arp.h`, `linux/gpio/consumer.h`, `linux/rculist.h`, `uapi/linux/if_ether.h`.
- Detected declarations: `struct wilc_wfi_stats`, `struct wilc_wfi_key`, `struct sta_info`, `struct wilc_wfi_p2p_listen_params`, `struct wilc_priv`, `struct ack_session_info`, `struct pending_acks`, `struct tcp_ack_filter`, `struct wilc_vif`, `struct wilc_tx_queue_status`.
- 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.