仮想ポートのパラメーターの設定
基になるドライバーは、単一ルート I/O 仮想化 (SR-IOV) をサポートするネットワーク アダプターに作成された NIC スイッチのバーチャル ポート (Vport) パラメーターを変更できます。 ドライバーは、これらのパラメーターを変更する OID_NIC_SWITCH_VPORT_PARAMETERS のオブジェクト識別子 (OID) セット要求を発行します。
基になるドライバーは、この OID セット要求を発行する前に、NDIS_NIC_SWITCH_VPORT_PARAMETERS を Vport で NIC スイッチで変更するパラメーターを使用して 構造体を初期化する必要があります。 その後、ドライバーは OID 要求の NDIS_OID_REQUEST 構造体を初期化し、InformationBuffer メンバーを NDIS_NIC_SWITCH_VPORT_PARAMETERS 構造体のポインターに設定します。
変更できるのは、VPort の構成パラメーターの限られたサブセットのみです。 上部のドライバーは、NDIS_NIC_SWITCH_VPORT_PARAMETERS 構造体の次のメンバーを設定することによって、変更するパラメーターを指定します。
SwitchId メンバーは、パラメーターを返す NIC スイッチの識別子に設定する必要があります。
注 Windows Server 2012 以降では、SR-IOV インターフェイスは、ネットワーク アダプターの既定の NIC スイッチを1つのみサポートします。 このスイッチは、既定の NIC スイッチと呼ばれます。 SwitchId メンバーは、NDIS_DEFAULT_SWITCH_IDに設定する必要があります。
VPortId メンバーは、VPort に関連付けられている識別子に設定してください。 上位ドライバーは、次のいずれかの方法で VPort 識別子を取得します:
OID_NIC_SWITCH_CREATE_VPORT の以前の OID メソッドリクエストから。
OID_NIC_SWITCH_ENUM_VPORTS の以前の OID メソッドリクエストから。
Flags メンバーには、適切な NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED フラグの設定が必須です。 NDIS_NIC_SWITCH_VPORT_PARAMS_ 構造体のメンバーは、対応する NDIS_NIC_SWITCH_PARAMETERS_Xxx_CHANGED フラグが Ntddndis.h で定義されている場合にのみ変更できます。
Flags メンバーで設定された NDIS_NIC_SWITCH_PARAMETERS_Xxx_CHANGEDフラグに対応する NDIS_NIC_SWITCH_VPORT_PARAMETERS 構造体のメンバーは、変更される NIC スイッチ構成パラメーターで設定されます。
Windows Server 2012 以降では、OID_NIC_SWITCH_VPORT_PARAMETERS の OID セット要求を通じて、NDIS_NIC_SWITCH_VPORT_PARAMETERS構造体の次のメンバーのみを変更できます。
PortName
このメンバーには、VPort のわかりやすい説明が含まれています。
InterruptModeration
このメンバーは、VPort の割り込みモデレーション設定を指定します。
ProcessorAffinity
このメンバーは、この VPort を関連付けることができる CPU のグループ番号とビットマップを指定します。
基になるドライバーは、VPort の ProcessorAffinity メンバーを変更するために、次のガイドラインに従う必要があります。
このメンバーは、PF に接続されている VPort に対してのみ有効です。 このフィールドは、VF に接続されている既定以外の VPort では無効です。
PF に接続されている既定以外の VPort の場合は、VPort の作成時に少なくとも 1 つのプロセッサを指定する必要があります。 既定以外の VPort に関連付けられているプロセッサ アフィニティは、VPort の作成後に変更できます。
注: 既定以外の VPort は、OID_NIC_SWITCH_CREATE_VPORT の OID メソッド要求によって作成されます。
VPortState
このメンバーは、VPort の現在の状態を指定します。
基になるドライバーは、VPort の VPortState メンバーを変更するために、次のガイドラインに従う必要があります。
VF にアタッチされている既定以外の VPort の場合、VPortState メンバーは常に NdisNicSwitchVPortStateActivated に設定する必要があります。
PF にアタッチされている既定以外の VPort の場合、VPort の作成時に VPortState メンバーを NdisNicSwitchVPortStateDeactivated に設定する必要があります。 PF VPort は、OID_NIC_SWITCH_VPORT_PARAMETERS の OID セット要求が、VPortState をアクティブ化された状態に変更するために、上にあるドライバーによって発行された後にのみアクティブ化されます。
既定以外の VPort がアクティブ化されると、PF ミニポート ドライバーは、NdisAllocateSharedMemory を介して割り当てられる共有メモリなど、VPort のリソースを割り当てることができます。 PF ミニポート ドライバーは、ドライバーが OID_NIC_SWITCH_DELETE_VPORTの OID セット要求を通じて VPort を削除するまでアクティブ化された後、いつでも VPort の リソースを割り当てることができます。
既定の VPort は常にアクティブ状態です。 既定の VPort の場合、VPortState メンバーの値は常に NdisNicSwitchVPortStateActivated に設定する必要があります。
VPort がアクティブ状態の場合、非アクティブ化することはできません。 PF ミニポート ドライバーは、アクティブ化された状態にあり、対応する MAC フィルターが VPort に設定されている場合にのみ、VPort からパケットを受信および送信できます。 ただし、OID_NIC_SWITCH_DELETE_VPORT の OID セット要求によって VPort が削除された後、ドライバーは VPort に割り当てられたリソースを解放する必要があります。 ドライバーは、VPort 上のパケットのすべての保留中の送信または受信操作も取り消す必要があります。
PF ミニポート ドライバーは、OID_NIC_SWITCH_VPORT_PARAMETERS の OID セット要求を受信した後、ドライバーは、構成パラメーターを使用してハードウェアを構成します。 ドライバーは、NDIS_NIC_SWITCH_VPORT_PARAMETERS 構造体の Flags メンバーの NDIS_NIC_SWITCH_VPORT_PARAMETERS_Xxx_CHANGED フラグによって識別される構成パラメーターのみを変更できます。