1. A method for allocating resources of a host channel adapter, comprising: receiving, by the host channel adapter from a virtual machine manager on a host, a first resource allocation request; identifying, by the host channel adapter, an underlying function referenced in the first resource allocation request, wherein the underlying function corresponds to a single virtual machine located on the host; determining, by the host channel adapter, that the first resource allocation request specifies a number of physical collect buffers (PCBs) allocated to the underlying function; allocating, by the host channel adapter, the number of PCBs to the underlying function by storing the number in a control and status register (CSR); determining, by the host channel adapter, that the first resource allocation request specifies a number of virtual collect buffers (VCBs) allocated to the underlying function; allocating, by the host channel adapter, the number of VCBs to the underlying function by storing a base address register (BAR) in the CSR; receiving, by the host channel adapter, first command data for a first command from the single virtual machine for sending packets on a network, wherein the first command data specifies an address of a VCB of the number of VCBs allocated to the single virtual machine; determining, using the CSR, that the underlying function has in use at least the number of PCBs when the first command data is received; and dropping the first command data in the first command based on the underlying function having in use at least the number of PCBs.