Computer system and network interface supporting dynamically optimized receive buffer queues
First Claim
1. An interface in which packets are transferred between a network medium and a host system, comprising:
- a first port adapted to be coupled to the network medium;
a second port adapted to be coupled to the host system;
buffer memory, coupled to the first and second ports, storing packets in transit between the first and second ports;
a receive buffer descriptor cache storing a plurality of sets of receive buffer descriptors, each set corresponding with a corresponding set of receive buffers, the sets of receive buffers including buffers allocated for storage of received packets, the receive buffer descriptors in a first one of said sets of receive buffer descriptors corresponding buffers having a buffer size specified according to a maximum packet size parameter, and the receive buffer descriptors in a second one of said sets of receive buffer descriptors corresponding buffers having a buffer size specified according to an intermediate packet size parameter smaller than said maximum;
logic, coupled with the buffer memory, to assign packets stored in the buffer memory to a receive buffer descriptor in one of said sets of receive buffer descriptors according to packet size; and
upload logic coupled to the buffer memory to manage uploading packets using the assigned receive buffer descriptors.
8 Assignments
0 Petitions
Accused Products
Abstract
A network interface comprises the first port on which incoming data is transmitted and received at the data transfer rate of the network, a buffer memory coupled to the first port, and a second port coupled with the buffer memory, and through which transfer of packets between the host system, and the buffer memory is executed. A driver in the host system allocates a plurality of sets of receive buffers, where each set of receive buffers is composed of receive buffers having different sizes. A receive buffer descriptor cache located at the interface level stores receive buffer descriptors corresponding to receive buffers in the plurality of sets. As incoming packets arrive at the interface, logic determines the size of the incoming packet and assigns the packet to a receive buffer descriptor in the receive buffer descriptor cache according to the determined size. Upload logic at the interface level manages the uploading of packets from the buffer memory to the host system using the assigned receive buffer descriptors. A driver in the host dynamically adjusts the sizes of receive buffers in response to statistics about packet size.
-
Citations
45 Claims
-
1. An interface in which packets are transferred between a network medium and a host system, comprising:
-
a first port adapted to be coupled to the network medium; a second port adapted to be coupled to the host system; buffer memory, coupled to the first and second ports, storing packets in transit between the first and second ports; a receive buffer descriptor cache storing a plurality of sets of receive buffer descriptors, each set corresponding with a corresponding set of receive buffers, the sets of receive buffers including buffers allocated for storage of received packets, the receive buffer descriptors in a first one of said sets of receive buffer descriptors corresponding buffers having a buffer size specified according to a maximum packet size parameter, and the receive buffer descriptors in a second one of said sets of receive buffer descriptors corresponding buffers having a buffer size specified according to an intermediate packet size parameter smaller than said maximum; logic, coupled with the buffer memory, to assign packets stored in the buffer memory to a receive buffer descriptor in one of said sets of receive buffer descriptors according to packet size; and upload logic coupled to the buffer memory to manage uploading packets using the assigned receive buffer descriptors. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method for managing an interface in which packets are transferred through a buffer memory between a network medium and a host system, comprising:
-
providing a receive buffer descriptor cache in the interface storing a plurality of sets of receive buffer descriptors, each set corresponding with a corresponding set of receive buffers accessible via the host system, the sets of receive buffers including buffers allocated for storage of received packets, the receive buffer descriptors in a first one of said sets of receive buffer descriptors corresponding to receive buffers having a buffer size specified according to a maximum packet size parameter, and the receive buffer descriptors in a second one of said sets of receive buffer descriptors corresponding receive buffers having a buffer size specified according to an intermediate packet size parameter smaller than said maximum; assigning packets stored in the buffer memory to a receive buffer descriptor in one of said sets of receive buffer descriptors according to packet size; and uploading said packets using the assigned receive buffer descriptors. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. An integrated circuit for an interface in which packets are transferred between a network medium and a host system, the integrated circuit comprising:
-
medium access control (MAC) unit through which data transferred at a data transfer rate of 100 Megabits per second or higher; a port through which data is transferred; buffer memory, coupled to the MAC unit and the port, storing packets in transit between the network medium and the port; a receive buffer descriptor cache storing a plurality of sets of receive buffer descriptors, each set corresponding with a corresponding set of receive buffers, the sets of receive buffers including buffers allocated for storage of received packets, the receive buffer descriptors in a first one of said sets of receive buffer descriptors corresponding buffers having a buffer size specified according to a maximum packet size parameter, and the receive buffer descriptors in a second one of said sets of receive buffer descriptors corresponding buffers having a buffer size specified according to an intermediate packet size parameter smaller than said maximum; logic, coupled with the buffer memory, to assign packets stored in the buffer memory to a receive buffer descriptor in one of said sets of receive buffer descriptors according to packet size; and upload logic coupled to the buffer memory to manage uploading packets using the assigned receive buffer descriptors. - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
-
22. A method for managing an interface in which packets are transferred through a buffer memory between a network medium and a host system, comprising:
-
establishing a plurality of sets of receive buffers in the host system, each set of receive buffers including receive buffers having a buffer size specified for the set; providing a cache memory having receive buffer descriptors corresponding to receive buffers in said plurality of sets in the host system; storing packets received at the interface from the network medium in a buffer memory; determining a size for the received packets, and assigning the received packets to one of the receive buffer descriptors in the cache memory according to the determined size; classifying incoming packets into a plurality of classes according to size, and counting the number of packets in each class; and using the assigned receive buffer descriptor to make packets available from the buffer memory. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
-
-
33. A data processing system, comprising:
-
a processor; host memory; a plurality of sets of receive buffers in the host memory, each set of receive buffers including receive buffers having a buffer size specified for the set; a host bus system coupled to the processor and the host memory; a network interface coupled to the host bus system, in which packets are transferred between a network medium and a host bus system, the network interface including; a first port adapted to be coupled to the network medium; a second port adapted to be coupled to the host bus system; buffer memory, having an incoming data path coupled to the first port, storing packets in transit between the first and second ports; cache memory in the interface, the cache memory having receive buffer descriptors corresponding to said sets of receive buffers in the host system, said cache memory comprising a receive buffer descriptor cache in the interface storing a plurality of sets of receive buffer descriptors, each set corresponding to a set of receive buffers, the receive buffer descriptors in a first one of said sets of receive buffer descriptors corresponding to a set of receive buffers having a buffer size specified according to a maximum packet size parameter, and the receive buffer descriptors in a second one of said sets of receive buffer descriptors corresponding to a set of receive buffers having a buffer size specified according to an intermediate packet size parameter smaller than said maximum; logic to determine a size for received packets, and to assign the received packets to one of the receive buffer descriptors in the cache memory according to the determined size; and logic to upload packets to the host system from the buffer memory using the receive buffer descriptor corresponding to the assigned entry in the cache memory. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41, 42, 43)
-
-
44. A computer program stored in machine readable form, executable by a processor for allocating receive buffers for a network interface, comprising:
-
logic to allocate receive buffers for packets incoming from the network interface, the receive buffers having locations and sizes specified by a plurality of sets of receive buffer descriptors, each set corresponding to a set of receive buffers, the receive buffer descriptors in a first one of said sets of receive buffer descriptors corresponding to a set of receive buffers having a buffer size specified according to a maximum packet size parameter, and the receive buffer descriptors in a second one of said sets of receive buffer descriptors corresponding to a set of receive buffers having a buffer size specified according to an intermediate packet size parameter smaller than said maximum; and logic to dynamically update the sizes of the allocated receive buffers based on statistics related to packets being received through the network interface.
-
-
45. A data processing system, comprising:
-
a processor; host memory; a host bus system coupled to the processor and the host memory; a receive buffer descriptor cache storing a plurality of sets of receive buffer descriptors, each set corresponding with a corresponding set of receive buffers, the sets of receive buffers including buffers allocated for storage of received packets, the receive buffer descriptors in a first one of said sets of receive buffer descriptors corresponding buffers having a buffer size specified according to a maximum packet size parameter, and the receive buffer descriptors in a second one of said sets of receive buffer descriptors corresponding buffers having a buffer size specified according to an intermediate packet size parameter smaller than said maximum; logic to allocate receive buffers in host memory for packets incoming from the network interface, the receive buffers having locations and sizes specified by receive buffer descriptors; and logic to dynamically update the sizes of the allocated receive buffers based on statistics related to packets being received through the network interface.
-
Specification