none
Win 8 does not send OID_DOT11_NIC_POWER_STATE when setting Airplane mode off RRS feed

  • Question

  • Some times, Win 8 does not send OID_DOT11_NIC_POWER_STATE when setting Airplane mode off in the following scenario:

    1. Set Airplane mode ON

    2. Disable miniport driver

    3. Enable miniport driver

    4. Check Airplane mode status in Win 8 native UI

    In step 1, Win 8 sends OID_DOT11_NIC_POWER_STATE with bSoftwarePhyState = FALSE.

    In step 3, miniport driver remembers the last bSoftwarePhyState, which is FALSE, and sends NDIS_STATUS_DOT11_PHY_STATE_CHANGED accordingly.

    Some times in step 4, Win 8 shows Airplane mode OFF, against to what driver indicated, and if user sets it ON then OFF, windows only sends OID_DOT11_NIC_POWER_STATE with bSoftwarePhyState = FALSE, but does not send OID_DOT11_NIC_POWER_STATE with bSoftwarePhyState = TRUE.

    The only way to get out of this is to go to Wireless settings, and changes the bSoftwarePhyState per interface.

    May you please explain this behaviour?

    Tuesday, January 21, 2014 2:01 PM

Answers

  • I found that, while enabling the driver, windows sends OID_NID_POWER_STATE (as query) and asks driver about it's SoftwarePhyState.

    Our driver saves the last state of SoftwarePhyState in regkey while disable and thus we can retrive it back.

    We had a race that sometimes windows queries the driver before it retreived the value from regkey, this cause the driver to reply with wrong SoftwarePhyStae (from windows perspictive) and thus windows stops sending the OID_NICPOWERSTATE any more, despite that we later notify windows with the expected state using NDIS_STATUS_DOT11_PHY_STATE_CHNGED. 

    In this case, it seems that windows does not consider the notification and it's only care about the OID_NID_POWER_STATE (as query)!

    Sunday, January 26, 2014 10:59 AM

All replies

  • Please collect logs when this happens. I can take a look.

    1. From elevated command line

    2. netsh trace start wireless_dbg globallevel=0xff

    3. <<reproduce the issue>>

    4. netsh trace stop

    5. Send the .cab/.etl file

    Thanks,

    Tony

    Tuesday, January 21, 2014 6:19 PM
  • I found that, while enabling the driver, windows sends OID_NID_POWER_STATE (as query) and asks driver about it's SoftwarePhyState.

    Our driver saves the last state of SoftwarePhyState in regkey while disable and thus we can retrive it back.

    We had a race that sometimes windows queries the driver before it retreived the value from regkey, this cause the driver to reply with wrong SoftwarePhyStae (from windows perspictive) and thus windows stops sending the OID_NICPOWERSTATE any more, despite that we later notify windows with the expected state using NDIS_STATUS_DOT11_PHY_STATE_CHNGED. 

    In this case, it seems that windows does not consider the notification and it's only care about the OID_NID_POWER_STATE (as query)!

    Sunday, January 26, 2014 10:59 AM