- A QP Is a Bi-Directional Message Transport Engine
- Verb Layer Is an OS-Independent API
- QP Context Defines QP's Operational Characteristics
- Sending a Message to a Destination CA
Verb Layer Is an OS-Independent API
Software applications do not interact with the HCA interface directly. Rather, the software application (item B) makes calls to a software entity referred to as the Verb Layer (item D). Think of the Verb Layer as an API loosely defined by the specification and implemented by each OS vendor in a vendor-specific manner. For each verb (think of it as a function call), the specification defines:
Its input parameters.
Its return, or output, parameters.
The actions taken by the verb.
The Verb Layer, in turn, can access the HCA hardware interface (i.e., its register set; item E) to accomplish the desired action within the HCA. In addition, the Verb Layer also:
makes calls to the OS (item A) when required (e.g., it can call the OS memory management facility to have it allocate pages of physical main memory for a verb's use or for the HCA's use).
accesses main memory if it must do so to accomplish an action requested via a verb call. As an example, in a particular OS environment, a software application may build a message transfer Work Request (WR) in main memory and then execute a Post Send Request verb call to post the WR to a QP's SQ for processing. It would supply the start address of the WR in main memory as one of the input parameters to the Post Send Request verb. The verb would then access main memory to read the WR, which it then posts to the targeted QP's SQ.