aboutsummaryrefslogtreecommitdiffstats
path: root/package/madwifi/patches-r3776/320-hidden_ssid.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2008-07-17 02:30:08 +0000
committerFelix Fietkau <nbd@openwrt.org>2008-07-17 02:30:08 +0000
commitba605c7bf0305cb42febac3e7d74fd7d80796a72 (patch)
tree547d05d8319b3931a4fa1e5b1a5cbd543af52361 /package/madwifi/patches-r3776/320-hidden_ssid.patch
parentc9694199b4d8289f52bf27b9d4e5e2bc78b3e72e (diff)
downloadupstream-ba605c7bf0305cb42febac3e7d74fd7d80796a72.tar.gz
upstream-ba605c7bf0305cb42febac3e7d74fd7d80796a72.tar.bz2
upstream-ba605c7bf0305cb42febac3e7d74fd7d80796a72.zip
huge madwifi update (work in progress, disabled by default, compiles but breaks at run time)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11851 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/madwifi/patches-r3776/320-hidden_ssid.patch')
-rw-r--r--package/madwifi/patches-r3776/320-hidden_ssid.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/package/madwifi/patches-r3776/320-hidden_ssid.patch b/package/madwifi/patches-r3776/320-hidden_ssid.patch
new file mode 100644
index 0000000000..d5a70832f5
--- /dev/null
+++ b/package/madwifi/patches-r3776/320-hidden_ssid.patch
@@ -0,0 +1,40 @@
+This patch fixes the detection of hidden SSIDs as transmitted
+by some cisco systems.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+Index: madwifi-trunk-r3776/net80211/ieee80211_scan_sta.c
+===================================================================
+--- madwifi-trunk-r3776.orig/net80211/ieee80211_scan_sta.c 2008-07-17 03:10:02.000000000 +0200
++++ madwifi-trunk-r3776/net80211/ieee80211_scan_sta.c 2008-07-17 04:02:41.000000000 +0200
+@@ -209,6 +209,19 @@
+ ieee80211_saveie(iep, ie);
+ }
+
++
++static inline int is_empty_ssid(u_int8_t *ssid)
++{
++ if (!ssid)
++ return 1;
++ if (ssid[1] == 0)
++ return 1;
++ if ((ssid[1] == 1) && (ssid[2] == 0))
++ return 1;
++ return 0;
++}
++
++
+ /*
+ * Process a beacon or probe response frame; create an
+ * entry in the scan cache or update any previous entry.
+@@ -252,8 +265,8 @@
+ ise = &se->base;
+
+ /* XXX ap beaconing multiple ssid w/ same bssid */
+- if (sp->ssid[1] != 0 &&
+- (ISPROBE(subtype) || ise->se_ssid[1] == 0))
++ if (!is_empty_ssid(sp->ssid) &&
++ (ISPROBE(subtype) || is_empty_ssid(ise->se_ssid)))
+ memcpy(ise->se_ssid, sp->ssid, 2 + sp->ssid[1]);
+
+ memcpy(ise->se_rates, sp->rates,