summaryrefslogtreecommitdiffstats
path: root/abs/core/wireless_tools/dense.patch
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2014-02-17 00:02:46 (GMT)
committerJames Meyer <james.meyer@operamail.com>2014-02-19 19:03:04 (GMT)
commit24954b1c13e839c211ca12ab64e84da68fe22659 (patch)
tree50f5298824beb66fc58dcf945fbdb8c884f28f44 /abs/core/wireless_tools/dense.patch
parent492f9c705027a36f69c06f5ee2849753aaa70a44 (diff)
downloadlinhes_pkgbuild-24954b1c13e839c211ca12ab64e84da68fe22659.zip
linhes_pkgbuild-24954b1c13e839c211ca12ab64e84da68fe22659.tar.gz
linhes_pkgbuild-24954b1c13e839c211ca12ab64e84da68fe22659.tar.bz2
wireless_tools, wpa_actiond, wpa_supplicant:
update binary path to /usr/bin refs #961
Diffstat (limited to 'abs/core/wireless_tools/dense.patch')
-rw-r--r--abs/core/wireless_tools/dense.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/abs/core/wireless_tools/dense.patch b/abs/core/wireless_tools/dense.patch
new file mode 100644
index 0000000..85182cd
--- /dev/null
+++ b/abs/core/wireless_tools/dense.patch
@@ -0,0 +1,49 @@
+The length field of wext data (iw_point.data) is 16 bits. The largest
+value is thus 65535. During the attempts to increase buffer size the
+buffer starts at 4096 and is doubled after each failure to fill. From the
+time this length reaches 65536 it is effectively zero. We thus loose all
+potential space from 32768 to 65535.
+
+This problem is clear when scanning in a RF dense environment.
+
+Without this patch:
+~$ iwlist wlan0 scan
+print_scanning_info: Allocation failed
+
+With this patch:
+~$ iwlist wlan0 scan | grep Cell | wc -l
+86
+
+Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
+
+---
+A similar patch was recently created to fix wpa_supplicant.
+
+I could not find a source code repo for this code and created this patch
+against version 30-pre7 downloaded from
+http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
+
+diff -uprN wireless_tools_org/wireless_tools.30/iwlist.c wireless_tools.30/iwlist.c
+--- wireless_tools_org/wireless_tools.30/iwlist.c 2008-01-16 17:45:41.000000000 -0800
++++ wireless_tools.30/iwlist.c 2009-02-12 14:16:48.000000000 -0800
+@@ -800,7 +800,7 @@ print_scanning_info(int skfd,
+ if(iw_get_ext(skfd, ifname, SIOCGIWSCAN, &wrq) < 0)
+ {
+ /* Check if buffer was too small (WE-17 only) */
+- if((errno == E2BIG) && (range.we_version_compiled > 16))
++ if((errno == E2BIG) && (range.we_version_compiled > 16) && (buflen < 65535))
+ {
+ /* Some driver may return very large scan results, either
+ * because there are many cells, or because they have many
+@@ -816,6 +816,10 @@ print_scanning_info(int skfd,
+ else
+ buflen *= 2;
+
++ /* wrq.u.data.length is 16 bits so max size is 65535 */
++ if(buflen > 65535)
++ buflen = 65535;
++
+ /* Try again */
+ goto realloc;
+ }
+