Claims
- 1. In a networking system device, a method of queuing one or more packets has a data field, the method comprising the steps of:
creating a VC queue descriptor associated with a first VC, wherein the VC queue descriptor includes:
a) a first pointer pointing to a first memory space; b) a second pointer pointing to a second memory space; c) a third pointer pointing to a third memory space; and d) a fourth pointer pointing to a fourth memory space, wherein each of the first, second, third and fourth pointers has a value indicating the location of the associated memory space; storing a first packet descriptor associated with a first one of the packets to the first memory space such that the first pointer points to the first packet descriptor, the first packet descriptor including a next packet descriptor pointer pointing to the third memory space, and a buffer descriptor pointer pointing to the second memory space; and storing a first buffer descriptor to the second memory space such that the second pointer points to the first buffer descriptor, the first buffer descriptor including a next buffer descriptor pointer pointing to the fourth memory space, and a buffer pointer pointing to a first buffer memory space, wherein at least a first portion of the data field of the first packet is stored in the first buffer memory space.
- 2. The method of claim 1, wherein the data field of the first packet includes said first portion and a second portion, the method further including the step of storing a second buffer descriptor to the fourth memory space such that the next buffer descriptor pointer of the first buffer descriptor points to the second buffer descriptor, the second buffer descriptor including a second buffer pointer pointing to a second buffer memory space, wherein the second portion of the data field of the first packet is stored in the second buffer memory space.
- 3. The method of claim 2, further comprising the step of changing the value of the fourth pointer so that the fourth pointer points to a fifth memory space.
- 4. The method of claim 3, wherein the second buffer descriptor includes a second next buffer descriptor pointer, the method further including the step of second buffer descriptor such that the second next buffer descriptor pointer points to the fifth memory space.
- 5. The method of claim 3, further including the steps of:
storing a second packet descriptor associated with a second one of the packets to said third memory space such that the next packet descriptor pointer of the first packet descriptor points to the second packet descriptor, the second packet descriptor including a second next packet descriptor pointer, and a second buffer descriptor pointer pointing to the fifth memory space; and storing a third buffer descriptor to the fifth memory space such that the second buffer descriptor pointer points to the third buffer descriptor, the third buffer descriptor including a third next buffer descriptor pointer, and a third buffer pointer pointing to a third buffer memory space, wherein at least a first portion of the data field of the second packet is stored in the third buffer memory space.
- 6. The method of claim 5, further comprising the steps of:
changing the value of the third pointer so that the third pointer points to a sixth memory space; and copying the value of the third pointer to the second next packet descriptor pointer of the second packet descriptor such that the second next packet descriptor pointer points to the sixth memory space.
- 7. The method of claim 5, further comprising the step of changing the value of the fourth pointer so that the fourth pointer points to a seventh memory space.
- 8. The method of claim 7, further comprising the step of copying the value of the fourth pointer to the third next buffer descriptor pointer of the third buffer descriptor such that the third next buffer descriptor pointer points to the seventh memory space.
- 9. The method of claim 2, wherein the first and second buffer memory spaces are non-contiguous.
- 10. The method of claim 1, wherein the data field of said first packet includes only said first portion, the method further including the steps of:
storing a second packet descriptor associated with a second one of the packets to said third memory space such that the next packet descriptor pointer of the first packet descriptor points to the second packet descriptor, the second packet descriptor including a second next packet descriptor pointer, and a second buffer descriptor pointer pointing to the fourth memory space; and storing a second buffer descriptor to the fourth memory space such that the second buffer descriptor pointer points to the second buffer descriptor, the second buffer descriptor including a second next buffer descriptor pointer, and a second buffer pointer pointing to a second buffer memory space, wherein at least a first portion of the data field of the second packet is stored in the second buffer memory space.
- 11. The method of claim 10, further comprising the steps of:
changing the value of the third pointer so that the third pointer points to a fifth memory space; and changing the value of the fourth pointer so that the fourth pointer points to a sixth memory space.
- 12. The method of claim 11, further including the steps of:
copying the value of the third pointer to the second next packet descriptor pointer of the second packet descriptor such that the second next packet descriptor pointer of the second packet descriptor points to the fifth memory space; and copying the value of the fourth pointer to the second next buffer descriptor pointer of the second buffer descriptor such that the second next buffer descriptor pointer of the second buffer descriptor points to the sixth memory space.
- 13. The method of claim 12, wherein the data field of the second packet includes said first portion and a second portion, the method further including the step of storing a third buffer descriptor to the sixth memory space such that the next buffer descriptor pointer of the second buffer descriptor points to the third buffer descriptor, the third buffer descriptor including a third buffer pointer pointing to a third buffer memory space, wherein the second portion of the data field of the second packet is stored in the third buffer memory space.
- 14. The method of claim 13, wherein the third buffer descriptor includes a third next buffer descriptor pointer, the method further including the steps of:
changing the value of the fourth pointer so that the fourth pointer points to a seventh memory space; and copying the value of the fourth pointer to the third next buffer descriptor pointer of the third buffer descriptor such that the third next buffer descriptor pointer points to the seventh memory space.
- 15. The method of claim 1, wherein the networking system device is a single-chip device having an internal memory, wherein the device is communicably coupled to one or more networks and to a local memory, wherein the step of creating the VC queue descriptor includes the step of:
fetching the first, second, third and fourth pointers from a pointer pool, wherein each of the first, second, third and fourth pointers points to a first, second, third and fourth open memory space, respectively; and storing the VC queue descriptor to one of the local memory and the internal memory.
- 16. The method of claim 15, wherein the first, second, third and fourth open memory spaces are located in one of the internal memory of the network system device, the local memory and a combination of the local memory and the internal memory.
- 17. The method of claim 1, further including the steps of:
receiving at least one data cell for the first VC; reassembling the at least one data cell into the one or more data packets; creating the first packet descriptor associated with a first one of the data packets; and creating the first buffer descriptor, wherein the first buffer descriptor is associated with the first data packet.
- 18. The method of claim 1, further including the steps of:
receiving at least one data frame for the first VC; reassembling the at least one data frame into the one or more data packets; creating the first packet descriptor associated with a first one of the data packets; and creating the first buffer descriptor, wherein the first buffer descriptor is associated with the first data packet.
- 19. In a networking system device, a method of de-queuing one or more data packets queued for transmission in a data structure for a virtual connection (VC), wherein each data packet has a data field, wherein the data structure includes a packet descriptor associated with each of the packets, and one or more buffer descriptors associated with each of the packets, wherein each buffer descriptor includes a buffer pointer pointing to a buffer memory, the method comprising the steps of:
reading a next packet descriptor pointer in a VC queue descriptor associated with a first VC to determine the memory location of a first packet descriptor associated with a first packet to be de-queued, wherein the next packet descriptor pointer has a value indicating the memory location of the first packet descriptor; reading the first packet descriptor, wherein the first packet descriptor includes a first buffer descriptor pointer having a value indicating the memory location of a first buffer descriptor associated with the first packet; reading the first buffer descriptor to determine the memory location of a first buffer memory to be de-queued, wherein the first buffer descriptor includes a first buffer pointer having a value indicating the location of the first buffer memory; and de-queuing the data stored in the first buffer memory.
- 20. The method of claim 19, wherein the first buffer memory stores a first portion of the data field of the first packet, wherein a second buffer memory stores a second portion of the data field of the first packet, wherein the VC queue descriptor of the first buffer descriptor, and wherein the first buffer descriptor includes a second buffer descriptor pointer having a value indicating the memory location of a second buffer descriptor, the method further including the steps of:
copying the value of the second buffer descriptor pointer from the first buffer descriptor to the next buffer descriptor pointer of the VC queue descriptor so that the next buffer descriptor pointer of the VC queue descriptor points to the second buffer descriptor; reading the next buffer descriptor pointer of the VC queue descriptor, after the data in the first buffer memory has been de-queued, to determine the memory location of the second buffer descriptor; reading the second buffer descriptor to determine the memory location of the second buffer memory, wherein the second buffer descriptor includes a second buffer pointer having a value indicating the location of the second buffer memory; and de-queuing the data stored in the second buffer memory.
- 21. The method of claim 20, wherein the first packet descriptor includes a second next packet descriptor pointer having a value indicating the memory location of a second packet descriptor associated with a second one of the packets to be de-queued, the method further including the steps of:
copying the value of the second next packet descriptor pointer from the first packet descriptor to the next packet descriptor pointer of the VC queue descriptor so that the next packet descriptor pointer of the VC queue descriptor points to the second packet descriptor; reading the next packet descriptor pointer of the VC queue descriptor, after all buffer memories associated with the first packet have been de-queued, to determine the memory location of the second packet descriptor.
- 22. The method of claim 19, wherein the first packet descriptor includes a second next packet descriptor pointer having a value indicating the memory location of a second packet descriptor associated with a second one of the packets to be de-queued, the method further including the steps of:
copying the value of the second next packet descriptor pointer from the first packet descriptor to the next packet descriptor pointer of the VC queue descriptor so that the next packet descriptor pointer of the VC queue descriptor points to the second packet descriptor; reading the next packet descriptor pointer of the VC queue descriptor, after all buffer memories associated with the first packet have been de-queued, to determine the memory location of the second packet descriptor.
- 23. The method of claim 22, further including the steps of:
reading the second packet descriptor, wherein the second packet descriptor includes a next buffer descriptor pointer having a value indicating the memory location of a first buffer descriptor associated with the second packet; reading the first buffer descriptor associated with the second packet to determine the memory location of a second buffer memory to be de-queued, wherein the first buffer descriptor associated with the second packet includes a second buffer pointer having a value indicating the location of the second buffer memory; and de-queuing the data stored in the second buffer memory.
- 24. In a networking system device, a method of de-queuing one or more data packets queued in a data structure for transmission for a virtual connection (VC), wherein each data packet has a data field, wherein the data structure includes a packet descriptor associated with each of the packets, and one or more buffer descriptors associated with each of the packets, wherein each buffer descriptor includes a buffer pointer pointing to a buffer memory, the method comprising the steps of:
reading a next packet descriptor pointer in a VC queue descriptor associated with a first VC to determine the memory location of a first packet descriptor associated with a first one of the packets to be de-queued; reading the first packet descriptor to determine the memory location of a first buffer descriptor associated with the first packet; reading the first buffer descriptor to determine the memory location of a first buffer memory to be de-queued; and de-queuing the data stored in the first buffer memory, wherein the data stored in the first buffer memory includes a first portion of the data field of the first packet.
- 25. The method of claim 24, wherein the data stored in the first buffer memory includes the entire data field of the first packet.
- 26. The method of claim 24, wherein the VC queue descriptor includes a first next buffer descriptor pointer, and wherein the first buffer descriptor includes a second next buffer descriptor pointer pointing to a second buffer descriptor associated with the first packet, the method further including the steps of:
copying the second next buffer descriptor pointer from the first buffer descriptor to the first next buffer descriptor pointer of the VC queue descriptor so that the first next buffer descriptor pointer of the VC queue descriptor points to the second buffer descriptor; reading the first next buffer descriptor pointer of the VC queue descriptor to determine the memory location of the second buffer descriptor; reading the second buffer descriptor to determine the location of the second buffer memory; and de-queuing the data stored in the second buffer memory, wherein the data stored in the second buffer memory includes a second portion of the data field of the first packet.
- 27. The method of claim 26, wherein the first packet descriptor includes a second next packet descriptor pointer pointing to a second packet descriptor associated with a second one of the packets to be de-queued, the method further including the steps of:
copying the second next packet descriptor pointer from the first packet descriptor to the next packet descriptor pointer of the VC queue descriptor so that the next packet descriptor pointer of the VC queue descriptor points to the second packet descriptor; reading the next packet descriptor pointer of the VC queue descriptor, after all buffer memories associated with the first packet have been de-queued, to determine the memory location of the second packet descriptor; reading the second packet descriptor to determine the memory location of a first buffer descriptor associated with the second packet; reading the first buffer descriptor associated with the second packet to de-queuing the data stored in the second buffer memory, wherein the data stored in the second buffer memory includes a first portion of the data field of the second packet.
- 28. The method of claim 24, wherein the first packet descriptor includes a second next packet descriptor pointer pointing to a second packet descriptor associated with a second one of the packets to be de-queued, the method further including the steps of:
copying the second next packet descriptor pointer from the first packet descriptor to the next packet descriptor pointer of the VC queue descriptor so that the next packet descriptor pointer of the VC queue descriptor points to the second packet descriptor; reading the next packet descriptor pointer of the VC queue descriptor, after all buffer memories associated with the first packet have been de-queued, to determine the memory location of the second packet descriptor; reading the second packet descriptor to determine the memory location of a first buffer descriptor associated with the second packet; reading the first buffer descriptor associated with the second packet to determine the memory location of a second buffer memory to be de-queued; and de-queuing the data stored in the second buffer memory, wherein the data stored in the second buffer memory includes a first portion of the data field of the second packet.
- 29. In a networking accelerator system, a network processor communicably coupled to one or more networks, the network processor comprising:
an internal memory; and processing logic for implementing a two-dimensional queuing and de-queuing method for queuing and de-queuing packets for transmission in a two-dimensional link list data structure for one or more Virtual Connections (VCs).
- 30. The network processor of claim 29, wherein the network processor further comprises means for receiving and reassembling at least one data cell into one or more data packets.
- 31. The network processor of claim 29, wherein the network processor further comprises means for receiving and reassembling at least one data frame into one or more data packets.
- 32. The network processor of claim 29, wherein the network processor is coupled to a local memory, the network processor further comprising means for building the two-dimensional link list data structure for the one or more VCs, wherein the data structure includes a first list linking one or more buffer descriptors on a per-packet basis, and a second list linking one or more packet descriptors on a per-VC basis, wherein the data structure is stored in one of the internal memory and the local memory.
- 33. The network processor of claim 29, wherein the network processor is integrated on a single chip.
- 34. In a single-chip network processor communicably coupled to one or more networks, wherein the network processor has an internal memory and is coupled to a local memory, a method of implementing a two-dimensional link list data structure for one or more Virtual Connections (VCs) for queuing and de-queuing packets for transmission, the method comprising the steps of:
building the two-dimensional link list data structure for the one or more VCs, wherein the data structure includes a first list linking one or more buffer descriptors on a per-packet basis, and a second list linking one or more packet descriptors on a per-VC basis; and storing at least a portion of the data structure to one of the internal memory and the local memory.
- 35. The method of claim 34, further comprising the steps of:
receiving at least one data cell for a first VC; reassembling the at least one data cell into one or more data packets; creating a packet descriptor for each of the data packets; creating one or more buffer descriptors for each data packet; and adding the packet descriptors and buffer descriptors to the data structure such that the packet descriptors are linked to the first VC and the buffer descriptors associated with each particular packet are linked to t associated packet descriptor.
- 36. The method of claim 34, further comprising the steps of:
receiving at least one data frame for a first VC; reassembling the at least one data frame into one or more data packets; creating a packet descriptor for each of the data packets; creating one or more buffer descriptors for each data packet; and adding the packet descriptors and buffer descriptors to the data structure such that the packet descriptors are linked to the first VC and the buffer descriptors associated with each particular packet are linked to the associated packet descriptor.
- 37. The method of claim 34, wherein the step of building the data structure includes the step of:
creating a VC queue descriptor, the VC queue descriptor including a next packet descriptor pointer pointing to the next packet descriptor to be de-queued, and a next buffer descriptor pointer pointing to the next buffer descriptor to be de-queued, wherein the VC queue descriptor is stored to one of the internal memory and the local memory.
- 38. The method of claim 34, wherein the network processor is integrated on a single chip.
- 39. In a networking system device, a method of queuing one or more data packets for transmission for a virtual connection (VC), wherein each of the data packets has a data field, the method comprising the steps of:
creating a VC queue descriptor associated with a first VC, wherein the VC queue descriptor includes:
a) a first pointer pointing to a first memory space; b) a second pointer pointing to a second memory space; c) a third pointer pointing to a third memory space; and d) a fourth pointer pointing to a fourth memory space, wherein each of the first, second, third and fourth pointers has a value indicating the location of the associated memory space; storing a first packet descriptor associated with a first one of the packets to the first memory space such that the first pointer points to the first packet descriptor, wherein the first packet descriptor includes a next packet descriptor pointer pointing to the third memory space, and a buffer pointer pointing to a first buffer memory space, wherein the entire data field of the first packet is stored in the first buffer memory space.
- 40. The method of claim 39, wherein the data field of said first packet includes only said first portion, the method further including the steps of:
storing a second packet descriptor associated with a second one of the packets to said third memory space such that the next packet descriptor pointer of the first packet descriptor points to the second packet descriptor, the second packet descriptor including a second next packet descriptor pointer, and a buffer descriptor pointer pointing to the fourth memory space; and storing a first buffer descriptor to the fourth memory space such that the buffer descriptor pointer points to the first buffer descriptor, the first buffer descriptor including a next buffer descriptor pointer, and a second buffer pointer pointing to a second buffer memory space, wherein at least a first portion of the data field of the second packet is stored in the second buffer memory space.
- 41. The method of claim 40, further comprising the steps of:
changing the value of the third pointer so that the third pointer points to a fifth memory space; and changing the value of the fourth pointer so that the fourth pointer points to a sixth memory space.
- 42. The method of claim 41, further including the steps of:
copying the value of the third pointer to the second next packet descriptor pointer of the second packet descriptor such that the second next packet descriptor pointer of the second packet descriptor points to the fifth memory space; and copying the value of the fourth pointer to the next buffer descriptor pointer of the first buffer descriptor such that the next buffer descriptor pointer of the first buffer descriptor points to the sixth memory space.
- 43. The method of claim 42, wherein the data field of the second packet includes said first portion and a second portion, the method further including the step of storing a second buffer descriptor to the sixth memory space such that the next buffer descriptor pointer of the first buffer descriptor points to the second buffer descriptor, the second buffer descriptor including a second buffer pointer pointing to a third buffer memory space, wherein the second portion of the data field of the second packet is stored in the third buffer memory space.
- 44. In a networking system device, a method of de-queuing one or more data packets queued for transmission in a data structure for a virtual connection (VC), wherein each data packet has a data field, wherein the data structure includes a packet descriptor associated with each of the packets, and one or more buffer memories associated with each of the packets, wherein each of the packets has one or more associated buffer descriptors only if more than one buffer memory is associated with the packet, wherein each buffer descriptor includes a buffer pointer pointing to one of the buffer memories, the method comprising the steps of:
reading a next packet descriptor pointer in a VC queue descriptor associated with a first VC to determine the memory location of a first packet descriptor associated with a first packet to be de-queued, wherein the next packet descriptor pointer has a value indicating the memory location of the first-packet descriptor; reading the first packet descriptor, wherein the first packet descriptor includes a flag indicating that only one buffer memory is associated with the first packet, and a first buffer pointer having a value indicating the location of a first one of the buffer memories; and de-queuing the data stored in the first buffer memory.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to U.S. Provisional Patent Application Serial No. 60/090, 939, filed Jun. 27, 1998, entitled “Network Accelerator Subsystem Based on Single-Chip Network Processor and Interface Protocol,” the disclosure of which is hereby incorporated by reference in its entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60090939 |
Jun 1998 |
US |
Continuations (1)
|
Number |
Date |
Country |
Parent |
09271061 |
Mar 1999 |
US |
Child |
10637723 |
Aug 2003 |
US |