摘要:
The present invention is directed to a method and computer program product for offloading specific processing tasks that would otherwise be performed in a computer system's processor and memory, to a peripheral device, or devices, that are connected to the computer. The computing task is then performed by the peripheral, thereby saving computer system resources for other computing tasks and increasing the overall computing efficiency of the computer system. In one preferred embodiment, the disclosed method is utilized in a layered network model, wherein computing tasks that are typically performed in network applications are instead offloaded to the network interface card (NIC) peripheral. An application executing on the computer system first queries the processing, or task offload capabilities of the NIC, and then selectively enables those capabilities that may be subsequently needed by the application. The specific processing capabilities of a NIC are made available by creating a task offload buffer data structure, which contains data indicative of the processing capabilities of the corresponding NIC. Once an application has discerned the capabilities of a particular NIC, it will selectively utilize any of the enabled task offload capabilities of the NIC by appending packet extension data to the network data packet that is forwarded to the NIC. The device driver of the NIC will review the data contained in the packet extension, and then cause the NIC to perform the specified operating task(s). This offloading of computing tasks on a per-packet basis allows an application to selectively offload tasks on a dynamic, as-needed basis. As such, applications executing on the computer system processor are able to offload tasks in instances where it is busy processing other computing tasks and processor overhead is high. Multiple tasks can also be offloaded in batches to a particular peripheral.
摘要:
Offloading specific processing tasks that would otherwise be performed in a computer system's processor and memory, to a peripheral device. The computing task is then performed by the peripheral, thereby saving computer system resources for other computing tasks. In one preferred embodiment, the disclosed method is utilized in a layered network model, wherein computing tasks that are typically performed in network applications are instead offloaded to the network interface card (NIC) peripheral.
摘要:
A system and method for transferring a plurality of data packets between a link layer and a transport layer is presented. The system and method provide a standardized development interface for development of link layer and transport layer drivers across multiple platforms. The abstract interface provides a standardized functional module through which multiple packet transfer commands are received and passed. The abstract interface discerns the level of sophistication of interfacing drivers and when drivers lack the capability for transferring multiple packets in a single command, the abstract interface emulates multiple transfer capabilities for such drivers.
摘要:
A system and method for transferring a plurality of data packets between a transport layer and a link layer is presented. The system and method provide a standardized development interface for development of transport and link layer drivers across multiple platforms. The abstract interface provides a standardized functional module through which multiple packet transfer commands are received and passed. The abstract interface discerns the level of sophistication of interfacing drivers and when drivers lack the capability for transferring multiple packets in a single command, the abstract interface emulates multiple transfer capabilities for such drivers.
摘要:
A system and method for incorporating intermediate link layer drivers into a network protocol stack is presented. The system and method utilize an abstract interface for interfacing both inputs and outputs of intermediate drivers and for providing an interface for link layer device drivers. The abstract interface provides routing of data packets through the intermediate drivers and device drivers to facilitate the desired data flow. The abstract interface facilitates reuse and portability of intermediate drivers across varying computer platforms. Layering of intermediate drivers also accommodates data flow modification with minimal impact to existing drivers.
摘要:
A method, computer program product, and data structure that allows any software component processing network data to communicate control information to and cooperate with another software component by associating control information with a packet of network data. The present invention associates control information with the network data upon which the control information will operate by appending one or more control data structure to a packet descriptor that is common to all software components processing the network data. Furthermore, the control data structure is "tagged" with a class ID value that allows all concerned software components to recognize and utilize the control information. In this manner, any software component may cooperate with and communicate to another software component that processes the network data regardless of any intervening software components.
摘要:
A method and computer program product that overcomes the problem of intrasystem copying of data from one data structure to another while processing incoming packets of network data coming into the system off a communications network in an environment having an integrating component in between the network card device driver and the transport protocol driver that assigns system memory for packets to the respective drivers. The integrating component temporarily transfers ownership of the original data structure from the network card device driver to the transport protocol driver based on indication from the network card device driver, independent determination that the network card device driver can afford to temporarily release ownership, and determination of the transport protocol driver's ability to take ownership. The transport protocol driver will indicate receipt of ownership of the data structure and later explicitly release it. The transport protocol driver may then operate on the data structure after the initial invocation session has ended when it initially received ownership until it is released at a later time to thus prevent copying of the data and thereby increase system efficiency. Temporary transfer of ownership according to the present invention is especially important when the network card device driver fills data structure with network data during interrupt processing that causes a scenario where the transport protocol driver is not able to fully process the network data in the initial invocation session without copying the data.