| US 7,505,410 B2 | ||
| Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices | ||
| Sridhar Lakshmanamurthy, Sunnyvale, Calif. (US); Sanjeev Jain, Shrewsbury, Mass. (US); Gilbert Wolrich, Framingham, Mass. (US); and Hugh Wilkinson, Newton, Mass. (US) | ||
| Assigned to Intel Corporation, Santa Clara, Calif. (US) | ||
| Filed on Jun. 30, 2005, as Appl. No. 11/173,005. | ||
| Prior Publication US 2007/0008985 A1, Jan. 11, 2007 | ||
| Int. Cl. G08C 15/00 (2006.01); H04L 12/56 (2006.01); H04L 12/54 (2006.01); G06F 3/00 (2006.01) | ||
| U.S. Cl. 370—235 [370/413; 370/429; 710/54] | 16 Claims |

| 1. A method comprising:
employing queue descriptors to manage transfer of data from corresponding queues in a memory store into a switch fabric, each
queue descriptor including,
an enqueue pointer identifying a tail cell of a segment of data scheduled to be transferred from the queue;
a schedule pointer identifying a head cell of the segment of data scheduled to be transferred from the queue; and
a commit pointer identifying a most recent cell in the segment of data to be successfully transmitted into the switch fabric;
receiving a schedule request to transfer a segment of data, the segment of data including a series of cells beginning at a
head cell and ending at a tail cell;
identifying a corresponding queue descriptor to manage the transfer of the segment of data, the queue descriptor including
an enqueue pointer pointing to the tail cell;
updating the schedule pointer of the corresponding queue descriptor to point to the head cell for the segment of data;
transferring a first portion of the segment of data from a memory store into a transmit buffer;
determining that a switch fabric into which the first portion of the segment of data is to be transmitted is available;
transmitting the first portion of the segment of data from the buffer into the switch fabric;
updating the commit pointer of the queue descriptor to indicate that the first portion of the segment of data has been successfully
transferred;
initiating transfer of a second portion of the segment of data from the memory store into the transmit buffer;
determining that the switch fabric is not available to receive a transmission of the second portion of the segment of data;
and
performing a roll-back operation in response thereto, the roll-back operation including,
dropping the second portion of the segment of data; and
resetting the schedule pointer to point to the same cell as the commit pointer.
|