drivers/net/ethernet/qlogic/qed/qed_hsi.h
Source file repositories/reference/linux-study-clean/drivers/net/ethernet/qlogic/qed/qed_hsi.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/ethernet/qlogic/qed/qed_hsi.h- Extension
.h- Size
- 393402 bytes
- Lines
- 10881
- 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/types.hlinux/io.hlinux/bitops.hlinux/delay.hlinux/kernel.hlinux/list.hlinux/slab.hlinux/qed/common_hsi.hlinux/qed/storage_common.hlinux/qed/tcp_common.hlinux/qed/fcoe_common.hlinux/qed/eth_common.hlinux/qed/iscsi_common.hlinux/qed/nvmetcp_common.hlinux/qed/iwarp_common.hlinux/qed/rdma_common.hlinux/qed/roce_common.hlinux/qed/qed_fcoe_if.h
Detected Declarations
struct qed_hwfnstruct qed_pttstruct core_ll2_port_statsstruct core_ll2_pstorm_per_queue_statstruct core_ll2_rx_prodstruct core_ll2_tstorm_per_queue_statstruct core_ll2_ustorm_per_queue_statstruct core_ll2_rx_per_queue_statstruct core_ll2_tx_per_queue_statstruct core_pwm_prod_update_datastruct core_queue_stats_query_ramrod_datastruct core_rx_action_on_errorstruct core_rx_bdstruct core_rx_bd_with_buff_lenstruct core_rx_cqe_opaque_datastruct core_rx_fast_path_cqestruct core_rx_gsi_offload_cqestruct core_rx_slow_path_cqestruct core_rx_start_ramrod_datastruct core_rx_stop_ramrod_datastruct core_tx_bd_datastruct core_tx_bdstruct core_tx_start_ramrod_datastruct core_tx_stop_ramrod_datastruct core_tx_update_ramrod_datastruct ystorm_core_conn_st_ctxstruct pstorm_core_conn_st_ctxstruct xstorm_core_conn_st_ctxstruct xstorm_core_conn_ag_ctxstruct tstorm_core_conn_ag_ctxstruct ustorm_core_conn_ag_ctxstruct mstorm_core_conn_st_ctxstruct ustorm_core_conn_st_ctxstruct tstorm_core_conn_st_ctxstruct core_conn_contextstruct eth_mstorm_per_pf_statstruct eth_mstorm_per_queue_statstruct eth_pstorm_per_pf_statstruct eth_pstorm_per_queue_statstruct eth_rx_rate_limitstruct eth_tstorm_rss_update_datastruct eth_ustorm_per_pf_statstruct eth_ustorm_per_queue_statstruct vf_pf_channel_eqe_datastruct initial_cleanup_eqe_datastruct fw_err_datastruct event_ring_entrystruct event_ring_next_addr
Annotated Snippet
struct core_ll2_port_stats {
struct regpair gsi_invalid_hdr;
struct regpair gsi_invalid_pkt_length;
struct regpair gsi_unsupported_pkt_typ;
struct regpair gsi_crcchksm_error;
};
/* LL2 TX Per Queue Stats */
struct core_ll2_pstorm_per_queue_stat {
struct regpair sent_ucast_bytes;
struct regpair sent_mcast_bytes;
struct regpair sent_bcast_bytes;
struct regpair sent_ucast_pkts;
struct regpair sent_mcast_pkts;
struct regpair sent_bcast_pkts;
struct regpair error_drop_pkts;
};
/* Light-L2 RX Producers in Tstorm RAM */
struct core_ll2_rx_prod {
__le16 bd_prod;
__le16 cqe_prod;
};
struct core_ll2_tstorm_per_queue_stat {
struct regpair packet_too_big_discard;
struct regpair no_buff_discard;
};
struct core_ll2_ustorm_per_queue_stat {
struct regpair rcv_ucast_bytes;
struct regpair rcv_mcast_bytes;
struct regpair rcv_bcast_bytes;
struct regpair rcv_ucast_pkts;
struct regpair rcv_mcast_pkts;
struct regpair rcv_bcast_pkts;
};
struct core_ll2_rx_per_queue_stat {
struct core_ll2_tstorm_per_queue_stat tstorm_stat;
struct core_ll2_ustorm_per_queue_stat ustorm_stat;
};
struct core_ll2_tx_per_queue_stat {
struct core_ll2_pstorm_per_queue_stat pstorm_stat;
};
/* Structure for doorbell data, in PWM mode, for RX producers update. */
struct core_pwm_prod_update_data {
__le16 icid; /* internal CID */
u8 reserved0;
u8 params;
#define CORE_PWM_PROD_UPDATE_DATA_AGG_CMD_MASK 0x3
#define CORE_PWM_PROD_UPDATE_DATA_AGG_CMD_SHIFT 0
#define CORE_PWM_PROD_UPDATE_DATA_RESERVED1_MASK 0x3F /* Set 0 */
#define CORE_PWM_PROD_UPDATE_DATA_RESERVED1_SHIFT 2
struct core_ll2_rx_prod prod; /* Producers */
};
/* Ramrod data for rx/tx queue statistics query ramrod */
struct core_queue_stats_query_ramrod_data {
u8 rx_stat;
u8 tx_stat;
__le16 reserved[3];
struct regpair rx_stat_addr;
struct regpair tx_stat_addr;
};
/* Core Ramrod Command IDs (light L2) */
enum core_ramrod_cmd_id {
CORE_RAMROD_UNUSED,
CORE_RAMROD_RX_QUEUE_START,
CORE_RAMROD_TX_QUEUE_START,
CORE_RAMROD_RX_QUEUE_STOP,
CORE_RAMROD_TX_QUEUE_STOP,
CORE_RAMROD_RX_QUEUE_FLUSH,
CORE_RAMROD_TX_QUEUE_UPDATE,
CORE_RAMROD_QUEUE_STATS_QUERY,
MAX_CORE_RAMROD_CMD_ID
};
/* Core RX CQE Type for Light L2 */
enum core_roce_flavor_type {
CORE_ROCE,
CORE_RROCE,
MAX_CORE_ROCE_FLAVOR_TYPE
};
/* Specifies how ll2 should deal with packets errors: packet_too_big and
* no_buff.
Annotation
- Immediate include surface: `linux/types.h`, `linux/io.h`, `linux/bitops.h`, `linux/delay.h`, `linux/kernel.h`, `linux/list.h`, `linux/slab.h`, `linux/qed/common_hsi.h`.
- Detected declarations: `struct qed_hwfn`, `struct qed_ptt`, `struct core_ll2_port_stats`, `struct core_ll2_pstorm_per_queue_stat`, `struct core_ll2_rx_prod`, `struct core_ll2_tstorm_per_queue_stat`, `struct core_ll2_ustorm_per_queue_stat`, `struct core_ll2_rx_per_queue_stat`, `struct core_ll2_tx_per_queue_stat`, `struct core_pwm_prod_update_data`.
- 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.