mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
mac80211: support fast-rx with incompatible PS capabilities when PS is disabled
When powersave is disabled for the interface, we can do fast-rx anyway. Signed-off-by: Felix Fietkau <nbd@nbd.name> [fixed indentation on one line] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
59cae5b9d6
commit
1d87016241
@ -2685,6 +2685,7 @@ static int ieee80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *dev,
|
||||
|
||||
ieee80211_recalc_ps(local);
|
||||
ieee80211_recalc_ps_vif(sdata);
|
||||
ieee80211_check_fast_rx_iface(sdata);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -3750,12 +3750,7 @@ void ieee80211_check_fast_rx(struct sta_info *sta)
|
||||
/* 4-addr is harder to deal with, later maybe */
|
||||
if (sdata->u.mgd.use_4addr)
|
||||
goto clear;
|
||||
/* software powersave is a huge mess, avoid all of it */
|
||||
if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK))
|
||||
goto clear;
|
||||
if (ieee80211_hw_check(&local->hw, SUPPORTS_PS) &&
|
||||
!ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS))
|
||||
goto clear;
|
||||
|
||||
if (sta->sta.tdls) {
|
||||
fastrx.da_offs = offsetof(struct ieee80211_hdr, addr1);
|
||||
fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr2);
|
||||
@ -3767,6 +3762,16 @@ void ieee80211_check_fast_rx(struct sta_info *sta)
|
||||
fastrx.expected_ds_bits =
|
||||
cpu_to_le16(IEEE80211_FCTL_FROMDS);
|
||||
}
|
||||
|
||||
if (!sdata->u.mgd.powersave)
|
||||
break;
|
||||
|
||||
/* software powersave is a huge mess, avoid all of it */
|
||||
if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK))
|
||||
goto clear;
|
||||
if (ieee80211_hw_check(&local->hw, SUPPORTS_PS) &&
|
||||
!ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS))
|
||||
goto clear;
|
||||
break;
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
case NL80211_IFTYPE_AP:
|
||||
|
Loading…
Reference in New Issue
Block a user