Network interface supporting of virtual paths for quality of service with dynamic buffer allocation
First Claim
1. A method of managing packet transmission in a computer system comprising:
- receiving a plurality of packets from a computer host memory, wherein each packet has a header provided by a process running on a host processor;
reading at least one quality of service parameter from the header of each received packet;
storing each received packet into one of a plurality of queues according to the quality of service parameter, wherein each queue has a respective priority, wherein one of the plurality of queues is a high priority queue, wherein each queue of the plurality of queues other than the high priority queue has a corresponding timeout interval, and whereupon expiration of a timeout interval will cause a packet stored in the queue corresponding to the expired timeout interval to be forwarded ahead of packets stored in any other queuedynamically allocating memory resources to each queue of the plurality of queues, comprising the steps of;
maintaining a list of free buffers for each queue, wherein each list of free buffers comprises a plurality of pointers to memory locations that are available to store packets assigned to the corresponding queue, wherein each pointer has a corresponding size parameter that specifies the size of the memory location indicated by the pointer; and
maintaining a list of used buffers for each queue, wherein each list of used buffers comprises a plurality of pointers to memory locations that are being used to store packets that have been assigned to the corresponding queue, wherein each pointer has a corresponding size parameter that specifies the size of the memory location indicated by the pointer, wherein each size parameter is programmable to allow for different buffers corresponding to the pointers in the plurality of free buffer lists and used buffer lists to vary in size;
forwarding each received packet to a network medium according to both the priority of the queue in which the packet was stored and any expired timeout interval; and
after forwarding a packet out of a queue, assigning the memory space associated with the forwarded packet from the used buffer list of the corresponding queue to the free buffer list of the one queue of the plurality of queues having the least quantity of free buffers in its free buffer list.
5 Assignments
0 Petitions
Accused Products
Abstract
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.
64 Citations
26 Claims
-
1. A method of managing packet transmission in a computer system comprising:
-
receiving a plurality of packets from a computer host memory, wherein each packet has a header provided by a process running on a host processor; reading at least one quality of service parameter from the header of each received packet; storing each received packet into one of a plurality of queues according to the quality of service parameter, wherein each queue has a respective priority, wherein one of the plurality of queues is a high priority queue, wherein each queue of the plurality of queues other than the high priority queue has a corresponding timeout interval, and whereupon expiration of a timeout interval will cause a packet stored in the queue corresponding to the expired timeout interval to be forwarded ahead of packets stored in any other queue dynamically allocating memory resources to each queue of the plurality of queues, comprising the steps of; maintaining a list of free buffers for each queue, wherein each list of free buffers comprises a plurality of pointers to memory locations that are available to store packets assigned to the corresponding queue, wherein each pointer has a corresponding size parameter that specifies the size of the memory location indicated by the pointer; and maintaining a list of used buffers for each queue, wherein each list of used buffers comprises a plurality of pointers to memory locations that are being used to store packets that have been assigned to the corresponding queue, wherein each pointer has a corresponding size parameter that specifies the size of the memory location indicated by the pointer, wherein each size parameter is programmable to allow for different buffers corresponding to the pointers in the plurality of free buffer lists and used buffer lists to vary in size; forwarding each received packet to a network medium according to both the priority of the queue in which the packet was stored and any expired timeout interval; and after forwarding a packet out of a queue, assigning the memory space associated with the forwarded packet from the used buffer list of the corresponding queue to the free buffer list of the one queue of the plurality of queues having the least quantity of free buffers in its free buffer list. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A system for managing packet transmission in a computer system comprising:
-
a download engine for receiving a plurality of packets from a computer host memory, wherein each packet has a header provided by a process running on a host processor; reading at least one quality of service parameter from the header of each received packet; and storing each packet into one of a plurality of queues according to the quality of service parameter; a transmit packet buffer for maintaining the plurality of queues, wherein each queue has a respective priority, wherein one of the plurality of queues is a high priority queue, wherein each queue of the plurality of queues other than the high priority queue has a corresponding timeout interval, and whereupon expiration of a timeout interval will cause a packet stored in the queue corresponding to the expired timeout interval to be forwarded out of the transmit packet buffer ahead of packets stored in any other queue; a plurality of free buffer registers, wherein each free buffer register corresponds to one of the plurality of queues, wherein each free buffer register maintains a list of free buffers for its corresponding queue, wherein each list of free buffers comprises a plurality of pointers to memory locations in the transmit packet buffer that are available to store packets assigned to the corresponding queue, wherein each pointer has a corresponding size parameter that specifies the size of the memory location indicated by the pointer; and a plurality of used buffer registers, wherein each used buffer register corresponds to one of the plurality of queues, wherein each used buffer register maintains a list of used buffers for its corresponding queue, wherein each list of used buffers comprises a plurality of pointers to memory locations in the transmit packet buffer that are being used to store packets that have been assigned to the corresponding queue, wherein each pointer has a corresponding size parameter that specifies the size of the memory location indicated by the pointer, wherein each size parameter is programmable to allow for different buffers corresponding to the pointers in the plurality of free buffer lists and used buffer lists to vary in size; a transmit engine for forwarding each received packet from the transmit packet buffer to a network medium according to both the priority of the queue in which the packet was stored and any expired timeout interval corresponding to any queue; and a manager for assigning the transmit packet buffer memory space corresponding to a previously forwarded packet from the used buffer list of the queue corresponding to the previously forwarded packet to the free buffer list of the one queue of the plurality of queues having the least quantity of free buffers in its free buffer list. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A computer readable media with instructions to cause a microprocessor to perform the steps of:
-
receiving a plurality of packets from a computer host memory, wherein each packet has a header provided by a process running on a host processor; read at least one quality of service parameter from the header of each received packet; storing each received packet into one of a plurality of queues according to the quality of service parameter, wherein each queue has a respective priority, wherein one of the plurality of queues is a high priority queue, wherein each queue of the plurality of queues other than the high priority queue has a corresponding timeout interval, and whereupon expiration of a timeout interval will cause a packet stored in the queue corresponding to the expired timeout interval to be forwarded ahead of packets stored in any other queue; dynamically allocating memory resources to each queue of the plurality of queues by performing the steps of; maintaining a list of free buffers for each queue, wherein each list of free buffers comprises a plurality of pointers to memory locations that are available to store packets assigned to the corresponding queue, wherein each pointer has a corresponding size parameter that specifies the size of the memory location indicated by the pointer; and maintaining a list of used buffers for each queue, wherein each list of used buffers comprises a plurality of pointers to memory locations that are being used to store packets that have been assigned to the corresponding queue, wherein each pointer has a corresponding size parameter that specifies the size of the memory location indicated by the pointer, wherein each size parameter is programmable to allow for different buffers corresponding to the pointers in the plurality of free buffer lists and used buffer lists to vary in size; and forwarding each received packet to a network medium according to both the priority of the queue in which the packet was stored and any expired timeout interval; and after forwarding a packet out of a queue, assigning the memory space associated with the forwarded packet from the used buffer list of the corresponding queue to the free buffer list of the one queue of the plurality of queues having the least quantity of free buffers in its free buffer list.
-
Specification