Device Power States for NICs (NDIS 5.1)
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
A device power state for a NIC describes a NIC's level of power consumption and computing activity. There are four device power states: D0, D1, D2, and D3. D0 is the highest-powered state. D1, D2, and D3 are the sleeping states. The state number is inversely related to power consumption: higher-numbered states use less power. Power might be fully removed from the NIC in the D3 state. For more general information about device states, see Device Power States. (Note, however, that NDIS drivers do not process PM IRPs--NDIS does.)
The device power states for NICs are defined as follows:
D0
Power consumption
The NIC is fully powered and delivering full functionality and performance.Device context
The hardware device context is maintained by either the NIC or miniport driver or both.Miniport driver and NIC behavior
The NIC is fully compliant with the requirements of the attached network. The operation of the miniport driver and NIC is not restricted because of low-power requirements.Restore time
Not applicable.
D1
Power consumption
This is the highest-powered sleeping state. Power consumption is less than that in the D0 state and greater than or equal to that in the D2 state.Device context
The miniport driver should preserve any hardware device context that might be lost. The miniport driver should restore such context when the device returns to the D0 state.Miniport driver and NIC behavior
The miniport driver does not receive transmission requests from protocol drivers. NDIS either notifies a bound protocol driver of the NIC's transition to the sleeping state or, if the protocol driver is a legacy driver that is not power management-aware, NDIS disables transmission requests from the protocol driver. However, the miniport driver should be able to handle the case in which it does receive transmission requests when it is in this low-power state. In this case, the miniport driver should fail all transmission requests.The miniport driver does not indicate up any packets that the NIC might receive while it is in this state.
The NIC does not generate interrupts. However, the miniport driver must be able to handle interrupts, because a shared interrupt could be generated on the bus.
Restore time
The time to restore the NIC to the D0 state is less than that required when the NIC is in the D2 state.
D2
Power consumption
An intermediate sleeping state. Power consumption is less than that in the D1 state and greater than or equal to that in the D3 state.Device context
The miniport driver should preserve any hardware device context that might be lost. The miniport driver should restore such context when the device returns to the D0 state.Miniport driver and NIC behavior
The miniport driver does not receive transmission requests from protocol drivers, because NDIS will either notify a bound protocol driver of the transition to the sleeping state or, if the protocol driver is a legacy driver that is not power management-aware, disable such requests from the protocol driver. However, the miniport driver should be able to handle the case in which it does receive transmission requests when it is in this low-power state. In this case, the miniport driver should fail all transmission requests.The miniport driver does not indicate up any packets that the NIC might receive while in this state.
The NIC does not generate interrupts. However, the miniport driver must be able to handle interrupts, because a shared interrupt could be generated on the bus.
Restore time
The time to restore the NIC to the D0 state is greater than that required when the NIC is in the D1 state and less than that required when the NIC is in the D3 state.
D3
Power consumption
The lowest-powered sleeping state. In this state, power might be completely removed from the NIC.Device context
The miniport driver should preserve any hardware device context that might be lost. The miniport driver should restore such context when the device returns to the D0 state.Miniport driver and NIC behavior
The miniport driver does not receive transmission requests from protocol drivers, because NDIS either notifies a bound protocol driver that the miniport driver is in a sleeping state or, if the protocol driver is a legacy driver that is not power management-aware, NDIS disables such requests from the protocol driver. However, the miniport driver should be able to handle the case in which it does receive transmission requests when it is in this low-power state. In this case, the driver should fail all transmission requests.The miniport driver does not indicate up any packets that the NIC might receive while it is in this state.
The NIC does not generate interrupts. However, the miniport driver must be able to handle interrupts, because a shared interrupt could be generated on the bus.
Restore time
The time to restore the NIC to the D0 state is greater than that required when the NIC is in the D2 state.
Before a NIC can transition to a sleeping state, its miniport driver must disable everything under the miniport driver's control: interrupts must be disabled, timers must be canceled, and so on. A miniport driver cannot access the NIC hardware after the bus driver sets the NIC to the D3 state.
Transitions Allowed Between Device Power States (NDIS 5.1)
The only transitions allowed between device power states are from the highest-powered state (D0) to a sleeping state (D1, D2, D3), or from a sleeping state to the highest-powered state. NDIS never commands a NIC to transition directly from one sleeping state to another.