drivers/net/ethernet/google/gve/gve_adminq.c
Source file repositories/reference/linux-study-clean/drivers/net/ethernet/google/gve/gve_adminq.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/ethernet/google/gve/gve_adminq.c- Extension
.c- Size
- 48836 bytes
- Lines
- 1603
- 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.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/etherdevice.hlinux/pci.hgve.hgve_adminq.hgve_register.h
Detected Declarations
function Copyrightfunction gve_parse_device_optionfunction gve_process_device_optionsfunction gve_adminq_allocfunction gve_adminq_releasefunction gve_adminq_freefunction gve_adminq_kick_cmdfunction gve_adminq_wait_for_cmdfunction gve_adminq_parse_errfunction gve_adminq_kick_and_waitfunction gve_adminq_issue_cmdfunction gve_adminq_execute_cmdfunction gve_adminq_execute_extended_cmdfunction gve_adminq_configure_device_resourcesfunction gve_adminq_deconfigure_device_resourcesfunction gve_adminq_create_tx_queuefunction gve_adminq_create_tx_queuesfunction gve_adminq_get_create_rx_queue_cmdfunction gve_adminq_create_rx_queuefunction gve_adminq_create_single_rx_queuefunction gve_adminq_create_rx_queuesfunction gve_adminq_destroy_tx_queuefunction gve_adminq_destroy_tx_queuesfunction gve_adminq_make_destroy_rx_queue_cmdfunction gve_adminq_destroy_rx_queuefunction gve_adminq_destroy_single_rx_queuefunction gve_adminq_destroy_rx_queuesfunction gve_set_default_desc_cntfunction gve_set_default_rss_sizesfunction gve_enable_supported_featuresfunction gve_adminq_describe_devicefunction gve_adminq_register_page_listfunction gve_adminq_unregister_page_listfunction gve_adminq_report_statsfunction gve_adminq_verify_driver_compatibilityfunction gve_adminq_report_link_speedfunction gve_adminq_report_nic_tsfunction gve_adminq_get_ptype_map_dqofunction gve_adminq_configure_flow_rulefunction gve_adminq_add_flow_rulefunction gve_adminq_del_flow_rulefunction gve_adminq_reset_flow_rulesfunction gve_adminq_configure_rssfunction gve_adminq_process_flow_rules_queryfunction gve_adminq_query_flow_rulesfunction gve_adminq_process_rss_queryfunction gve_adminq_query_rss_config
Annotated Snippet
if (option_length > sizeof(**dev_op_gqi_rda)) {
dev_warn(&priv->pdev->dev,
GVE_DEVICE_OPTION_TOO_BIG_FMT, "GQI RDA");
}
*dev_op_gqi_rda = (void *)(option + 1);
break;
case GVE_DEV_OPT_ID_GQI_QPL:
if (option_length < sizeof(**dev_op_gqi_qpl) ||
req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_GQI_QPL) {
dev_warn(&priv->pdev->dev, GVE_DEVICE_OPTION_ERROR_FMT,
"GQI QPL", (int)sizeof(**dev_op_gqi_qpl),
GVE_DEV_OPT_REQ_FEAT_MASK_GQI_QPL,
option_length, req_feat_mask);
break;
}
if (option_length > sizeof(**dev_op_gqi_qpl)) {
dev_warn(&priv->pdev->dev,
GVE_DEVICE_OPTION_TOO_BIG_FMT, "GQI QPL");
}
*dev_op_gqi_qpl = (void *)(option + 1);
break;
case GVE_DEV_OPT_ID_DQO_RDA:
if (option_length < sizeof(**dev_op_dqo_rda) ||
req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_DQO_RDA) {
dev_warn(&priv->pdev->dev, GVE_DEVICE_OPTION_ERROR_FMT,
"DQO RDA", (int)sizeof(**dev_op_dqo_rda),
GVE_DEV_OPT_REQ_FEAT_MASK_DQO_RDA,
option_length, req_feat_mask);
break;
}
if (option_length > sizeof(**dev_op_dqo_rda)) {
dev_warn(&priv->pdev->dev,
GVE_DEVICE_OPTION_TOO_BIG_FMT, "DQO RDA");
}
*dev_op_dqo_rda = (void *)(option + 1);
break;
case GVE_DEV_OPT_ID_DQO_QPL:
if (option_length < sizeof(**dev_op_dqo_qpl) ||
req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_DQO_QPL) {
dev_warn(&priv->pdev->dev, GVE_DEVICE_OPTION_ERROR_FMT,
"DQO QPL", (int)sizeof(**dev_op_dqo_qpl),
GVE_DEV_OPT_REQ_FEAT_MASK_DQO_QPL,
option_length, req_feat_mask);
break;
}
if (option_length > sizeof(**dev_op_dqo_qpl)) {
dev_warn(&priv->pdev->dev,
GVE_DEVICE_OPTION_TOO_BIG_FMT, "DQO QPL");
}
*dev_op_dqo_qpl = (void *)(option + 1);
break;
case GVE_DEV_OPT_ID_JUMBO_FRAMES:
if (option_length < sizeof(**dev_op_jumbo_frames) ||
req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_JUMBO_FRAMES) {
dev_warn(&priv->pdev->dev, GVE_DEVICE_OPTION_ERROR_FMT,
"Jumbo Frames",
(int)sizeof(**dev_op_jumbo_frames),
GVE_DEV_OPT_REQ_FEAT_MASK_JUMBO_FRAMES,
option_length, req_feat_mask);
break;
}
if (option_length > sizeof(**dev_op_jumbo_frames)) {
dev_warn(&priv->pdev->dev,
GVE_DEVICE_OPTION_TOO_BIG_FMT,
"Jumbo Frames");
}
*dev_op_jumbo_frames = (void *)(option + 1);
break;
case GVE_DEV_OPT_ID_BUFFER_SIZES:
if (option_length < sizeof(**dev_op_buffer_sizes) ||
req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_BUFFER_SIZES) {
dev_warn(&priv->pdev->dev, GVE_DEVICE_OPTION_ERROR_FMT,
"Buffer Sizes",
(int)sizeof(**dev_op_buffer_sizes),
GVE_DEV_OPT_REQ_FEAT_MASK_BUFFER_SIZES,
option_length, req_feat_mask);
break;
}
if (option_length > sizeof(**dev_op_buffer_sizes))
dev_warn(&priv->pdev->dev,
GVE_DEVICE_OPTION_TOO_BIG_FMT,
"Buffer Sizes");
*dev_op_buffer_sizes = (void *)(option + 1);
break;
case GVE_DEV_OPT_ID_MODIFY_RING:
Annotation
- Immediate include surface: `linux/etherdevice.h`, `linux/pci.h`, `gve.h`, `gve_adminq.h`, `gve_register.h`.
- Detected declarations: `function Copyright`, `function gve_parse_device_option`, `function gve_process_device_options`, `function gve_adminq_alloc`, `function gve_adminq_release`, `function gve_adminq_free`, `function gve_adminq_kick_cmd`, `function gve_adminq_wait_for_cmd`, `function gve_adminq_parse_err`, `function gve_adminq_kick_and_wait`.
- 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.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.