NAME
ibv_create_ah, ibv_destroy_ah - Address handle(AH) を作成と破壊
SYNOPSIS
#include <infiniband/verbs.h> struct ibv_ah *ibv_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr); int ibv_destroy_ah(struct ibv_ah *ah);
DESCRIPTION
ibv_create_ah()
は protection domain pd 内に属性情報 attr に基づく address handle(AH) を作成する。
Address handle(AH) は UD QP で ibv_post_send() を呼び出して Send Work Request を登録する時に利用する。
メンバ名 | 型 | 名称 | 説明 |
---|---|---|---|
grh | struct ibv_global_route | Global Routing Header(GRH) | 無視してよい。 |
dlid | uint16_t | Destination LID | 送信先の LID。 |
sl | uint8_t | Service Level | 送信に使う Service Level を指定する。0〜15 の値を指定できる。 |
src_path_bits | uint8_t | Source Path Bits | LID Mask Control(LMC) を使う場合の Path Bits を指定する。LMC を使わない場合は 0 を指定する。 |
static_rate | uint8_t | Maximum static rate | 転送レートを指定する場合に enum ibv_rate 列挙子の値を指定する。通常は IBV_RATE_MAX(0) を指定すればよい。 |
is_global | uint8_t | GRH attributes are valid | grh を指定する場合は非 0 を、grh を使わず dlid & src_path_bits を指定する場合は 0 を指定する。 |
port_num | uint8_t | Physical port number | 送信に使う物理ポートを指定する。1 以上を指定する。 |
struct ibv_ah_attr
構造体の is_global が非 0 を指定した場合のみ grh が有効になる。
ただし通常は is_global は 0 を指定するので、使わない。
ibv_destroy_ah()
は AH ah を破壊する。
RC QP が ibv_modify_qp() で送信先を決定する時に struct ibv_ah_attr
構造体を使う。
UD QP は ibv_post_send() 毎に送信先を決められるが、その送信先を struct ibv_ah_attr
構造体を直接使わずに、ibv_create_ah()
でわざわざ登録する。
この理由はよく分からない。
またこの関数はカーネルランドで処理される。 実際にはパラメータの変換とカーネル内部のリストへの登録程度しかしないが、1 回の処理時間は意外に大きいことに注意する必要がある。
RETURN VALUE
ibv_create_ah()
は成功した場合、作成した AH へのポインタを返す。
失敗した場合は NULL を返す。
ibv_destroy_ah()
は成功した場合、0 を返す。
失敗した場合は、エラーの原因を示す値(errno と同じ)を返す。
SEE ALSO
InfiniBand Verbs API Reference、ibv_alloc_pd(3)、ibv_init_ah_from_wc(3)
、ibv_create_ah_from_wc(3)
AUTHORS