Перейти к содержимому

Selective suspend wifi что это

  • автор:

В настройках USB Wi-Fi адаптера есть такой параметр «selective suspend». За что он отвечает?

это низкое энергопотребление, т. е. чтобы не отключать устройство, оно переводится в этот режим. . .
и да, не только в адаптере есть такое. . .
ПО умолчанию, в ОС 7 и выше есть такое

Не вижу большой экономии в этом параметре.

Остальные ответы

энерго сберегательный режим

USB Selective Suspend у WiFi-адаптера — что это и зачем?

Selective Suspend WiFi что это

Если вы откроете дополнительные настройки WiFi адаптера в Windows 10, то можете увидеть там параметр USB Selective Suspend и связанный с ним Selective Suspend Idle Timeout in seconds. Что это за параметр и зачем он вообще нужен?! Давайте вместе разберёмся. Тем более, что этот вопрос будет важным для обладателей ноутбуков.
В наше время электричество становится всё дороже и дороже. Именно поэтому у каждого компьютера есть специальный режим энергосбережения, при котором у устройства уменьшается объём потребляемой энергии за счёт отключения некоторых его комплектующих устройств. На ноутбуках этот режим позволяет ПК прожить на батарее максимальное время.
Так вот параметр «Selective Suspend» позволяет разрешить или запретить отключение WiFi-адаптера в целях экономии энергии, либо при переходе в режим сна или спящего режима.

Как это работает? Если параметр включен, драйвер отправляет операционной системе Windows 10 примерно такой запрос — «Я ещё нужен?». Если нет, от ОС просто отключит Вай-Фай-адаптер или снизит его потребление до того момента, пока он снова не понадобится. Если же параметр отключен, то драйвер не будет просить систему выключить себя. При этом «Selective Suspend Idle Timeout» — это таймер в секундах, по истечение которого драйвер будет повторять запрос.

USB Selective Suspend параметр временного отключения usb-порт

Кстати, в расширенных настройках используемой схемы электропитания так же есть пункт «Параметр временного отключения USB-портов». В англоязычной версии он называется так — «USB Selective Suspend Setting». Думаю понятно, что по факту всё это одно и то же.

Разрешать или нет отключение USB-портов? Если Вы постоянно работаете от сети — однозначно Вам эта опция не нужна и будет только мешать, пытаясь периодически отключить WiFi-адаптер. А вот если Вы работаете на ноутбуке и в моменты автономной работы не пользуетесь беспроводной связью, тогда в целях энергосбережения этим параметром можно и воспользоваться!

selective suspend

USB Selective Suspend у WiFi-адаптера — что это и зачем?

04.09.2017 от Сергей

Selective Suspend WiFi что это

Если вы откроете дополнительные настройки WiFi адаптера в Windows 10, то можете увидеть там параметр USB Selective Suspend и связанный с ним Selective Suspend Idle Timeout in seconds. Что это за параметр и зачем он вообще нужен?! Давайте вместе разберёмся. Тем более, что этот вопрос будет важным для обладателей ноутбуков.

Рубрики Windows Метки power wifi, selective suspend, отключение wifi Оставьте комментарий

Рубрики

  • Android (76)
    • Игры для Android (2)
    • Программы для Android (8)
    • Прошивки Android (4)
    • dll (8)
    • Ошибки (52)
    • Роутеры и модемы (79)
    • Роутеры Ростелеком (16)
    • ВКонтакте (16)
    • Инстаграм (12)
    • Одноклассники (15)
    • Диски и флешки (5)
    • Игры (23)
    • Комплектующие (60)
    • Мобильная связь (31)
    • Программы (21)
    • Сбербанк (16)
    • Технологии (22)
    • Электроника (22)

    Выборочная приостановка USB

    Функция выборочной приостановки USB позволяет драйверу концентратора приостановить отдельный порт, не влияя на работу других портов в концентраторе. Выборочная приостановка USB-устройств особенно полезна на портативных компьютерах, так как она помогает экономить заряд батареи. Многие устройства, такие как сканеры отпечатков пальцев и другие биометрические сканеры, требуют питания только периодически. Приостановка таких устройств, если устройство не используется, снижает общее энергопотребление. Что еще более важно, любое устройство, которое не выборочно приостановлено, может помешать контроллеру УЗЛА USB отключить расписание передачи, которое находится в системной памяти. Передача контроллером узла в планировщик прямого доступа к памяти (DMA) может препятствовать переходу процессоров системы в более глубокие спящие состояния, например C3.

    Существует два разных механизма выборочной приостановки USB-устройства: irps бездействующих запросов (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) и настройка irp питания (IRP_MN_SET_POWER). Используемый механизм зависит от операционной системы и типа устройства: составного или не составного.

    Выбор механизма выборочной приостановки

    Клиентские драйверы для интерфейса на составном устройстве, которые позволяют интерфейсу удаленного пробуждения с IRP ожидания (IRP_MN_WAIT_WAKE), должны использовать механизм IRP бездействующего запроса (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) для выборочной приостановки устройства.

    Сведения об удаленном пробуждении см. в разделе:

    • Удаленный пробуждение USB-устройств
    • Общие сведения об операции ожидания и пробуждения

    Версия операционной системы Windows определяет, каким образом драйверы для несобираемых устройств обеспечивают выборочную приостановку.

    • Windows XP. В Windows XP все клиентские драйверы должны использовать IRP бездействующих запросов (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) для выключения устройств. Клиентские драйверы не должны использовать irp питания WDM для выборочной приостановки устройств. Это предотвращает выборочную приостановку других устройств.
    • Windows Vista и более поздние версии Windows: средства записи драйверов имеют больше возможностей для выключения устройств в Windows Vista и в более поздних версиях Windows. Хотя Windows Vista поддерживает механизм IRP бездействующих запросов Windows, драйверы не обязаны его использовать.

    В следующей таблице показаны сценарии, требующие использования IRP бездействующего запроса, и сценарии, которые могут использовать IRP питания WDM для приостановки USB-устройства.

    Версия Windows Функция на составном устройстве, вооруженном для пробуждения Функция на составном устройстве, не вооруженная для пробуждения USB-устройство с одним интерфейсом
    Windows 7 Использование IRP бездействуемого запроса Использование WDM power IRP Использование WDM power IRP
    Windows Server 2008 Использование IRP бездействуемого запроса Использование WDM power IRP Использование WDM power IRP
    Windows Vista Использование IRP бездействуемого запроса Использование WDM power IRP Использование WDM power IRP
    Windows Server 2003 Использование IRP бездействуемого запроса Использование IRP бездействуемого запроса Использование IRP бездействуемого запроса
    Windows XP Использование IRP бездействуемого запроса Использование IRP бездействуемого запроса Использование IRP бездействуемого запроса

    В этом разделе описывается механизм выборочной приостановки Windows.

    Отправка IRP-запроса на бездействующий USB-порт

    Когда устройство неактивно, драйвер клиента информирует водителя шины, отправляя IRP-запрос на простой (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION). После того как водитель шины определяет, что устройство безопасно переводится в состояние низкого энергопотребления, он вызывает подпрограмму обратного вызова, которую драйвер клиентского устройства передал в стеке с IRP бездействующего запроса.

    В процедуре обратного вызова драйвер клиента должен отменить все ожидающие операции ввода-вывода и дождаться завершения всех операций ввода-вывода USB. Затем он может отправить IRP_MN_SET_POWER запрос на изменение состояния питания устройства WDM на D2. Подпрограмма обратного вызова должна дождаться завершения запроса D2 перед возвратом. Дополнительные сведения о процедуре обратного вызова уведомления о простое см. в разделе Процедура обратного вызова уведомления о простое USB.

    Водитель шины не завершает IRP бездействующего запроса после вызова процедуры обратного вызова уведомления о бездействии. Вместо этого водитель шины удерживает IRP бездействующего запроса в ожидании, пока не будет выполнено одно из следующих условий:

    • Получено IRP_MN_SUPRISE_REMOVAL или IRP_MN_REMOVE_DEVICE IRP . При получении одной из этих irP IRP бездействующего запроса завершается с STATUS_CANCELLED.
    • Водитель автобуса получает запрос на перевод устройства в рабочее состояние питания (D0). После получения этого запроса драйвер шины завершает ожидающий бездействующий запрос IRP с STATUS_SUCCESS.

    К использованию irp бездействующего запроса применяются следующие ограничения:

    • Драйверы должны находиться в состоянии питания устройства D0 при отправке IRP бездействующего запроса.
    • Драйверы должны отправлять только один IRP бездействующих запросов на стек устройств.

    В следующем примере кода WDM показаны действия, которые выполняет драйвер устройства для отправки IRP-запроса бездействия USB. Проверка ошибок была опущена в следующем примере кода.

    irp = IoAllocateIrp (DeviceContext->TopOfStackDeviceObject->StackSize, FALSE); nextStack = IoGetNextIrpStackLocation (irp); nextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION; nextStack->Parameters.DeviceIoControl.InputBufferLength = sizeof(struct _USB_IDLE_CALLBACK_INFO); 
    idleCallbackInfo = ExAllocatePool (NonPagedPool, sizeof(struct _USB_IDLE_CALLBACK_INFO)); idleCallbackInfo->IdleCallback = IdleNotificationCallback; // Put a pointer to the device extension in member IdleContext idleCallbackInfo->IdleContext = (PVOID) DeviceExtension; nextStack->Parameters.DeviceIoControl.Type3InputBuffer = idleCallbackInfo; 
    IoSetCompletionRoutine (irp, IdleNotificationRequestComplete, DeviceContext, TRUE, TRUE, TRUE); 
    deviceExtension->PendingIdleIrp = irp; 
    ntStatus = IoCallDriver (DeviceContext->TopOfStackDeviceObject, irp); 

    Отмена бездействующего запроса USB

    При определенных обстоятельствах водителю устройства может потребоваться отменить IRP-запрос бездействия, отправленный водителю автобуса. Это может произойти, если устройство удаляется, становится активным после простоя и отправки запроса на простой или если вся система переходит в более низкое состояние питания системы.

    Драйвер клиента отменяет бездействующее IRP, вызывая IoCancelIrp. В следующей таблице описаны три сценария отмены бездействующего IRP и указано действие, которое должен предпринять драйвер:

    Сценарий Механизм отмены бездействуемого запроса
    Драйвер клиента отменил IRP в режиме простоя, а стек драйверов USB не назвал процедуру обратного вызова уведомления о простое USB. Стек драйверов USB завершает неактивный IRP. Так как устройство никогда не покидало D0, драйвер не изменяет состояние устройства.
    Драйвер клиента отменил IRP бездействия, стек драйверов USB вызвал процедуру обратного вызова уведомления о простое USB и еще не вернулся. Возможно, что подпрограмма обратного вызова уведомления о простое USB вызывается, даже если драйвер клиента вызвал отмену для IRP. В этом случае подпрограмма обратного вызова драйвера клиента по-прежнему должна выключать устройство, синхронно отправляя устройство в более низкое состояние питания.

    Когда устройство находится в более низком состоянии питания, драйвер клиента может отправить запрос D0 .

    Кроме того, драйвер может дождаться, пока стек драйверов USB завершит бездействующий IRP, а затем отправить D0 IRP.

    Процедура завершения IRP для запроса простоя USB

    Во многих случаях водитель автобуса может вызвать процедуру завершения IRP для неактивного запроса водителя. В этом случае водитель клиента должен определить, почему водитель автобуса завершил IRP. Возвращенный код состояния может предоставить эти сведения. Если код состояния не STATUS_POWER_STATE_INVALID, драйвер должен поместить свое устройство в D0 , если устройство еще не в D0. Если устройство по-прежнему бездействует, драйвер может отправить еще один запрос на бездействующее IRP.

    Подпрограмма завершения IRP бездействующих запросов не должна блокировать ожидание выполнения запроса на питание D0 . Подпрограмма завершения может вызываться в контексте IRP питания драйвером концентратора, а блокировка другого IRP питания в подпрограмме завершения может привести к взаимоблокировке.

    В следующем списке показано, как подпрограмма завершения для запроса простоя должна интерпретировать некоторые распространенные коды состояния:

    • Драйвер устройства отменил IRP.
    • Требуется изменение состояния питания системы.
    • В Windows XP драйверу устройства для одного из подключенных USB-устройств не удалось поместить свое устройство в D2 при выполнении процедуры обратного вызова бездействующего запроса. В результате водитель автобуса выполнил все ожидающие запросы на бездействия IRP.

    В следующем примере кода показан пример реализации подпрограммы завершения бездействующий запрос.

    /*Routine Description: Completion routine for idle notification IRP Arguments: DeviceObject - pointer to device object Irp - I/O request packet DeviceExtension - pointer to device extension Return Value: NT status value --*/ NTSTATUS IdleNotificationRequestComplete( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension ) < NTSTATUS ntStatus; POWER_STATE powerState; PUSB_IDLE_CALLBACK_INFO idleCallbackInfo; ntStatus = Irp->IoStatus.Status; if(!NT_SUCCESS(ntStatus) && ntStatus != STATUS_NOT_SUPPORTED) < //Idle IRP completes with error. switch(ntStatus) < case STATUS_INVALID_DEVICE_REQUEST: //Invalid request. break; case STATUS_CANCELLED: //1. The device driver canceled the IRP. //2. A system power state change is required. break; case STATUS_POWER_STATE_INVALID: // Device driver requested a D3 power state for its device // Release the allocated resources. goto IdleNotificationRequestComplete_Exit; case STATUS_DEVICE_BUSY: //The bus driver already holds an idle IRP pending for the device. break; default: break; >// If IRP completes with error, issue a SetD0 //Increment the I/O count because //a new IRP is dispatched for the driver. //This call is not shown. powerState.DeviceState = PowerDeviceD0; // Issue a new IRP PoRequestPowerIrp ( DeviceExtension->PhysicalDeviceObject, IRP_MN_SET_POWER, powerState, (PREQUEST_POWER_COMPLETE) PoIrpCompletionFunc, DeviceExtension, NULL); > IdleNotificationRequestComplete_Exit: idleCallbackInfo = DeviceExtension->IdleCallbackInfo; DeviceExtension->IdleCallbackInfo = NULL; DeviceExtension->PendingIdleIrp = NULL; InterlockedExchange(&DeviceExtension->IdleReqPend, 0); if(idleCallbackInfo) < ExFreePool(idleCallbackInfo); >DeviceExtension->IdleState = IdleComplete; // Because the IRP was created using IoAllocateIrp, // the IRP needs to be released by calling IoFreeIrp. // Also return STATUS_MORE_PROCESSING_REQUIRED so that // the kernel does not reference this. IoFreeIrp(Irp); KeSetEvent(&DeviceExtension->IdleIrpCompleteEvent, IO_NO_INCREMENT, FALSE); return STATUS_MORE_PROCESSING_REQUIRED; > 

    Процедура обратного вызова уведомлений о бездействии USB

    Водитель автобуса (экземпляр драйвера концентратора или универсальный родительский драйвер) определяет, когда безопасно приостановить дочерние элементы своего устройства. Если это так, он вызывает подпрограмму обратного вызова уведомления о бездействии, предоставляемую драйвером клиента каждого ребенка.

    Прототип функции для USB_IDLE_CALLBACK выглядит следующим образом:

    typedef VOID (*USB_IDLE_CALLBACK)(__in PVOID Context); 

    Драйвер устройства должен выполнить следующие действия в своей процедуре обратного вызова уведомлений о неактивном режиме:

    • Запросите IRP_MN_WAIT_WAKE IRP для устройства, если устройство должно быть вооружена для удаленного пробуждения.
    • Отмена всех операций ввода-вывода и подготовка устройства к переходу в более низкое состояние питания.
    • Переведите устройство в спящий режим WDM, вызвав PoRequestPowerIrp с параметром PowerState, для параметра PowerState задано значение перечислителя PowerDeviceD2 (определенное в wdm.h; ntddk.h). В Windows XP драйвер не должен помещать свое устройство в PowerDeviceD3, даже если устройство не подготовлено для удаленного пробуждения.

    В Windows XP драйвер должен полагаться на подпрограмму обратного вызова уведомления о простое для выборочной приостановки устройства. Если драйвер под управлением Windows XP переводит устройство в более низкое состояние питания напрямую без использования процедуры обратного вызова уведомления о простое, это может помешать приостановке других устройств в дереве USB-устройств.

    Как драйвер концентратора, так и универсальный родительский драйвер USB (Usbccgp.sys) вызывают подпрограмму обратного вызова уведомления о простое по адресу IRQL = PASSIVE_LEVEL. Это позволяет подпрограмме обратного вызова блокироваться, пока она ожидает завершения запроса на изменение состояния питания.

    Подпрограмма обратного вызова вызывается только в то время, когда система находится в S0 , а устройство находится в D0.

    К подпрограммам обратного вызова уведомления о неактивных запросах применяются следующие ограничения.

    • Драйверы устройств могут инициировать переход состояния питания устройства с D0 на D2 в процедуре обратного вызова уведомления о простое, но другой переход состояния питания не допускается. В частности, драйвер не должен пытаться изменить свое устройство на D0 при выполнении процедуры обратного вызова.
    • Драйверы устройств не должны запрашивать более одного IRP питания из подпрограммы обратного вызова уведомления о простое.

    Подготовка устройств для пробуждения в процедуре обратного вызова уведомления о бездействии

    Подпрограмма обратного вызова уведомления о бездействии должна определить, есть ли на устройстве запрос IRP_MN_WAIT_WAKE . Если запрос IRP_MN_WAIT_WAKE не ожидается, подпрограмма обратного вызова должна отправить запрос IRP_MN_WAIT_WAKE перед приостановкой устройства. Дополнительные сведения о механизме пробуждения ожидания см. в статье Поддержка устройств с возможностями пробуждения.

    Глобальная приостановка USB

    Спецификация USB 2.0 определяет глобальную приостановку как приостановку всей шины за контроллером узла USB путем прекращения всего USB-трафика в шине, включая пакеты начала кадра. Подчиненные устройства, которые еще не приостановлены, обнаруживают состояние простоя на вышестоящем порту и самостоятельно переходят в состояние приостановки. Таким образом Windows не реализует глобальную приостановку. Windows всегда выборочно приостанавливает каждое USB-устройство за контроллером узла USB, прежде чем прекратит весь ТРАФИК USB в шине.

    • Условия глобальной приостановки в Windows 7
    • Условия глобальной приостановки в Windows Vista
    • Условия глобальной приостановки в Windows XP
    • Связанные темы

    Условия глобальной приостановки в Windows 7

    Windows 7 более агрессивно относится к выборочной приостановке USB-концентраторов, чем Windows Vista. Драйвер USB-концентратора Windows 7 выборочно приостанавливает работу любого концентратора, где все подключенные к нему устройства находятся в состоянии питания D1, D2 или D3 . Вся шина переходит в глобальную приостановку после выборочной приостановки всех USB-концентраторов. Стек usb-драйверов Windows 7 рассматривает устройство как неактивное, когда устройство находится в состоянии устройства WDM D1, D2 или D3.

    Условия глобальной приостановки в Windows Vista

    Требования к выполнению глобальной приостановки в Windows Vista являются более гибкими, чем в Windows XP.

    В частности, USB-стек рассматривает устройство как неактивное в Windows Vista всякий раз, когда устройство находится в состоянии устройства WDM D1, D2 или D3.

    На следующей схеме показан сценарий, который может произойти в Windows Vista.

    Схема, иллюстрирующая глобальную приостановку в Windows Vista.

    На этой схеме показана ситуация, аналогичная описанной в разделе «Условия глобальной приостановки в Windows XP». Однако в этом случае устройство 3 считается неактивным. Так как все устройства находятся в состоянии простоя, драйвер шины может вызывать подпрограммы обратного вызова уведомления о простое, связанные с ожидающей отправкой запросов на простой. Каждый драйвер приостанавливает свое устройство, а драйвер шины приостанавливает КОНТРОЛЛЕР УЗЛА USB, как только это безопасно.

    В Windows Vista все USB-устройства, не являющиеся концентраторами, должны находиться в D1, D2 или D3 , прежде чем будет инициирована глобальная приостановка. При этом все USB-концентраторы, включая корневой концентратор, приостанавливаются. Это означает, что любой драйвер USB-клиента, который не поддерживает выборочную приостановку, не позволяет шине войти в глобальную приостановку.

    Условия глобальной приостановки в Windows XP

    Чтобы обеспечить максимальную экономию энергии в Windows XP, важно, чтобы каждый драйвер устройства использовал irp бездействующих запросов для приостановки устройства. Если один драйвер приостанавливает свое устройство с помощью запроса IRP_MN_SET_POWER вместо IRP бездействующего запроса, это может предотвратить приостановку других устройств.

    На следующей схеме показан сценарий, который может произойти в Windows XP.

    Схема, иллюстрирующая глобальную приостановку в Windows XP.

    На этом рисунке устройство 3 находится в состоянии питания D3 и не имеет ожидающего простоя запроса IRP. Устройство 3 не квалифицируется как неактивное устройство для целей глобальной приостановки в Windows XP, так как у него нет ожидающего ожидания IRP бездействующего запроса с родительским устройством. Это не позволяет водителю автобуса вызывать подпрограммы обратного вызова бездействующего запроса, связанные с драйверами других устройств в дереве.

    Включение выборочной приостановки

    Выборочная приостановка отключена для обновлений версий Microsoft Windows XP. Он включен для чистой установки Windows XP, Windows Vista и более поздних версий Windows.

    Чтобы включить поддержку выборочной приостановки для данного корневого концентратора и его дочерних устройств, установите флажок на вкладке Управление питанием для корневого концентратора USB в диспетчер устройств.

    Кроме того, можно включить или отключить выборочную приостановку, задав значение HcDisableSelectiveSuspend под программным ключом драйвера USB-порта. Значение 1 отключает выборочную приостановку. Значение 0 обеспечивает выборочную приостановку.

    Например, следующие строки в Usbport.inf отключают выборочную приостановку для контроллера Hydra OHCI:

    [OHCI_NOSS.AddReg.NT] HKR,,"HcDisableSelectiveSuspend",0x00010001,1 

    Клиентские драйверы не должны пытаться определить, включена ли выборочная приостановка перед отправкой бездействующих запросов. Они должны отправлять запросы в режиме бездействия всякий раз, когда устройство находится в режиме простоя. Если запрос простоя завершается сбоем, драйвер клиента должен сбросить таймер простоя и повторить попытку.

    Связанные темы

    Совместная работа с нами на GitHub

    Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

    Windows driver documentation

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *