A TCP/IP offload network interface device (NID) is integrated with a
processing device that executes a stack. The TCP/IP offload NID can
either be a full TCP/IP offload device or a partial TCP/IP offload
device. Common types of packets are processed by the NID in a fast-path
such that the stack is offloaded of TCP and IP protocol processing tasks.
A hash is made from the packet header and is pushed onto a queue. The
hash is later popped off the queue and is used to identify an associated
TCB number from a hash table. A mechanism caches hash buckets in SRAM and
stores other hash buckets in DRAM. An "IN SRAM CAM" is used to determine
whether the TCB associated with the identified TCB number is cached in
SRAM or whether it must be moved from DRAM into the SRAM cache. A lock
table and a "lock table CAM" mechanism is disclosed that facilitates
multiple processors working on the protocol processing of a single
packet.