Revert "/bin/wifi: use get-quantenna-interface script."
This reverts commit 4868067a565ab1dd503c6d01d51b09c529824786.
Change-Id: I7412e639a74b67cbdc4957dad7276892981dac92
diff --git a/wifi/quantenna.py b/wifi/quantenna.py
index a0bebd5..d3200c1 100755
--- a/wifi/quantenna.py
+++ b/wifi/quantenna.py
@@ -9,20 +9,23 @@
import utils
-_INTERFACE = subprocess.check_output(['get-quantenna-interface']).strip()
-_QCSAPI = None
-
-
-# qcsapi_pcie_static runs on PCIe hosts, e.g. GFRG250.
-# call_qcsapi runs on the LHOST, e.g. GFEX250.
-for qcsapi in ['qcsapi_pcie_static', 'call_qcsapi']:
- if utils.subprocess_quiet(['runnable', qcsapi]) == 0:
- _QCSAPI = qcsapi
- break
+def _get_qcsapi():
+ """Detect Quantenna device."""
+ if not hasattr(_get_qcsapi, 'qcsapi'):
+ _get_qcsapi.qcsapi = None
+ if (utils.subprocess_quiet(['runnable', 'qcsapi_pcie_static']) == 0 and
+ utils.subprocess_quiet(['modinfo', 'qdpc-host'], no_stdout=True) == 0):
+ # qcsapi_pcie_static runs on PCIe hosts, e.g. GFRG250. qdpc-host is only
+ # loaded if a Quantenna device is present.
+ _get_qcsapi.qcsapi = 'qcsapi_pcie_static'
+ elif utils.subprocess_quiet(['runnable', 'call_qcsapi']) == 0:
+ # call_qcsapi runs on the LHOST, e.g. GFEX250.
+ _get_qcsapi.qcsapi = 'call_qcsapi'
+ return _get_qcsapi.qcsapi
def _qcsapi(*args):
- return subprocess.check_output([_QCSAPI] + list(args))
+ return subprocess.check_output([_get_qcsapi()] + list(args))
def _set(mode, opt):
@@ -41,8 +44,11 @@
_qcsapi('update_config_param', 'wifi0', param, value)
macs = {'wlan0': 'MAC_ADDR_WIFI', 'wlan1': 'MAC_ADDR_WIFI2'}
- mac = subprocess.check_output(['hnvram', '-rq', macs[_INTERFACE]]).strip()
- _qcsapi('set_mac_addr', 'wifi0', mac)
+ for dev, var in macs.iteritems():
+ if utils.read_or_empty('/sys/class/net/%s/device/vendor' % dev) == '0x1bb5':
+ mac = subprocess.check_output(['hnvram', '-rq', var]).strip()
+ _qcsapi('set_mac_addr', 'wifi0', mac)
+ break
if int(_qcsapi('is_startprod_done')):
_qcsapi('reload_in_mode', 'wifi0', mode)
@@ -79,7 +85,7 @@
def has_quantenna():
- return _INTERFACE and _QCSAPI
+ return _get_qcsapi() is not None
def set_wifi(opt):