wifi_power_level
This commit is contained in:
parent
075a97e30a
commit
32d9a9d201
2 changed files with 47 additions and 9 deletions
|
|
@ -4,6 +4,7 @@ import tuned.monitors
|
|||
import tuned.utils.commands
|
||||
import os
|
||||
import struct
|
||||
import glob
|
||||
|
||||
log = tuned.logs.get()
|
||||
|
||||
|
|
@ -37,16 +38,53 @@ class WirelessPlugin(tuned.plugins.Plugin):
|
|||
|
||||
# COMMANDS:
|
||||
|
||||
def _set_wifi_power_level(self, power_level):
|
||||
try:
|
||||
lines = open("/proc/net/wireless").readlines()
|
||||
except (OSError,IOError) as e:
|
||||
log.error("Error reading wifi devices from /proc/net/wireless: %s" % (e))
|
||||
return None
|
||||
|
||||
ifaces = []
|
||||
for line in lines:
|
||||
if line.find("|") != -1:
|
||||
continue
|
||||
try:
|
||||
ifaces.append(line[:line.find(":")])
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
if len(ifaces) == 0:
|
||||
log.info("No wifi interfaces found")
|
||||
return None
|
||||
|
||||
# TODO: set old_value properly. Is there "get_power"? I don't have wifi here
|
||||
old_value = "5"
|
||||
|
||||
for iface in ifaces:
|
||||
tuned.utils.commands.execute(["iwpriv", iface, "set_power", power_level])
|
||||
|
||||
for sys_file in glob.glob("/sys/bus/pci/devices/*/power_level"):
|
||||
tuned.utils.commands.write_to_file(sys_file, power_level)
|
||||
|
||||
return old_value
|
||||
|
||||
def _apply_wifi_power_level(self):
|
||||
self._revert_wifi_power_level()
|
||||
|
||||
if len(self._options["wifi_power_level"]) == 0:
|
||||
return False
|
||||
|
||||
old_value = self._set_wifi_power_level(self._options["wifi_power_level"])
|
||||
if old_value:
|
||||
storage = tuned.utils.storage.Storage.get_instance()
|
||||
storage.data["wireless"]["wifi_power_level"] = old_value
|
||||
storage.save()
|
||||
|
||||
return True
|
||||
|
||||
def _revert_wifi_power_level(self):
|
||||
#storage = tuned.utils.storage.Storage.get_instance()
|
||||
#if storage.data["cpu"].has_key("cpu_governor"):
|
||||
#tuned.utils.commands.execute(["cpupower", "frequency-set", "-g", storage.data["cpu"]["cpu_governor"]])
|
||||
#del storage.data["cpu"]["cpu_governor"]
|
||||
storage = tuned.utils.storage.Storage.get_instance()
|
||||
if storage.data["wireless"].has_key("wifi_power_level"):
|
||||
self._set_wifi_power_level(storage.data["wireless"]["wifi_power_level"])
|
||||
del storage.data["wireless"]["wifi_power_level"]
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ from subprocess import *
|
|||
log = tuned.logs.get()
|
||||
|
||||
|
||||
def _write_to_file(f, data):
|
||||
def write_to_file(f, data):
|
||||
log.debug("Writing to file: %s < %s" % (f, data))
|
||||
try:
|
||||
fd = open(f, "w")
|
||||
|
|
@ -35,7 +35,7 @@ def _write_to_file(f, data):
|
|||
except (OSError,IOError) as e:
|
||||
log.error("Writing to file %s error: %s" % (f, e))
|
||||
|
||||
def _read_file(f):
|
||||
def read_file(f):
|
||||
old_value = ""
|
||||
try:
|
||||
f = open(f, "r")
|
||||
|
|
@ -56,7 +56,7 @@ def revert_file(key, subkey, f):
|
|||
return
|
||||
|
||||
old_value = storage.data[key][subkey]
|
||||
_write_to_file(f, old_value)
|
||||
write_to_file(f, old_value)
|
||||
|
||||
del storage.data[key][subkey]
|
||||
|
||||
|
|
@ -66,11 +66,11 @@ def set_file(key, subkey, f, data):
|
|||
log.error("Storage file does not contain item with key %s" % (key))
|
||||
return
|
||||
|
||||
old_value = _read_file(f)
|
||||
old_value = read_file(f)
|
||||
storage.data[key][subkey] = old_value
|
||||
storage.save()
|
||||
|
||||
_write_to_file(f, data)
|
||||
write_to_file(f, data)
|
||||
|
||||
def execute(args):
|
||||
out = ""
|
||||
|
|
|
|||
Loading…
Reference in a new issue