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? > Signed-off-by: Tomas Winkler <tomas.winkler@xxxxxxxxx> Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> > --- > 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. > >
Attachment:
signature.asc
Description: This is a digitally signed message part