A plurality of virtual paths in a
network interface between a host port and a network port are managed according to respective priorities using dynamic buffer allocation. Thus, multiple levels of
quality of service are supported through a single
physical network port. Variant processes are applied for handling packets which have been downloaded to a
network interface, prior to transmission onto the network. The
network interface also includes memory used as a transmit buffer, that stores data packets received from the host computer on the first port, and provides data to the second port for transmission on the network. A
control circuit in the network interface manages the memory as a plurality of first-in-first-out FIFO queues having respective priorities. Logic places a packet received from the
host processor into one of the plurality of FIFO queues according to a
quality of service parameter associated with the packets. Logic transmits the packets in the plurality of FIFO queues according to respective priorities. Logic dynamically allocates the memory using a
list of buffer descriptors for corresponding buffers in said memory. The
list of buffer descriptors comprises a free buffer
list and a used buffer list for each of the virtual paths served by the
system. A used buffer descriptor is released from the used buffer list, after the data stored in the corresponding used buffer has been transmitted, to the free buffer list for a virtual path which has the largest amount traffic or which has the smallest number of free buffers in its free buffer list.