Patent ID: 7676604

Claim:
An apparatus comprising: a storage protocol engine that comprises a queue for storing in an entry in the queue both a task request and a task context index, the task request being to request a task; and a context memory coupled via a bus to the storage protocol engine and for storing in a respective entry in the context memory a context associated with the task request, the task context index identifying both the task and a context associated with the task to both an issuer of the task request and a processor of the task request; the issuer of the task request to write to the context memory; the context associated with the task request being stored in the context memory and including a protocol field that identifies a selected storage protocol from a plurality of storage protocols, the selected storage protocol to be used by the storage protocol engine for the task, the storage protocol engine and the context memory being comprised in an input/output (I/O) processor coupled to a host system, the host system including a central processing unit, the context associated with the task request also including the task context index, completion status for the task, and a task type field, the task type field identifying a selected task type for the task from a plurality of possible task types, the plurality of possible task types including: a frame transmission task type, a context management task type, and a protocol engine control task type; the task request, as stored in the queue, including a task timeout field, the task type field, and the protocol field, the task timeout field storing a relative timeout value for the task; the task context index being an index to the respective entry in the context memory that stores the context associated with the task request, the context memory being used exclusively for task context storage; a free list of task identifiers for identifying available context entries in the context memory, wherein the free list is managed by the issuer of the task request; and wherein the issuer of the task request writes the context directly to the context memory in the entry identified by the task context index prior to adding the task request to the queue.