19#define NETVSC_MAX_WAIT_MS 1000
27#define NETVSC_TX_NUM_DESC 32
33#define NETVSC_RX_BUF_PAGESET 0xbead
39#define NETVSC_RX_BUF_LEN ( 16 * PAGE_SIZE )
45#define NETVSC_BASE_XID 0x18ae0000UL
80#define NETVSC_INIT_MSG 1
95#define NETVSC_VERSION_1 2
98#define NETVSC_INIT_CMPLT 2
115#define NETVSC_NDIS_VERSION_MSG 100
130#define NETVSC_NDIS_MAJOR 6
133#define NETVSC_NDIS_MINOR 1
136#define NETVSC_RX_ESTABLISH_MSG 101
139#define NETVSC_RX_ESTABLISH_CMPLT 102
142#define NETVSC_RX_REVOKE_MSG 103
145#define NETVSC_TX_ESTABLISH_MSG 104
148#define NETVSC_TX_ESTABLISH_CMPLT 105
151#define NETVSC_TX_REVOKE_MSG 106
210#define NETVSC_RNDIS_MSG 107
227#define NETVSC_RNDIS_DATA 0
230#define NETVSC_RNDIS_CONTROL 1
233#define NETVSC_RNDIS_NO_BUFFER 0xffffffffUL
274 unsigned int fill_level;
278 return ( fill_level >= ring->
count );
#define assert(condition)
Assert a condition at run-time.
static unsigned int unsigned int size_t uint8_t * ids
static unsigned int count
Number of entries.
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
struct netvsc_ring __attribute__
#define cpu_to_le16(value)
static const char grant_ref_t unsigned int struct io_buffer ** iobufs
static uint16_t struct vmbus_xfer_pages_operations uint8_t establish_type
netvsc_xrid
Relative transaction IDs.
@ NETVSC_RX_ESTABLISH_XRID
Establish receive buffer.
@ NETVSC_RX_REVOKE_XRID
Revoke receive buffer.
@ NETVSC_NDIS_VERSION_XRID
NDIS version.
@ NETVSC_INIT_XRID
Initialisation.
@ NETVSC_TX_BASE_XRID
Transmit descriptors (one per transmit buffer ID)
static uint16_t struct vmbus_xfer_pages_operations uint8_t uint8_t uint8_t uint8_t revoke_xrid
netvsc_status
NetVSC status codes.
uint16_t pageset
Page set ID.
#define NETVSC_TX_NUM_DESC
Number of transmit ring entries.
static uint16_t struct vmbus_xfer_pages_operations * op
static uint16_t struct vmbus_xfer_pages_operations uint8_t uint8_t uint8_t revoke_type
static uint16_t struct vmbus_xfer_pages_operations uint8_t uint8_t establish_xrid
uint8_t revoke_xrid
Revoke data buffer relative transaction ID.
unsigned int gpadl
GPADL ID.
uint8_t revoke_type
Revoke data buffer message type.
uint8_t establish_xrid
Establish data buffer relative transaction ID.
struct vmbus_xfer_pages pages
Transfer page set.
uint8_t establish_type
Establish data buffer message type.
struct netvsc_buffer rx
Receive buffer.
int wait_rc
Return status code for current blocking transaction.
struct io_buffer * tx_iobufs[NETVSC_TX_NUM_DESC]
Transmit I/O buffers.
struct vmbus_device * vmdev
VMBus device.
unsigned int wait_xrid
Relative transaction ID for current blocking transaction.
struct rndis_device * rndis
RNDIS device.
struct netvsc_ring tx
Transmit ring.
uint8_t tx_ids[NETVSC_TX_NUM_DESC]
Transmit buffer IDs.
NetVSC establish data buffer message.
uint8_t reserved[22]
Reserved.
uint16_t pageset
Page set ID.
struct netvsc_header header
Message header.
NetVSC initialisation completion.
uint32_t max_mdl_len
Maximum memory descriptor list length.
struct netvsc_header header
Message header.
uint8_t reserved[16]
Reserved.
uint32_t version
Protocol version.
NetVSC initialisation message.
uint32_t min
Minimum supported protocol version.
uint8_t reserved[20]
Reserved.
uint32_t max
Maximum supported protocol version.
struct netvsc_header header
Message header.
NetVSC NDIS version message.
struct netvsc_header header
Message header.
uint8_t reserved[20]
Reserved.
uint32_t minor
Minor version.
uint32_t major
Major version.
NetVSC revoke data buffer message.
struct netvsc_header header
Message header.
uint8_t reserved[26]
Reserved.
uint16_t pageset
Page set ID.
A NetVSC descriptor ring.
unsigned int id_prod
Buffer ID producer counter.
struct io_buffer ** iobufs
I/O buffers, indexed by buffer ID.
unsigned int id_cons
Buffer ID consumer counter.
uint8_t * ids
Buffer ID ring.
unsigned int count
Number of descriptors.
uint8_t reserved[16]
Reserved.
uint32_t channel
RNDIS channel.
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
struct netvsc_header header
Message header.
uint32_t len
Buffer length.
NetVSC receive data buffer section.
uint32_t start
Starting offset.
uint32_t count
Number of subsections.
uint32_t len
Subsection length.
uint32_t end
Ending offset.
NetVSC establish receive data buffer completion.
struct netvsc_rx_buffer_section section[1]
Section descriptors.
struct netvsc_header header
Message header.
uint32_t count
Number of sections (must be 1)
NetVSC establish transmit data buffer completion.
struct netvsc_header header
Message header.
uint32_t len
Section length.
VMBus transfer page set operations.
static int vmbus_gpadl_is_obsolete(unsigned int gpadl)
Check if GPADL is obsolete.