Return-path: Received: from wf-out-1314.google.com ([209.85.200.174]:4221 "EHLO wf-out-1314.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756702AbYHFL0U (ORCPT ); Wed, 6 Aug 2008 07:26:20 -0400 Received: by wf-out-1314.google.com with SMTP id 27so4850861wfd.4 for ; Wed, 06 Aug 2008 04:26:19 -0700 (PDT) Message-ID: <1ba2fa240808060426i5c777b3du1188a969b9742652@mail.gmail.com> (sfid-20080806_132625_051749_E0B19695) Date: Wed, 6 Aug 2008 14:26:19 +0300 From: "Tomas Winkler" To: "Johannes Berg" Subject: Re: [PATCH 1/1] mac80211: cleanup mlme state namespace Cc: linville@tuxdriver.com, yi.zhu@intel.com, linux-wireless@vger.kernel.org In-Reply-To: <1218007564.3603.66.camel@johannes.berg> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 References: <1217982924-17398-1-git-send-email-tomas.winkler@intel.com> <1218007564.3603.66.camel@johannes.berg> Sender: linux-wireless-owner@vger.kernel.org List-ID: On Wed, Aug 6, 2008 at 10:26 AM, Johannes Berg wrote: > On Wed, 2008-08-06 at 03:35 +0300, Tomas Winkler wrote: >> This patch move add STA_MLME to station mlme state defines. > > Sounds good to me. But won't it break your own patches with the probe > response thing? No the probe patch was rebased over this one Anyhow I need to send another version of this unfortunately I forgot one rename under mesh enabled compilation I've sent it out under V2 Thanks Tomas > >> Signed-off-by: Tomas Winkler > > Acked-by: Johannes Berg > >> --- >> net/mac80211/ieee80211_i.h | 34 ++++++++++++++------- >> net/mac80211/main.c | 2 +- >> net/mac80211/mlme.c | 70 ++++++++++++++++++++++---------------------- >> net/mac80211/wext.c | 4 +- >> 4 files changed, 60 insertions(+), 50 deletions(-) >> >> diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h >> index ec59345..d19f67e 100644 >> --- a/net/mac80211/ieee80211_i.h >> +++ b/net/mac80211/ieee80211_i.h >> @@ -300,17 +300,33 @@ struct mesh_config { >> #define IEEE80211_STA_AUTO_BSSID_SEL BIT(11) >> #define IEEE80211_STA_AUTO_CHANNEL_SEL BIT(12) >> #define IEEE80211_STA_PRIVACY_INVOKED BIT(13) >> +/* flags for MLME request*/ >> +#define IEEE80211_STA_REQ_SCAN 0 >> +#define IEEE80211_STA_REQ_AUTH 1 >> +#define IEEE80211_STA_REQ_RUN 2 >> + >> +/* flags used for setting mlme state */ >> +enum ieee80211_sta_mlme_state { >> + IEEE80211_STA_MLME_DISABLED, >> + IEEE80211_STA_MLME_AUTHENTICATE, >> + IEEE80211_STA_MLME_ASSOCIATE, >> + IEEE80211_STA_MLME_ASSOCIATED, >> + IEEE80211_STA_MLME_IBSS_SEARCH, >> + IEEE80211_STA_MLME_IBSS_JOINED, >> + IEEE80211_STA_MLME_MESH_UP >> +}; >> + >> +/* bitfield of allowed auth algs */ >> +#define IEEE80211_AUTH_ALG_OPEN BIT(0) >> +#define IEEE80211_AUTH_ALG_SHARED_KEY BIT(1) >> +#define IEEE80211_AUTH_ALG_LEAP BIT(2) >> + >> struct ieee80211_if_sta { >> struct timer_list timer; >> struct work_struct work; >> u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN]; >> u8 ssid[IEEE80211_MAX_SSID_LEN]; >> - enum { >> - IEEE80211_DISABLED, IEEE80211_AUTHENTICATE, >> - IEEE80211_ASSOCIATE, IEEE80211_ASSOCIATED, >> - IEEE80211_IBSS_SEARCH, IEEE80211_IBSS_JOINED, >> - IEEE80211_MESH_UP >> - } state; >> + enum ieee80211_sta_mlme_state state; >> size_t ssid_len; >> u8 scan_ssid[IEEE80211_MAX_SSID_LEN]; >> size_t scan_ssid_len; >> @@ -360,13 +376,7 @@ struct ieee80211_if_sta { >> unsigned long last_probe; >> >> unsigned int flags; >> -#define IEEE80211_STA_REQ_SCAN 0 >> -#define IEEE80211_STA_REQ_AUTH 1 >> -#define IEEE80211_STA_REQ_RUN 2 >> >> -#define IEEE80211_AUTH_ALG_OPEN BIT(0) >> -#define IEEE80211_AUTH_ALG_SHARED_KEY BIT(1) >> -#define IEEE80211_AUTH_ALG_LEAP BIT(2) >> unsigned int auth_algs; /* bitfield of allowed auth algs */ >> int auth_alg; /* currently used IEEE 802.11 authentication algorithm */ >> int auth_transaction; >> diff --git a/net/mac80211/main.c b/net/mac80211/main.c >> index 0c02c47..372fcd4 100644 >> --- a/net/mac80211/main.c >> +++ b/net/mac80211/main.c >> @@ -497,7 +497,7 @@ static int ieee80211_stop(struct net_device *dev) >> case IEEE80211_IF_TYPE_MESH_POINT: >> case IEEE80211_IF_TYPE_STA: >> case IEEE80211_IF_TYPE_IBSS: >> - sdata->u.sta.state = IEEE80211_DISABLED; >> + sdata->u.sta.state = IEEE80211_STA_MLME_DISABLED; >> memset(sdata->u.sta.bssid, 0, ETH_ALEN); >> del_timer_sync(&sdata->u.sta.timer); >> /* >> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c >> index e1d11c9..8ac1992 100644 >> --- a/net/mac80211/mlme.c >> +++ b/net/mac80211/mlme.c >> @@ -669,11 +669,11 @@ static void ieee80211_authenticate(struct net_device *dev, >> printk(KERN_DEBUG "%s: authentication with AP %s" >> " timed out\n", >> dev->name, print_mac(mac, ifsta->bssid)); >> - ifsta->state = IEEE80211_DISABLED; >> + ifsta->state = IEEE80211_STA_MLME_DISABLED; >> return; >> } >> >> - ifsta->state = IEEE80211_AUTHENTICATE; >> + ifsta->state = IEEE80211_STA_MLME_AUTHENTICATE; >> printk(KERN_DEBUG "%s: authenticate with AP %s\n", >> dev->name, print_mac(mac, ifsta->bssid)); >> >> @@ -1010,17 +1010,17 @@ static void ieee80211_associate(struct net_device *dev, >> printk(KERN_DEBUG "%s: association with AP %s" >> " timed out\n", >> dev->name, print_mac(mac, ifsta->bssid)); >> - ifsta->state = IEEE80211_DISABLED; >> + ifsta->state = IEEE80211_STA_MLME_DISABLED; >> return; >> } >> >> - ifsta->state = IEEE80211_ASSOCIATE; >> + ifsta->state = IEEE80211_STA_MLME_ASSOCIATE; >> printk(KERN_DEBUG "%s: associate with AP %s\n", >> dev->name, print_mac(mac, ifsta->bssid)); >> if (ieee80211_privacy_mismatch(dev, ifsta)) { >> printk(KERN_DEBUG "%s: mismatch in privacy configuration and " >> "mixed-cell disabled - abort association\n", dev->name); >> - ifsta->state = IEEE80211_DISABLED; >> + ifsta->state = IEEE80211_STA_MLME_DISABLED; >> return; >> } >> >> @@ -1043,7 +1043,7 @@ static void ieee80211_associated(struct net_device *dev, >> * for better APs. */ >> /* TODO: remove expired BSSes */ >> >> - ifsta->state = IEEE80211_ASSOCIATED; >> + ifsta->state = IEEE80211_STA_MLME_ASSOCIATED; >> >> rcu_read_lock(); >> >> @@ -1086,7 +1086,7 @@ static void ieee80211_associated(struct net_device *dev, >> sta_info_destroy(sta); >> >> if (disassoc) { >> - ifsta->state = IEEE80211_DISABLED; >> + ifsta->state = IEEE80211_STA_MLME_DISABLED; >> ieee80211_set_associated(dev, ifsta, 0); >> } else { >> mod_timer(&ifsta->timer, jiffies + >> @@ -1851,7 +1851,7 @@ static void ieee80211_rx_mgmt_auth(struct net_device *dev, >> u16 auth_alg, auth_transaction, status_code; >> DECLARE_MAC_BUF(mac); >> >> - if (ifsta->state != IEEE80211_AUTHENTICATE && >> + if (ifsta->state != IEEE80211_STA_MLME_AUTHENTICATE && >> sdata->vif.type != IEEE80211_IF_TYPE_IBSS) >> return; >> >> @@ -1955,10 +1955,10 @@ static void ieee80211_rx_mgmt_deauth(struct net_device *dev, >> if (ifsta->flags & IEEE80211_STA_AUTHENTICATED) >> printk(KERN_DEBUG "%s: deauthenticated\n", dev->name); >> >> - if (ifsta->state == IEEE80211_AUTHENTICATE || >> - ifsta->state == IEEE80211_ASSOCIATE || >> - ifsta->state == IEEE80211_ASSOCIATED) { >> - ifsta->state = IEEE80211_AUTHENTICATE; >> + if (ifsta->state == IEEE80211_STA_MLME_AUTHENTICATE || >> + ifsta->state == IEEE80211_STA_MLME_ASSOCIATE || >> + ifsta->state == IEEE80211_STA_MLME_ASSOCIATED) { >> + ifsta->state = IEEE80211_STA_MLME_AUTHENTICATE; >> mod_timer(&ifsta->timer, jiffies + >> IEEE80211_RETRY_AUTH_INTERVAL); >> } >> @@ -1987,8 +1987,8 @@ static void ieee80211_rx_mgmt_disassoc(struct net_device *dev, >> if (ifsta->flags & IEEE80211_STA_ASSOCIATED) >> printk(KERN_DEBUG "%s: disassociated\n", dev->name); >> >> - if (ifsta->state == IEEE80211_ASSOCIATED) { >> - ifsta->state = IEEE80211_ASSOCIATE; >> + if (ifsta->state == IEEE80211_STA_MLME_ASSOCIATED) { >> + ifsta->state = IEEE80211_STA_MLME_ASSOCIATE; >> mod_timer(&ifsta->timer, jiffies + >> IEEE80211_RETRY_AUTH_INTERVAL); >> } >> @@ -2019,7 +2019,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, >> /* AssocResp and ReassocResp have identical structure, so process both >> * of them in this function. */ >> >> - if (ifsta->state != IEEE80211_ASSOCIATE) >> + if (ifsta->state != IEEE80211_STA_MLME_ASSOCIATE) >> return; >> >> if (len < 24 + 6) >> @@ -2506,7 +2506,7 @@ static int ieee80211_sta_join_ibss(struct net_device *dev, >> >> ieee80211_sta_def_wmm_params(dev, bss, 1); >> >> - ifsta->state = IEEE80211_IBSS_JOINED; >> + ifsta->state = IEEE80211_STA_MLME_IBSS_JOINED; >> mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL); >> >> memset(&wrqu, 0, sizeof(wrqu)); >> @@ -2983,7 +2983,7 @@ static void ieee80211_rx_mgmt_probe_req(struct net_device *dev, >> #endif >> >> if (sdata->vif.type != IEEE80211_IF_TYPE_IBSS || >> - ifsta->state != IEEE80211_IBSS_JOINED || >> + ifsta->state != IEEE80211_STA_MLME_IBSS_JOINED || >> len < 24 + 2 || !ifsta->probe_resp) >> return; >> >> @@ -3359,8 +3359,8 @@ void ieee80211_sta_work(struct work_struct *work) >> mesh_path_start_discovery(dev); >> #endif >> >> - if (ifsta->state != IEEE80211_AUTHENTICATE && >> - ifsta->state != IEEE80211_ASSOCIATE && >> + if (ifsta->state != IEEE80211_STA_MLME_AUTHENTICATE && >> + ifsta->state != IEEE80211_STA_MLME_ASSOCIATE && >> test_and_clear_bit(IEEE80211_STA_REQ_SCAN, &ifsta->request)) { >> if (ifsta->scan_ssid_len) >> ieee80211_sta_start_scan(dev, ifsta->scan_ssid, ifsta->scan_ssid_len); >> @@ -3377,25 +3377,25 @@ void ieee80211_sta_work(struct work_struct *work) >> return; >> >> switch (ifsta->state) { >> - case IEEE80211_DISABLED: >> + case IEEE80211_STA_MLME_DISABLED: >> break; >> - case IEEE80211_AUTHENTICATE: >> + case IEEE80211_STA_MLME_AUTHENTICATE: >> ieee80211_authenticate(dev, ifsta); >> break; >> - case IEEE80211_ASSOCIATE: >> + case IEEE80211_STA_MLME_ASSOCIATE: >> ieee80211_associate(dev, ifsta); >> break; >> - case IEEE80211_ASSOCIATED: >> + case IEEE80211_STA_MLME_ASSOCIATED: >> ieee80211_associated(dev, ifsta); >> break; >> - case IEEE80211_IBSS_SEARCH: >> + case IEEE80211_STA_MLME_IBSS_SEARCH: >> ieee80211_sta_find_ibss(dev, ifsta); >> break; >> - case IEEE80211_IBSS_JOINED: >> + case IEEE80211_STA_MLME_IBSS_JOINED: >> ieee80211_sta_merge_ibss(dev, ifsta); >> break; >> #ifdef CONFIG_MAC80211_MESH >> - case IEEE80211_MESH_UP: >> + case IEEE80211_STA_MLME_MESH_UP: >> ieee80211_mesh_housekeeping(dev, ifsta); >> break; >> #endif >> @@ -3540,20 +3540,20 @@ static int ieee80211_sta_config_auth(struct net_device *dev, >> ieee80211_sta_set_bssid(dev, selected->bssid); >> ieee80211_sta_def_wmm_params(dev, selected, 0); >> ieee80211_rx_bss_put(local, selected); >> - ifsta->state = IEEE80211_AUTHENTICATE; >> + ifsta->state = IEEE80211_STA_MLME_AUTHENTICATE; >> ieee80211_sta_reset_auth(dev, ifsta); >> return 0; >> } else { >> - if (ifsta->state != IEEE80211_AUTHENTICATE) { >> + if (ifsta->state != IEEE80211_STA_MLME_AUTHENTICATE) { >> if (ifsta->flags & IEEE80211_STA_AUTO_SSID_SEL) >> ieee80211_sta_start_scan(dev, NULL, 0); >> else >> ieee80211_sta_start_scan(dev, ifsta->ssid, >> ifsta->ssid_len); >> - ifsta->state = IEEE80211_AUTHENTICATE; >> + ifsta->state = IEEE80211_STA_MLME_AUTHENTICATE; >> set_bit(IEEE80211_STA_REQ_AUTH, &ifsta->request); >> } else >> - ifsta->state = IEEE80211_DISABLED; >> + ifsta->state = IEEE80211_STA_MLME_DISABLED; >> } >> return -1; >> } >> @@ -3692,7 +3692,7 @@ dont_join: >> #endif /* CONFIG_MAC80211_IBSS_DEBUG */ >> >> /* Selected IBSS not found in current scan results - try to scan */ >> - if (ifsta->state == IEEE80211_IBSS_JOINED && >> + if (ifsta->state == IEEE80211_STA_MLME_IBSS_JOINED && >> !ieee80211_sta_active_ibss(dev)) { >> mod_timer(&ifsta->timer, jiffies + >> IEEE80211_IBSS_MERGE_INTERVAL); >> @@ -3702,7 +3702,7 @@ dont_join: >> "join\n", dev->name); >> return ieee80211_sta_req_scan(dev, ifsta->ssid, >> ifsta->ssid_len); >> - } else if (ifsta->state != IEEE80211_IBSS_JOINED) { >> + } else if (ifsta->state != IEEE80211_STA_MLME_IBSS_JOINED) { >> int interval = IEEE80211_SCAN_INTERVAL; >> >> if (time_after(jiffies, ifsta->ibss_join_req + >> @@ -3722,7 +3722,7 @@ dont_join: >> interval = IEEE80211_SCAN_INTERVAL_SLOW; >> } >> >> - ifsta->state = IEEE80211_IBSS_SEARCH; >> + ifsta->state = IEEE80211_STA_MLME_IBSS_SEARCH; >> mod_timer(&ifsta->timer, jiffies + interval); >> return 0; >> } >> @@ -3770,7 +3770,7 @@ int ieee80211_sta_set_ssid(struct net_device *dev, char *ssid, size_t len) >> if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS && >> !(ifsta->flags & IEEE80211_STA_BSSID_SET)) { >> ifsta->ibss_join_req = jiffies; >> - ifsta->state = IEEE80211_IBSS_SEARCH; >> + ifsta->state = IEEE80211_STA_MLME_IBSS_SEARCH; >> return ieee80211_sta_find_ibss(dev, ifsta); >> } >> >> @@ -3920,7 +3920,7 @@ done: >> if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS) { >> struct ieee80211_if_sta *ifsta = &sdata->u.sta; >> if (!(ifsta->flags & IEEE80211_STA_BSSID_SET) || >> - (!(ifsta->state == IEEE80211_IBSS_JOINED) && >> + (!(ifsta->state == IEEE80211_STA_MLME_IBSS_JOINED) && >> !ieee80211_sta_active_ibss(dev))) >> ieee80211_sta_find_ibss(dev, ifsta); >> } >> diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c >> index 34fa8ed..4de14a5 100644 >> --- a/net/mac80211/wext.c >> +++ b/net/mac80211/wext.c >> @@ -539,8 +539,8 @@ static int ieee80211_ioctl_giwap(struct net_device *dev, >> sdata = IEEE80211_DEV_TO_SUB_IF(dev); >> if (sdata->vif.type == IEEE80211_IF_TYPE_STA || >> sdata->vif.type == IEEE80211_IF_TYPE_IBSS) { >> - if (sdata->u.sta.state == IEEE80211_ASSOCIATED || >> - sdata->u.sta.state == IEEE80211_IBSS_JOINED) { >> + if (sdata->u.sta.state == IEEE80211_STA_MLME_ASSOCIATED || >> + sdata->u.sta.state == IEEE80211_STA_MLME_IBSS_JOINED) { >> ap_addr->sa_family = ARPHRD_ETHER; >> memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN); >> return 0; >> -- >> 1.5.4.1 >> >> --------------------------------------------------------------------- >> Intel Israel (74) Limited >> >> This e-mail and any attachments may contain confidential material for >> the sole use of the intended recipient(s). Any review or distribution >> by others is strictly prohibited. If you are not the intended >> recipient, please contact the sender and delete all copies. >> >> >