drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
Source file repositories/reference/linux-study-clean/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c- Extension
.c- Size
- 69514 bytes
- Lines
- 2514
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/module.hlinux/if_ether.hlinux/spinlock.hlinux/skbuff.hlinux/netdevice.hlinux/etherdevice.hlinux/err.hlinux/jiffies.hnet/cfg80211.hbrcmu_utils.hbrcmu_wifi.hcore.hdebug.hbus.hfwil.hfwil_types.hfweh.hfwsignal.hp2p.hcfg80211.hproto.hbcdc.hcommon.h
Detected Declarations
struct brcmf_skbuff_cbstruct brcmf_fws_mac_descriptorstruct brcmf_fws_hanger_itemstruct brcmf_fws_hangerstruct brcmf_fws_macdesc_tablestruct brcmf_fws_statsstruct brcmf_fws_infoenum brcmf_fws_tlv_typeenum brcmf_fws_tlv_lenenum brcmf_fws_skb_stateenum brcmf_fws_txstatusenum brcmf_fws_fcmodeenum brcmf_fws_mac_desc_stateenum brcmf_fws_hanger_item_statefunction brcmf_fws_get_tlv_lenfunction brcmf_fws_lockfunction brcmf_fws_unlockfunction brcmf_fws_ifidx_matchfunction brcmf_fws_hanger_initfunction brcmf_fws_hanger_get_free_slotfunction brcmf_fws_hanger_pushpktfunction brcmf_fws_hanger_poppktfunction brcmf_fws_psq_flushfunction brcmf_fws_hanger_mark_suppressedfunction brcmf_fws_hanger_cleanupfunction brcmf_fws_macdesc_set_namefunction brcmf_fws_macdesc_initfunction brcmf_fws_macdesc_deinitfunction brcmf_fws_macdesc_lookupfunction brcmf_fws_macdesc_findfunction brcmf_fws_macdesc_closedfunction brcmf_fws_macdesc_cleanupfunction brcmf_fws_bus_txq_cleanupfunction brcmf_fws_cleanupfunction brcmf_fws_hdrpushfunction brcmf_fws_tim_updatefunction brcmf_fws_flow_control_checkfunction brcmf_fws_rssi_indicatefunction brcmf_fws_macdesc_indicatefunction brcmf_fws_macdesc_state_indicatefunction brcmf_fws_interface_state_indicatefunction brcmf_fws_request_indicatefunction brcmf_fws_macdesc_use_req_creditfunction brcmf_fws_macdesc_return_req_creditfunction brcmf_fws_return_creditsfunction brcmf_fws_schedule_deqfunction brcmf_fws_enqfunction brcmf_fws_txstatus_suppressed
Annotated Snippet
struct brcmf_skbuff_cb {
u16 bus_flags;
u16 if_flags;
u32 htod;
u16 htod_seq;
enum brcmf_fws_skb_state state;
struct brcmf_fws_mac_descriptor *mac;
};
/*
* macro casting skbuff control buffer to struct brcmf_skbuff_cb.
*/
#define brcmf_skbcb(skb) ((struct brcmf_skbuff_cb *)((skb)->cb))
/*
* sk_buff control if flags
*
* b[11] - packet sent upon firmware request.
* b[10] - packet only contains signalling data.
* b[9] - packet is a tx packet.
* b[8] - packet used requested credit
* b[7] - interface in AP mode.
* b[3:0] - interface index.
*/
#define BRCMF_SKB_IF_FLAGS_REQUESTED_MASK 0x0800
#define BRCMF_SKB_IF_FLAGS_REQUESTED_SHIFT 11
#define BRCMF_SKB_IF_FLAGS_SIGNAL_ONLY_MASK 0x0400
#define BRCMF_SKB_IF_FLAGS_SIGNAL_ONLY_SHIFT 10
#define BRCMF_SKB_IF_FLAGS_TRANSMIT_MASK 0x0200
#define BRCMF_SKB_IF_FLAGS_TRANSMIT_SHIFT 9
#define BRCMF_SKB_IF_FLAGS_REQ_CREDIT_MASK 0x0100
#define BRCMF_SKB_IF_FLAGS_REQ_CREDIT_SHIFT 8
#define BRCMF_SKB_IF_FLAGS_IF_AP_MASK 0x0080
#define BRCMF_SKB_IF_FLAGS_IF_AP_SHIFT 7
#define BRCMF_SKB_IF_FLAGS_INDEX_MASK 0x000f
#define BRCMF_SKB_IF_FLAGS_INDEX_SHIFT 0
#define brcmf_skb_if_flags_set_field(skb, field, value) \
brcmu_maskset16(&(brcmf_skbcb(skb)->if_flags), \
BRCMF_SKB_IF_FLAGS_ ## field ## _MASK, \
BRCMF_SKB_IF_FLAGS_ ## field ## _SHIFT, (value))
#define brcmf_skb_if_flags_get_field(skb, field) \
brcmu_maskget16(brcmf_skbcb(skb)->if_flags, \
BRCMF_SKB_IF_FLAGS_ ## field ## _MASK, \
BRCMF_SKB_IF_FLAGS_ ## field ## _SHIFT)
/*
* sk_buff control packet identifier
*
* 32-bit packet identifier used in PKTTAG tlv from host to dongle.
*
* - Generated at the host (e.g. dhd)
* - Seen as a generic sequence number by firmware except for the flags field.
*
* Generation : b[31] => generation number for this packet [host->fw]
* OR, current generation number [fw->host]
* Flags : b[30:27] => command, status flags
* FIFO-AC : b[26:24] => AC-FIFO id
* h-slot : b[23:8] => hanger-slot
* freerun : b[7:0] => A free running counter
*/
#define BRCMF_SKB_HTOD_TAG_GENERATION_MASK 0x80000000
#define BRCMF_SKB_HTOD_TAG_GENERATION_SHIFT 31
#define BRCMF_SKB_HTOD_TAG_FLAGS_MASK 0x78000000
#define BRCMF_SKB_HTOD_TAG_FLAGS_SHIFT 27
#define BRCMF_SKB_HTOD_TAG_FIFO_MASK 0x07000000
#define BRCMF_SKB_HTOD_TAG_FIFO_SHIFT 24
#define BRCMF_SKB_HTOD_TAG_HSLOT_MASK 0x00ffff00
#define BRCMF_SKB_HTOD_TAG_HSLOT_SHIFT 8
#define BRCMF_SKB_HTOD_TAG_FREERUN_MASK 0x000000ff
#define BRCMF_SKB_HTOD_TAG_FREERUN_SHIFT 0
#define brcmf_skb_htod_tag_set_field(skb, field, value) \
brcmu_maskset32(&(brcmf_skbcb(skb)->htod), \
BRCMF_SKB_HTOD_TAG_ ## field ## _MASK, \
BRCMF_SKB_HTOD_TAG_ ## field ## _SHIFT, (value))
#define brcmf_skb_htod_tag_get_field(skb, field) \
brcmu_maskget32(brcmf_skbcb(skb)->htod, \
BRCMF_SKB_HTOD_TAG_ ## field ## _MASK, \
BRCMF_SKB_HTOD_TAG_ ## field ## _SHIFT)
#define BRCMF_SKB_HTOD_SEQ_FROMFW_MASK 0x2000
#define BRCMF_SKB_HTOD_SEQ_FROMFW_SHIFT 13
#define BRCMF_SKB_HTOD_SEQ_FROMDRV_MASK 0x1000
#define BRCMF_SKB_HTOD_SEQ_FROMDRV_SHIFT 12
#define BRCMF_SKB_HTOD_SEQ_NR_MASK 0x0fff
#define BRCMF_SKB_HTOD_SEQ_NR_SHIFT 0
#define brcmf_skb_htod_seq_set_field(skb, field, value) \
brcmu_maskset16(&(brcmf_skbcb(skb)->htod_seq), \
Annotation
- Immediate include surface: `linux/types.h`, `linux/module.h`, `linux/if_ether.h`, `linux/spinlock.h`, `linux/skbuff.h`, `linux/netdevice.h`, `linux/etherdevice.h`, `linux/err.h`.
- Detected declarations: `struct brcmf_skbuff_cb`, `struct brcmf_fws_mac_descriptor`, `struct brcmf_fws_hanger_item`, `struct brcmf_fws_hanger`, `struct brcmf_fws_macdesc_table`, `struct brcmf_fws_stats`, `struct brcmf_fws_info`, `enum brcmf_fws_tlv_type`, `enum brcmf_fws_tlv_len`, `enum brcmf_fws_skb_state`.
- 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.