diff options
| author | PMR <pmr@pmr-lander> | 2017-01-19 09:41:25 +0000 |
|---|---|---|
| committer | PMR <pmr@pmr-lander> | 2017-01-19 09:41:25 +0000 |
| commit | 85361fc323d5dc5ae66db4202cf4914384ef3f99 (patch) | |
| tree | 9254d01c97c216862ecf0a21e711a491017d3fdc | |
| parent | a3e460b7a10f6af6b91b090c1e4a4709c035625b (diff) | |
| parent | d3d14a2e7a8c4d2c849b2673b2498eab1f26aff4 (diff) | |
Merge #314996 from ~kissiel/plainbox-provider-checkbox:use-mii-tool-in-network
| -rwxr-xr-x | bin/network | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/bin/network b/bin/network index 7ba8ef0..ae9cd38 100755 --- a/bin/network +++ b/bin/network @@ -280,29 +280,26 @@ class Interface(socket.socket): @property def max_speed(self): - # Parse ethtool data for max speed since /sys/class/net/DEV/speed only - # reports link speed. - - # Search for things that look like 100baseSX, - # 40000baseNX, 10000baseT + # Parse mii-tool data for max speed + # search for numbers in the line starting with 'capabilities' + # return largest number as max_speed try: - ethinfo = check_output(['ethtool', self.interface], - universal_newlines=True, - stderr=STDOUT).split(' ') + info = check_output(['mii-tool', '-v', self.interface], + universal_newlines=True, + stderr=STDOUT).split('\n') except FileNotFoundError: - logging.warning('ethtool not found! Unable to get max speed') + logging.warning('mii-tool not found! Unable to get max speed') ethinfo = None except CalledProcessError as e: - logging.error('ethtool returned an error!') + logging.error('mii-tool returned an error!') logging.error(e.output) ethinfo = None finally: - expression = '(\\d+)(base)([A-Z]+)|(\d+)(Mb/s)' - regex = re.compile(expression) + regex = re.compile(r'(\d+)(base)([A-Z]+)') speeds = [0] - if ethinfo: - for i in ethinfo: - hit = regex.search(i) + for line in filter(lambda l: 'capabilities' in l, info): + for s in line.split(' '): + hit = regex.search(s) if hit: speeds.append(int(re.sub("\D", "", hit.group(0)))) return max(speeds) |
