[PATCH v2 1/3] wifi: cfg80211: export DFS CAC time and usable state helper functions
Jeff Johnson
quic_jjohnson at quicinc.com
Tue Sep 12 10:50:46 PDT 2023
On 9/11/2023 10:18 PM, Aditya Kumar Singh wrote:
> 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 at quicinc.com>
Reviewed-by: Jeff Johnson <quic_jjohnson at quicinc.com>
> ---
> include/net/cfg80211.h | 24 ++++++++++++++++++++++++
> net/wireless/chan.c | 2 ++
> net/wireless/core.h | 17 -----------------
> 3 files changed, 26 insertions(+), 17 deletions(-)
>
> diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
> index 3a4b684f89bf..92072a0f0ea6 100644
> --- a/include/net/cfg80211.h
> +++ b/include/net/cfg80211.h
> @@ -953,6 +953,30 @@ int cfg80211_chandef_dfs_required(struct wiphy *wiphy,
> const struct cfg80211_chan_def *chandef,
> 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
> diff --git a/net/wireless/chan.c b/net/wireless/chan.c
> index 0b7e81db383d..a78a6183d11e 100644
> --- a/net/wireless/chan.c
> +++ b/net/wireless/chan.c
> @@ -666,6 +666,7 @@ bool cfg80211_chandef_dfs_usable(struct wiphy *wiphy,
>
> 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 wiphy *wiphy,
>
> 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,
> diff --git a/net/wireless/core.h b/net/wireless/core.h
> index 507d184b8b40..cc4eb3906c0c 100644
> --- a/net/wireless/core.h
> +++ b/net/wireless/core.h
> @@ -469,29 +469,12 @@ int cfg80211_scan(struct cfg80211_registered_device *rdev);
>
> 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
More information about the ath11k
mailing list