Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/cxgbe/adapter.h
Show First 20 Lines • Show All 424 Lines • ▼ Show 20 Lines | |||||
* Egress Queue: driver is producer, T4 is consumer. | * Egress Queue: driver is producer, T4 is consumer. | ||||
* | * | ||||
* Note: A free list is an egress queue (driver produces the buffers and T4 | * Note: A free list is an egress queue (driver produces the buffers and T4 | ||||
* consumes them) but it's special enough to have its own struct (see sge_fl). | * consumes them) but it's special enough to have its own struct (see sge_fl). | ||||
*/ | */ | ||||
struct sge_eq { | struct sge_eq { | ||||
unsigned int flags; /* MUST be first */ | unsigned int flags; /* MUST be first */ | ||||
unsigned int cntxt_id; /* SGE context id for the eq */ | unsigned int cntxt_id; /* SGE context id for the eq */ | ||||
unsigned int abs_id; /* absolute SGE id for the eq */ | |||||
struct mtx eq_lock; | struct mtx eq_lock; | ||||
struct tx_desc *desc; /* KVA of descriptor ring */ | struct tx_desc *desc; /* KVA of descriptor ring */ | ||||
uint16_t doorbells; | uint16_t doorbells; | ||||
volatile uint32_t *udb; /* KVA of doorbell (lies within BAR2) */ | volatile uint32_t *udb; /* KVA of doorbell (lies within BAR2) */ | ||||
u_int udb_qid; /* relative qid within the doorbell page */ | u_int udb_qid; /* relative qid within the doorbell page */ | ||||
uint16_t sidx; /* index of the entry with the status page */ | uint16_t sidx; /* index of the entry with the status page */ | ||||
uint16_t cidx; /* consumer idx (desc idx) */ | uint16_t cidx; /* consumer idx (desc idx) */ | ||||
▲ Show 20 Lines • Show All 292 Lines • ▼ Show 20 Lines | struct sge { | ||||
struct sge_wrq *ctrlq; /* Control queues */ | struct sge_wrq *ctrlq; /* Control queues */ | ||||
struct sge_txq *txq; /* NIC tx queues */ | struct sge_txq *txq; /* NIC tx queues */ | ||||
struct sge_rxq *rxq; /* NIC rx queues */ | struct sge_rxq *rxq; /* NIC rx queues */ | ||||
struct sge_wrq *ofld_txq; /* TOE tx queues */ | struct sge_wrq *ofld_txq; /* TOE tx queues */ | ||||
struct sge_ofld_rxq *ofld_rxq; /* TOE rx queues */ | struct sge_ofld_rxq *ofld_rxq; /* TOE rx queues */ | ||||
struct sge_nm_txq *nm_txq; /* netmap tx queues */ | struct sge_nm_txq *nm_txq; /* netmap tx queues */ | ||||
struct sge_nm_rxq *nm_rxq; /* netmap rx queues */ | struct sge_nm_rxq *nm_rxq; /* netmap rx queues */ | ||||
uint16_t iq_start; | uint16_t iq_start; /* first cntxt_id */ | ||||
int eq_start; | uint16_t iq_base; /* first abs_id */ | ||||
int eq_start; /* first cntxt_id */ | |||||
int eq_base; /* first abs_id */ | |||||
struct sge_iq **iqmap; /* iq->cntxt_id to iq mapping */ | struct sge_iq **iqmap; /* iq->cntxt_id to iq mapping */ | ||||
struct sge_eq **eqmap; /* eq->cntxt_id to eq mapping */ | struct sge_eq **eqmap; /* eq->cntxt_id to eq mapping */ | ||||
int8_t safe_hwidx1; /* may not have room for metadata */ | int8_t safe_hwidx1; /* may not have room for metadata */ | ||||
int8_t safe_hwidx2; /* with room for metadata and maybe more */ | int8_t safe_hwidx2; /* with room for metadata and maybe more */ | ||||
struct sw_zone_info sw_zone_info[SW_ZONE_SIZES]; | struct sw_zone_info sw_zone_info[SW_ZONE_SIZES]; | ||||
struct hw_buf_info hw_buf_info[SGE_FLBUF_SIZES]; | struct hw_buf_info hw_buf_info[SGE_FLBUF_SIZES]; | ||||
}; | }; | ||||
▲ Show 20 Lines • Show All 429 Lines • Show Last 20 Lines |