| From 30ca8b0c4d6c9fb1d76e5894b1e8bf7c6a12224d Mon Sep 17 00:00:00 2001 |
| From: Aditya Kumar Singh <quic_adisi@quicinc.com> |
| Date: Tue, 12 Sep 2023 10:48:55 +0530 |
| Subject: [PATCH] wifi: cfg80211: export DFS CAC time and usable state helper |
| functions |
| |
| cfg80211 has cfg80211_chandef_dfs_usable() function to know whether |
| at least one channel in the chandef is in usable state or not. Also, |
| cfg80211_chandef_dfs_cac_time() function is there which tells the CAC |
| time required for the given chandef. |
| |
| Make these two functions visible to drivers by exporting their symbol |
| to global list of kernel symbols. |
| |
| Lower level drivers can make use of these two functions to be aware |
| if CAC is required on the given chandef and for how long. For example |
| drivers which maintains the CAC state internally can make use of these. |
| |
| Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com> |
| Reviewed-by: Jeff Johnson <quic_jjohnson@quicinc.com> |
| Link: https://lore.kernel.org/r/20230912051857.2284-2-quic_adisi@quicinc.com |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| --- |
| include/net/cfg80211.h | 24 ++++++++++++++++++++++++ |
| net/wireless/chan.c | 2 ++ |
| net/wireless/core.h | 17 ----------------- |
| 3 files changed, 26 insertions(+), 17 deletions(-) |
| |
| --- a/include/net/cfg80211.h |
| +++ b/include/net/cfg80211.h |
| @@ -1008,6 +1008,30 @@ int cfg80211_chandef_dfs_required(struct |
| enum nl80211_iftype iftype); |
| |
| /** |
| + * cfg80211_chandef_dfs_usable - checks if chandef is DFS usable and we |
| + * can/need start CAC on such channel |
| + * @wiphy: the wiphy to validate against |
| + * @chandef: the channel definition to check |
| + * |
| + * Return: true if all channels available and at least |
| + * one channel requires CAC (NL80211_DFS_USABLE) |
| + */ |
| +bool cfg80211_chandef_dfs_usable(struct wiphy *wiphy, |
| + const struct cfg80211_chan_def *chandef); |
| + |
| +/** |
| + * cfg80211_chandef_dfs_cac_time - get the DFS CAC time (in ms) for given |
| + * channel definition |
| + * @wiphy: the wiphy to validate against |
| + * @chandef: the channel definition to check |
| + * |
| + * Returns: DFS CAC time (in ms) which applies for this channel definition |
| + */ |
| +unsigned int |
| +cfg80211_chandef_dfs_cac_time(struct wiphy *wiphy, |
| + const struct cfg80211_chan_def *chandef); |
| + |
| +/** |
| * nl80211_send_chandef - sends the channel definition. |
| * @msg: the msg to send channel definition |
| * @chandef: the channel definition to check |
| --- a/net/wireless/chan.c |
| +++ b/net/wireless/chan.c |
| @@ -666,6 +666,7 @@ bool cfg80211_chandef_dfs_usable(struct |
| |
| return (r1 + r2 > 0); |
| } |
| +EXPORT_SYMBOL(cfg80211_chandef_dfs_usable); |
| |
| /* |
| * Checks if center frequency of chan falls with in the bandwidth |
| @@ -965,6 +966,7 @@ cfg80211_chandef_dfs_cac_time(struct wip |
| |
| return max(t1, t2); |
| } |
| +EXPORT_SYMBOL(cfg80211_chandef_dfs_cac_time); |
| |
| static bool cfg80211_secondary_chans_ok(struct wiphy *wiphy, |
| u32 center_freq, u32 bandwidth, |
| --- a/net/wireless/core.h |
| +++ b/net/wireless/core.h |
| @@ -476,29 +476,12 @@ int cfg80211_scan(struct cfg80211_regist |
| |
| extern struct work_struct cfg80211_disconnect_work; |
| |
| -/** |
| - * cfg80211_chandef_dfs_usable - checks if chandef is DFS usable |
| - * @wiphy: the wiphy to validate against |
| - * @chandef: the channel definition to check |
| - * |
| - * Checks if chandef is usable and we can/need start CAC on such channel. |
| - * |
| - * Return: true if all channels available and at least |
| - * one channel requires CAC (NL80211_DFS_USABLE) |
| - */ |
| -bool cfg80211_chandef_dfs_usable(struct wiphy *wiphy, |
| - const struct cfg80211_chan_def *chandef); |
| - |
| void cfg80211_set_dfs_state(struct wiphy *wiphy, |
| const struct cfg80211_chan_def *chandef, |
| enum nl80211_dfs_state dfs_state); |
| |
| void cfg80211_dfs_channels_update_work(struct work_struct *work); |
| |
| -unsigned int |
| -cfg80211_chandef_dfs_cac_time(struct wiphy *wiphy, |
| - const struct cfg80211_chan_def *chandef); |
| - |
| void cfg80211_sched_dfs_chan_update(struct cfg80211_registered_device *rdev); |
| |
| int |