A method to offload a network stack connection is presented. A request,
which includes a list of resource requirements from each software layer
in the stack, to offload the network stack connection is sent through the
stack to the peripheral device. The peripheral device is a second
processor that processes the offloaded network stack connection in
software, in hardware, or a mixture of hardware and software. The device
allocates resources for the list and sends a handle to each of the
software layers for communication with the device. The state for each
layer is sent to the device that includes state variables that are
classified as a constant, a cached variable handled by the CPU, or a
delegated variable handled by the device.