共用方式為


新式待命平台的 Wi-Fi 電源管理

在實作 新式待命電源模型的Windows 硬體平臺中,Wi-Fi裝置會維持其與網路的連線,而平臺處於新式待命電源狀態。 正確管理Wi-Fi裝置的電源管理,無論是在現代化待命期間,還是開啟顯示器時,都是達到長時間電池使用時間不可或缺的。

Wi-Fi是一種普遍的中型無線技術,可啟用電腦系統、裝置和網際網路之間的高頻寬、低延遲通訊。

支援新式待命的每個 Windows 硬體平臺都必須配備Wi-Fi裝置或行動寬頻 (MBB) 裝置。 由於Wi-Fi整合較為常見且廣泛,因此預期Wi-Fi裝置將會啟用並聯機到幾乎一切時間。

概觀

新式待命平臺中的Wi-Fi裝置必須支援數個主要電源管理功能,以降低裝置和平臺整體的耗電量。

第一項功能稱為 電源儲存模式,可讓Wi-Fi裝置在保持連線到存取點時減少其耗電量。 省電模式可降低耗電量,代價是增加資料傳輸延遲。 平臺在電池電源上執行時,預期一律會啟用省電模式,除非需要低延遲連線 (,例如 VOIP 呼叫) 。 如需詳細資訊,請參閱 Wi-Fi 自動電源儲存模式

第二個主要電源管理功能是 模式比對喚醒。 此功能可讓 Windows 在Wi-Fi裝置偵測到符合預存模式的網路封包時,將晶片 (SoC) 上的系統 Wi-Fi喚醒。 模式比對喚醒只能在新式待命期間運作。 啟用模式比對喚醒時,Wi-Fi裝置會以非常低的電源模式運作,並接聽以特定系統服務或已註冊應用程式為目標的傳入資料 (,例如推播通知和電子郵件) 。 同時,硬體平臺中的其他元件處於低電源狀態。 如需詳細資訊,請參閱 網路Wake-Up事件

此外,新式待命平臺中的Wi-Fi裝置必須支援下列執行時間電源管理功能:

本文提供新式待命平臺中Wi-Fi裝置的設計指引,這些裝置會透過安全數位輸入/輸出 (I/O) (SDIO) 或 PCI Express (PCIe) 匯流排連線到 SoC 本身,或實際整合到 SoC 本身。 Microsoft 尚未在現代待命平臺中測試Wi-Fi透過通用序列匯流排 (USB) 連線的裝置,也不會發佈這類裝置的設計指導方針。

Wi-Fi裝置是由Wi-Fi裝置廠商提供的Wi-Fi迷你埠驅動程式所管理。 Windows (NDIS OID) 裝置發出電源管理要求,以設定電源儲存模式和模式比對喚醒。 當平臺進入並結束新式待命時,Windows 會啟用和停用模式比對喚醒。 Wi-Fi迷你埠驅動程式會透過 SDIO、PCIe 或專屬 SoC 匯流排設定Wi-Fi裝置來處理這些要求。

新式待命平臺中的Wi-Fi裝置幾乎一律開啟電源,且預期具有高效能。 當未透過Wi-Fi連結傳輸任何資料,且已啟用電源儲存模式時,Wi-Fi裝置應該平均耗用不到 10 毫秒。 如果使用者已藉由啟用飛出模式或明確關閉 Windows設定應用程式中的Wi-Fi,將無線電開啟/關閉狀態設定為關閉,則Wi-Fi裝置平均必須耗用不到 1 毫秒。

裝置電源管理模式

Wi-Fi裝置必須支援數種電源管理模式。 每個模式都是裝置活動、網路連線和模式比對喚醒啟用的組合。

使用中

Wi-Fi裝置已連線到網路,並主動傳輸資料。

轉換機制:Wi-Fi裝置硬體會自發從連線閒置模式轉換為使用中模式。

連線閒置

Wi-Fi裝置已連線到網路,但不會主動傳輸資料。

轉換機制:

  • Wi-Fi裝置硬體會自發從連線閒置模式轉換為使用中模式。
  • 使用中模式裝置的耗電量會是無線技術 (的因素,也就是 802.11a/b/g/n) 、存取點的距離、傳輸的資料數量等等。
連線睡眠

Wi-Fi裝置已連線到存取點,但平臺的其餘部分處於非常低的電源狀態。 啟用模式比對喚醒,讓Wi-Fi裝置在一組特定的傳入網路封包上喚醒 SoC。

轉換機制:

已中斷連線的睡眠

Wi-Fi裝置已啟動,但未連線到存取點,因為沒有慣用的存取點位於範圍內。 平臺的其餘部分處於非常低的電源狀態。 模式比對喚醒已啟用,且網路卸載清單會受到Wi-Fi裝置的管線。 Wi-Fi裝置會使用網路卸載清單定期掃描要連線的慣用網路。

轉換機制:

  • Wi-Fi裝置會使用 網路卸載清單 定期掃描要連線的慣用網路。
  • 如果在這些定期掃描期間找到相符的網路,Wi-Fi裝置將會喚醒 SoC。
無線電關閉

Wi-Fi裝置仍然已套用電源,但) 的無線電 (RF 元件已關閉電源。

轉換機制:

裝置已關閉電源

Wi-Fi裝置已完全關閉電源。

轉換機制:

  • NDIS 會傳送具有NdisDeviceStateD3 NDIS_DEVICE_POWER_STATE值的OID_PNP_SET_POWER要求。
  • 如果Wi-Fi裝置已連線到 SDIO 或 PCIe,系統 ACPI 韌體將會使用 SOC 的 GPIO 線路,將電源從 SoC 移除或重設 Wi-Fi至Wi-Fi裝置。
  • 如果Wi-Fi裝置已整合到 SoC 中,系統韌體會使用專屬機制負責關閉或重設Wi-Fi裝置。

平均耗電量和結束延遲

下表顯示結束每個電源管理模式的作用中狀態時的預期耗電量和延遲。 針對這些數位,假設Wi-Fi裝置會持續連線到具有WPA2-Personal安全性的單一存取點,但已中斷連線的睡眠模式和電源移除模式除外。


裝置電源管理模式 裝置電源狀態 平均功率耗用量 結束作用中延遲
主動模式 D0 <= 750 milliwatts N/A
連線閒置模式 D0 <= 25 milliwatts <= 100 毫秒
連線睡眠模式 D2 for SDIO;D3 for PCIe <= 10 milliwatts <= 300 毫秒
已中斷連線的睡眠模式 D2 for SDIO;D3 for PCIe <= 10 milliwatts <= 300 毫秒
無線電關閉模式 D0 或 D2 <= 1 milliwatt <= 2 秒
已停用電源移除模式 (喚醒) D3 <= 1 milliwatt <= 5 秒

針對 SDIO 連線的裝置,D2 是新式待命的最深可喚醒裝置電源狀態。 對於 PCIe 連線的裝置,D3 (更具體來說,D3hot 子狀態) 是新式待命的最深層可喚醒裝置電源狀態。

Windows 8、Windows 8.1和Windows 10支援透過 SDIO 匯流排連線的離線 SoC Wi-Fi裝置上的新式待命。 Windows 8.1也支援透過 PCIe 匯流排連線的離線 SoC Wi-Fi裝置上的新式待命。

Wi-Fi裝置共用線路時的需求

在某些Wi-Fi裝置設計中,Wi-Fi裝置會與藍牙和選擇性 FM 無線電通訊裝置共用類比和 RF 線路。 在這些Wi-Fi裝置設計中,Wi-Fi裝置與其他整合式通訊裝置之間不得有電源狀態相依性。 Wi-Fi裝置必須具有內部電源控制線路,以確保無線電關閉模式中的平均耗電量小於 1 毫秒。

軟體電源管理機制

Wi-Fi裝置的電源管理主要以Wi-Fi迷你埠驅動程式從 Windows 網路子系統接收的 NDIS 命令為基礎。 Wi-Fi迷你埠驅動程式負責轉譯這些 NDIS 命令, (稱為 OID 要求) 到裝置特定訊息,以透過 I/O 匯流排傳送至Wi-Fi裝置。

開發 NDIS 驅動程式是複雜的工作,其範圍超出Wi-Fi裝置電源管理。 如需瞭解本節的說明,請檢閱 Native 802.11 Wireless LAN 主題。 如果您是Wi-Fi開發人員,您應該熟悉 Windows 硬體認證套件 中的一組網路裝置測試,並使用這些測試作為事實參考,以確保Wi-Fi裝置及其Wi-Fi迷你埠驅動程式正常運作。

除了新式待命平臺處於 S5 (關機) 系統電源狀態之外,Wi-Fi裝置應該一律開啟並聯機到網路。 因此,Wi-Fi裝置的正確電源管理對於在新式待命期間和開啟顯示器時,系統電池使用時間都很重要。 當裝置回應軟體要求掃描新網路時,Wi-Fi裝置的電源管理模式可能會經常變更,或裝置本身偵測到存取點已中斷連線。 下列討論中所述的軟體電源管理機制和產生的耗電量假設Wi-Fi裝置已連線到具有合理訊號強度的單一存取點。

Wi-Fi迷你埠驅動程式必須啟用下列主要電源管理功能,以確保在新式待命期間和開啟顯示器時,Wi-Fi裝置具有電源效率:

下列段落會詳細討論這兩個功能的需求。

除了電源儲存模式和模式比對喚醒之外,Wi-Fi裝置和Wi-Fi迷你埠驅動程式必須支援數個其他功能。 如需詳細資訊,請參閱 Wi-Fi電源管理的其他需求

電源儲存模式

802.11 規格描述 Wi-Fi 自動電源儲存模式 , (也稱為Wi-Fi網路的 省電輪詢) 。 在此模式中,Wi-Fi無線電會略過廣播指標子集的輪詢,藉此減少裝置的平均耗電量。 當裝置處於使用中 (D0) 、連線閒置 (D0) 或 SDIO 的連線睡眠 (D2 時,Windows 需要Wi-Fi裝置啟用電源儲存模式;D3 for PCIe) 電源管理模式。 當Wi-Fi裝置處於無線電關閉電源管理模式時,電源儲存模式並不有意義。

當Wi-Fi裝置處於下列電源管理模式時,Wi-Fi迷你埠驅動程式必須支援並啟用電源儲存模式:

  • 使用中 (D0)
  • 連線閒置 (D0)
  • 連線睡眠 (D2/D3)

Wi-Fi迷你埠驅動程式必須透過將DOT11_EXTSTA_ATTRIBUTES結構的bAutoPowerSaveMode成員設定為 TRUE,向 Windows 回報它支援自動交涉電源儲存模式。 為了回應此設定,Windows 會將 OID_DOT11_POWER_MGMT_MODE_AUTO_ENABLED 要求傳送給Wi-Fi迷你埠驅動程式。 此要求會指示驅動程式自動啟用電源儲存模式。 Wi-Fi迷你埠驅動程式必須使用遠端存取點和Wi-Fi裝置本身的功能,以判斷要啟用的正確省電等級。

啟用自動省電模式時,Windows 可能會傳送 OID_DOT11_POWER_MGMT_REQUEST 要求給Wi-Fi迷你埠驅動程式。 此訊息會指定四個定義的省電等級之一。 此訊息中的省電等級必須視為Wi-Fi迷你埠驅動程式的提示,以節省目前作業系統或使用者的預期電源。 當驅動程式無法偵測到遠端存取點支援電源儲存模式時,可以使用OID_DOT11_POWER_MGMT_REQUEST要求傳回的值。

模式比對喚醒

Windows 需要新式待命平臺中的所有網路裝置,才能支援模式比對喚醒。 這項功能可讓網路裝置藉由比較傳入封包與在 SoC 或晶片組關閉時儲存在裝置) 模式,以及偵測到比對模式時喚醒 SoC 或晶片組上的主要處理器,來監視相關封包的網路連線 (。 從主要處理器卸載Wi-Fi處理的能力,是達成新式待命中低電源作業的關鍵。 在平臺進入新式待命之前,Wi-Fi裝置會轉換為 SDIO 的連線睡眠 (D2;D3 for PCIe) 模式,Windows 會傳送Wi-Fi迷你埠驅動程式一組Wi-Fi裝置必須watch的有趣模式集合。

模式比對喚醒是新式待命的關鍵啟用功能。 當Wi-Fi裝置處於連線睡眠 (D2/D3) 模式時,就會啟用模式比對喚醒。 在Wi-Fi裝置進入此模式之前,Windows 會指示裝置忽略所有網路封包,但符合一組指定模式的封包除外。 Windows 會根據服務與應用程式建置比對模式 (,例如,目前正在使用的推播通知和電子郵件) 。 卸載與Wi-Fi裝置相符的模式,可讓其餘的硬體平臺關閉或以低電源模式運作。 同時,Wi-Fi裝置會保持開啟狀態,並等候重要的連入網路流量。

為了支援模式比對喚醒,Wi-Fi迷你埠驅動程式必須先公告它支援連線睡眠 (D2/D3) 模式,而且能夠從 D2/D3 電源狀態喚醒系統。 若要公告模式比對喚醒支援,Wi-Fi迷你埠驅動程式必須執行下列動作:

  • NDIS_PM_CAPABILITIES結構的SupportedWoLPacketPatterns成員中設定NDIS_PM_WOL_BITMAP_PATTERN位,以指出Wi-Fi裝置支援根據點陣圖模式偵測喚醒 SoC。

  • NDIS_PM_CAPABILITIES結構的MinPatternWakeUp成員設定為 SDIO) 的 NdisDeviceStateD2 (或 NdisDeviceStateD3 (for PCIe) ,表示當裝置處於 D2/D3 電源狀態且偵測到比對模式時,Wi-Fi裝置可以喚醒 SoC。

  • NDIS_PM_CAPABILITIES結構的NumTotalWoLPatterns成員設定為 22 十進位 (或更新) 的值。 這個值表示 Windows 可以程式設計最多 22 個 (或更多) 唯一比對模式來喚醒 SoC 的Wi-Fi裝置。

  • 在 NDIS_PM_CAPABILITIES 結構的 Flags 成員中設定 NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED 位。 此旗標表示Wi-Fi裝置支援儲存和擷取導致Wi-Fi裝置喚醒 SoC 的封包。

當 Windows 第一次偵測到系統服務或裝載的應用程式需要模式比對喚醒支援時,它會將OID_PM_ADD_WOL_PATTERN要求傳送至 Wi-Fi 迷你埠驅動程式,以指定要比對的模式。 此要求會在Wi-Fi裝置轉換為連線睡眠 (D2/D3) 模式之前傳送。

輸入已啟用模式比對喚醒的連線待命

當硬體平臺進入新式待命時,Windows 會將Wi-Fi裝置轉換為 SDIO 的連線睡眠 (D2;D3 for PCIe) 模式,方法是傳送 OID_PNP_SET_POWER 要求,指定 SDIO) 或 NdisDDeviceStateD3 ( (的裝置電源狀態,或針對 PCIe) 指定裝置電源狀態。 為了回應此要求,Wi-Fi迷你埠驅動程式必須執行下列動作:

  1. 停止將任何新的 I/O 要求傳送至基礎匯流排驅動程式或硬體。 如果Wi-Fi裝置位於 SoC 之外,並透過 SDIO 連線,基礎匯流排驅動程式將會是 Windows SD 匯流排驅動程式,Sdbus.sys。 如果Wi-Fi裝置位於 SoC 之外,並透過 PCIe 連線,基礎匯流排驅動程式將會是 Windows PCI 匯流排驅動程式,Pci.sys。 如果Wi-Fi裝置已整合到 SoC 中,則 SoC 廠商會提供基礎匯流排驅動程式。

  2. 等候所有進行中的 I/O 要求,並完成所有佇列 I/O 要求。

  3. 針對所有已設定的喚醒模式和喚醒事件,針對Wi-Fi裝置進行程式設計。

  4. 將Wi-Fi裝置轉換為連線睡眠模式的正確低電源狀態 (D2/D3) 。

  5. 如果Wi-Fi裝置位於 SoC 外部,並透過 SDIO 匯流排連結:

    1. 將Wi-Fi裝置設定為使用頻外 GPIO 喚醒中斷來喚醒 SoC。 (如需詳細資訊,請參閱 支援的硬體電源組態。)

    2. 遮罩Wi-Fi裝置中斷並取消所有相關計時器。 Wi-Fi迷你埠驅動程式必須呼叫SdBusSubmitRequest常式,將SDP_FUNCTION_INT_ENABLE屬性設定為 FALSE。

    3. 指示 SD 匯流排驅動程式停止轉送Wi-Fi裝置中斷。 Wi-Fi迷你埠驅動程式必須呼叫SdBusSubmitRequest常式,將SDP_SET_CARD_INTERRUPT_FORWARD屬性設定為 FALSE。

    4. 完成 NdisDeviceStateD2 狀態 的OID_PNP_SET_POWER 要求。

  6. 如果Wi-Fi裝置位於 SoC 外部,並透過 PCIe 匯流排連結:

    1. 使用PM_PME訊息,設定Wi-Fi裝置以根據 PCIe 標準 (喚醒系統;下一節會進一步詳細討論這一點。)

    2. 遮罩裝置中斷Wi-Fi。 Wi-Fi迷你埠驅動程式必須藉由呼叫 IoDisconnectInterruptEx 常式中斷中斷。

    3. 完成 NdisDeviceStateD3 狀態 的OID_PNP_SET_POWER 要求。

當Wi-Fi裝置處於連線睡眠模式時,裝置預期會維持其與相關聯Wi-Fi網路的連線、檢查是否相符的喚醒模式,以及在網路狀態變更發生時喚醒 SoC。 例如,如果存取點突然中斷關聯,Wi-Fi裝置必須能夠喚醒 SoC。

下圖顯示軟體和硬體元件的設定,以支援 SoC 外部的Wi-Fi裝置,以及透過 SDIO 匯流排與 SoC 通訊。 透過 sdio 連線的 wi-fi 裝置

結束比對模式的新式待命

當Wi-Fi裝置偵測到具有比對模式的封包時,必須先將此封包儲存在本機非變動性儲存體中,以供Wi-Fi迷你埠驅動程式稍後擷取。 Windows 會讓驅動程式擷取封包的相關資訊,讓適當的系統服務或應用程式可以收到傳入封包的通知。

接下來,Wi-Fi裝置必須產生中斷以喚醒 SoC。

如果Wi-Fi裝置位於 SDIO 埠上的 SoC 外部,應該透過頻外 GPIO 中斷傳遞中斷,並讓 SoC 喚醒。 ACPI 子系統接著會決定Wi-Fi裝置的 GPIO 中斷導致 SoC 喚醒,並透過完成等候喚醒 IRP (IRP_MN_WAIT_WAKE要求來 回應,) NDIS 埠驅動程式代表Wi-Fi迷你埠驅動程式自動留在 ACPI 驅動程式中擱置中。

如果Wi-Fi裝置位於 PCIe 匯流排上的 SoC 之外,而 ACPI 韌體會授與作業系統原生 PCIe 功能的控制權,則會使用下列步驟,根據 PCIe 規格來處理喚醒事件:

  1. 當Wi-Fi裝置進入低電源狀態時,NDIS 埠驅動程式會自動將等候喚醒 IRP 向下傳送至Wi-Fi驅動程式堆疊至收件匣 PCI 匯流排驅動程式,Pci.sys (不是 ACPI 驅動程式,Acpi.sys) ,這會將 IRP 標示為未來喚醒事件的預期擱置中。

  2. 當Wi-Fi裝置需要喚醒時,它應該會產生 PCIe 階層根目錄的 WAKE 通知。 若要這樣做,裝置會透過 PCIe 匯流排傳送頻內PM_PME訊息。

  3. 喚醒通知會路由傳送至Wi-Fi裝置上方 PCIe 階層的根埠。 根埠會處於 D0 電源狀態,而且預期會產生 PME 中斷至收件匣 PCI 匯流排驅動程式,Pci.sys。

  4. 根埠上的 PCI 匯流排驅動程式會將該根埠下方的整個裝置階層帶回 D0。

  5. PCI 匯流排驅動程式會檢查階層中每個裝置的PME_Status位,以判斷它是否發出喚醒通知。 如果已設定Wi-Fi裝置的 PMEStatus 位,PCI 匯流排驅動程式接著會完成該裝置擱置的任何未處理等候喚醒 IRP,這會導致步驟 1 中的 IRP 畫筆回到 NDIS。

如需詳細資訊,請參閱 網路喚醒的低電量

如果Wi-Fi裝置已整合到 SoC 中,裝置的作業會類似于針對 off-SoC、SDIO-port 實作所描述的作業。 SoC 廠商必須在 ACPI 韌體中的 DSDT 資料表中描述裝置。 ACPI 子系統接著會列舉Wi-Fi裝置,並完成等候喚醒 IRP。 我們建議使用已整合Wi-Fi裝置的 SoC 的系統整合者與 SoC 廠商密切合作,以Wi-Fi裝置整合和驅動程式開發。

當等候喚醒 IRP 完成時,NDIS 會先將 D0 IRP 傳送 (DevicePowerState類型的IRP_MN_SET_POWER要求,) 堆疊向下傳送至匯流排驅動程式。 完成 D0 IRP 之前,NDIS 會將 Wi-Fi目標狀態為 NdisDeviceStateD0 的 OID_PNP_SET_POWER 迷你埠驅動程式傳送OID_PNP_SET_POWER。 回應中,Wi-Fi迷你埠驅動程式必須執行下列動作:

  1. 檢查Wi-Fi裝置硬體,以判斷喚醒中斷的原因。 Wi-Fi迷你埠驅動程式必須藉由產生 NDIS_STATUS_PM_WAKE_REASON 狀態事件,通知 NDIS 喚醒中斷的原因。 如果喚醒中斷是由傳入的網路封包所造成,驅動程式必須先透過一般 NDIS 資料路徑將此封包傳遞至 NDIS,驅動程式才能將任何其他收到的封包傳遞至 NDIS。

  2. 還原完成Wi-Fi裝置轉換為連線閒置 (D0) 模式所需的任何註冊狀態或其他硬體內容。

  3. 如果Wi-Fi裝置位於 SoC 外部,並透過 SDIO 連線,Wi-Fi迷你埠驅動程式必須:

    1. 指示 SD 匯流排驅動程式將中斷轉送到Wi-Fi迷你埠驅動程式。 Wi-Fi迷你埠驅動程式必須藉由呼叫SdBusSubmitRequest常式,將SDP_SET_CARD_INTERRUPT_FORWARD屬性設定為 TRUE。

    2. 遮罩Wi-Fi裝置中斷。 Wi-Fi迷你埠驅動程式必須藉由呼叫SdBusSubmitRequest常式,將SDP_FUNCTION_INT_ENABLE屬性設定為 TRUE。

  4. 完成 IRP_MN_SET_POWER 要求。

模式比對喚醒,以及從低電源閒置狀態喚醒 SoC 的能力,對於在新式待命期間維護網路連線至關重要。 Wi-Fi驅動程式開發人員應該與 Microsoft 密切合作,以開發實作這些必要功能的Wi-Fi迷你埠驅動程式。

Wi-Fi電源管理的其他需求

除了電源儲存模式和模式比對喚醒之外,Wi-Fi裝置和迷你埠驅動程式必須支援數個其他執行時間電源管理功能,才能在新式待命平臺中Wi-Fi裝置。 這些功能對於減少Wi-Fi裝置和整體硬體平臺的耗電量至關重要。 如先前所述,Wi-Fi裝置和迷你埠驅動程式必須支援下列功能:

單選開啟/關閉狀態

Wi-Fi迷你埠驅動程式必須回應 Windows 要求,以變更Wi-Fi裝置的無線電開啟/關閉狀態。 使用者可以啟用飛出模式,或在 Windows設定應用程式中明確關閉Wi-Fi,將無線電開啟/關閉狀態變更為關閉

當使用者將Wi-Fi裝置的無線電開啟/關閉狀態變更為 關閉時,Windows 會將Wi-Fi迷你埠驅動程式傳送值為 FALSE 的 OID_DOT11_NIC_POWER_STATE 要求。 回應中,Wi-Fi迷你埠驅動程式必須使用頻內訊息,從Wi-Fi裝置中的無線電 (RF 子系統) 移除電源,並將裝置置於平均耗用 1 milliwatt 的電源狀態。

當使用者將Wi-Fi裝置的無線電開啟/關閉狀態變更為 開啟時,Windows 會將Wi-Fi迷你埠驅動程式傳送具有 TRUE 值的OID_DOT11_NIC_POWER_STATE要求。 回應中,Wi-Fi迷你埠驅動程式必須使用頻內訊息將電源套用至Wi-Fi裝置中的無線電,並將裝置傳回連線閒置電源模式。

當Wi-Fi裝置的無線電開啟/關閉狀態設為 關閉時,Wi-Fi裝置可以是 D0 或 D2 電源狀態。 NDIS 一律會先將Wi-Fi裝置轉換為 D0 電源狀態,再通知Wi-Fi迷你埠驅動程式已變更無線電開啟/關閉狀態。 如果使用者先前已將無線電開啟/關閉狀態設定為 關閉,Wi-Fi迷你埠驅動程式就不需要在硬體平臺進入新式待命時採取任何特定動作。 如果無線電開啟/關閉狀態設定為關閉,則無線電將會保持新式待命狀態關閉,而且在系統結束新式待命之後,在使用者將狀態變更為開啟之前,無線電開啟/關閉狀態仍會設定為關閉

網路清單卸載 (NLO)

網路清單卸載 (NLO) 功能可讓Wi-Fi設定檔資訊複製到Wi-Fi裝置中的本機儲存體。 Wi-Fi裝置會使用此設定檔資訊掃描慣用網路的有限通道,藉此減少Wi-Fi裝置耗用的電源,而不是掃描所有存取點的所有可用通道。 新式待命平臺中的Wi-Fi裝置和Wi-Fi迷你埠驅動程式必須支援網路清單卸載。 此支援包括處理 OID_DOT11_OFFLOAD_NETWORK_LIST 要求。

若要公告 NLO 功能,Wi-Fi迷你埠驅動程式必須在 NDIS_PM_CAPABILITIES 結構的 MediaSpecificWakeUpEvents 成員中設定 NDIS_WLAN_WAKE_ON_NLO_DISCOVERY_SUPPORTED 旗標。

ARP/NS 卸載

Wi-Fi迷你埠驅動程式和Wi-Fi裝置必須支援 ARP/NS 卸載,這可讓Wi-Fi裝置自動回應常見的網路要求。 ARP/NS 卸載功能可避免針對具有簡單且可預測的回應的常見網路要求叫用 SoC。 若要指出 ARP/NS 卸載的支援,Wi-Fi迷你埠驅動程式必須在NDIS_PM_CAPABILITIES結構的SupportedProtocolOffloads成員中設定NDIS_PM_PROTOCOL_OFFLOAD_ARP_SUPPORTED和NDIS_PM_PROTOCOL_OFFLOAD_NS_SUPPORTED旗標。

此外,Wi-Fi迷你埠驅動程式和Wi-Fi裝置必須至少支援一個 IPv4 ARP 卸載位址,以及至少兩個 DIPv6 NS 卸載位址。 Wi-Fi迷你埠驅動程式必須將NDIS_PM_CAPABILITIES結構的NumArpOffloadIPv4Addresses成員設定為 1 或更新的值。 Wi-Fi迷你埠驅動程式必須將NDIS_PM_CAPABILITIES結構的NumNSOffloadIPv6Addresses成員的值設定為 2 或更新的值。 Windows 會使用 OID_PM_ADD_PROTOCOL_OFFLOAD 要求,將 ARP 和 NS 卸載位址提供給Wi-Fi迷你埠驅動程式。

D0 封包聯合

Wi-Fi裝置和Wi-Fi迷你埠驅動程式必須支援 D0 封包聯合,此功能可讓Wi-Fi裝置批次處理通用、低優先順序的網路封包,以供 SoC 進行批次擷取。 這項功能可減少核心晶片組中斷的整體數量和頻率,讓 SoC 可以維持較低的電源狀態,進而延長電池使用時間。 Wi-Fi迷你埠驅動程式會藉由在 NDIS_RECEIVE_FILTER_CAPABILITIES 結構中設定數個值,來公告對 D0 封包聯合的支援。

下列成員清單摘要說明需要Wi-Fi裝置支援的 D0 封包聯合功能,而且需要Wi-Fi迷你埠驅動程式才能報告。 Wi-Fi迷你埠驅動程式必須在 NDIS_RECEIVE_FILTER_CAPABILITIES 結構中指定這些功能。 針對每個成員,此清單會顯示這個 結構之特定成員所需的最小值。 NDIS 會將 OID_RECEIVE_FILTER_SET_FILTER 要求傳送至Wi-Fi迷你埠驅動程式,以設定封包聯合篩選器。 封包聯合篩選準則會指出哪些封包必須在Wi-Fi裝置的聯合緩衝區中批次處理。

SupportedQueueProperties

NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE

注意   此旗標必須一律出現在HardwareReceiveFilterCapabilities中,以指出硬體功能。 只有當*PacketCoalescing進階關鍵字為非零時,此旗標必須存在於CurrentReceiveFilterCapabilities中。
EnabledFilterTypes,最小值:

NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED

SupportedFilterTests,最小值:

NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED

SupportedHeaders,最小值:

NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED

SupportedMacHeaderFields,最小值:

NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED
NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED
NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED

SupportedARPHeaderFields,最小值:

NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED

SupportedIPv4HeaderFields,最小值:

NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED

SupportedIPv6HeaderFields,最小值:

NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED

SupportedUdpHeaderFields,最小值:

NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED

MaxFieldTestsPerPacketCoalescingFilter,最小值:

5

MaxPacketCoalescingFilters,最小值:

10

當不再需要這些篩選準則時,NDIS 會傳送 OID_RECEIVE_FILTER_CLEAR_FILTER 要求,以清除先前設定封包聯合篩選準則。 NDIS 可能會動態設定和清除個別封包聯合篩選準則。 Wi-Fi迷你埠驅動程式必須隨時追蹤目前的封包聯合篩選,但只有在Wi-Fi裝置處於 D0 電源狀態 (且處於作用中模式或連線閒置模式) 時,才能套用聯合。

動態 DTIM 設定

Wi-Fi迷你埠驅動程式必須支援 傳遞流量指示訊息 的動態設定, (DTIM) 間隔。 在 SDIO 的連線睡眠 (D2 期間,以動態方式將 DTIM 間隔調整為較大的值;D3 for PCIe) 模式可讓Wi-Fi裝置耗用非常少的電源,同時持續維護與存取點的連線。 從較長 DTIM 間隔產生的額外延遲在連線睡眠 (D2/D3) 模式中並不重要。

Wi-Fi迷你埠驅動程式應該實作下列指引來支援動態 DTIM 間隔:

  • STA 模式中的Wi-Fi裝置 () 必須將接聽間隔值 10 公告至存取點。 此值會強制存取點快取Wi-Fi用戶端的資料 10 個指標間隔。

  • 若要準備Wi-Fi裝置進入連線睡眠 (D2/D3) 模式,驅動程式必須將 DTIM 間隔的長度變更為大約 500 毫秒。 要指定的 DTIM 值取決於 TIM) 正常 流量指示訊息 的值 (。 例如,如果 TIM 目前為 100 毫秒,Wi-Fi裝置應該使用 DTIM 值為 5 (,以間隔 500 毫秒) 。 如果 TIM 目前為 300 毫秒,Wi-Fi裝置應該使用 2 (的 DTIM 值,以間隔 600 毫秒) 。

當Wi-Fi裝置轉換回連線閒置 (D0) 模式時,Wi-Fi裝置必須還原為與存取點交涉的原始 DTIM。

Wi-Fi連線喚醒觸發程式

當Wi-Fi裝置在新式待命期間連線到網路時,Wi-Fi裝置和Wi-Fi迷你埠驅動程式也必須支援根據一組Wi-Fi連線喚醒觸發程式來喚醒 SoC。 需求如下:

  • 在新式待命中執行 GTK (WPA/WPA2) 和 IGTK 重新整理 (WPA2) 。
  • 支援在 GTK 和 IGTK 交握錯誤上喚醒。
  • 當收到 802.1x EAP-Request/Identity 封包時,支援喚醒。
  • 支援收到四向交握要求時喚醒。
  • 支援與目前存取點的喚醒關聯遺失。

在這些Wi-Fi特定事件上喚醒 SoC 可讓 Windows 在Wi-Fi連線處於 jeopardy 狀態,或當Wi-Fi裝置無法連線到相關聯的存取點時收到通知。 為了回應,Windows 可能會指示Wi-Fi迷你埠驅動程式和裝置連線到替代Wi-Fi網路。 或者,Windows 可能會改用行動寬頻 (MBB) 無線電來建立連線。 Wi-Fi迷你埠驅動程式必須藉由在 NDIS_PM_CAPABILITIES 結構的 SupportedWakeUpEvents 成員中,設定 NDIS_WLAN_WAKE_ON_AP_ASSOCIATION_LOST_SUPPORTED 旗標) ,以指定每個喚醒觸發程式功能 (

支援的硬體電源設定

Windows 支援新式待命平臺中Wi-Fi裝置的三種硬體電源管理設定。 Wi-Fi裝置必須位於 SoC 外部,並透過 SDIO 或 PCIe 連接,或必須實際整合到 SoC 晶片中,並透過專屬的內部匯流排連接。

系統設計工具不得使用 USB 匯流排連線,將Wi-Fi裝置整合到新式待命平臺中。

在 SoC 外部,透過 SDIO 附加

在此組態中,如 圖所示,Wi-Fi裝置位於 SoC 外部,並透過 SDIO 匯流排連線到 SoC。 Wi-Fi裝置可能有一或多個針腳連線到 SoC 上的 GPIO 針腳。 Wi-Fi裝置必須連接到一律開啟電源的電源軌,或直接連接到電源管理 IC (PMIC) 。

Wi-Fi裝置必須能夠透過頻外訊號線產生喚醒中斷,從Wi-Fi裝置上的中斷輸出針腳路由傳送到 SoC 上的 GPIO 針腳。 裝置的中斷線必須連線到 SoC 上的 Always-On GPIO 針腳,讓Wi-Fi裝置的喚醒訊號可以在新式待命期間從其最低電源狀態喚醒 SoC。 系統整合者必須使用 ACPI GpioInt 宏來描述 ACPI 命名空間中Wi-Fi裝置底下的 GPIO 中斷連線。 GpioInt 宏的 [共用 ] 欄位必須設定為 ExclusiveAndWake,以指出 GPIO 中斷能夠從睡眠中喚醒系統。 ExclusiveAndWake 設定可讓 ACPI 驅動程式在中斷 SoC 時自動完成Wi-Fi裝置的等候喚醒 IRP,並將 (裝置傳回連線閒置 (D0) ) 模式。 ACPI 韌體必須指出Wi-Fi裝置可以從連線睡眠 (D2) 模式喚醒平臺。 若要這樣做,系統整合器必須在Wi-Fi裝置的 ACPI 命名空間中包含_S4W和_S0W物件,如下列範例所示:

    Name(_S0W, 2)
    Name(_S4W, 2)

此範例中的值 2 表示 D2 裝置電源狀態。

或者,Wi-Fi裝置可以有輸入針腳,接受 SoC 上 GPIO 輸出針腳的啟用或重設訊號。 GPIO 針腳是由系統韌體所控制。 GPIO 針腳可以切換為完全關閉電源或重設Wi-Fi裝置。 如果使用這類 GPIO 針腳來啟用或重設Wi-Fi裝置,系統整合器必須在 GPIO 作業區域中公開此針腳。 系統整合者也必須在 ACPI 命名空間中的Wi-Fi裝置底下包含_PS0和_PS3控制方法。

_PS3方法的實作必須透過 GPIO 作業區域變更 GPIO 輸出針腳的狀態,以關閉或重設Wi-Fi裝置。 如果Wi-Fi裝置有特定的重設計時需求,系統整合者必須使用 ACPI 睡眠方法來順延強制,或在一些指定的時間將重設線保留在所需的訊號層級,在 ACPI 韌體中實作這些需求。

_PS0控制方法的實作必須可靠地將電源套用至Wi-Fi裝置,並讓裝置運作。

在 SoC 外部,透過 PCIe 連結

在此設定中,Wi-Fi裝置位於 SoC 外部,並連結至 PCIe 匯流排。 當裝置處於連線睡眠模式或已中斷連線睡眠模式時,裝置處於 D3 裝置電源狀態。 在 D3 中,裝置會保留在 D3hot 子資料夾中,而且不會輸入 D3cold 子狀態。 Wi-Fi裝置必須連接到一律開啟或直接連接到系統電源管理 IC 的系統電源軌, (PMIC) 。

注意   Wi-Fi硬體應該使用 PCI 架構方法來產生喚醒事件, (PME) 。

在 D3 中時,裝置必須能夠透過傳送PM_PME訊息,在 PCIe 匯流排上傳播頻內訊息,以發出喚醒事件訊號。 喚醒事件會從 PCIe 根埠產生中斷,而此中斷將由收件匣 PCI 匯流排驅動程式處理,Pci.sys。

若要授與原生 PCIe 功能的作業系統控制權,ACPI 韌體必須在 ACPI 命名空間中包含_OSC控制項方法。 此外,ACPI 命名空間必須包含_S0W物件,以指出Wi-Fi裝置可以從連線睡眠模式或中斷連線睡眠模式喚醒平臺。 這個物件必須位於 ACPI 命名空間中的Wi-Fi裝置底下,並宣告如下例所示:

    Name(_S0W, 3)

下圖顯示軟體和硬體元件的設定,以支援 SoC 外部的Wi-Fi裝置,以及透過 PCIe 匯流排與 SoC 通訊。

透過 pcie 連線的 wi-fi 裝置

整合至 SoC

如果Wi-Fi裝置已整合到 SoC 中,則需要Wi-Fi迷你埠驅動程式與專屬 SoC 匯流排驅動程式之間的緊密結合。 此驅動程式的實作超出本檔的範圍。 不過,Wi-Fi迷你埠驅動程式必須實作 軟體電源管理機制中所述的所有功能。

系統整合者應該連絡 SoC 廠商以取得 ACPI 實作詳細資料,以取得直接整合至 SoC 的Wi-Fi裝置。

測試和驗證

Wi-Fi裝置的測試與驗證應該著重于直接測量耗電量,並確認模式比對喚醒正常運作。

裝置耗電量的直接測量是Wi-Fi裝置測試和驗證的重要部分。 由於當平臺不在 S5 (shutown) 系統電源狀態時,Wi-Fi裝置幾乎一律開啟電源,因此系統整合者必須在許多不同的系統案例和設定中測試並驗證Wi-Fi耗電量。 針對下表所示的兩種連線類型,建議您直接測量Wi-Fi裝置的耗電量。


案例 目標平均電源 註解
飛出模式,無線電關閉
  • 螢幕開啟,D0 狀態
<= 1 milliwatt 當顯示器開啟和新式待命期間,無線電可能會關閉。 當無線電關閉時,D0 和 D2 的平均耗電量必須不超過 1 毫秒。
螢幕開啟,閒置
  • 自動啟用電源儲存模式
  • 沒有作用中的資料傳輸
  • 已設定為存取點支援的 DTIM
  • WPA2-Personal安全性
<= 10 milliwatts 測試應該使用連線到各種取用者和商業Wi-Fi存取點的Wi-Fi裝置來執行。
連線睡眠
  • 螢幕關閉、模式比對喚醒已啟用、D2 狀態
  • DTIM 已設定為 5
  • WPA2-Personal安全性
<= 10 milliwatts

電源管理檢查清單

系統整合者和 SoC 廠商應該使用下列檢查清單來確認其Wi-Fi裝置和Wi-Fi迷你埠電源管理設計與Windows 8和Windows 8.1相容。

注意Windows 硬體認證套件包含一組廣泛的Wi-Fi驅動程式測試,可協助確保Wi-Fi裝置與Windows 8和Windows 8.1相容。 Wi-Fi裝置廠商和Wi-Fi迷你埠驅動程式開發人員,建議您檢閱 Windows 硬體認證套件測試,並在設計週期中儘快使用它們來驗證其驅動程式實作。

  • Wi-Fi裝置廠商必須開發執行下列動作的驅動程式:

    • 支援模式比對喚醒。
    • 支援省電模式。
    • 支援開啟/關閉無線電。
    • 支援網路清單卸載 (NLO) 。
    • 支援 D0 封包聯合。
    • 支援喚醒 AP 中斷連線和其他Wi-Fi喚醒觸發程式。
    • 支援 ARP/NS 卸載。
    • 支援動態 DTIM 設定。
    • 通過 Windows 硬體認證套件中的所有適用網路測試。
  • 如果Wi-Fi裝置位於 SoC 外部,並透過 SDIO 連結,系統整合者必須開發Wi-Fi裝置的硬體和韌體,才能執行下列動作:

    • 將Wi-Fi喚醒中斷從Wi-Fi裝置路由傳送至 SoC 上的 Always-On GPIO 針腳。

    • 將 GPIOInt 宏包含在 ACPI 命名空間中Wi-Fi裝置底下,並將 [共用] 欄位設定為 ExclusiveAndWake。

    • 在 ACPI 命名空間的Wi-Fi裝置下,包含_S4W物件,其深度喚醒狀態為 D2 0x2。 指定為 「Name (_S4W, 2) 」。

    • 在 ACPI 命名空間的 Wi-Fi 裝置底下包含_S0W物件,其深度喚醒狀態為 D2 0x2。 指定為 「Name (_S0W,2) 」。

    • 將 SoC 上 GPIO 輸出針腳的任何電源啟用或重設訊號路由傳送至Wi-Fi裝置。

    • 描述 GPIO 作業區域中的選擇性電源啟用或重設 GPIO 輸出針腳。

    • 提供_PS3和_PS0控制項方法和/或_PRn 個電源資源參考。 這些專案應該位於 ACPI 命名空間中的Wi-Fi裝置底下。

    • 實作_PS3方法或電源資源方法,以從Wi-Fi裝置移除電源。

    • 實作_PS0方法或電源資源方法,以將電源還原至Wi-Fi裝置。

    • 在實作_PS3和_PS0方法時,包含任何裝置特定的電源或重設排序時間。 ACPI 方法執行可以使用 Sleep 方法延遲。

  • 如果Wi-Fi裝置位於 SoC 外部,並透過 PCIe 連結,系統整合者必須開發Wi-Fi裝置的硬體和韌體,才能執行下列動作:

    • 在 ACPI 命名空間中包含_OSC控制項方法,以授與作業系統對原生 PCIe 功能的控制權。

      將 _S4W 物件包含在 ACPI 命名空間中Wi-Fi裝置底下,其深度喚醒狀態為 D3 0x3。 指定為 「Name (_S4W,3) 」。

  • 系統整合者必須執行下列動作來測試及驗證Wi-Fi裝置的正確電源管理:

    • 確認單選關閉模式中Wi-Fi裝置的平均耗電量小於 1 毫秒。

    • 確認當裝置處於 SDIO 連線睡眠 (D2 時,Wi-Fi裝置的平均耗電量小於 10 毫秒;D3 for PCIe) 模式或連線閒置 (D0) 模式,且不會主動傳輸任何資料。

    • 確認Wi-Fi迷你埠正確支援模式比對喚醒,而且能夠在偵測到比對模式時,從其最深的閒置狀態喚醒 SoC。

    • 確認當裝置失去與相關聯存取點連線時,Wi-Fi裝置可以從最深的閒置狀態喚醒 SoC。

    • 確認Wi-Fi裝置不會產生對 SoC 的假性喚醒。

    • 使用 Windows 硬體認證套件中所提供的測試,確認Wi-Fi裝置已正確實作網路清單卸載 (NLO) 、ARP/NS 卸載和 D0 封包聯合。