13 #define NETVSC_MTU 512 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 );
288 netvsc_ring_is_empty (
struct netvsc_ring *ring ) {
uint32_t count
Number of subsections.
unsigned int count
Number of descriptors.
NetVSC initialisation message.
static unsigned int struct io_buffer ** iobufs
uint16_t pageset
Page set ID.
static uint16_t struct vmbus_xfer_pages_operations uint8_t uint8_t uint8_t revoke_type
uint8_t reserved[22]
Reserved.
uint32_t minor
Minor version.
uint32_t max
Maximum supported protocol version.
struct netvsc_header header
Message header.
uint32_t len
Subsection length.
Establish receive buffer.
unsigned int id_cons
Buffer ID consumer counter.
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
uint32_t end
Ending offset.
NetVSC establish transmit data buffer completion.
uint32_t channel
RNDIS channel.
struct netvsc_header header
Message header.
NetVSC establish receive data buffer completion.
uint8_t reserved[20]
Reserved.
uint16_t pageset
Page set ID.
struct netvsc_header header
Message header.
uint32_t len
Buffer length.
uint32_t len
Section length.
struct io_buffer ** iobufs
I/O buffers, indexed by buffer ID.
uint32_t userptr_t
A pointer to a user buffer.
struct netvsc_ring __attribute__
static uint16_t struct vmbus_xfer_pages_operations uint8_t uint8_t establish_xrid
static int vmbus_gpadl_is_obsolete(unsigned int gpadl)
Check if GPADL is obsolete.
struct netvsc_header header
Message header.
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
unsigned int id_prod
Buffer ID producer counter.
NetVSC establish data buffer message.
struct netvsc_ring tx
Transmit ring.
static unsigned int struct io_buffer uint8_t * ids
static uint16_t struct vmbus_xfer_pages_operations uint8_t uint8_t uint8_t uint8_t revoke_xrid
struct netvsc_header header
Message header.
uint32_t count
Number of sections (must be 1)
uint32_t major
Major version.
uint32_t max_mdl_len
Maximum memory descriptor list length.
uint8_t reserved[26]
Reserved.
uint8_t reserved[16]
Reserved.
uint8_t revoke_type
Revoke data buffer message type.
uint8_t reserved[20]
Reserved.
uint16_t pageset
Page set ID.
struct vmbus_xfer_pages pages
Transfer page set.
struct io_buffer * tx_iobufs[NETVSC_TX_NUM_DESC]
Transmit I/O buffers.
#define NETVSC_TX_NUM_DESC
Number of transmit ring entries.
netvsc_xrid
Relative transaction IDs.
uint8_t revoke_xrid
Revoke data buffer relative transaction ID.
unsigned int gpadl
GPADL ID.
uint8_t tx_ids[NETVSC_TX_NUM_DESC]
Transmit buffer IDs.
unsigned int wait_xrid
Relative transaction ID for current blocking transaction.
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
A NetVSC descriptor ring.
struct netvsc_header header
Message header.
VMBus transfer page set operations.
static uint16_t struct vmbus_xfer_pages_operations * op
uint32_t min
Minimum supported protocol version.
uint32_t count
Number of subsections.
struct vmbus_device * vmdev
VMBus device.
uint32_t len
Subsection length.
NetVSC receive data buffer section.
struct netvsc_rx_buffer_section section[1]
Section descriptors.
uint32_t start
Starting offset.
uint8_t establish_xrid
Establish data buffer relative transaction ID.
#define cpu_to_le16(value)
NetVSC NDIS version message.
netvsc_status
NetVSC status codes.
NetVSC revoke data buffer message.
Transmit descriptors (one per transmit buffer ID)
static uint16_t struct vmbus_xfer_pages_operations uint8_t establish_type
uint8_t reserved[16]
Reserved.
struct rndis_device * rndis
RNDIS device.
struct netvsc_header header
Message header.
NetVSC initialisation completion.
struct netvsc_buffer rx
Receive buffer.
int wait_rc
Return status code for current blocking transaction.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
uint8_t * ids
Buffer ID ring.
uint8_t establish_type
Establish data buffer message type.
struct netvsc_header header
Message header.
uint32_t version
Protocol version.