Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a10605e599a7873417043fe2bb559abe719f8a1a
Commit:     a10605e599a7873417043fe2bb559abe719f8a1a
Parent:     d9f8bcbf67a0ee67c8cb0734f003dfe916bb5248
Author:     Zhu Yi <[EMAIL PROTECTED]>
AuthorDate: Thu Nov 22 11:10:22 2007 +0800
Committer:  John W. Linville <[EMAIL PROTECTED]>
CommitDate: Thu Nov 29 18:08:47 2007 -0500

    mac80211: free ifsta->extra_ie and clear IEEE80211_STA_PRIVACY_INVOKED
    
    I'm not sure if this is best choice, someone might have better
    solutions. But this patch fixed the connection problem when switching
    from a WPA enabled AP (using wpa_supplicant) to an open AP (using
    iwconfig). The root cause is when we connect to a WPA enabled AP,
    wpa_supplicant sets the ifsta->extra_ie thru SIOCSIWGENIE. But if we
    stop wpa_supplicant and connect to an open AP with iwconfig, there is
    no way to clear the extra_ie so that mac80211 keeps connecting with that.
    
    Someone could argue wpa_supplicant should clear the extra_ie during
    its shutdown. But mac80211 should also handle the unexpected shutdown
    case (ie. killall -9 wpa_supplicant).
    
    On Wed, 2007-11-21 at 16:19 +0100, Johannes Berg wrote:
    > Yeah. Can you amend the patch to also clear the
    > IEEE80211_STA_PRIVACY_INVOKED flag?
    
    Signed-off-by: Zhu Yi <[EMAIL PROTECTED]>
    Acked-by: Johannes Berg <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
---
 net/mac80211/ieee80211.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index e0ee65a..8f11c97 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -334,6 +334,11 @@ static int ieee80211_stop(struct net_device *dev)
                        cancel_delayed_work(&local->scan_work);
                }
                flush_workqueue(local->hw.workqueue);
+
+               sdata->u.sta.flags &= ~IEEE80211_STA_PRIVACY_INVOKED;
+               kfree(sdata->u.sta.extra_ie);
+               sdata->u.sta.extra_ie = NULL;
+               sdata->u.sta.extra_ie_len = 0;
                /* fall through */
        default:
                conf.if_id = dev->ifindex;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to