if(q->cur_avail_idx == q->avail->index ||
(quote > 0 && txed >= quote)) {
left = (q->cur_avail_idx != q->avail->index);
+ v3_unlock_irqrestore(virtio_state->tx_lock, flags);
break;
}
q->used->ring[q->used->index % q->queue_size].id =
q->avail->ring[tmp_idx % q->queue_size];
- //q->used->ring[q->used->index % q->queue_size].length = buf_desc->length; /* What do we set this to???? */
-
q->used->index ++;
v3_unlock_irqrestore(virtio_state->tx_lock, flags);
if (txed && !(q->avail->flags & VIRTIO_NO_IRQ_FLAG)) {
v3_pci_raise_irq(virtio_state->virtio_dev->pci_bus,
- 0, virtio_state->pci_dev);
+ virtio_state->pci_dev, 0);
virtio_state->virtio_cfg.pci_isr = 0x1;
virtio_state->stats.rx_interrupts ++;
}
*(uint8_t *)dst = virtio->virtio_cfg.pci_isr;
virtio->virtio_cfg.pci_isr = 0;
v3_pci_lower_irq(virtio->virtio_dev->pci_bus,
- 0, virtio->pci_dev);
+ virtio->pci_dev, 0);
break;
case VIRTIO_NET_CONFIG ... VIRTIO_NET_CONFIG + ETH_ALEN:
virtio->pci_dev->config_header.intr_line);
virtio->virtio_cfg.pci_isr = 0x1;
- v3_pci_raise_irq(virtio->virtio_dev->pci_bus, 0, virtio->pci_dev);
+ v3_pci_raise_irq(virtio->virtio_dev->pci_bus, virtio->pci_dev, 0);
virtio->stats.rx_interrupts ++;
}
pci_dev = v3_pci_register_device(virtio->pci_bus, PCI_STD_DEVICE,
0, PCI_AUTO_DEV_NUM, 0,
"LNX_VIRTIO_NIC", bars,
- NULL, NULL, NULL, net_state);
+ NULL, NULL, NULL, NULL, net_state);
if (!pci_dev) {
PrintError("Virtio NIC: Could not register PCI Device\n");
struct virtio_dev_state * virtio = (struct virtio_dev_state *)frontend_data;
struct virtio_net_state * net_state = (struct virtio_net_state *)V3_Malloc(sizeof(struct virtio_net_state));
+ if (!net_state) {
+ PrintError("Cannot allocate in connect\n");
+ return -1;
+ }
+
memset(net_state, 0, sizeof(struct virtio_net_state));
register_dev(virtio, net_state);
}
virtio_state = (struct virtio_dev_state *)V3_Malloc(sizeof(struct virtio_dev_state));
+
+ if (!virtio_state) {
+ PrintError("Cannot allocate in init\n");
+ return -1;
+ }
+
memset(virtio_state, 0, sizeof(struct virtio_dev_state));
INIT_LIST_HEAD(&(virtio_state->dev_list));