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.
Showing the changes to include/uapi (1 of 4 files). Show all
Unified · Split
| @@ -1310,6 +1310,9 @@ enum nl80211_commands { · 1309 unmodified lines | ||
| 1310 | 1310 | * if not given in START_AP 0 is assumed, if not given in SET_BSS |
| 1311 | 1311 | * no change is made. |
| 1312 | 1312 | * |
| 1313 | + * @NL80211_ATTR_LOCAL_MESH_POWER_MODE: local mesh STA link-specific power mode | |
| 1314 | + * defined in &enum nl80211_mesh_power_mode. | |
| 1315 | + * | |
| 1313 | 1316 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 1314 | 1317 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| 1315 | 1318 | */ |
| @@ -1580,6 +1583,8 @@ enum nl80211_attrs { · 264 unmodified lines | ||
| 1580 | 1583 | NL80211_ATTR_P2P_CTWINDOW, |
| 1581 | 1584 | NL80211_ATTR_P2P_OPPPS, |
| 1582 | 1585 | |
| 1586 | + NL80211_ATTR_LOCAL_MESH_POWER_MODE, | |
| 1587 | + | |
| 1583 | 1588 | /* add attributes here, update the policy in nl80211.c */ |
| 1584 | 1589 | |
| 1585 | 1590 | __NL80211_ATTR_AFTER_LAST, |
| @@ -1838,6 +1843,10 @@ enum nl80211_sta_bss_param { · 252 unmodified lines | ||
| 1838 | 1843 | * @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update. |
| 1839 | 1844 | * @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32) |
| 1840 | 1845 | * @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64) |
| 1846 | + * @NL80211_STA_INFO_LOCAL_PM: local mesh STA link-specific power mode | |
| 1847 | + * @NL80211_STA_INFO_PEER_PM: peer mesh STA link-specific power mode | |
| 1848 | + * @NL80211_STA_INFO_NONPEER_PM: neighbor mesh STA power save mode towards | |
| 1849 | + * non-peer STA | |
| 1841 | 1850 | * @__NL80211_STA_INFO_AFTER_LAST: internal |
| 1842 | 1851 | * @NL80211_STA_INFO_MAX: highest possible station info attribute |
| 1843 | 1852 | */ |
| @@ -1862,6 +1871,9 @@ enum nl80211_sta_info { · 18 unmodified lines | ||
| 1862 | 1871 | NL80211_STA_INFO_STA_FLAGS, |
| 1863 | 1872 | NL80211_STA_INFO_BEACON_LOSS, |
| 1864 | 1873 | NL80211_STA_INFO_T_OFFSET, |
| 1874 | + NL80211_STA_INFO_LOCAL_PM, | |
| 1875 | + NL80211_STA_INFO_PEER_PM, | |
| 1876 | + NL80211_STA_INFO_NONPEER_PM, | |
| 1865 | 1877 | |
| 1866 | 1878 | /* keep last */ |
| 1867 | 1879 | __NL80211_STA_INFO_AFTER_LAST, |
| @@ -2252,6 +2264,34 @@ enum nl80211_mntr_flags { · 384 unmodified lines | ||
| 2252 | 2264 | NL80211_MNTR_FLAG_MAX = __NL80211_MNTR_FLAG_AFTER_LAST - 1 |
| 2253 | 2265 | }; |
| 2254 | 2266 | |
| 2267 | +/** | |
| 2268 | + * enum nl80211_mesh_power_mode - mesh power save modes | |
| 2269 | + * | |
| 2270 | + * @NL80211_MESH_POWER_UNKNOWN: The mesh power mode of the mesh STA is | |
| 2271 | + * not known or has not been set yet. | |
| 2272 | + * @NL80211_MESH_POWER_ACTIVE: Active mesh power mode. The mesh STA is | |
| 2273 | + * in Awake state all the time. | |
| 2274 | + * @NL80211_MESH_POWER_LIGHT_SLEEP: Light sleep mode. The mesh STA will | |
| 2275 | + * alternate between Active and Doze states, but will wake up for | |
| 2276 | + * neighbor's beacons. | |
| 2277 | + * @NL80211_MESH_POWER_DEEP_SLEEP: Deep sleep mode. The mesh STA will | |
| 2278 | + * alternate between Active and Doze states, but may not wake up | |
| 2279 | + * for neighbor's beacons. | |
| 2280 | + * | |
| 2281 | + * @__NL80211_MESH_POWER_AFTER_LAST - internal use | |
| 2282 | + * @NL80211_MESH_POWER_MAX - highest possible power save level | |
| 2283 | + */ | |
| 2284 | + | |
| 2285 | +enum nl80211_mesh_power_mode { | |
| 2286 | + NL80211_MESH_POWER_UNKNOWN, | |
| 2287 | + NL80211_MESH_POWER_ACTIVE, | |
| 2288 | + NL80211_MESH_POWER_LIGHT_SLEEP, | |
| 2289 | + NL80211_MESH_POWER_DEEP_SLEEP, | |
| 2290 | + | |
| 2291 | + __NL80211_MESH_POWER_AFTER_LAST, | |
| 2292 | + NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1 | |
| 2293 | +}; | |
| 2294 | + | |
| 2255 | 2295 | /** |
| 2256 | 2296 | * enum nl80211_meshconf_params - mesh configuration parameters |
| 2257 | 2297 | * |
| @@ -2346,6 +2386,11 @@ enum nl80211_mntr_flags { · 88 unmodified lines | ||
| 2346 | 2386 | * (in TUs) during which a mesh STA can send only one Action frame |
| 2347 | 2387 | * containing a PREQ element for root path confirmation. |
| 2348 | 2388 | * |
| 2389 | + * @NL80211_MESHCONF_POWER_MODE: Default mesh power mode for new peer links. | |
| 2390 | + * type &enum nl80211_mesh_power_mode (u32) | |
| 2391 | + * | |
| 2392 | + * @NL80211_MESHCONF_AWAKE_WINDOW: awake window duration (in TUs) | |
| 2393 | + * | |
| 2349 | 2394 | * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use |
| 2350 | 2395 | */ |
| 2351 | 2396 | enum nl80211_meshconf_params { |
| @@ -2375,6 +2420,8 @@ enum nl80211_meshconf_params { · 23 unmodified lines | ||
| 2375 | 2420 | NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT, |
| 2376 | 2421 | NL80211_MESHCONF_HWMP_ROOT_INTERVAL, |
| 2377 | 2422 | NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL, |
| 2423 | + NL80211_MESHCONF_POWER_MODE, | |
| 2424 | + NL80211_MESHCONF_AWAKE_WINDOW, | |
| 2378 | 2425 | |
| 2379 | 2426 | /* keep last */ |
| 2380 | 2427 | __NL80211_MESHCONF_ATTR_AFTER_LAST, |