mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-24 11:34:50 +08:00
wifi: mac80211: validate some driver features for MLO
If MLO is enabled by the driver then validate a set of capabilities that mac80211 will initially not support in MLO. This might change if features are implemented. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
ec7a04073d
commit
762623a6a4
@ -955,6 +955,48 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
|
||||
(!local->ops->start_nan || !local->ops->stop_nan)))
|
||||
return -EINVAL;
|
||||
|
||||
if (hw->wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO) {
|
||||
/*
|
||||
* For drivers capable of doing MLO, assume modern driver
|
||||
* or firmware facilities, so software doesn't have to do
|
||||
* as much, e.g. monitoring beacons would be hard if we
|
||||
* might not even know which link is active at which time.
|
||||
*/
|
||||
if (WARN_ON(!local->use_chanctx))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(!local->ops->link_info_changed))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(!ieee80211_hw_check(hw, HAS_RATE_CONTROL)))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(!ieee80211_hw_check(hw, AMPDU_AGGREGATION)))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(ieee80211_hw_check(hw, HOST_BROADCAST_PS_BUFFERING)))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(ieee80211_hw_check(hw, SUPPORTS_PS) &&
|
||||
!ieee80211_hw_check(hw, SUPPORTS_DYNAMIC_PS)))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(!ieee80211_hw_check(hw, MFP_CAPABLE)))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(!ieee80211_hw_check(hw, CONNECTION_MONITOR)))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(ieee80211_hw_check(hw, NEED_DTIM_BEFORE_ASSOC)))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(ieee80211_hw_check(hw, TIMING_BEACON_ONLY)))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(!ieee80211_hw_check(hw, AP_LINK_PS)))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
if (hw->wiphy->wowlan && (!local->ops->suspend || !local->ops->resume))
|
||||
return -EINVAL;
|
||||
|
Loading…
Reference in New Issue
Block a user