ファイバチャネル PF ドライバで SR - IOV サポートを追加するには、DDI_CB_FLAG_SRIOV フラグを指定して ddi_cb_register() を呼び出す必要があります。詳細は、Driver Callbacksセクションを参照してください。
SR-IOV コールバックを登録したファイバチャネル PF ドライバは、action パラメータとして DDI_CB_PCIV_CLASS_CONFIG が設定されたコールバックを受けます。コールバックには、fciov_conf_t 構造体へのポインタである cbarg パラメータが含まれています。
typedef struct fciov_conf { fciov_config_cmd_t fci_cmd; /* configuration op to be performed */ uint16_t fci_vf_id; /* Index of the VF to be configured */ fciov_cfg_flags fci_flags; /* Flags, indicate which info is valid */ uint8_t fci_node_wwn[8];/* node WWN for the VF */ uint8_t fci_port_wwn[8];/* port WWN for the VF */ uint16_t fci_bandwidth; /* percentile bandwidth for the VF */ } fciov_conf_t;
指定された VF に対して実行する操作を示します。定義されている有効な値は次のとおりです。
typedef enum { FCIOV_VF_CONFIG = 0x1, /* Configure a FC VF */ FCIOV_VF_UPDCONFIG = 0x2,/* Update configuration of FC VF */ FCIOV_VF_UNCONFIG = 0x4 /* Unconfigure a FC VF*/ }fciov_config_cmd_t;
コールバックを受ける PF の VF 索引番号。このフィールドの有効な値は、0 から N-1 です (N は受け側の PF で有効になっている仮想機能の番号)。
含まれているデータフィールド中の有効なフィールドを示すビットマスク。サポートされている値は次のように定義されています。
typedef enum { FCIOV_NODE_WWN = 0x1, /* node WWN info is valid */ FCIOV_PORT_WWN = 0x2, /* port WWN info is valid */ FCIOV_BANDWIDTH = 0x4 /* bandwidth info is valid */ }fciov_cfg_flags;
指定された VF のノード world wide name (WWN)。
指定された VF のポート world wide name (WWN)。
仮想機能に割り当てる必要がある帯域幅 (パーセンタイル値) を示します。詳細は、Bandwidth Configuration for Fibre Channel Virtual Functionsを参照してください。