RE: [PATCH] SCSI driver for VMware's virtual HBA.

Chetan.Loke
2009-08-28T21:18:49Z

Alok,

> +static int __devinit pvscsi_allocate_rings(struct pvscsi_adapter
> *adapter)
> +{
> + adapter->rings_state = pci_alloc_consistent(adapter->dev, PAGE_SIZE,
> + &adapter->ringStatePA);
> + if (!adapter->rings_state)
> + return -ENOMEM;
> +
> + adapter->req_pages = min(PVSCSI_MAX_NUM_PAGES_REQ_RING,
> + pvscsi_ring_pages);
> + adapter->req_depth = adapter->req_pages
> + * PVSCSI_MAX_NUM_REQ_ENTRIES_PER_PAGE;
> + adapter->req_ring = pci_alloc_consistent(adapter->dev,
> + adapter->req_pages * PAGE_SIZE,
> + &adapter->reqRingPA);
> + if (!adapter->req_ring)
> + return -ENOMEM;
> +
> + adapter->cmp_pages = min(PVSCSI_MAX_NUM_PAGES_CMP_RING,
> + pvscsi_ring_pages);
> + adapter->cmp_ring = pci_alloc_consistent(adapter->dev,
> + adapter->cmp_pages * PAGE_SIZE,
> + &adapter->cmpRingPA);
> + if (!adapter->cmp_ring)
> + return -ENOMEM;
> +
> + BUG_ON(adapter->ringStatePA & ~PAGE_MASK);
> + BUG_ON(adapter->reqRingPA & ~PAGE_MASK);
> + BUG_ON(adapter->cmpRingPA & ~PAGE_MASK);
> +
> + if (!adapter->use_msg)
> + return 0;
> +
> + adapter->msg_pages = min(PVSCSI_MAX_NUM_PAGES_MSG_RING,
> + pvscsi_msg_ring_pages);
> + adapter->msg_ring = pci_alloc_consistent(adapter->dev,
> + adapter->msg_pages * PAGE_SIZE,
> + &adapter->msgRingPA);
> + if (!adapter->msg_ring)
> + return -ENOMEM;
> + BUG_ON(adapter->msgRingPA & ~PAGE_MASK);
> +
> + return 0;
> +}
> +

I understand the emulation etc. But I see that this function isn't allocating multiple rings right? Didn't see any performance benefits?

Chetan