Possible values for the mesh power mode are presented in the nl80211_mesh_power_mode enumeration. These modes are active, light sleep and deep sleep. power_mode has been added to the mesh config structure to hold the user-configured default mesh power mode which will be used for new peer links. Signed-off-by: Marco Porsch <marco.porsch@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Ivan Bezyazychnyy <ivan.bezyazychnyy@xxxxxxxxx> Signed-off-by: Mike Krinkin <krinkin.m.u@xxxxxxxxx> --- include/net/cfg80211.h | 3 +++ include/uapi/linux/nl80211.h | 29 +++++++++++++++++++++++++++++ net/wireless/mesh.c | 1 + 3 files changed, 33 insertions(+) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 4c6668f..9488782 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -880,6 +880,8 @@ struct bss_parameters { * a PREQ element for root path confirmation. * @beacon_interval: beacon interval to use * @dtim_period: DTIM period to use + * @power_mode: The default mesh power save mode which will be the initial + * setting for new peer links. */ struct mesh_config { u16 dot11MeshRetryTimeout; @@ -909,6 +911,7 @@ struct mesh_config { u16 dot11MeshHWMPconfirmationInterval; u16 beacon_interval; u8 dtim_period; + enum nl80211_mesh_power_mode power_mode; }; /** diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index 3306e79..ee80ffc 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -2203,6 +2203,35 @@ enum nl80211_mntr_flags { }; /** + * enum nl80211_mesh_power_mode - mesh power save modes + * + * @__NL80211_MESH_POWER_INVALID: internal use + * + * @NL80211_MESH_POWER_ACTIVE: Active mesh power mode. The mesh STA is + * in Awake state all the time. + * @NL80211_MESH_POWER_LIGHT_SLEEP: Light sleep mode. The mesh STA will + * alternate between Active and Doze states, + * but will wake up for neighbor's beacons. + * @NL80211_MESH_POWER_DEEP_SLEEP: Deep sleep mode. The mesh STA will + * alternate between Active and Doze states, + * but may not wake up for neighbor's beacons. + * + * @__NL80211_MESH_POWER_AFTER_LAST - internal use + * @NL80211_MESH_POWER_MAX - highest possible power save level + */ + +enum nl80211_mesh_power_mode { + __NL80211_MESH_POWER_INVALID, + + NL80211_MESH_POWER_ACTIVE, + NL80211_MESH_POWER_LIGHT_SLEEP, + NL80211_MESH_POWER_DEEP_SLEEP, + + __NL80211_MESH_POWER_AFTER_LAST, + NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1 +}; + +/** * enum nl80211_meshconf_params - mesh configuration parameters * * Mesh configuration parameters. These can be changed while the mesh is diff --git a/net/wireless/mesh.c b/net/wireless/mesh.c index e461502..1c7fab6 100644 --- a/net/wireless/mesh.c +++ b/net/wireless/mesh.c @@ -74,6 +74,7 @@ const struct mesh_config default_mesh_config = { .dot11MeshHWMPconfirmationInterval = MESH_ROOT_CONFIRMATION_INTERVAL, .beacon_interval = MESH_DEFAULT_BEACON_INTERVAL, .dtim_period = MESH_DEFAULT_DTIM_PERIOD, + .power_mode = NL80211_MESH_POWER_ACTIVE, }; const struct mesh_setup default_mesh_setup = { -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html