IBV_CREATE_AH(3), IBV_DESTROY_AH(3)

作成日:2014.05.10

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 を登録する時に利用する。

Table 1: struct ibv_ah_attr 構造体
メンバ名名称説明
grhstruct ibv_global_routeGlobal Routing Header(GRH) 無視してよい。
dliduint16_tDestination LID 送信先の LID。
sluint8_tService Level 送信に使う Service Level を指定する。0〜15 の値を指定できる。
src_path_bitsuint8_tSource Path Bits LID Mask Control(LMC) を使う場合の Path Bits を指定する。LMC を使わない場合は 0 を指定する。
static_rateuint8_tMaximum static rate 転送レートを指定する場合に enum ibv_rate 列挙子の値を指定する。通常は IBV_RATE_MAX(0) を指定すればよい。
is_globaluint8_tGRH attributes are valid grh を指定する場合は非 0 を、grh を使わず dlid & src_path_bits を指定する場合は 0 を指定する。
port_numuint8_tPhysical 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 Referenceibv_alloc_pd(3)ibv_init_ah_from_wc(3)ibv_create_ah_from_wc(3)

AUTHORS

コメント

コメントを書き込む

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp