*/
#include <devices/pci.h>
-#include <devices/ne2k.h>
+#include <config/ne2k.h>
#include <palacios/vmm.h>
#include <palacios/vmm_types.h>
#include <palacios/vmm_io.h>
#include <palacios/vmm_debug.h>
#include <palacios/vmm_string.h>
+#include <palacios/vmm_dev_mgr.h>
+#include <palacios/vmm_intr.h>
-#ifndef DEBUG_NE2K
+#ifndef CONFIG_DEBUG_NE2K
#undef PrintDebug
#define PrintDebug(fmts, args...)
#endif
} __attribute__((packed));
-
-
-
uint8_t mcast_addr[8]; // multicast mask array
uint8_t mac_addr[6]; // MAC Addr
-
-
-
uint8_t mem[NE2K_MEM_SIZE];
struct pci_device * pci_dev;
#define compare_mac(src, dst) !memcmp(src, dst, 6)
-#ifdef DEBUG_NE2K
+#ifdef CONFIG_DEBUG_NE2K
static void dump_state(struct vm_device * dev) {
struct ne2k_context *nic_state = (struct ne2k_context *)dev->private_data;
int i;
static int ne2k_update_irq(struct vm_device *dev) {
- struct ne2k_context * nic_state = (struct ne2k_context *)dev->private_data;
+ struct ne2k_context * nic_state = (struct ne2k_context *)(dev->private_data);
struct pci_device * pci_dev = nic_state->pci_dev;
int irq_line = 0;
PrintDebug("Ne2k: Device %p is not attached to any PCI Bus\n", nic_state);
irq_line = NE2K_DEFAULT_IRQ;
} else {
- irq_line = pdev->config_header.intr_line;
+ irq_line = pci_dev->config_header.intr_line;
}
if (irq_line == 0){
return -1;
}
- PrintDebug("Ne2k: RaiseIrq: isr: 0x%02x imr: 0x%02x\n", nic_state->isr.val, nic_state->imr.val);
PrintDebug("ne2k_update_irq: irq_line: %d\n", irq_line);
// The top bit of the ISR/IMR is reserved and does not indicate and irq event
// We mask the bit out of the irq pending check
if ((nic_state->isr.val & nic_state->imr.val) & 0x7f) {
- v3_raise_irq(nic_state->vm, irq_line);
+ v3_raise_virq(nic_state->vm, irq_line);
PrintDebug("Ne2k: RaiseIrq: isr: 0x%02x imr: 0x%02x\n", nic_state->isr.val, nic_state->imr.val);
}
nic_state->vm = dev->vm;
- nic_state->isr.reset = 1;
+ nic_state->isr.reset_status = 1;
nic_state->imr.val = 0x00;
nic_state->cmd.val = 0x22;
nic_state->mem[14] = 0x57;
nic_state->mem[15] = 0x57;
-#ifdef DEBUG_NE2K
+#ifdef CONFIG_DEBUG_NE2K
dump_state(dev);
#endif
uint32_t total_len;
uint32_t next;
uint32_t len;
- uin32_t index;
+ uint32_t index;
uint32_t empty;
uchar_t buf[60];
uint32_t start;
p = nic_state->mem + index;
nic_state->rsr.val = 0;
- nic_state->rsr.rx_pkt_ok = 1;
+ nic_state->rsr.pkt_rx_ok = 1;
if (pkt[0] & 0x01) {
nic_state->rsr.phy = 1;
static const uchar_t brocast_mac[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
int i;
-#ifdef DEBUG_NE2K
+#ifdef CONFIG_DEBUG_NE2K
PrintDebug("\nNe2k: Packet Received:\nSource:");
for (i = 6; i < 12; i++) {
PrintDebug("%x ", pkt[i]);
nic_state->cmd.val = *(uint8_t *)src;
if (!(nic_state->cmd.stop)) {
- nic_state->isr.reset = 0;
+ nic_state->isr.reset_status = 0;
// if ((send pkt) && (dma byte count == 0))
}
-#ifdef DEBUG_NE2K
+#ifdef CONFIG_DEBUG_NE2K
dump_state(dev);
#endif
}
-static struct vm_device_ops dev_ops = {
+static struct v3_device_ops dev_ops = {
.init = ne2k_init_device,
.deinit = ne2k_deinit_device,
.reset = ne2k_reset_device,