Skip to content

Commit b5a33d5

Browse files
sara-sjmberg-intel
authored andcommitted
mac80211: move MU_MIMO_OWNER flag to ieee80211_vif
Drivers may need to track which vif is using VHT MU-MIMO. Move the flag indicationg the ownership of MU_MIMO to ieee80211_vif. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
1 parent 65554d0 commit b5a33d5

File tree

5 files changed

+12
-12
lines changed

5 files changed

+12
-12
lines changed

include/net/mac80211.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,6 +1382,7 @@ enum ieee80211_vif_flags {
13821382
* @csa_active: marks whether a channel switch is going on. Internally it is
13831383
* write-protected by sdata_lock and local->mtx so holding either is fine
13841384
* for read access.
1385+
* @mu_mimo_owner: indicates interface owns MU-MIMO capability
13851386
* @driver_flags: flags/capabilities the driver has for this interface,
13861387
* these need to be set (or cleared) when the interface is added
13871388
* or, if supported by the driver, the interface type is changed
@@ -1408,6 +1409,7 @@ struct ieee80211_vif {
14081409
u8 addr[ETH_ALEN];
14091410
bool p2p;
14101411
bool csa_active;
1412+
bool mu_mimo_owner;
14111413

14121414
u8 cab_queue;
14131415
u8 hw_queue[IEEE80211_NUM_ACS];

net/mac80211/ieee80211_i.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,15 +716,13 @@ struct ieee80211_if_mesh {
716716
* back to wireless media and to the local net stack.
717717
* @IEEE80211_SDATA_DISCONNECT_RESUME: Disconnect after resume.
718718
* @IEEE80211_SDATA_IN_DRIVER: indicates interface was added to driver
719-
* @IEEE80211_SDATA_MU_MIMO_OWNER: indicates interface owns MU-MIMO capability
720719
*/
721720
enum ieee80211_sub_if_data_flags {
722721
IEEE80211_SDATA_ALLMULTI = BIT(0),
723722
IEEE80211_SDATA_OPERATING_GMODE = BIT(2),
724723
IEEE80211_SDATA_DONT_BRIDGE_PACKETS = BIT(3),
725724
IEEE80211_SDATA_DISCONNECT_RESUME = BIT(4),
726725
IEEE80211_SDATA_IN_DRIVER = BIT(5),
727-
IEEE80211_SDATA_MU_MIMO_OWNER = BIT(6),
728726
};
729727

730728
/**

net/mac80211/mlme.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Copyright 2006-2007 Jiri Benc <[email protected]>
77
* Copyright 2007, Michael Wu <[email protected]>
88
* Copyright 2013-2014 Intel Mobile Communications GmbH
9-
* Copyright (C) 2015 Intel Deutschland GmbH
9+
* Copyright (C) 2015 - 2016 Intel Deutschland GmbH
1010
*
1111
* This program is free software; you can redistribute it and/or modify
1212
* it under the terms of the GNU General Public License version 2 as
@@ -559,15 +559,15 @@ static void ieee80211_add_vht_ie(struct ieee80211_sub_if_data *sdata,
559559
struct ieee80211_sub_if_data *other;
560560

561561
list_for_each_entry_rcu(other, &local->interfaces, list) {
562-
if (other->flags & IEEE80211_SDATA_MU_MIMO_OWNER) {
562+
if (other->vif.mu_mimo_owner) {
563563
disable_mu_mimo = true;
564564
break;
565565
}
566566
}
567567
if (disable_mu_mimo)
568568
cap &= ~IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE;
569569
else
570-
sdata->flags |= IEEE80211_SDATA_MU_MIMO_OWNER;
570+
sdata->vif.mu_mimo_owner = true;
571571
}
572572

573573
mask = IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
@@ -2052,7 +2052,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
20522052
memset(sdata->vif.bss_conf.mu_group.position, 0,
20532053
sizeof(sdata->vif.bss_conf.mu_group.position));
20542054
changed |= BSS_CHANGED_MU_GROUPS;
2055-
sdata->flags &= ~IEEE80211_SDATA_MU_MIMO_OWNER;
2055+
sdata->vif.mu_mimo_owner = false;
20562056

20572057
sdata->ap_power_level = IEEE80211_UNSET_POWER_LEVEL;
20582058

@@ -2509,7 +2509,8 @@ static void ieee80211_destroy_assoc_data(struct ieee80211_sub_if_data *sdata,
25092509
eth_zero_addr(sdata->u.mgd.bssid);
25102510
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
25112511
sdata->u.mgd.flags = 0;
2512-
sdata->flags &= ~IEEE80211_SDATA_MU_MIMO_OWNER;
2512+
sdata->vif.mu_mimo_owner = false;
2513+
25132514
mutex_lock(&sdata->local->mtx);
25142515
ieee80211_vif_release_channel(sdata);
25152516
mutex_unlock(&sdata->local->mtx);

net/mac80211/util.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1928,7 +1928,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
19281928
BSS_CHANGED_IDLE |
19291929
BSS_CHANGED_TXPOWER;
19301930

1931-
if (sdata->flags & IEEE80211_SDATA_MU_MIMO_OWNER)
1931+
if (sdata->vif.mu_mimo_owner)
19321932
changed |= BSS_CHANGED_MU_GROUPS;
19331933

19341934
switch (sdata->vif.type) {

net/mac80211/vht.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ void ieee80211_process_mu_groups(struct ieee80211_sub_if_data *sdata,
450450
{
451451
struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf;
452452

453-
if (!(sdata->flags & IEEE80211_SDATA_MU_MIMO_OWNER))
453+
if (!sdata->vif.mu_mimo_owner)
454454
return;
455455

456456
if (!memcmp(mgmt->u.action.u.vht_group_notif.position,
@@ -472,10 +472,9 @@ void ieee80211_process_mu_groups(struct ieee80211_sub_if_data *sdata,
472472
void ieee80211_update_mu_groups(struct ieee80211_vif *vif,
473473
const u8 *membership, const u8 *position)
474474
{
475-
struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
476-
struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf;
475+
struct ieee80211_bss_conf *bss_conf = &vif->bss_conf;
477476

478-
if (WARN_ON_ONCE(!(sdata->flags & IEEE80211_SDATA_MU_MIMO_OWNER)))
477+
if (WARN_ON_ONCE(!vif->mu_mimo_owner))
479478
return;
480479

481480
memcpy(bss_conf->mu_group.membership, membership, WLAN_MEMBERSHIP_LEN);

0 commit comments

Comments
 (0)