Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/hyperv/netvsc/if_hnvar.h
Show All 27 Lines | |||||
#ifndef _IF_HNVAR_H_ | #ifndef _IF_HNVAR_H_ | ||||
#define _IF_HNVAR_H_ | #define _IF_HNVAR_H_ | ||||
#define HN_USE_TXDESC_BUFRING | #define HN_USE_TXDESC_BUFRING | ||||
#define HN_CHIM_SIZE (15 * 1024 * 1024) | #define HN_CHIM_SIZE (15 * 1024 * 1024) | ||||
#define HN_RXBUF_SIZE (16 * 1024 * 1024) | #define HN_RXBUF_SIZE (31 * 1024 * 1024) | ||||
#define HN_RXBUF_SIZE_COMPAT (15 * 1024 * 1024) | #define HN_RXBUF_SIZE_COMPAT (15 * 1024 * 1024) | ||||
#define HN_MTU_MAX (65535 - ETHER_ADDR_LEN) | #define HN_MTU_MAX (65535 - ETHER_ADDR_LEN) | ||||
#define HN_TXBR_SIZE (128 * PAGE_SIZE) | #define HN_TXBR_SIZE (128 * PAGE_SIZE) | ||||
#define HN_RXBR_SIZE (128 * PAGE_SIZE) | #define HN_RXBR_SIZE (128 * PAGE_SIZE) | ||||
#define HN_XACT_REQ_PGCNT 2 | #define HN_XACT_REQ_PGCNT 2 | ||||
#define HN_XACT_RESP_PGCNT 2 | #define HN_XACT_RESP_PGCNT 2 | ||||
#define HN_XACT_REQ_SIZE (HN_XACT_REQ_PGCNT * PAGE_SIZE) | #define HN_XACT_REQ_SIZE (HN_XACT_REQ_PGCNT * PAGE_SIZE) | ||||
#define HN_XACT_RESP_SIZE (HN_XACT_RESP_PGCNT * PAGE_SIZE) | #define HN_XACT_RESP_SIZE (HN_XACT_RESP_PGCNT * PAGE_SIZE) | ||||
#define HN_GPACNT_MAX 32 | #define HN_GPACNT_MAX 32 | ||||
struct hn_txdesc; | struct hn_txdesc; | ||||
#ifndef HN_USE_TXDESC_BUFRING | #ifndef HN_USE_TXDESC_BUFRING | ||||
SLIST_HEAD(hn_txdesc_list, hn_txdesc); | SLIST_HEAD(hn_txdesc_list, hn_txdesc); | ||||
#else | #else | ||||
struct buf_ring; | struct buf_ring; | ||||
#endif | #endif | ||||
struct hn_tx_ring; | struct hn_tx_ring; | ||||
#define HN_NVS_RSC_MAX 562 /* Max RSC frags in one vmbus packet */ | |||||
struct hn_rx_rsc { | |||||
const uint32_t *vlan_info; | |||||
const uint32_t *csum_info; | |||||
const uint32_t *hash_info; | |||||
const uint32_t *hash_value; | |||||
uint32_t cnt; /* fragment count */ | |||||
uint32_t pktlen; /* full packet length */ | |||||
uint8_t is_last; /* last fragment */ | |||||
const void *frag_data[HN_NVS_RSC_MAX]; | |||||
uint32_t frag_len[HN_NVS_RSC_MAX]; | |||||
}; | |||||
struct hn_rx_ring { | struct hn_rx_ring { | ||||
struct ifnet *hn_ifp; | struct ifnet *hn_ifp; | ||||
struct ifnet *hn_rxvf_ifp; /* SR-IOV VF for RX */ | struct ifnet *hn_rxvf_ifp; /* SR-IOV VF for RX */ | ||||
struct hn_tx_ring *hn_txr; | struct hn_tx_ring *hn_txr; | ||||
void *hn_pktbuf; | void *hn_pktbuf; | ||||
int hn_pktbuf_len; | int hn_pktbuf_len; | ||||
int hn_rx_flags; /* HN_RX_FLAG_ */ | int hn_rx_flags; /* HN_RX_FLAG_ */ | ||||
uint32_t hn_mbuf_hash; /* NDIS_HASH_ */ | uint32_t hn_mbuf_hash; /* NDIS_HASH_ */ | ||||
uint8_t *hn_rxbuf; /* shadow sc->hn_rxbuf */ | uint8_t *hn_rxbuf; /* shadow sc->hn_rxbuf */ | ||||
int hn_rx_idx; | int hn_rx_idx; | ||||
struct hn_rx_rsc rsc; | |||||
/* Trust csum verification on host side */ | /* Trust csum verification on host side */ | ||||
int hn_trust_hcsum; /* HN_TRUST_HCSUM_ */ | int hn_trust_hcsum; /* HN_TRUST_HCSUM_ */ | ||||
struct lro_ctrl hn_lro; | struct lro_ctrl hn_lro; | ||||
u_long hn_csum_ip; | u_long hn_csum_ip; | ||||
u_long hn_csum_tcp; | u_long hn_csum_tcp; | ||||
u_long hn_csum_udp; | u_long hn_csum_udp; | ||||
u_long hn_csum_trusted; | u_long hn_csum_trusted; | ||||
u_long hn_lro_tried; | u_long hn_lro_tried; | ||||
u_long hn_small_pkts; | u_long hn_small_pkts; | ||||
u_long hn_pkts; | u_long hn_pkts; | ||||
u_long hn_rss_pkts; | u_long hn_rss_pkts; | ||||
u_long hn_ack_failed; | u_long hn_ack_failed; | ||||
u_long hn_rsc_pkts; | |||||
u_long hn_rsc_drop; | |||||
/* Rarely used stuffs */ | /* Rarely used stuffs */ | ||||
struct sysctl_oid *hn_rx_sysctl_tree; | struct sysctl_oid *hn_rx_sysctl_tree; | ||||
void *hn_br; /* TX/RX bufring */ | void *hn_br; /* TX/RX bufring */ | ||||
struct hyperv_dma hn_br_dma; | struct hyperv_dma hn_br_dma; | ||||
struct vmbus_channel *hn_chan; | struct vmbus_channel *hn_chan; | ||||
▲ Show 20 Lines • Show All 228 Lines • Show Last 20 Lines |