net/mac80211/driver-ops.h
Source file repositories/reference/linux-study-clean/net/mac80211/driver-ops.h
File Facts
- System
- Linux kernel
- Corpus path
net/mac80211/driver-ops.h- Extension
.h- Size
- 48095 bytes
- Lines
- 1818
- Domain
- Networking Core
- Bucket
- Sockets, Protocols, Packet Path, And Network Policy
- Inferred role
- Networking Core: implementation source
- Status
- source implementation candidate
Why This File Exists
Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/fips.hnet/mac80211.hieee80211_i.htrace.h
Detected Declarations
function get_bss_sdatafunction drv_txfunction drv_sync_rx_queuesfunction drv_get_et_stringsfunction drv_get_et_statsfunction drv_get_et_sset_countfunction drv_suspendfunction drv_resumefunction drv_set_wakeupfunction drv_configfunction drv_vif_cfg_changedfunction drv_prepare_multicastfunction drv_configure_filterfunction drv_config_iface_filterfunction drv_set_timfunction drv_update_tkip_keyfunction drv_hw_scanfunction drv_cancel_hw_scanfunction drv_sched_scan_startfunction drv_sched_scan_stopfunction drv_sw_scan_startfunction drv_sw_scan_completefunction drv_get_statsfunction drv_get_key_seqfunction drv_set_frag_thresholdfunction drv_set_rts_thresholdfunction drv_set_coverage_classfunction drv_sta_notifyfunction drv_sta_addfunction drv_sta_removefunction drv_vif_add_debugfsfunction drv_link_add_debugfsfunction drv_sta_add_debugfsfunction drv_link_sta_add_debugfsfunction drv_vif_add_debugfsfunction drv_sta_pre_rcu_removefunction drv_sta_rate_tbl_updatefunction drv_sta_statisticsfunction drv_link_sta_statisticsfunction drv_tx_last_beaconfunction drv_get_surveyfunction drv_rfkill_pollfunction drv_flushfunction drv_flush_stafunction drv_channel_switchfunction drv_set_antennafunction drv_get_antennafunction drv_remain_on_channel
Annotated Snippet
#ifndef __MAC80211_DRIVER_OPS
#define __MAC80211_DRIVER_OPS
#include <linux/fips.h>
#include <net/mac80211.h>
#include "ieee80211_i.h"
#include "trace.h"
#define check_sdata_in_driver(sdata) ({ \
WARN_ONCE(!sdata->local->reconfig_failure && \
!(sdata->flags & IEEE80211_SDATA_IN_DRIVER), \
"%s: Failed check-sdata-in-driver check, flags: 0x%x\n", \
sdata->dev ? sdata->dev->name : sdata->name, sdata->flags); \
!!(sdata->flags & IEEE80211_SDATA_IN_DRIVER); \
})
static inline struct ieee80211_sub_if_data *
get_bss_sdata(struct ieee80211_sub_if_data *sdata)
{
if (sdata && sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
sdata = container_of(sdata->bss, struct ieee80211_sub_if_data,
u.ap);
return sdata;
}
static inline void drv_tx(struct ieee80211_local *local,
struct ieee80211_tx_control *control,
struct sk_buff *skb)
{
local->ops->tx(&local->hw, control, skb);
}
static inline void drv_sync_rx_queues(struct ieee80211_local *local,
struct sta_info *sta)
{
might_sleep();
lockdep_assert_wiphy(local->hw.wiphy);
if (local->ops->sync_rx_queues) {
trace_drv_sync_rx_queues(local, sta->sdata, &sta->sta);
local->ops->sync_rx_queues(&local->hw);
trace_drv_return_void(local);
}
}
static inline void drv_get_et_strings(struct ieee80211_sub_if_data *sdata,
u32 sset, u8 *data)
{
struct ieee80211_local *local = sdata->local;
if (local->ops->get_et_strings) {
trace_drv_get_et_strings(local, sset);
local->ops->get_et_strings(&local->hw, &sdata->vif, sset, data);
trace_drv_return_void(local);
}
}
static inline void drv_get_et_stats(struct ieee80211_sub_if_data *sdata,
struct ethtool_stats *stats,
u64 *data)
{
struct ieee80211_local *local = sdata->local;
if (local->ops->get_et_stats) {
trace_drv_get_et_stats(local);
local->ops->get_et_stats(&local->hw, &sdata->vif, stats, data);
trace_drv_return_void(local);
}
}
static inline int drv_get_et_sset_count(struct ieee80211_sub_if_data *sdata,
int sset)
{
struct ieee80211_local *local = sdata->local;
int rv = 0;
if (local->ops->get_et_sset_count) {
trace_drv_get_et_sset_count(local, sset);
rv = local->ops->get_et_sset_count(&local->hw, &sdata->vif,
sset);
trace_drv_return_int(local, rv);
}
return rv;
}
int drv_start(struct ieee80211_local *local);
void drv_stop(struct ieee80211_local *local, bool suspend);
#ifdef CONFIG_PM
static inline int drv_suspend(struct ieee80211_local *local,
struct cfg80211_wowlan *wowlan)
{
Annotation
- Immediate include surface: `linux/fips.h`, `net/mac80211.h`, `ieee80211_i.h`, `trace.h`.
- Detected declarations: `function get_bss_sdata`, `function drv_tx`, `function drv_sync_rx_queues`, `function drv_get_et_strings`, `function drv_get_et_stats`, `function drv_get_et_sset_count`, `function drv_suspend`, `function drv_resume`, `function drv_set_wakeup`, `function drv_config`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- 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.