Udostępnij przez


Dodawanie i usuwanie odciążeń protokołu niskiego poboru mocy

Aby dodać wyłączenie protokołu niskiej mocy, sterowniki protokołów NDIS wydają zapytanie OID OID_PM_ADD_PROTOCOL_OFFLOAD. Element InformationBuffer w strukturze NDIS_OID_REQUEST zawiera wskaźnik do struktury NDIS_PM_PROTOCOL_OFFLOAD.

Uwaga Jeśli pakiet przychodzący pasuje zarówno do protokołu odciążonego, jak i wzorca (na przykład z powodu błędu konfiguracji), karta sieciowa powinna odpowiadać na pakiet i wybudzić komputer.

Struktura NDIS_PM_PROTOCOL_OFFLOAD zawiera następujące informacje:

Członek Opis

priorytet

Zawiera priorytet rozładowania protokołu. Jeśli nadrzędny sterownik dodaje odciążenie protokołu o wyższym priorytecie, gdy nie ma dostępnych zasobów dla dodatkowych odciążeń protokołu, usługa NDIS może usunąć odciążenie protokołu o niższym priorytecie w celu uwolnienia zasobów. Sterowniki miniportu powinny ignorować ten element członkowski. Sterowniki protokołów mogą przypisywać dowolną wartość w ramach wstępnie zdefiniowanego zakresu od NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_LOWEST do NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_HIGHEST.

ProtocolOffloadType

Zawiera wartość NDIS_PM_PROTOCOL_OFFLOAD_TYPE, która określa typ odciążania protokołu.

FriendlyName

Zawiera strukturę NDIS_PM_COUNTED_STRING zawierającą czytelny dla użytkownika opis odciążania protokołu niskiego zasilania.

ProtocolOffloadId

Zawiera wartość podaną przez NDIS, która identyfikuje protokół odciążony. Zanim NDIS wyśle żądanie OID OID_PM_ADD_PROTOCOL_OFFLOAD do podstawowych sterowników NDIS lub ukończy żądanie do nadrzędnego sterownika, NDIS ustawia ProtocolOffloadId na wartość unikatową wśród odciążeń protokołu na karcie sieciowej.

NextProtocolOffloadOffset

Zawiera przesunięcie od początku żądania OID InformationBufferdo następnej struktury NDIS_PM_PROTOCOL_OFFLOAD w liście dla identyfikatora OID OID_PM_PROTOCOL_OFFLOAD_LIST. Aby uzyskać więcej informacji na temat OID_PM_PROTOCOL_OFFLOAD_LIST, zobacz Uzyskiwanie bieżących ustawień parametrów odciążania protokołów energooszczędnych.

ProtocolOffloadParameters

Zawiera jeden ze struktur: IPv4ARPParameters, IPv6NSParameterslub Dot11RSNRekeyParameters w unii.

Termin Opis

IPv4ARPParameters

Zawiera parametry protokołu IPv4 ARP.

Parametry IPv6NS

Zawiera parametry IPv6 Neighbor Solicitation (NS).

Dot11RSNRekeyParameters

Zawiera parametry wymiany kluczy niezawodnej sieci bezpiecznej (RSN) IEEE 802.11

 

Usługa NDIS przypisuje identyfikator unikatowy dla karty sieciowej do każdego odciążonego protokołu. Identyfikator odciążania protokołu jest unikatową wartością dla każdego z protokołów, które są odciążane na karcie sieciowej. Jednak identyfikator odciążania protokołu nie jest globalnie unikatowy dla wszystkich kart sieciowych. NDIS przekazuje ten identyfikator do podstawowego sterownika miniportowego, gdy NDIS wysyła żądanie OID_PM_ADD_PROTOCOL_OFFLOAD OID do sterownika miniportowego. W przypadku pomyślnego odciążenia protokołu usługa NDIS zwraca identyfikator do warstwowego sterownika odpowiedzialnego za odciążenie protokołu. Sterownik nadrzędny używa identyfikatora do usunięcia wcześniej odciążonego protokołu. Identyfikator odciążania protokołu jest również używany we wskazaniach stanu dla sterowników wyższej warstwy po usunięciu odciążonego protokołu z karty sieciowej.

Sterowniki protokołów muszą usunąć wszystkie przekazane protokoły z karty sieciowej przed zamknięciem powiązania z tą kartą sieciową. Aby usunąć odciążenie protokołu o niskim zużyciu energii, sterownik protokołu wysyła żądanie ustawienia identyfikatora OID OID_PM_REMOVE_PROTOCOL_OFFLOAD. Element InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do identyfikatora odciążenia protokołu.

Usługa NDIS umożliwia wielu sterownikom protokołu NDIS dodawanie odciążeń protokołu do tej samej karty sieciowej. Aby upewnić się, że odpowiedni zestaw protokołów został odciążony do karty sieciowej, gdy liczba żądanych protokołów odciążonych jest wyższa niż obsługiwana przez kartę sieciową, sterowniki protokołów przypisują priorytet do każdego odciążonego protokołu. Jeśli usługa NDIS nie może odciążyć nowego protokołu o wysokim priorytecie, ponieważ karta sieciowa nie ma wystarczających zasobów, usługa NDIS usuwa jeden z odciążonych protokołów o niższym priorytecie (jeśli istnieje) i próbuje odciążyć protokół o wysokim priorytecie ponownie.

Uwaga Sterownik miniportu powinien odrzucić żądanie dodania odciążenia protokołu niskiego zużycia energii i zwrócić kod stanu STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL, aby umożliwić usłudze NDIS ponowne ustalenie priorytetów odciążenia protokołu.

Jeśli w wyniku odciążenia protokołu o wysokim priorytecie jeden z protokołów o niższym priorytecie jest usuwany, usługa NDIS wysyła NDIS_STATUS_PM_OFFLOAD_REJECTED wskazanie stanu, aby powiadomić nadrzędny sterownik, który ustawił odciążenie usuniętego protokołu. Element StatusBuffer struktury NDIS_STATUS_INDICATION zawiera identyfikator odciążenia protokołu dla odrzuconego odciążenia protokołu. Usługa NDIS dostarczyła identyfikator przeniesienia protokołu w ProtocolOffloadId jako element struktury NDIS_PM_PROTOCOL_OFFLOAD.