mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-01-12 03:20:16 +02:00
madwifi: preserve WPA IEs received in probe responses and prefer them over beacon information
improves reliability when using wpa_supplicant to connect to aps with hidden ssid and dynamic encryption settings git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11928 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
d23c423167
commit
eb1102a7ed
49
package/madwifi/patches/368-sta_ie_preserve.patch
Normal file
49
package/madwifi/patches/368-sta_ie_preserve.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
--- a/net80211/ieee80211_scan_sta.c
|
||||||
|
+++ b/net80211/ieee80211_scan_sta.c
|
||||||
|
@@ -201,8 +201,10 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-saveie(u_int8_t **iep, const u_int8_t *ie)
|
||||||
|
+saveie(u_int8_t **iep, const u_int8_t *ie, int preserve)
|
||||||
|
{
|
||||||
|
+ if (preserve && *iep)
|
||||||
|
+ return;
|
||||||
|
if (ie == NULL)
|
||||||
|
*iep = NULL;
|
||||||
|
else
|
||||||
|
@@ -304,10 +306,10 @@
|
||||||
|
(const struct ieee80211_tim_ie *) sp->tim;
|
||||||
|
ise->se_dtimperiod = tim->tim_period;
|
||||||
|
}
|
||||||
|
- saveie(&ise->se_wme_ie, sp->wme);
|
||||||
|
- saveie(&ise->se_wpa_ie, sp->wpa);
|
||||||
|
- saveie(&ise->se_rsn_ie, sp->rsn);
|
||||||
|
- saveie(&ise->se_ath_ie, sp->ath);
|
||||||
|
+ saveie(&ise->se_wme_ie, sp->wme, 0);
|
||||||
|
+ saveie(&ise->se_wpa_ie, sp->wpa, !sp->isprobe);
|
||||||
|
+ saveie(&ise->se_rsn_ie, sp->rsn, !sp->isprobe);
|
||||||
|
+ saveie(&ise->se_ath_ie, sp->ath, 0);
|
||||||
|
|
||||||
|
/* clear failure count after STA_FAIL_AGE passes */
|
||||||
|
if (se->se_fails && (jiffies - se->se_lastfail) > STA_FAILS_AGE*HZ) {
|
||||||
|
--- a/net80211/ieee80211_input.c
|
||||||
|
+++ b/net80211/ieee80211_input.c
|
||||||
|
@@ -3106,6 +3106,7 @@
|
||||||
|
*/
|
||||||
|
IEEE80211_VERIFY_LENGTH(efrm - frm, 12);
|
||||||
|
memset(&scan, 0, sizeof(scan));
|
||||||
|
+ scan.isprobe = (subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP) && IEEE80211_ADDR_EQ(wh->i_addr2, vap->iv_myaddr);
|
||||||
|
scan.tstamp = frm;
|
||||||
|
frm += 8;
|
||||||
|
scan.bintval = le16toh(*(__le16 *)frm);
|
||||||
|
--- a/net80211/ieee80211_scan.h
|
||||||
|
+++ b/net80211/ieee80211_scan.h
|
||||||
|
@@ -133,6 +133,7 @@
|
||||||
|
u_int8_t erp;
|
||||||
|
u_int16_t bintval;
|
||||||
|
u_int8_t timoff;
|
||||||
|
+ u_int8_t isprobe;
|
||||||
|
u_int8_t *tim;
|
||||||
|
u_int8_t *tstamp;
|
||||||
|
u_int8_t *country;
|
Loading…
Reference in New Issue
Block a user