Patent ID: 8831025

Claim:
A method comprising: receiving, at an ingress module of a network processor, a data packet from a computer network, the network processor having a plurality of core processors and a plurality of special purpose processors, wherein a core processor of the core processors is configured to perform a set of network operations on the data packet, wherein one or more of the special purpose processors is configured to perform, upon receiving a request from the core processor, a subset of the set of network operations on the data packet atomically; storing, by the ingress module and in a memory having a plurality of buffers, the data packet in the memory, the storing including storing distinct portions of the data packet in a set of the buffers if a size of the data packet exceeds a size of a buffer of the buffers; generating a packet buffer chain for the data packet, the generating including: creating a plurality of packet buffer structures for the data packet, wherein one of the packet buffer structures is a header packet buffer structure that corresponds to a first buffer of the set of the buffers containing a first portion of the data packet, and wherein another one of the packet buffer structures is a tail packet buffer structure that corresponds to a last buffer of the set of the buffers containing a last portion of the data packet, and linking each of the packet buffer structures from the header packet buffer structure to the tail packet buffer structure; receiving, from the core processor, a first request for transmitting the data packet to the core processor; determining, in response to the first request, whether all of the distinct portions of the data packet are stored in the memory and the packet buffer chain is generated; and responsive to a determination that all of the distinct portions of the data packet are stored in the memory and the packet buffer chain is generated, sending the data packet to the core processor for performing the set of network operations.