58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
/******************************************************************************
|
|
* Copyright (c) 2011 IBM Corporation
|
|
* All rights reserved.
|
|
* This program and the accompanying materials
|
|
* are made available under the terms of the BSD License
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.opensource.org/licenses/bsd-license.php
|
|
*
|
|
* Contributors:
|
|
* IBM Corporation - initial implementation
|
|
*****************************************************************************/
|
|
|
|
#ifndef VIRTIO_NET_H
|
|
#define VIRTIO_NET_H
|
|
|
|
#define RX_QUEUE_SIZE 16
|
|
#define BUFFER_ENTRY_SIZE 1514
|
|
|
|
enum {
|
|
VQ_RX = 0, /* Receive Queue */
|
|
VQ_TX = 1, /* Transmit Queue */
|
|
};
|
|
|
|
struct vqs {
|
|
uint64_t id; /* Queue ID */
|
|
uint32_t size;
|
|
void *buf_mem;
|
|
struct vring_desc *desc;
|
|
struct vring_avail *avail;
|
|
struct vring_used *used;
|
|
};
|
|
|
|
extern struct vqs vq[2];
|
|
extern struct virtio_device virtiodev;
|
|
|
|
/* Device is identified by RX queue ID: */
|
|
#define DEVICE_ID vq[0].id
|
|
|
|
extern snk_kernel_t *snk_kernel_interface;
|
|
extern snk_module_t *snk_module_interface;
|
|
extern snk_module_t virtionet_interface;
|
|
|
|
#define printk(fmt...) do { snk_kernel_interface->print(fmt); } while(0)
|
|
#define malloc(args...) snk_kernel_interface->k_malloc(args)
|
|
#define malloc_aligned(args...) snk_kernel_interface->k_malloc_aligned(args)
|
|
#define free(args...) do { snk_kernel_interface->k_free(args); } while(0)
|
|
|
|
#undef DEBUG
|
|
#ifdef DEBUG
|
|
# define dprintk(fmt...) printk(fmt)
|
|
#else
|
|
# define dprintk(fmt...)
|
|
#endif
|
|
|
|
int vn_module_init_pci(snk_kernel_t *snk_kernel_int, pci_config_t *conf);
|
|
|
|
#endif
|