{cfg,nl}80211: mesh power mode primitives and userspace access
Add the nl80211_mesh_power_mode enumeration which holds possible values for the mesh power mode. These modes are unknown, active, light sleep and deep sleep. Add power_mode entry to the mesh config structure to hold the user-configured default mesh power mode. This value will be used for new peer links. Add the dot11MeshAwakeWindowDuration value to the mesh config. The awake window is a duration in TU describing how long the STA will stay awake after transmitting its beacon in PS mode. Add access routines to: - get/set local link-specific power mode (STA) - get remote STA's link-specific power mode (STA) - get remote STA's non-peer power mode (STA) - get/set default mesh power mode (mesh config) - get/set mesh awake window duration (mesh config) All config changes may be done at mesh runtime and take effect immediately. Signed-off-by: Marco Porsch <marco@cozybit.com> Signed-off-by: Ivan Bezyazychnyy <ivan.bezyazychnyy@gmail.com> Signed-off-by: Mike Krinkin <krinkin.m.u@gmail.com> [fix commit message line length, error handling in set station] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:

committed by
Johannes Berg

parent
9bdbf04db0
commit
3b1c5a5307
@@ -1310,6 +1310,9 @@ enum nl80211_commands {
|
||||
* if not given in START_AP 0 is assumed, if not given in SET_BSS
|
||||
* no change is made.
|
||||
*
|
||||
* @NL80211_ATTR_LOCAL_MESH_POWER_MODE: local mesh STA link-specific power mode
|
||||
* defined in &enum nl80211_mesh_power_mode.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -1580,6 +1583,8 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_P2P_CTWINDOW,
|
||||
NL80211_ATTR_P2P_OPPPS,
|
||||
|
||||
NL80211_ATTR_LOCAL_MESH_POWER_MODE,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -1838,6 +1843,10 @@ enum nl80211_sta_bss_param {
|
||||
* @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update.
|
||||
* @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32)
|
||||
* @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64)
|
||||
* @NL80211_STA_INFO_LOCAL_PM: local mesh STA link-specific power mode
|
||||
* @NL80211_STA_INFO_PEER_PM: peer mesh STA link-specific power mode
|
||||
* @NL80211_STA_INFO_NONPEER_PM: neighbor mesh STA power save mode towards
|
||||
* non-peer STA
|
||||
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
||||
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
||||
*/
|
||||
@@ -1862,6 +1871,9 @@ enum nl80211_sta_info {
|
||||
NL80211_STA_INFO_STA_FLAGS,
|
||||
NL80211_STA_INFO_BEACON_LOSS,
|
||||
NL80211_STA_INFO_T_OFFSET,
|
||||
NL80211_STA_INFO_LOCAL_PM,
|
||||
NL80211_STA_INFO_PEER_PM,
|
||||
NL80211_STA_INFO_NONPEER_PM,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_STA_INFO_AFTER_LAST,
|
||||
@@ -2252,6 +2264,34 @@ enum nl80211_mntr_flags {
|
||||
NL80211_MNTR_FLAG_MAX = __NL80211_MNTR_FLAG_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_mesh_power_mode - mesh power save modes
|
||||
*
|
||||
* @NL80211_MESH_POWER_UNKNOWN: The mesh power mode of the mesh STA is
|
||||
* not known or has not been set yet.
|
||||
* @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_UNKNOWN,
|
||||
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
|
||||
*
|
||||
@@ -2346,6 +2386,11 @@ enum nl80211_mntr_flags {
|
||||
* (in TUs) during which a mesh STA can send only one Action frame
|
||||
* containing a PREQ element for root path confirmation.
|
||||
*
|
||||
* @NL80211_MESHCONF_POWER_MODE: Default mesh power mode for new peer links.
|
||||
* type &enum nl80211_mesh_power_mode (u32)
|
||||
*
|
||||
* @NL80211_MESHCONF_AWAKE_WINDOW: awake window duration (in TUs)
|
||||
*
|
||||
* @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_meshconf_params {
|
||||
@@ -2375,6 +2420,8 @@ enum nl80211_meshconf_params {
|
||||
NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT,
|
||||
NL80211_MESHCONF_HWMP_ROOT_INTERVAL,
|
||||
NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL,
|
||||
NL80211_MESHCONF_POWER_MODE,
|
||||
NL80211_MESHCONF_AWAKE_WINDOW,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_MESHCONF_ATTR_AFTER_LAST,
|
||||
|
Reference in New Issue
Block a user