Multi-threaded round-robin receive for fast network port
AssigneeIntel Corporation
InventorsDonald F. Hooper, Matthew J. Adiletta
Life of this patent
Estimating the term…
Abstract
A method of processing network data in a network processor includes assigning a group of receive threads to process network data from a port. Each of the group of receive threads process network data in a round-robin fashion.
Claims16
A method of processing network data in a network processor comprising:
- assigning multiple program threads associated with multiple microengines operatively coupled to the network processor, the multiple program threads including a currently executing thread and a next thread, to a media access controller port of a network device operatively coupled to the network processor, a program thread having an associated program counter;
- processing network data received from the media access controller port using the multiple program threads in a round-robin fashion, wherein the multiple program threads form a sequence, to enable network data transfer to a port of a forwarding device, wherein the processing comprises successively passing status information of the processing from a currently executing thread to a next thread via a mailbox, wherein the next thread follows the currently executing thread in the sequence, wherein the status information of a thread is stored in a mailbox corresponding to the thread, wherein the status information includes a packet address indicative of a storage location for the network data received from the media access controller port, and wherein the mailbox is a first mailbox;
- and
- storing second status information of the next thread in a second mailbox of a subsequent next thread of the sequence of the multiple program threads, wherein number of the multiple program threads is predetermined.
A method of processing a data packet received from a media access controller port of a network device operatively coupled to a network processor, to enable data packet transfer to a port of a forwarding device, the method comprising:
- assigning a predetermined number of threads, associated with a predetermined number of microengines operatively coupled to the network processor, to the media access controller port to process the data packet, the predetermined number of threads to be employed in a round-robin fashion, wherein the predetermined number of threads form a sequence, each of the predetermined number of threads having an associated program counter;
- processing a first portion of the data packet by a first thread of the sequence of the predetermined number of threads;
- storing status information of the first thread in a mailbox of a next thread in the sequence of the predetermined number of threads;
- signaling the next thread to begin processing a second portion of the data packet based on the status information stored in the mailbox of the next thread,
- wherein the status information includes a packet address indicative of a storage location for the network data received from the media access controller port, and wherein the mailbox is a first mailbox;
- and
- storing second status information of the next thread in a second mailbox of a subsequent next thread in the sequence of the predetermined number of threads.
An article comprising a computer-readable medium which stores computer-executable instructions for processing data in a network processor, to enable network data transfer to a port of a forwarding device, the instructions causing a computer to:
- assign a first set of multiple program threads associated with multiple microengines operatively coupled to the network processor, to a first one of multiple media access controller ports of a network device operatively coupled to the network processor, a program thread in the first set of multiple program threads having associated program counter data;
- process successive portions of a single packet received from the first one of the media access controller ports by multiple, respective, successive threads of the first set of multiple program threads, wherein instructions to process comprise instructions to pass status information of the successive portions of the single packet from one thread in the first set of multiple program threads to a next thread in the first set of multiple program threads by storing the status information to a storage area of the next thread,
- wherein the status information includes a packet address indicative of a storage location for the network data received from the media access controller port, and wherein the mailbox is a first mailbox;
- and
- storing second status information of the next thread in a second mailbox of a subsequent next thread of the multiple program threads, wherein number of the multiple program threads is predetermined.
Dependencies are inferred from the claim text.