Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/hyperv/vmbus/vmbus_reg.h
Show First 20 Lines • Show All 96 Lines • ▼ Show 20 Lines | struct vmbus_mnf { | ||||
struct hyperv_mon_param | struct hyperv_mon_param | ||||
mnf_param[VMBUS_MONTRIGS_MAX][VMBUS_MONTRIG_LEN]; | mnf_param[VMBUS_MONTRIGS_MAX][VMBUS_MONTRIG_LEN]; | ||||
uint8_t mnf_rsvd4[1984]; | uint8_t mnf_rsvd4[1984]; | ||||
} __packed; | } __packed; | ||||
CTASSERT(sizeof(struct vmbus_mnf) == PAGE_SIZE); | CTASSERT(sizeof(struct vmbus_mnf) == PAGE_SIZE); | ||||
/* | /* | ||||
* Buffer ring | |||||
*/ | |||||
struct vmbus_bufring { | |||||
/* | |||||
* If br_windex == br_rindex, this bufring is empty; this | |||||
* means we can _not_ write data to the bufring, if the | |||||
* write is going to make br_windex same as br_rindex. | |||||
*/ | |||||
volatile uint32_t br_windex; | |||||
volatile uint32_t br_rindex; | |||||
/* | |||||
* Interrupt mask {0,1} | |||||
* | |||||
* For TX bufring, host set this to 1, when it is processing | |||||
* the TX bufring, so that we can safely skip the TX event | |||||
* notification to host. | |||||
* | |||||
* For RX bufring, once this is set to 1 by us, host will not | |||||
* further dispatch interrupts to us, even if there are data | |||||
* pending on the RX bufring. This effectively disables the | |||||
* interrupt of the channel to which this RX bufring is attached. | |||||
*/ | |||||
volatile uint32_t br_imask; | |||||
uint8_t br_rsvd[4084]; | |||||
uint8_t br_data[]; | |||||
} __packed; | |||||
CTASSERT(sizeof(struct vmbus_bufring) == PAGE_SIZE); | |||||
/* | |||||
* Channel | * Channel | ||||
*/ | */ | ||||
#define VMBUS_CHAN_MAX_COMPAT 256 | #define VMBUS_CHAN_MAX_COMPAT 256 | ||||
#define VMBUS_CHAN_MAX (VMBUS_EVTFLAG_LEN * VMBUS_EVTFLAGS_MAX) | #define VMBUS_CHAN_MAX (VMBUS_EVTFLAG_LEN * VMBUS_EVTFLAGS_MAX) | ||||
/* | /* | ||||
* Channel packets | * Channel packets | ||||
▲ Show 20 Lines • Show All 190 Lines • Show Last 20 Lines |