#include "sysemu/sysemu.h" #include "sysemu/dma.h" #include "e1000_hw.h" #define E1000_DEBUG #ifdef E1000_DEBUG enum { DEBUG_GENERAL, DEBUG_IO, DEBUG_MMIO, DEBUG_INTERRUPT, DEBUG_RX, DEBUG_TX, DEBUG_MDIC, DEBUG_EEPROM, DEBUG_UNKNOWN, DEBUG_TXSUM, DEBUG_TXERR, DEBUG_RXERR, DEBUG_RXFILTER, DEBUG_PHY, DEBUG_NOTYET, }; #define DBGBIT(x) (1<<DEBUG_##x) static int debugflags = DBGBIT(TXERR) | DBGBIT(GENERAL); #define DBGOUT(what, fmt, ...) do { \ if (debugflags & DBGBIT(what)) \ fprintf(stderr, "e1000: " fmt, ## __VA_ARGS__); \ } while (0) #else #define DBGOUT(what, fmt, ...) do {} while (0) #endif #define IOPORT_SIZE 0x40 #define PNPMMIO_SIZE 0x20000 #define MIN_BUF_SIZE 60 /* Min. octets in an ethernet frame sans FCS */ /* this is the size past which hardware will drop packets when setting LPE=0 */ #define MAXIMUM_ETHERNET_VLAN_SIZE 1522
/*#define DBG */ #define MODULE_NAME "netc" #include <driver.h> #include <sys/list.h> #include <sys/queue.h> #include <sys/ioctl.h> #include <sys/dbg.h> #include <net.h> #include "dbuf.h" #include "netdrv.h" #ifdef DBG static int debugflags = DBGBIT(INFO) | DBGBIT(TRACE); #endif #define MAX_NET_DEVS 10 static int net_open(device_t, int); static int net_close(device_t); static int net_ioctl(device_t, u_long, void *); static int net_devctl(device_t, u_long, void *); static int net_init(struct driver *); struct net_softc { device_t net_devs[MAX_NET_DEVS]; struct net_driver *net_drvs[MAX_NET_DEVS]; int nrdevs; int isopen;