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
OG exemplary drawing
 
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.