Bagikan melalui


Mengaktifkan, menonaktifkan, dan memperbarui VMMQ pada VPort

Setelah membuat VPort, driver lapisan atas dapat mengaktifkan, menonaktifkan, atau memperbarui parameter RSS VPort.

Driver dapat memperbarui tabel tidak langsung RSS dari VPort untuk mengubah antrean angka untuk VPort. Namun jenis hash RSS, fungsi hash, dan kunci rahasia hash VPort dianggap sebagai parameter statis dan tidak diubah oleh driver yang terlalu berlebihan selama masa pakai VPort. Jika driver lapisan atas ingin mengubah salah satu parameter statis RSS, driver tersebut harus menghapus dan membuat ulang VPort.

Driver lapisan atas mengaktifkan, menonaktifkan, atau mengubah parameter RSS VPort dengan mengeluarkan permintaan OID OID_GEN_RECEIVE_SCALE_PARAMETERS . Driver lapisan atas mengatur bidang VPortId dalam struktur NDIS_OID_REQUEST ke ID VPort target dari konfigurasi baru.

Driver lapisan atas juga mengatur struktur NDIS_RECEIVE_SCALE_PARAMETERS yang digunakan dalam permintaan OID sebagai berikut. Harap dicatat bahwa berdasarkan kemampuan VMMQ yang diiklankan oleh adaptor miniport yang mendasar, beberapa bidang dapat diatur ke nilai yang sama untuk semua PF VPorts.

  • Atur anggota RevisiHeader ke NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3.

  • Atur bendera NDIS_RSS_PARAM_FLAG_DEFAULT_PROCESSOR_UNCHANGED untuk menentukan bahwa anggota DefaultProcessorNumber tidak berubah.

  • Atur BaseCpuNumber ke nol.

  • Atur DefaultProcessorNumber untuk menentukan prosesor RSS default untuk VPort ini. Miniport dapat mengasumsikan bahwa prosesor default adalah bagian dari daftar prosesor RSS, tetapi tidak dapat mengasumsikan bahwa prosesor RSS default berada dalam tabel tidak langsung saat ini.

  • Atur HashInformation untuk menunjukkan jenis hash dan fungsi hash yang harus digunakan NIC untuk menghitung nilai hash paket yang diterima untuk VPort ini. Driver lapisan atas dapat mengatur bidang ini ke nilai yang berbeda untuk setiap VPort.

  • Atur IndirectionTableSize untuk menentukan ukuran tabel tidak langsung dalam byte. Atur bidang ini ke nilai yang sama untuk semua PF VPorts. Driver lapisan atas harus memastikan bahwa jumlah entri dalam tabel tidak langsung adalah kekuatan dua.

  • Atur IndirectionTableOffset untuk menentukan offset tabel tidak langsung dari awal struktur NDIS_RECEIVE_SCALE_PARAMETERS .

  • Atur HashSecretKeySize untuk menentukan ukuran kunci rahasia hash dalam byte. Driver lapisan atas dapat mengatur kunci rahasia yang berbeda untuk setiap VPort jika adaptor miniport mendukung ini. Untuk informasi selengkapnya, lihat Mengiklankan kemampuan VMMQ.

  • Atur HashSecretKeyOffset untuk menentukan offset kunci rahasia hash dari awal struktur NDIS_RECEIVE_SCALE_PARAMETERS . Driver lapisan atas dapat mengatur kunci rahasia yang berbeda untuk setiap VPort jika adaptor miniport mendukung ini. Untuk informasi selengkapnya, lihat Mengiklankan kemampuan VMMQ.

  • Atur ProcessorMaskOffset, NumberOfProcessorMasks, dan ProcessorMasksEntrySize dengan tepat.

Ketika driver miniport menerima permintaan OID untuk menonaktifkan VMMQ untuk VPort, driver miniport harus kembali menunjukkan semua paket yang diterima untuk VPort tersebut pada prosesor yang ditentukan oleh bidang ProcessorAffinity dalam struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS yang digunakan dalam permintaan OID OID_NIC_SWITCH_CREATE_VPORT .

Mengubah jumlah antrean untuk VPort

Jumlah prosesor unik yang digunakan dalam tabel tidak langsung VPort tidak boleh melebihi nilai bidang NumQueuePairs dari struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS yang ditentukan dalam permintaan OID OID_NIC_SWITCH_CREATE_VPORT terakhir yang dikeluarkan. Prosesor ini akan menjadi subset dari set prosesor RSS yang dikembalikan oleh panggilan ke NdisGetRssProcessorInformation. Untuk informasi selengkapnya, lihat Mengalokasikan VPort untuk VMMQ. Namun, tabel tidak langsung pada VPort yang berbeda dapat berisi prosesor yang sama.

Untuk mengurangi jumlah antrean untuk PF VPort, driver lapisan atas harus:

  1. Kirim OID OID_GEN_RECEIVE_SCALE_PARAMETERS dengan ukuran tabel tidak langsung asli. Namun, tabel tidak langsung pada langkah ini hanya dapat mereferensikan jumlah prosesor yang berbeda hingga jumlah antrean baru. Jika tabel tidak langsung baru harus lebih kecil dari tabel asli karena bendera NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED struktur NDIS_NIC_SWITCH_PARAMETERS , penerbit harus menjamin bahwa tabel tidak langsung pada langkah ini akan berisi tabel tidak langsung baru yang direplikasi sebanyak yang diperlukan untuk memenuhi persyaratan bendera TERBATAS untuk jumlah antrean asli.

  2. Kirim OID OID_NIC_SWITCH_VPORT_PARAMETERS dengan jumlah antrean baru.

  3. Kirim OID_GEN_RECEIVE_SCALE_PARAMETERS dengan ukuran tabel tidak langsung baru jika telah berubah.

Untuk meningkatkan jumlah antrean untuk PF VPort, driver lapisan atas harus:

  1. Driver tidak perlu memperbarui tabel tidak langsung saat ini sebelum langkah 2 karena tabel hanya mereferensikan jumlah prosesor yang berbeda hingga jumlah antrean saat ini.

  2. Kirim OID OID_NIC_SWITCH_VPORT_PARAMETERS dengan jumlah antrean baru. Jika bendera TERBATAS diatur, driver miniport harus secara internal mereplikasi tabel tidak langsung asli sebanyak yang diperlukan untuk mencocokkan persyaratan ukuran tabel tidak langsung untuk jumlah antrean baru.

  3. Kirim OID OID_GEN_RECEIVE_SCALE_PARAMETERS dengan ukuran tabel tidak langsung baru jika telah berubah.