Skip to content

Commit

Permalink
mac80211: generalise management work a bit
Browse files Browse the repository at this point in the history
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: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Johannes Berg authored and John W. Linville committed Dec 28, 2009
1 parent 63f170e commit f679f65
Show file tree
Hide file tree
Showing 2 changed files with 172 additions and 107 deletions.
53 changes: 35 additions & 18 deletions net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -227,31 +227,48 @@ struct mesh_preq_queue {
u8 flags;
};

enum ieee80211_mgd_state {
IEEE80211_MGD_STATE_INVALID,
IEEE80211_MGD_STATE_PROBE,
IEEE80211_MGD_STATE_AUTH,
IEEE80211_MGD_STATE_ASSOC,
enum ieee80211_work_type {
IEEE80211_WORK_AUTH_PROBE,
IEEE80211_WORK_AUTH,
IEEE80211_WORK_ASSOC,
};

struct ieee80211_mgd_work {
struct ieee80211_work {
struct list_head list;
struct ieee80211_bss *bss;
int ie_len;
u8 prev_bssid[ETH_ALEN];
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 ssid_len;
unsigned long timeout;
enum ieee80211_mgd_state state;
u16 auth_alg, auth_transaction;

int tries;
struct ieee80211_channel *chan;
/* XXX: chan type? -- right now not really needed */
unsigned long timeout;
enum ieee80211_work_type type;

u8 key[WLAN_KEY_LEN_WEP104];
u8 key_len, key_idx;
union {
struct {
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_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 */
u8 ie[0]; /* for auth or assoc frame, not probe */
u8 ie[0];
};

/* flags used in struct ieee80211_if_managed.flags */
Expand Down
Loading

0 comments on commit f679f65

Please sign in to comment.