Menentukan Kemampuan Sakelar NIC

Topik ini menjelaskan bagaimana NDIS dan driver yang terlalu berlebihan menentukan kemampuan sakelar NIC dari adaptor jaringan yang mendukung virtualisasi I/O root tunggal (SR-IOV). Topik ini berisi informasi berikut:

Melaporkan Kemampuan Sakelar NIC selama MiniportInitializeEx

Mengkueri Kemampuan Pengalihan NIC dengan Driver yang Terlalu Berlebihan

Catatan Hanya driver miniport untuk Fungsi Fisik (PF) PCI Express (PCIe) dari adaptor jaringan SR-IOV yang dapat melaporkan kemampuan sakelar NIC. Driver miniport untuk PCIe Virtual Functions (VF) tidak boleh melaporkan kemampuan sakelar NIC adaptor SR-IOV.

Untuk informasi selengkapnya tentang sakelar NIC, lihat Sakelar NIC.

Melaporkan Kemampuan Sakelar NIC selama MiniportInitializeEx

Ketika NDIS memanggil fungsi MiniportInitializeEx driver miniport, driver menyediakan kemampuan sakelar NIC berikut:

  • Serangkaian kemampuan perangkat keras lengkap untuk sakelar NIC yang dapat didukung adaptor jaringan.

    Catatan Dimulai dengan NDIS 6.30, hanya satu sakelar NIC yang dibuat pada adaptor jaringan. Sakelar ini dikenal sebagai sakelar NIC default.

  • Kemampuan sakelar NIC yang saat ini diaktifkan pada adaptor jaringan.

Driver miniport melaporkan kemampuan perangkat keras sakelar NIC dari adaptor jaringan yang mendasar melalui struktur NDIS_NIC_SWITCH_CAPABILITIES yang diinisialisasi dengan cara berikut:

  1. Driver miniport menginisialisasi anggota Header . Driver mengatur anggota JenisHeader ke NDIS_OBJECT_TYPE_DEFAULT.

    Dimulai dengan NDIS 6.30, driver miniport mengatur anggota RevisiHeader ke NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2 dan anggota Ukuran ke NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2.

  2. Driver miniport menetapkan bendera yang sesuai di anggota NicSwitchCapabilities dari struktur NDIS_NIC_SWITCH_CAPABILITIES ke kemampuan sakelar NIC adaptor jaringan SR-IOV. Misalnya, driver miniport mengatur bendera NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED jika sakelar NIC mendukung moderasi interupsi pada setiap port virtual (VPort) yang dibuat pada sakelar.

  3. Driver miniport mengatur anggota lain dari struktur NDIS_NIC_SWITCH_CAPABILITIES ke rentang nilai untuk kemampuan sakelar NIC adaptor jaringan SR-IOV. Misalnya, driver miniport mengatur anggota MaxNumVFs dan MaxNumVPorts ke jumlah maksimum VF dan VPort yang dapat didukung adaptor.

    Catatan Bergantung pada sumber daya perangkat keras yang tersedia pada adaptor jaringan, driver miniport dapat mengatur anggota MaxNumVFs ke nilai yang kurang dari kata kunci *NumVFs-nya . Untuk informasi selengkapnya tentang kata kunci ini, lihat Kata Kunci INF Standar untuk SR-IOV.

Ketika NDIS memanggil fungsi MiniportInitializeEx driver miniport, driver mendaftarkan kemampuan sakelar NIC adaptor jaringan dengan mengikuti langkah-langkah berikut:

  1. Driver miniport menginisialisasi struktur NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

    Driver miniport mengatur anggota HardwareNicSwitchCapabilities ke penunjuk ke struktur NDIS_NIC_SWITCH_CAPABILITIES yang diinisialisasi sebelumnya.

    Jika pengaturan registri untuk kata kunci *SRIOV INF memiliki nilai satu, adaptor jaringan saat ini diaktifkan untuk pembuatan dan konfigurasi sakelar NIC. Driver miniport mengatur anggota CurrentNicSwitchCapabilities ke pointer ke struktur NDIS_NIC_SWITCH_CAPABILITIES yang sama.

    Jika pengaturan registri untuk kata kunci *SRIOV INF memiliki nilai nol, adaptor jaringan saat ini tidak diaktifkan untuk pembuatan dan konfigurasi sakelar NIC. Driver miniport harus mengatur anggota CurrentNicSwitchCapabilities ke NULL.

    Untuk informasi selengkapnya tentang kata kunci *SRIOV INF, lihat Kata Kunci INF Standar untuk SR-IOV.

  2. Driver memanggil NdisMSetMiniportAttributes dan mengatur parameter MiniportAttributes ke penunjuk ke struktur NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

Untuk informasi selengkapnya tentang proses inisialisasi adaptor, lihat Menginisialisasi Adapter Miniport.

Membuat sakelar NIC tanpa SR-IOV

Driver Miniport di NDIS 6.60 dan yang lebih baru harus mematuhi persyaratan berikut untuk koeksistensi sakelar NIC dan kemampuan VMQ ketika SR-IOV tidak diaktifkan. Ketika SR-IOV diaktifkan, driver miniport harus mematuhi persyaratan yang ada di bagian sebelumnya.

  • Driver miniport mengiklankan kemampuan sakelar NIC dan VMQ.
  • NIC dapat beralih antara sakelar NIC dan mode VMQ tanpa menghidupkan ulang NIC.
    • Ketika NIC dimulai awalnya, NIC siap untuk berada dalam salah satu mode (baik membuat sakelar NIC atau membuat antrean VMQ).
      • Jika sakelar NIC dibuat, miniport akan gagal pada panggilan balik alokasi antrean VMQ berikutnya.
      • Jika antrean VMQ dibuat terlebih dahulu, driver miniport berhasil mengalokasikan antrean VMQ dan gagal dalam panggilan alokasi sakelar NIC.
    • Ketika sakelar NIC dihapus atau semua antrean VMQ dihapus, driver miniport kembali ke status awal dan siap untuk masuk ke salah satu mode ini lagi.

Untuk mengiklankan bahwa sakelar NIC dapat dibuat tanpa menggunakan SR-IOV, driver miniport menetapkan bendera NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED di anggota NicSwitchCapabilities dari struktur NDIS_NIC_SWITCH_CAPABILITIES .

Mengkueri Kemampuan Pengalihan NIC dengan Driver yang Terlalu Berlebihan

NDIS meneruskan kemampuan sakelar NIC adaptor jaringan yang saat ini diaktifkan ke driver yang terlalu mengikat adaptor jaringan dengan cara berikut:

NDIS juga mengembalikan struktur NDIS_NIC_SWITCH_CAPABILITIES saat menangani permintaan kueri pengidentifikasi objek (OID) OID_NIC_SWITCH_HARDWARE_CAPABILITIES dan OID_NIC_SWITCH_CURRENT_CAPABILITIES yang dikeluarkan oleh driver protokol atau filter yang terlalu berlebihan.