mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
mac80211: mlme: remove duplicate AID bookkeeping
Maintain the connection AID only in sdata->vif.bss_conf.aid, not also in sdata->u.mgd.aid. Keep setting that where we set ifmgd->aid before, which has the side effect of exposing the AID to the driver before the station entry (AP) is marked associated, in case it needs it then. Requested-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Tested-by: Lorenzo Bianconi <lorenzo@kernel.org> Link: https://lore.kernel.org/r/20200417123802.085d4a322b0c.I2e7a2ceceea8c6880219f9e9ee4d4ac985fd295a@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
5cc58a9ecf
commit
1db364c886
@ -236,7 +236,7 @@ IEEE80211_IF_FILE_R(hw_queues);
|
|||||||
|
|
||||||
/* STA attributes */
|
/* STA attributes */
|
||||||
IEEE80211_IF_FILE(bssid, u.mgd.bssid, MAC);
|
IEEE80211_IF_FILE(bssid, u.mgd.bssid, MAC);
|
||||||
IEEE80211_IF_FILE(aid, u.mgd.aid, DEC);
|
IEEE80211_IF_FILE(aid, vif.bss_conf.aid, DEC);
|
||||||
IEEE80211_IF_FILE(beacon_timeout, u.mgd.beacon_timeout, JIFFIES_TO_MS);
|
IEEE80211_IF_FILE(beacon_timeout, u.mgd.beacon_timeout, JIFFIES_TO_MS);
|
||||||
|
|
||||||
static int ieee80211_set_smps(struct ieee80211_sub_if_data *sdata,
|
static int ieee80211_set_smps(struct ieee80211_sub_if_data *sdata,
|
||||||
|
@ -450,8 +450,6 @@ struct ieee80211_if_managed {
|
|||||||
|
|
||||||
u8 bssid[ETH_ALEN] __aligned(2);
|
u8 bssid[ETH_ALEN] __aligned(2);
|
||||||
|
|
||||||
u16 aid;
|
|
||||||
|
|
||||||
bool powersave; /* powersave requested for this iface */
|
bool powersave; /* powersave requested for this iface */
|
||||||
bool broken_ap; /* AP is broken -- turn off powersave */
|
bool broken_ap; /* AP is broken -- turn off powersave */
|
||||||
bool have_beacon;
|
bool have_beacon;
|
||||||
|
@ -3249,7 +3249,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ifmgd->aid = aid;
|
sdata->vif.bss_conf.aid = aid;
|
||||||
ifmgd->tdls_chan_switch_prohibited =
|
ifmgd->tdls_chan_switch_prohibited =
|
||||||
elems->ext_capab && elems->ext_capab_len >= 5 &&
|
elems->ext_capab && elems->ext_capab_len >= 5 &&
|
||||||
(elems->ext_capab[4] & WLAN_EXT_CAPA5_TDLS_CH_SW_PROHIBITED);
|
(elems->ext_capab[4] & WLAN_EXT_CAPA5_TDLS_CH_SW_PROHIBITED);
|
||||||
@ -3521,9 +3521,8 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
|
|||||||
bss_conf->protected_keep_alive = false;
|
bss_conf->protected_keep_alive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set AID and assoc capability,
|
/* set assoc capability (AID was already set earlier),
|
||||||
* ieee80211_set_associated() will tell the driver */
|
* ieee80211_set_associated() will tell the driver */
|
||||||
bss_conf->aid = aid;
|
|
||||||
bss_conf->assoc_capability = capab_info;
|
bss_conf->assoc_capability = capab_info;
|
||||||
ieee80211_set_associated(sdata, cbss, changed);
|
ieee80211_set_associated(sdata, cbss, changed);
|
||||||
|
|
||||||
@ -3948,7 +3947,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
|
|||||||
mgmt->bssid, bssid);
|
mgmt->bssid, bssid);
|
||||||
|
|
||||||
if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK) &&
|
if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK) &&
|
||||||
ieee80211_check_tim(elems.tim, elems.tim_len, ifmgd->aid)) {
|
ieee80211_check_tim(elems.tim, elems.tim_len, bss_conf->aid)) {
|
||||||
if (local->hw.conf.dynamic_ps_timeout > 0) {
|
if (local->hw.conf.dynamic_ps_timeout > 0) {
|
||||||
if (local->hw.conf.flags & IEEE80211_CONF_PS) {
|
if (local->hw.conf.flags & IEEE80211_CONF_PS) {
|
||||||
local->hw.conf.flags &= ~IEEE80211_CONF_PS;
|
local->hw.conf.flags &= ~IEEE80211_CONF_PS;
|
||||||
|
@ -226,12 +226,11 @@ static void ieee80211_tdls_add_link_ie(struct ieee80211_sub_if_data *sdata,
|
|||||||
static void
|
static void
|
||||||
ieee80211_tdls_add_aid(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
|
ieee80211_tdls_add_aid(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
|
|
||||||
u8 *pos = skb_put(skb, 4);
|
u8 *pos = skb_put(skb, 4);
|
||||||
|
|
||||||
*pos++ = WLAN_EID_AID;
|
*pos++ = WLAN_EID_AID;
|
||||||
*pos++ = 2; /* len */
|
*pos++ = 2; /* len */
|
||||||
put_unaligned_le16(ifmgd->aid, pos);
|
put_unaligned_le16(sdata->vif.bss_conf.aid, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* translate numbering in the WMM parameter IE to the mac80211 notation */
|
/* translate numbering in the WMM parameter IE to the mac80211 notation */
|
||||||
|
@ -5006,7 +5006,7 @@ struct sk_buff *ieee80211_pspoll_get(struct ieee80211_hw *hw,
|
|||||||
pspoll = skb_put_zero(skb, sizeof(*pspoll));
|
pspoll = skb_put_zero(skb, sizeof(*pspoll));
|
||||||
pspoll->frame_control = cpu_to_le16(IEEE80211_FTYPE_CTL |
|
pspoll->frame_control = cpu_to_le16(IEEE80211_FTYPE_CTL |
|
||||||
IEEE80211_STYPE_PSPOLL);
|
IEEE80211_STYPE_PSPOLL);
|
||||||
pspoll->aid = cpu_to_le16(ifmgd->aid);
|
pspoll->aid = cpu_to_le16(sdata->vif.bss_conf.aid);
|
||||||
|
|
||||||
/* aid in PS-Poll has its two MSBs each set to 1 */
|
/* aid in PS-Poll has its two MSBs each set to 1 */
|
||||||
pspoll->aid |= cpu_to_le16(1 << 15 | 1 << 14);
|
pspoll->aid |= cpu_to_le16(1 << 15 | 1 << 14);
|
||||||
|
Loading…
Reference in New Issue
Block a user