Commit f679f65d authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville

mac80211: generalise management work a bit

As a first step of generalising management work,
this renames a few things and puts more information
directly into the struct so that auth/assoc need
not access the BSS pointer as often -- in fact it
can be removed from auth completely. Also since the
previous patch made sure a new work item is used
for association, we can make the different data a
union.
Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 63f170e0
...@@ -227,31 +227,48 @@ struct mesh_preq_queue { ...@@ -227,31 +227,48 @@ struct mesh_preq_queue {
u8 flags; u8 flags;
}; };
enum ieee80211_mgd_state { enum ieee80211_work_type {
IEEE80211_MGD_STATE_INVALID, IEEE80211_WORK_AUTH_PROBE,
IEEE80211_MGD_STATE_PROBE, IEEE80211_WORK_AUTH,
IEEE80211_MGD_STATE_AUTH, IEEE80211_WORK_ASSOC,
IEEE80211_MGD_STATE_ASSOC,
}; };
struct ieee80211_mgd_work { struct ieee80211_work {
struct list_head list; struct list_head list;
struct ieee80211_bss *bss;
int ie_len; struct ieee80211_channel *chan;
u8 prev_bssid[ETH_ALEN]; /* XXX: chan type? -- right now not really needed */
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 ssid_len;
unsigned long timeout; unsigned long timeout;
enum ieee80211_mgd_state state; enum ieee80211_work_type type;
u16 auth_alg, auth_transaction;
union {
struct {
int tries; int tries;
u16 algorithm, transaction;
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 ssid_len;
u8 bssid[ETH_ALEN];
u8 key[WLAN_KEY_LEN_WEP104]; u8 key[WLAN_KEY_LEN_WEP104];
u8 key_len, key_idx; u8 key_len, key_idx;
bool privacy;
} auth;
struct {
struct ieee80211_bss *bss;
const u8 *supp_rates;
const u8 *ht_information_ie;
int tries;
u16 capability;
u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN];
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 ssid_len;
u8 supp_rates_len;
bool wmm_used;
} assoc;
};
int ie_len;
/* must be last */ /* must be last */
u8 ie[0]; /* for auth or assoc frame, not probe */ u8 ie[0];
}; };
/* flags used in struct ieee80211_if_managed.flags */ /* flags used in struct ieee80211_if_managed.flags */
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment