OID_RECEIVE_FILTER_SET_FILTER

Driver yang terlalu berlebihan mengeluarkan permintaan metode OID OID_RECEIVE_FILTER_SET_FILTER untuk mengatur filter pada adaptor jaringan.

Anggota InformationBuffer dari struktur NDIS_OID_REQUEST berisi penunjuk ke buffer yang dialokasikan pemanggil. Buffer ini diformat untuk memuat hal berikut:

Setelah pengembalian berhasil dari permintaan metode OID, anggota InformationBuffer dari struktur NDIS_OID_REQUEST berisi penunjuk ke struktur NDIS_RECEIVE_FILTER_PARAMETERS . Jika driver yang terlalu berlebihan membuat filter penerima baru, NDIS memperbarui struktur ini dengan pengidentifikasi filter baru.

Keterangan

Filter penerima NDIS digunakan dalam antarmuka NDIS berikut:

Permintaan metode OID dari OID_RECEIVE_FILTER_SET_FILTER wajib untuk driver miniport yang mendukung coalescing paket NDIS, antarmuka SR-IOV, atau VMQ.

Driver yang terlalu berlebihan menginisialisasi struktur NDIS_RECEIVE_FILTER_PARAMETERS dengan konfigurasi filter yang diminta. NDIS menetapkan pengidentifikasi filter di anggota FilterId dari struktur NDIS_RECEIVE_FILTER_PARAMETERS dan meneruskan permintaan metode ke driver miniport yang mendasar.

Setiap filter yang diatur pada antrean terima memiliki pengidentifikasi filter unik untuk adaptor jaringan. Artinya, pengidentifikasi filter tidak diduplikasi pada antrean yang berbeda yang dikelola adaptor jaringan. Ketika NDIS menerima permintaan OID untuk mengatur filter pada antrean terima, NDIS memverifikasi parameter filter. Setelah NDIS mengalokasikan sumber daya yang diperlukan dan pengidentifikasi filter, NDIS mengirimkan permintaan OID ke adaptor jaringan yang mendasar. Jika adaptor jaringan berhasil mengalokasikan sumber daya perangkat lunak dan perangkat keras yang diperlukan untuk filter, adaptor jaringan menyelesaikan permintaan OID dengan status pengembalian NDIS_STATUS_SUCCESS.

Catatan Dimulai dengan NDIS 6.30, filter penerimaan coalescing paket hanya didukung pada antrean penerima default adaptor jaringan. Antrean penerima ini memiliki pengidentifikasi NDIS_DEFAULT_RECEIVE_QUEUE_ID.

Driver miniport harus mempertahankan pengidentifikasi filter untuk filter penerima yang dialokasikan. NDIS menggunakan pengidentifikasi filter dalam permintaan OID nanti untuk mengubah parameter filter penerima atau menghapus filter terima.

Setelah driver miniport menerima permintaan OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE dan memiliki filter yang diatur pada antrean, antrean berada dalam status Berjalan . Dalam keadaan ini, driver miniport dapat memulai indikasi paket dalam antrean dengan memanggil NdisMIndicateReceiveNetBufferLists.

Panduan Tambahan untuk Antarmuka SR-IOV

Poin-poin berikut berlaku untuk driver miniport yang mendukung antarmuka SR-IOV:

  • Untuk antarmuka SR-IOV, antrean terima dibuat pada port virtual default atau nondefault (VPort).

    Catatan Dimulai dengan Windows Server 2012, antarmuka SR-IOV hanya mendukung antrean terima default VPort.

    Setelah SR-IOV VPort dialokasikan melalui permintaan set OID OID_NIC_SWITCH_CREATE_VPORT, driver yang terlalu berlebihan dapat mengatur filter pada VPort dengan permintaan OID OID_RECEIVE_FILTER_SET_FILTER.

    Catatan Hanya driver yang terlalu berlebihan yang mengalokasikan VPort yang dapat mengatur filter pada VPort tersebut.

  • Karena VPort default selalu ada, driver yang terlalu berlebihan selalu dapat mengatur filter pada VPort default.

  • Saat VPort dibuat, tidak ada filter yang diterima yang diatur di dalamnya. Dalam hal ini, driver miniport tidak boleh menunjukkan paket terima pada VPort tersebut sebelum driver miniport menerima permintaan OID OID_RECEIVE_FILTER_SET_FILTER untuk VPort. Setelah permintaan OID ini dikeluarkan, driver miniport dapat menunjukkan paket pada VPort tersebut.

    Catatan Jika driver miniport menunjukkan paket pada VPort saat memproses permintaan OID OID_RECEIVE_FILTER_SET_FILTER, driver harus menyelesaikan permintaan OID dan mengembalikan kode status NDIS_STATUS_SUCCESS.

Panduan Tambahan untuk Antarmuka VMQ

Poin-poin berikut berlaku untuk driver miniport yang mendukung antarmuka VMQ:

  • Setelah antrean terima VMQ dialokasikan, driver yang terlalu besar dapat mengatur filter pada antrean terima dengan permintaan OID OID_RECEIVE_FILTER_SET_FILTER.

    Catatan Hanya driver protokol yang mengalokasikan antrean terima yang dapat mengatur filter pada antrean tersebut.

  • Karena antrean default selalu ada, driver yang terlalu berlebihan selalu dapat mengatur filter pada antrean default. Jika adaptor jaringan mendukung antrean drop, driver yang terlalu berlebihan dapat mengatur filter pada antrean drop.

    Driver yang terlalu besar tidak memiliki antrean default atau drop. Oleh karena itu, semua driver protokol yang terikat ke adaptor jaringan menggunakan antrean default atau drop.

  • Saat antrean terima dibuat, tidak ada filter yang diterima yang diatur di dalamnya. Dalam hal ini, driver miniport tidak boleh menunjukkan paket penerima pada antrean yang menerima sebelum driver miniport menerima permintaan OID OID_RECEIVE_FILTER_SET_FILTER untuk antrean terima. Setelah permintaan OID ini dikeluarkan, driver miniport dapat menunjukkan paket pada antrean penerima tersebut.

    Catatan Jika driver miniport menunjukkan paket pada antrean saat memproses permintaan OID OID_RECEIVE_FILTER_SET_FILTER, driver tersebut harus menyelesaikan permintaan OID dan mengembalikan kode status NDIS_STATUS_SUCCESS.

Mengembalikan kode status

Driver miniport mengembalikan salah satu kode status berikut untuk permintaan metode OID OID_RECEIVE_FILTER_SET_FILTER:

NDIS_STATUS_SUCCESS
Filter berhasil diatur pada antrean. Buffer informasi berisi struktur NDIS_RECEIVE_FILTER_PARAMETERS yang diperbarui.

NDIS_STATUS_PENDING
Permintaan tertunda penyelesaiannya. Kode status akhir dan hasil akan diteruskan ke penanganan penyelesaian permintaan OID dari pemanggil.

NDIS_STATUS_INVALID_PARAMETER
Satu atau beberapa parameter yang disediakan driver yang terlalu besar tidak valid.

NDIS_STATUS_INVALID_LENGTH
Buffer informasi terlalu pendek. NDIS mengatur DATA. METHOD_INFORMATION. Anggota BytesNeeded dalam struktur NDIS_OID_REQUEST ke ukuran buffer minimum yang diperlukan.

NDIS_STATUS_NOT_SUPPORTED
Versi NDIS dari driver miniport adalah versi yang lebih lama dari 6.20.

NDIS_STATUS_FAILURE
Permintaan gagal karena alasan lain.

Persyaratan

Versi

Didukung di NDIS 6.20 dan yang lebih baru.

Header

Ntddndis.h (termasuk Ndis.h)

Lihat juga

NdisMIndicateReceiveNetBufferLists

NDIS_OID_REQUEST

NDIS_RECEIVE_FILTER_PARAMETERS

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_FILTER_ID

OID_NIC_SWITCH_CREATE_VPORT

OID_RECEIVE_FILTER_CLEAR_FILTER

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE