1/* 2 * pci_vmio.h 3 * 4 * Virtual Network device for Host/Guest communication 5 * 6 * Created on: May 13, 2012 7 * Author: luki 8 */ 9 10#ifndef PCI_VMKITMON_ETH_H_ 11#define PCI_VMKITMON_ETH_H_ 12 13#include "pci.h" 14#include <dev/pci_hdr0_mem_dev.h> 15 16// control register 17#define PCI_VMKITMON_ETH_RSTIRQ (1<<0) //guest writes 1 if he has handled interrupt 18#define PCI_VMKITMON_ETH_TXMIT (1<<1) //guest writes 1 if it wants send packets 19#define PCI_VMKITMON_ETH_IFUP (1<<2) //guest writes 1 if interface is up 20 21// status register 22#define PCI_VMKITMON_ETH_IRQST 1 23 24// PCI device id 25#define PCI_VMKITMON_ETH_DEVID 0x1000 26 27// Memory mapped registers 28enum pci_vmkitmon_registers { 29 PCI_VMKITMON_ETH_STATUS, 30 PCI_VMKITMON_ETH_CONTROL, 31 PCI_VMKITMON_ETH_MAC_LOW, 32 PCI_VMKITMON_ETH_MAC_HIGH, 33 PCI_VMKITMON_ETH_TXDESC_ADR, //Guest Physical ptr to array of rxdescs 34 PCI_VMKITMON_ETH_TXDESC_LEN, //Packet length 35 PCI_VMKITMON_ETH_RXDESC_ADR, //Guest Physical ptr to receive buffer 36 PCI_VMKITMON_ETH_RXDESC_LEN //Size of the receive buffer 37}; 38 39struct pci_vmkitmon_eth_rxdesc { 40 uint32_t addr; 41 uint32_t len; 42}; 43 44struct pci_vmkitmon_eth_txdesc { 45 uint32_t addr; 46 uint32_t len; 47}; 48 49struct pci_vmkitmon_eth { 50 pci_hdr0_mem_t ph; 51 uint32_t pci_header[0x40]; 52 uint32_t mmio_register[8]; 53 uint32_t mem_guest_paddr; //guest physical base address of memory register 54 struct pci_device *pci_device; 55}; 56 57//#define VMKITMON_ETH_DEBUG_SWITCH 1 58#if defined(VMKITMON_ETH_DEBUG_SWITCH) 59#define VMKITMON_ETH_DEBUG(x...) printf("VMKITMON_ETH: " x) 60#else 61#define VMKITMON_ETH_DEBUG(x...) ((void)0) 62#endif 63 64#endif 65