}
#ifdef CONFIG_VNET_PROFILE
- if (virtio_state->pkt_sent % 10000 == 0)
- PrintError("Virtio NIC: sent: %ld, rxed: %ld, dropped: %ld\n",
+ if (virtio_state->pkt_sent % 10000 == 0){
+ PrintError("Virtio NIC: sent: %ld, rxed: %ld, dropped: %ld\n",
virtio_state->pkt_sent,
virtio_state->pkt_recv,
virtio_state->pkt_drop);
-
+ }
#endif
return 0;
exit:
#ifdef CONFIG_VNET_PROFILE
- if (virtio->pkt_recv % 10000 == 0)
+ if (virtio->pkt_recv % 100000 == 0){
PrintError("Virtio NIC: sent: %ld, rxed: %ld, dropped: %ld\n",
- virtio->pkt_sent,
- virtio->pkt_recv,
- virtio->pkt_drop);
-
+ virtio->pkt_sent,
+ virtio->pkt_recv,
+ virtio->pkt_drop);
+ }
#endif
v3_unlock_irqrestore(virtio->lock, flags);
vnet_state->pkt_sent,
vnet_state->pkt_recv,
vnet_state->pkt_drop);
-
#endif
v3_unlock_irqrestore(vnet_state->lock, flags);
//interrupt the vnet to poll pkts
int cpu = V3_Get_CPU();
cpu = (cpu == 0)?1:0;
- V3_lapic_send_ipi(cpu, V3_VNET_POLLING_VECTOR);
+ v3_interrupt_cpu(vnet_state->vm, cpu, V3_VNET_POLLING_VECTOR);
if((vnet_state->pkt_sent % (QUEUE_SIZE/20)) == 0) { //optimized for guest's, batch the interrupts
if (!(q->avail->flags & VIRTIO_NO_IRQ_FLAG)) {
vnet_state->pkt_sent,
vnet_state->pkt_recv,
vnet_state->pkt_drop);
-
#endif
return 0;
static int handle_rx_kick(struct guest_info *core, struct virtio_vnet_state * vnet_state)
{
v3_vnet_enable_bridge();
- //PrintError("Enable Bridge\n");
-
+
return 0;
}
virtio_reset(vnet_state);
V3_Print("Registering Virtio device as vnet bridge\n");
- v3_vnet_add_bridge(vm, vnet_pkt_input_cb, vnet_pkt_input_xcall, 5, 1000000, (void *)vnet_state);
+ v3_vnet_add_bridge(vm, vnet_pkt_input_cb, vnet_pkt_input_xcall, 0, 500000, (void *)vnet_state);
return 0;