Merge "Add WifiShortAggTimeout and WifiNoAggTimeout experiments."
diff --git a/wifi/configs.py b/wifi/configs.py
index f0c8fa9..7518872 100644
--- a/wifi/configs.py
+++ b/wifi/configs.py
@@ -16,6 +16,8 @@
     'WifiReverseBandsteering',
     'WifiHostapdLogging',
     'WifiHostapdDebug',
+    'WifiShortAggTimeout',
+    'WifiNoAggTimeout',
 ]
 for _i in EXPERIMENTS:
   experiment.register(_i)
diff --git a/wifi/wifi.py b/wifi/wifi.py
index 57ec4cd..dea033f 100755
--- a/wifi/wifi.py
+++ b/wifi/wifi.py
@@ -4,6 +4,7 @@
 
 from __future__ import print_function
 
+import glob
 import os
 import re
 import subprocess
@@ -506,6 +507,24 @@
   Returns:
     Whether hostapd was started successfully.
   """
+  aggfiles = glob.glob('/sys/kernel/debug/ieee80211/phy*/' +
+                       'netdev:%s/default_agg_timeout' % interface)
+  if not aggfiles:
+    # This can happen on non-mac80211 interfaces.
+    utils.log('agg_timeout: no default_agg_timeout files for %r', interface)
+  else:
+    if experiment.enabled('WifiShortAggTimeout'):
+      utils.log('Using short agg_timeout.')
+      agg = 500
+    elif experiment.enabled('WifiNoAggTimeout'):
+      utils.log('Disabling agg_timeout.')
+      agg = 0
+    else:
+      utils.log('Using default long agg_timeout.')
+      agg = 5000
+    for aggfile in aggfiles:
+      open(aggfile, 'w').write(str(agg))
+
   pid_filename = utils.get_filename(
       'hostapd', utils.FILENAME_KIND.pid, interface, tmp=True)
   alivemonitor_filename = utils.get_filename(