drivers/net/ethernet/ibm/ibmvnic.h
Source file repositories/reference/linux-study-clean/drivers/net/ethernet/ibm/ibmvnic.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/ethernet/ibm/ibmvnic.h- Extension
.h- Size
- 26177 bytes
- Lines
- 1075
- 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
- No C-style include directives detected by the generator.
Detected Declarations
struct ibmvnic_login_bufferstruct ibmvnic_login_rsp_bufferstruct ibmvnic_query_ip_offload_bufferstruct ibmvnic_control_ip_offload_bufferstruct ibmvnic_fw_componentstruct ibmvnic_fw_trace_entrystruct ibmvnic_statisticsstruct ibmvnic_tx_queue_statsstruct ibmvnic_rx_queue_statsstruct ibmvnic_acl_bufferstruct ibmvnic_tx_comp_descstruct ibmvnic_tx_descstruct ibmvnic_hdr_descstruct ibmvnic_hdr_ext_descstruct ibmvnic_sge_descstruct ibmvnic_rx_comp_descstruct ibmvnic_generic_scrqstruct ibmvnic_rx_buff_add_descstruct ibmvnic_rcstruct ibmvnic_generic_crqstruct ibmvnic_version_exchangestruct ibmvnic_capabilitystruct ibmvnic_loginstruct ibmvnic_phys_parmsstruct ibmvnic_logical_link_statestruct ibmvnic_query_ip_offloadstruct ibmvnic_control_ip_offloadstruct ibmvnic_request_statisticsstruct ibmvnic_error_indicationstruct ibmvnic_link_state_indicationstruct ibmvnic_change_mac_addrstruct ibmvnic_multicast_ctrlstruct ibmvnic_get_vpd_sizestruct ibmvnic_get_vpd_size_rspstruct ibmvnic_get_vpdstruct ibmvnic_get_vpd_rspstruct ibmvnic_acl_change_indicationstruct ibmvnic_acl_querystruct ibmvnic_tunestruct ibmvnic_request_mapstruct ibmvnic_request_map_rspstruct ibmvnic_request_unmapstruct ibmvnic_request_unmap_rspstruct ibmvnic_query_mapstruct ibmvnic_query_map_rspstruct ibmvnic_crq_queuestruct ibmvnic_ind_xmit_queuestruct ibmvnic_sub_crq_queue
Annotated Snippet
struct ibmvnic_login_buffer {
__be32 len;
__be32 version;
#define INITIAL_VERSION_LB 1
__be32 num_txcomp_subcrqs;
__be32 off_txcomp_subcrqs;
__be32 num_rxcomp_subcrqs;
__be32 off_rxcomp_subcrqs;
__be32 login_rsp_ioba;
__be32 login_rsp_len;
__be32 client_data_offset;
__be32 client_data_len;
} __packed __aligned(8);
struct ibmvnic_login_rsp_buffer {
__be32 len;
__be32 version;
#define INITIAL_VERSION_LRB 1
__be32 num_txsubm_subcrqs;
__be32 off_txsubm_subcrqs;
__be32 num_rxadd_subcrqs;
__be32 off_rxadd_subcrqs;
__be32 off_rxadd_buff_size;
__be32 num_supp_tx_desc;
__be32 off_supp_tx_desc;
} __packed __aligned(8);
struct ibmvnic_query_ip_offload_buffer {
__be32 len;
__be32 version;
#define INITIAL_VERSION_IOB 1
u8 ipv4_chksum;
u8 ipv6_chksum;
u8 tcp_ipv4_chksum;
u8 tcp_ipv6_chksum;
u8 udp_ipv4_chksum;
u8 udp_ipv6_chksum;
u8 large_tx_ipv4;
u8 large_tx_ipv6;
u8 large_rx_ipv4;
u8 large_rx_ipv6;
u8 reserved1[14];
__be16 max_ipv4_header_size;
__be16 max_ipv6_header_size;
__be16 max_tcp_header_size;
__be16 max_udp_header_size;
__be32 max_large_tx_size;
__be32 max_large_rx_size;
u8 reserved2[16];
u8 ipv6_extension_header;
#define IPV6_EH_NOT_SUPPORTED 0x00
#define IPV6_EH_SUPPORTED_LIM 0x01
#define IPV6_EH_SUPPORTED 0xFF
u8 tcp_pseudosum_req;
#define TCP_PS_NOT_REQUIRED 0x00
#define TCP_PS_REQUIRED 0x01
u8 reserved3[30];
__be16 num_ipv6_ext_headers;
__be32 off_ipv6_ext_headers;
u8 reserved4[154];
} __packed __aligned(8);
struct ibmvnic_control_ip_offload_buffer {
__be32 len;
__be32 version;
#define INITIAL_VERSION_IOB 1
u8 ipv4_chksum;
u8 ipv6_chksum;
u8 tcp_ipv4_chksum;
u8 tcp_ipv6_chksum;
u8 udp_ipv4_chksum;
u8 udp_ipv6_chksum;
u8 large_tx_ipv4;
u8 large_tx_ipv6;
u8 bad_packet_rx;
u8 large_rx_ipv4;
u8 large_rx_ipv6;
u8 reserved4[111];
} __packed __aligned(8);
struct ibmvnic_fw_component {
u8 name[48];
__be32 trace_buff_size;
u8 correlator;
u8 trace_level;
u8 parent_correlator;
u8 error_check_level;
u8 trace_on;
u8 reserved[7];
u8 description[192];
Annotation
- Detected declarations: `struct ibmvnic_login_buffer`, `struct ibmvnic_login_rsp_buffer`, `struct ibmvnic_query_ip_offload_buffer`, `struct ibmvnic_control_ip_offload_buffer`, `struct ibmvnic_fw_component`, `struct ibmvnic_fw_trace_entry`, `struct ibmvnic_statistics`, `struct ibmvnic_tx_queue_stats`, `struct ibmvnic_rx_queue_stats`, `struct ibmvnic_acl_buffer`.
- 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.