mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
wifi: cfg80211: call reg_notifier for self managed wiphy from driver hint
Currently the regulatory driver does not call the regulatory callback reg_notifier for self managed wiphys. Sometimes driver needs cfg80211 to calculate the info of ieee80211_channel such as flags and power, and driver needs to get the info of ieee80211_channel after hint of driver, but driver does not know when calculation of the info of ieee80211_channel become finished, so add notify to driver in reg_process_self_managed_hint() from cfg80211 is a good way, then driver could get the correct info in callback of reg_notifier. Signed-off-by: Wen Gong <quic_wgong@quicinc.com> Link: https://lore.kernel.org/r/20230201065313.27203-1-quic_wgong@quicinc.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -4737,6 +4737,8 @@ struct cfg80211_ops {
|
|||||||
* complete feature/interface combinations/etc. advertisement. No driver
|
* complete feature/interface combinations/etc. advertisement. No driver
|
||||||
* should set this flag for now.
|
* should set this flag for now.
|
||||||
* @WIPHY_FLAG_SUPPORTS_EXT_KCK_32: The device supports 32-byte KCK keys.
|
* @WIPHY_FLAG_SUPPORTS_EXT_KCK_32: The device supports 32-byte KCK keys.
|
||||||
|
* @WIPHY_FLAG_NOTIFY_REGDOM_BY_DRIVER: The device could handle reg notify for
|
||||||
|
* NL80211_REGDOM_SET_BY_DRIVER.
|
||||||
*/
|
*/
|
||||||
enum wiphy_flags {
|
enum wiphy_flags {
|
||||||
WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK = BIT(0),
|
WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK = BIT(0),
|
||||||
@@ -4762,6 +4764,7 @@ enum wiphy_flags {
|
|||||||
WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL = BIT(21),
|
WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL = BIT(21),
|
||||||
WIPHY_FLAG_SUPPORTS_5_10_MHZ = BIT(22),
|
WIPHY_FLAG_SUPPORTS_5_10_MHZ = BIT(22),
|
||||||
WIPHY_FLAG_HAS_CHANNEL_SWITCH = BIT(23),
|
WIPHY_FLAG_HAS_CHANNEL_SWITCH = BIT(23),
|
||||||
|
WIPHY_FLAG_NOTIFY_REGDOM_BY_DRIVER = BIT(24),
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -3160,6 +3160,9 @@ static void reg_process_self_managed_hint(struct wiphy *wiphy)
|
|||||||
request.alpha2[1] = regd->alpha2[1];
|
request.alpha2[1] = regd->alpha2[1];
|
||||||
request.initiator = NL80211_REGDOM_SET_BY_DRIVER;
|
request.initiator = NL80211_REGDOM_SET_BY_DRIVER;
|
||||||
|
|
||||||
|
if (wiphy->flags & WIPHY_FLAG_NOTIFY_REGDOM_BY_DRIVER)
|
||||||
|
reg_call_notifier(wiphy, &request);
|
||||||
|
|
||||||
nl80211_send_wiphy_reg_change_event(&request);
|
nl80211_send_wiphy_reg_change_event(&request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user