Skip to content

Commit

Permalink
wifi: mac80211: support MLO authentication/association with one link
Browse files Browse the repository at this point in the history
It might seem a bit pointless to do a multi-link operation
connection with just a single link, but this is already a
big change, so for now, limit MLO connections to a single
link.

Extending that to multiple links will require
 * work on parsing the multi-link element with STA profile
   properly, including element fragmentation;
 * checking the per-link status in the multi-link element
 * implementing logic to have active/inactive links to let
   drivers decide which links should be active;
 * implementing multicast RX deduplication;
 * and likely more.

For now this is still useful since it lets us do multi-link
connections for the purposes of testing APIs and the higher
layers such as wpa_supplicant.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Johannes Berg committed Jul 15, 2022
1 parent 425f4b5 commit 81151ce
Show file tree
Hide file tree
Showing 4 changed files with 869 additions and 240 deletions.
32 changes: 25 additions & 7 deletions net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -389,37 +389,55 @@ struct ieee80211_mgd_auth_data {
bool peer_confirmed;
bool timeout_started;

u8 ap_addr[ETH_ALEN] __aligned(2);

u16 sae_trans, sae_status;
size_t data_len;
u8 data[];
};

struct ieee80211_mgd_assoc_data {
struct cfg80211_bss *bss;
struct {
struct cfg80211_bss *bss;

u8 addr[ETH_ALEN] __aligned(2);

u8 ap_ht_param;

struct ieee80211_vht_cap ap_vht_cap;

size_t elems_len;
u8 *elems; /* pointing to inside ie[] below */

ieee80211_conn_flags_t conn_flags;
} link[IEEE80211_MLD_MAX_NUM_LINKS];

u8 ap_addr[ETH_ALEN] __aligned(2);

/* this is for a workaround, so we use it only for non-MLO */
const u8 *supp_rates;
u8 supp_rates_len;

unsigned long timeout;
int tries;

u16 capability;
u8 prev_bssid[ETH_ALEN];
u8 prev_ap_addr[ETH_ALEN];
u8 ssid[IEEE80211_MAX_SSID_LEN];
u8 ssid_len;
u8 supp_rates_len;
bool wmm, uapsd;
bool need_beacon;
bool synced;
bool timeout_started;
bool s1g;

u8 ap_ht_param;

struct ieee80211_vht_cap ap_vht_cap;
unsigned int assoc_link_id;

u8 fils_nonces[2 * FILS_NONCE_LEN];
u8 fils_kek[FILS_MAX_KEK_LEN];
size_t fils_kek_len;

size_t ie_len;
u8 *ie_pos; /* used to fill ie[] with link[].elems */
u8 ie[];
};

Expand Down
Loading

0 comments on commit 81151ce

Please sign in to comment.