Merge "Move quantenna-kmsgd to vendor/quantenna/drivers."
diff --git a/taxonomy/ethernet.py b/taxonomy/ethernet.py
index 2cec4ac..f277184 100644
--- a/taxonomy/ethernet.py
+++ b/taxonomy/ethernet.py
@@ -55,9 +55,11 @@
     '1c:b0:94': ['htc'],
     '38:e7:d8': ['htc'],
     '50:2e:5c': ['htc'],
+    '64:a7:69': ['htc'],
     '7c:61:93': ['htc'],
     '90:e7:c4': ['htc'],
     'b4:ce:f6': ['htc'],
+    'd8:b3:77': ['htc'],
     'e8:99:c4': ['htc'],
 
     '0c:48:85': ['lg'],
diff --git a/taxonomy/pcaptest.py b/taxonomy/pcaptest.py
index 62ae7bc..363f327 100644
--- a/taxonomy/pcaptest.py
+++ b/taxonomy/pcaptest.py
@@ -17,10 +17,14 @@
   ('Unknown', './testdata/pcaps/iPhone 3GS 2.4GHz.pcap'),
   ('Unknown', './testdata/pcaps/iPhone 3GS 2.4GHz M137LL.pcap'),
   ('Unknown', './testdata/pcaps/HTC Evo 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/HTC Incredible 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/HTC Inspire 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/HTC Sensation 2.4GHz.pcap'),
   ('Unknown', './testdata/pcaps/HTC Thunderbolt 2.4GHz.pcap'),
   ('Unknown', './testdata/pcaps/Lenovo_T440_80211ac_2x2_Windows8_2_4_GHz.pcap'),
   ('Unknown', './testdata/pcaps/LG E900 2.4GHz.pcap'),
   ('Unknown', './testdata/pcaps/LG G2X 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/LG Revolution 2.4GHz.pcap'),
   ('Unknown', './testdata/pcaps/MediaTek MT7610U 2.4GHz.pcap'),
   ('Unknown', './testdata/pcaps/Motorola Droid 2 2.4GHz.pcap'),
   ('Unknown', './testdata/pcaps/Motorola Droid 3 2.4GHz.pcap'),
diff --git a/taxonomy/testdata/dhcp.leases b/taxonomy/testdata/dhcp.leases
index cc99348..6256fd5 100644
--- a/taxonomy/testdata/dhcp.leases
+++ b/taxonomy/testdata/dhcp.leases
@@ -41,3 +41,5 @@
 1432237016 00:26:4a:e6:b7:4e 192.168.42.32 iPhoone-3GS
 1432237016 d0:23:db:a2:e5:02 192.168.42.33 iPhoone-4s
 1432237016 00:26:4a:c2:89:58 192.168.42.33 iPhoone-3GS
+1432237016 74:c2:46:fc:bb:d6 192.168.42.34 AmazonDashButton
+1432237016 04:0c:ce:cf:40:2c 192.168.42.34 MacbookAir2010
diff --git a/taxonomy/testdata/dhcp.signatures b/taxonomy/testdata/dhcp.signatures
index 21fae31..bb5fae6 100644
--- a/taxonomy/testdata/dhcp.signatures
+++ b/taxonomy/testdata/dhcp.signatures
@@ -33,3 +33,5 @@
 00:26:4a:e6:b7:4e 1,3,6,15,119,252
 d0:23:db:a2:e5:02 1,3,6,15,119,252
 00:26:4a:c2:89:58 1,3,6,15,119,252
+74:c2:46:fc:bb:d6 1,3,6
+04:0c:ce:cf:40:2c 1,3,6,15,119,95,252,44,46
diff --git a/taxonomy/testdata/pcaps/Amazon Dash Button 2.4GHz.pcap b/taxonomy/testdata/pcaps/Amazon Dash Button 2.4GHz.pcap
new file mode 100644
index 0000000..7e32ff7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Amazon Dash Button 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC Incredible 2.4GHz.pcap b/taxonomy/testdata/pcaps/HTC Incredible 2.4GHz.pcap
new file mode 100644
index 0000000..b0c27db
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC Incredible 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC Inspire 2.4GHz.pcap b/taxonomy/testdata/pcaps/HTC Inspire 2.4GHz.pcap
new file mode 100644
index 0000000..88201ec
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC Inspire 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC Sensation 2.4GHz.pcap b/taxonomy/testdata/pcaps/HTC Sensation 2.4GHz.pcap
new file mode 100644
index 0000000..990d80c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC Sensation 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/LG Revolution 2.4GHz.pcap b/taxonomy/testdata/pcaps/LG Revolution 2.4GHz.pcap
new file mode 100644
index 0000000..062e15f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/LG Revolution 2.4GHz.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/MacBook Air late 2010 \050A1369\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/MacBook Air late 2010 \050A1369\051 2.4GHz.pcap"
new file mode 100644
index 0000000..9462dd7
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/MacBook Air late 2010 \050A1369\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/MacBook Air late 2010 \050A1369\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/MacBook Air late 2010 \050A1369\051 5GHz.pcap"
new file mode 100644
index 0000000..01ade63
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/MacBook Air late 2010 \050A1369\051 5GHz.pcap"
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2 2.4GHz.pcap
new file mode 100644
index 0000000..12390b0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2 5GHz.pcap
new file mode 100644
index 0000000..90051fe
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2 5GHz.pcap
Binary files differ
diff --git a/taxonomy/wifi.py b/taxonomy/wifi.py
index ebed08f..dad59aa 100644
--- a/taxonomy/wifi.py
+++ b/taxonomy/wifi.py
@@ -23,7 +23,7 @@
 
 
 database = {
-    'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:110c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:110c,htagg:19,htmcs:000000ff|os:dashbutton':
+    'wifi3|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:110c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:110c,htagg:19,htmcs:000000ff|os:dashbutton':
         ('BCM43362', 'Amazon Dash Button', '2.4GHz'),
 
     'wifi|probe:0,1,50|assoc:0,1,50,48,221(0050f2,2)|os:kindle':
@@ -366,6 +366,11 @@
     'wifi|probe:0,1,50,3,45,221(00904c,51),htcap:182c|assoc:0,1,33,36,48,50,45,221(00904c,51),221(0050f2,2),htcap:182c|os:macos':
         ('BCM4322', 'MacBook late 2008 (A1278)', '2.4GHz'),
 
+    'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:087e,htagg:1b,htmcs:0000ffff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:087e,htagg:1b,htmcs:0000ffff,txpow:0f07|os:macos':
+        ('BCM43224', 'MacBook Air late 2010 (A1369)', '5GHz'),
+    'wifi3|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:187c,htagg:1b,htmcs:0000ffff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:187c,htagg:1b,htmcs:0000ffff,txpow:1207|os:macos':
+        ('BCM43224', 'MacBook Air late 2010 (A1369)', '2.4GHz'),
+
     'wifi|probe:0,1,45,221(00904c,51),htcap:086e,htagg:1b,htmcs:0000ffff|assoc:0,1,33,36,48,45,221(00904c,51),221(0050f2,2),htcap:086e,htagg:1b,htmcs:0000ffff|os:macos':
         ('BCM4322', 'MacBook Air late 2011', '5GHz'),
 
@@ -581,6 +586,14 @@
         ('BCM4330', 'Samsung Galaxy Note 2', '5GHz'),
     'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:0062,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:0e09|oui:murata':
         ('BCM4330', 'Samsung Galaxy Note 2', '5GHz'),
+    'wifi3|probe:0,1,45,3,221(001018,2),221(00904c,51),htcap:0062,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:0e09|oui:samsung':
+        ('BCM4330', 'Samsung Galaxy Note 2', '5GHz'),
+    'wifi3|probe:0,1,45,3,221(001018,2),221(00904c,51),htcap:0062,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:0e09|oui:murata':
+        ('BCM4330', 'Samsung Galaxy Note 2', '5GHz'),
+    'wifi3|probe:0,1,45,3,221(001018,2),221(00904c,51),htcap:0062,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:0e09|oui:samsung':
+        ('BCM4330', 'Samsung Galaxy Note 2', '5GHz'),
+    'wifi3|probe:0,1,45,3,221(001018,2),221(00904c,51),htcap:0062,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:0e09|oui:murata':
+        ('BCM4330', 'Samsung Galaxy Note 2', '5GHz'),
     'wifi3|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:1020,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:1020,htagg:1a,htmcs:000000ff,txpow:1209|oui:samsung':
         ('BCM4330', 'Samsung Galaxy Note 2', '2.4GHz'),
     'wifi3|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:1020,htagg:1a,htmcs:000000ff|assoc:0,1,33,36,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:1020,htagg:1a,htmcs:000000ff,txpow:1209|oui:murata':
diff --git a/wifi/wifi.py b/wifi/wifi.py
index dea033f..de8ced4 100755
--- a/wifi/wifi.py
+++ b/wifi/wifi.py
@@ -956,17 +956,15 @@
   success = function(opt)
 
   if success:
-    if extra[0] == 'set':
+    if extra[0] in ('set', 'setclient'):
+      program = 'hostapd' if extra[0] == 'set' else 'wpa_supplicant'
       if opt.persist:
         phy = iw.find_phy(opt.band, opt.channel)
         for band in iw.phy_bands(phy):
           if band != opt.band:
-            persist.delete_options('hostapd', band)
-        persist.save_options('hostapd', opt.band, argv)
-      persist.save_options('hostapd', opt.band, argv, tmp=True)
-
-    if extra[0] == 'setclient' and opt.persist:
-      persist.save_options('wpa_supplicant', opt.band, argv)
+            persist.delete_options(program, band)
+        persist.save_options(program, opt.band, argv)
+      persist.save_options(program, opt.band, argv, tmp=True)
 
   return success