X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_vhost%2Fvdpa.c;h=b2b2a105f1e7f8e7c7dc6b6f8d701d2a009aed9a;hb=861ca8b1e97c68727cbafbb859cc6c2ff017801e;hp=1ff9b00b84b863968ff7199325c80dffee677106;hpb=b1721295834b4da3e683e87ec5823b355624ebe2;p=dpdk.git diff --git a/lib/librte_vhost/vdpa.c b/lib/librte_vhost/vdpa.c index 1ff9b00b84..b2b2a105f1 100644 --- a/lib/librte_vhost/vdpa.c +++ b/lib/librte_vhost/vdpa.c @@ -27,7 +27,7 @@ is_same_vdpa_device(struct rte_vdpa_dev_addr *a, return false; switch (a->type) { - case PCI_ADDR: + case VDPA_ADDR_PCI: if (a->pci_addr.domain != b->pci_addr.domain || a->pci_addr.bus != b->pci_addr.bus || a->pci_addr.devid != b->pci_addr.devid || @@ -49,7 +49,7 @@ rte_vdpa_register_device(struct rte_vdpa_dev_addr *addr, char device_name[MAX_VDPA_NAME_LEN]; int i; - if (vdpa_device_num >= MAX_VHOST_DEVICE) + if (vdpa_device_num >= MAX_VHOST_DEVICE || addr == NULL || ops == NULL) return -1; for (i = 0; i < MAX_VHOST_DEVICE; i++) { @@ -66,7 +66,7 @@ rte_vdpa_register_device(struct rte_vdpa_dev_addr *addr, if (i == MAX_VHOST_DEVICE) return -1; - sprintf(device_name, "vdpa-dev-%d", i); + snprintf(device_name, sizeof(device_name), "vdpa-dev-%d", i); dev = rte_zmalloc(device_name, sizeof(struct rte_vdpa_device), RTE_CACHE_LINE_SIZE); if (!dev) @@ -99,6 +99,9 @@ rte_vdpa_find_device_id(struct rte_vdpa_dev_addr *addr) struct rte_vdpa_device *dev; int i; + if (addr == NULL) + return -1; + for (i = 0; i < MAX_VHOST_DEVICE; ++i) { dev = vdpa_devices[i]; if (dev && is_same_vdpa_device(&dev->addr, addr)) @@ -123,7 +126,7 @@ rte_vdpa_get_device_num(void) return vdpa_device_num; } -int __rte_experimental +int rte_vdpa_relay_vring_used(int vid, uint16_t qid, void *vring_m) { struct virtio_net *dev = get_device(vid); @@ -178,7 +181,7 @@ rte_vdpa_relay_vring_used(int vid, uint16_t qid, void *vring_m) return -1; if (unlikely(dlen < vq->desc[desc_id].len)) { - idesc = alloc_copy_ind_table(dev, vq, + idesc = vhost_alloc_copy_ind_table(dev, vq, vq->desc[desc_id].addr, vq->desc[desc_id].len); if (unlikely(!idesc)) @@ -198,7 +201,8 @@ rte_vdpa_relay_vring_used(int vid, uint16_t qid, void *vring_m) goto fail; desc = desc_ring[desc_id]; if (desc.flags & VRING_DESC_F_WRITE) - vhost_log_write(dev, desc.addr, desc.len); + vhost_log_write_iova(dev, vq, desc.addr, + desc.len); desc_id = desc.next; } while (desc.flags & VRING_DESC_F_NEXT);