drivers/net/dsa/sja1105/sja1105_dynamic_config.c
Source file repositories/reference/linux-study-clean/drivers/net/dsa/sja1105/sja1105_dynamic_config.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/dsa/sja1105/sja1105_dynamic_config.c- Extension
.c- Size
- 49868 bytes
- Lines
- 1414
- 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
sja1105.h
Detected Declarations
struct sja1105_dyn_cmdenum sja1105_hostcmdfunction sja1105et_vl_lookup_cmd_packingfunction sja1105pqrs_vl_lookup_cmd_packingfunction sja1110_vl_lookup_cmd_packingfunction sja1105et_vl_lookup_entry_packingfunction sja1110_vl_policing_cmd_packingfunction sja1105pqrs_common_l2_lookup_cmd_packingfunction stufffunction sja1105pqrs_l2_lookup_cmd_packingfunction sja1110_l2_lookup_cmd_packingfunction interfacefunction sja1110_dyn_l2_lookup_entry_packingfunction sja1105et_l2_lookup_cmd_packingfunction sja1105et_dyn_l2_lookup_entry_packingfunction sja1105et_mgmt_route_cmd_packingfunction sja1105et_mgmt_route_entry_packingfunction sja1105pqrs_mgmt_route_cmd_packingfunction sja1105pqrs_mgmt_route_entry_packingfunction entryfunction sja1110_vlan_lookup_cmd_packingfunction sja1105_l2_forwarding_cmd_packingfunction sja1110_l2_forwarding_cmd_packingfunction sja1105et_mac_config_cmd_packingfunction sja1105et_mac_config_entry_packingfunction sja1105pqrs_mac_config_cmd_packingfunction sja1110_mac_config_cmd_packingfunction sja1105et_l2_lookup_params_cmd_packingfunction sja1105et_l2_lookup_params_entry_packingfunction sja1105pqrs_l2_lookup_params_cmd_packingfunction sja1110_l2_lookup_params_cmd_packingfunction sja1105et_general_params_cmd_packingfunction sja1105et_general_params_entry_packingfunction sja1105pqrs_general_params_cmd_packingfunction sja1110_general_params_cmd_packingfunction sja1105pqrs_avb_params_cmd_packingfunction sja1105_retagging_cmd_packingfunction sja1110_retagging_cmd_packingfunction sja1105et_cbs_cmd_packingfunction sja1105et_cbs_entry_packingfunction sja1105pqrs_cbs_cmd_packingfunction sja1110_cbs_cmd_packingfunction sja1105pqrs_cbs_entry_packingfunction sja1110_cbs_entry_packingfunction sja1110_dummy_cmd_packingfunction sja1105_dynamic_config_poll_validfunction sja1105_dynamic_config_wait_completefunction returned
Annotated Snippet
struct sja1105_dyn_cmd {
bool search;
u64 valid;
u64 rdwrset;
u64 errors;
u64 valident;
u64 index;
};
enum sja1105_hostcmd {
SJA1105_HOSTCMD_SEARCH = 1,
SJA1105_HOSTCMD_READ = 2,
SJA1105_HOSTCMD_WRITE = 3,
SJA1105_HOSTCMD_INVALIDATE = 4,
};
/* Command and entry overlap */
static void
sja1105et_vl_lookup_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
enum packing_op op)
{
const int size = SJA1105_SIZE_DYN_CMD;
sja1105_packing(buf, &cmd->valid, 31, 31, size, op);
sja1105_packing(buf, &cmd->errors, 30, 30, size, op);
sja1105_packing(buf, &cmd->rdwrset, 29, 29, size, op);
sja1105_packing(buf, &cmd->index, 9, 0, size, op);
}
/* Command and entry are separate */
static void
sja1105pqrs_vl_lookup_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
enum packing_op op)
{
u8 *p = buf + SJA1105_SIZE_VL_LOOKUP_ENTRY;
const int size = SJA1105_SIZE_DYN_CMD;
sja1105_packing(p, &cmd->valid, 31, 31, size, op);
sja1105_packing(p, &cmd->errors, 30, 30, size, op);
sja1105_packing(p, &cmd->rdwrset, 29, 29, size, op);
sja1105_packing(p, &cmd->index, 9, 0, size, op);
}
static void
sja1110_vl_lookup_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
enum packing_op op)
{
u8 *p = buf + SJA1105PQRS_SIZE_L2_LOOKUP_ENTRY;
const int size = SJA1105_SIZE_DYN_CMD;
sja1105_packing(p, &cmd->valid, 31, 31, size, op);
sja1105_packing(p, &cmd->rdwrset, 30, 30, size, op);
sja1105_packing(p, &cmd->errors, 29, 29, size, op);
sja1105_packing(p, &cmd->index, 11, 0, size, op);
}
static size_t sja1105et_vl_lookup_entry_packing(void *buf, void *entry_ptr,
enum packing_op op)
{
struct sja1105_vl_lookup_entry *entry = entry_ptr;
const int size = SJA1105ET_SIZE_VL_LOOKUP_DYN_CMD;
sja1105_packing(buf, &entry->egrmirr, 21, 17, size, op);
sja1105_packing(buf, &entry->ingrmirr, 16, 16, size, op);
return size;
}
static void
sja1110_vl_policing_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
enum packing_op op)
{
u8 *p = buf + SJA1105_SIZE_VL_LOOKUP_ENTRY;
const int size = SJA1105_SIZE_DYN_CMD;
sja1105_packing(p, &cmd->valid, 31, 31, size, op);
sja1105_packing(p, &cmd->rdwrset, 30, 30, size, op);
sja1105_packing(p, &cmd->index, 11, 0, size, op);
}
static void
sja1105pqrs_common_l2_lookup_cmd_packing(void *buf, struct sja1105_dyn_cmd *cmd,
enum packing_op op, int entry_size)
{
const int size = SJA1105_SIZE_DYN_CMD;
u8 *p = buf + entry_size;
u64 hostcmd;
sja1105_packing(p, &cmd->valid, 31, 31, size, op);
sja1105_packing(p, &cmd->rdwrset, 30, 30, size, op);
sja1105_packing(p, &cmd->errors, 29, 29, size, op);
Annotation
- Immediate include surface: `sja1105.h`.
- Detected declarations: `struct sja1105_dyn_cmd`, `enum sja1105_hostcmd`, `function sja1105et_vl_lookup_cmd_packing`, `function sja1105pqrs_vl_lookup_cmd_packing`, `function sja1110_vl_lookup_cmd_packing`, `function sja1105et_vl_lookup_entry_packing`, `function sja1110_vl_policing_cmd_packing`, `function sja1105pqrs_common_l2_lookup_cmd_packing`, `function stuff`, `function sja1105pqrs_l2_lookup_cmd_packing`.
- 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.