Changeset View
Changeset View
Standalone View
Standalone View
sys/net/iflib.h
Show First 20 Lines • Show All 113 Lines • ▼ Show 20 Lines | typedef struct if_pkt_info { | ||||
uint16_t ipi_qsidx; /* queue set index */ | uint16_t ipi_qsidx; /* queue set index */ | ||||
qidx_t ipi_nsegs; /* number of segments */ | qidx_t ipi_nsegs; /* number of segments */ | ||||
qidx_t ipi_ndescs; /* number of descriptors used by encap */ | qidx_t ipi_ndescs; /* number of descriptors used by encap */ | ||||
uint16_t ipi_flags; /* iflib per-packet flags */ | uint16_t ipi_flags; /* iflib per-packet flags */ | ||||
qidx_t ipi_pidx; /* start pidx for encap */ | qidx_t ipi_pidx; /* start pidx for encap */ | ||||
qidx_t ipi_new_pidx; /* next available pidx post-encap */ | qidx_t ipi_new_pidx; /* next available pidx post-encap */ | ||||
/* offload handling */ | /* offload handling */ | ||||
caddr_t ipi_hdr_data; /* raw header */ | |||||
uint8_t ipi_ehdrlen; /* ether header length */ | uint8_t ipi_ehdrlen; /* ether header length */ | ||||
uint8_t ipi_ip_hlen; /* ip header length */ | uint8_t ipi_ip_hlen; /* ip header length */ | ||||
uint8_t ipi_tcp_hlen; /* tcp header length */ | uint8_t ipi_tcp_hlen; /* tcp header length */ | ||||
uint8_t ipi_ipproto; /* ip protocol */ | uint8_t ipi_ipproto; /* ip protocol */ | ||||
uint32_t ipi_csum_flags; /* packet checksum flags */ | uint32_t ipi_csum_flags; /* packet checksum flags */ | ||||
uint16_t ipi_tso_segsz; /* tso segment size */ | uint16_t ipi_tso_segsz; /* tso segment size */ | ||||
uint16_t ipi_vtag; /* VLAN tag */ | uint16_t ipi_vtag; /* VLAN tag */ | ||||
▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | typedef struct if_txrx { | ||||
void (*ift_txd_flush) (void *, uint16_t, qidx_t pidx); | void (*ift_txd_flush) (void *, uint16_t, qidx_t pidx); | ||||
int (*ift_txd_credits_update) (void *, uint16_t qsidx, bool clear); | int (*ift_txd_credits_update) (void *, uint16_t qsidx, bool clear); | ||||
int (*ift_rxd_available) (void *, uint16_t qsidx, qidx_t pidx, qidx_t budget); | int (*ift_rxd_available) (void *, uint16_t qsidx, qidx_t pidx, qidx_t budget); | ||||
int (*ift_rxd_pkt_get) (void *, if_rxd_info_t ri); | int (*ift_rxd_pkt_get) (void *, if_rxd_info_t ri); | ||||
void (*ift_rxd_refill) (void * , if_rxd_update_t iru); | void (*ift_rxd_refill) (void * , if_rxd_update_t iru); | ||||
void (*ift_rxd_flush) (void *, uint16_t qsidx, uint8_t flidx, qidx_t pidx); | void (*ift_rxd_flush) (void *, uint16_t qsidx, uint8_t flidx, qidx_t pidx); | ||||
int (*ift_legacy_intr) (void *); | int (*ift_legacy_intr) (void *); | ||||
int (*ift_txd_errata) (void *, struct mbuf **mp); | |||||
} *if_txrx_t; | } *if_txrx_t; | ||||
typedef struct if_softc_ctx { | typedef struct if_softc_ctx { | ||||
int isc_vectors; | int isc_vectors; | ||||
int isc_nrxqsets; | int isc_nrxqsets; | ||||
int isc_ntxqsets; | int isc_ntxqsets; | ||||
int isc_msix_bar; /* can be model specific - initialize in attach_pre */ | int isc_msix_bar; /* can be model specific - initialize in attach_pre */ | ||||
int isc_tx_nsegments; /* can be model specific - initialize in attach_pre */ | int isc_tx_nsegments; /* can be model specific - initialize in attach_pre */ | ||||
▲ Show 20 Lines • Show All 95 Lines • ▼ Show 20 Lines | |||||
* Interface is a virtual function | * Interface is a virtual function | ||||
*/ | */ | ||||
#define IFLIB_IS_VF 0x04 | #define IFLIB_IS_VF 0x04 | ||||
/* | /* | ||||
* Interface has a separate command queue for TX | * Interface has a separate command queue for TX | ||||
*/ | */ | ||||
#define IFLIB_HAS_TXCQ 0x08 | #define IFLIB_HAS_TXCQ 0x08 | ||||
/* | /* | ||||
* Interface does checksum in place | * | ||||
*/ | */ | ||||
#define IFLIB_NEED_SCRATCH 0x10 | #define IFLIB_UNUSED___0 0x10 | ||||
/* | /* | ||||
* Interface doesn't expect in_pseudo for th_sum | * Interface doesn't expect in_pseudo for th_sum | ||||
*/ | */ | ||||
#define IFLIB_TSO_INIT_IP 0x20 | #define IFLIB_TSO_INIT_IP 0x20 | ||||
/* | /* | ||||
* Interface doesn't align IP header | * Interface doesn't align IP header | ||||
*/ | */ | ||||
#define IFLIB_DO_RX_FIXUP 0x40 | #define IFLIB_DO_RX_FIXUP 0x40 | ||||
/* | |||||
* Driver needs csum zeroed for offloading | |||||
*/ | |||||
#define IFLIB_NEED_ZERO_CSUM 0x80 | |||||
/* | /* | ||||
* field accessors | * field accessors | ||||
*/ | */ | ||||
void *iflib_get_softc(if_ctx_t ctx); | void *iflib_get_softc(if_ctx_t ctx); | ||||
▲ Show 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | |||||
int iflib_dma_alloc(if_ctx_t ctx, int size, iflib_dma_info_t dma, int mapflags); | int iflib_dma_alloc(if_ctx_t ctx, int size, iflib_dma_info_t dma, int mapflags); | ||||
void iflib_dma_free(iflib_dma_info_t dma); | void iflib_dma_free(iflib_dma_info_t dma); | ||||
int iflib_dma_alloc_multi(if_ctx_t ctx, int *sizes, iflib_dma_info_t *dmalist, int mapflags, int count); | int iflib_dma_alloc_multi(if_ctx_t ctx, int *sizes, iflib_dma_info_t *dmalist, int mapflags, int count); | ||||
void iflib_dma_free_multi(iflib_dma_info_t *dmalist, int count); | void iflib_dma_free_multi(iflib_dma_info_t *dmalist, int count); | ||||
struct mtx *iflib_ctx_lock_get(if_ctx_t); | struct sx *iflib_ctx_lock_get(if_ctx_t); | ||||
struct mtx *iflib_qset_lock_get(if_ctx_t, uint16_t); | struct mtx *iflib_qset_lock_get(if_ctx_t, uint16_t); | ||||
void iflib_led_create(if_ctx_t ctx); | void iflib_led_create(if_ctx_t ctx); | ||||
void iflib_add_int_delay_sysctl(if_ctx_t, const char *, const char *, | void iflib_add_int_delay_sysctl(if_ctx_t, const char *, const char *, | ||||
if_int_delay_info_t, int, int); | if_int_delay_info_t, int, int); | ||||
#endif /* __IFLIB_H_ */ | #endif /* __IFLIB_H_ */ |