nl80211: include frequency offset in survey info
authorThomas Pedersen <thomas@adapt-ip.com>
Tue, 22 Sep 2020 02:28:16 +0000 (19:28 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 28 Sep 2020 12:09:52 +0000 (14:09 +0200)
Recently channels gained a potential frequency offset, so
include this in the per-channel survey info.

Signed-off-by: Thomas Pedersen <thomas@adapt-ip.com>
Link: https://lore.kernel.org/r/20200922022818.15855-16-thomas@adapt-ip.com
[add the offset only if non-zero]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/uapi/linux/nl80211.h
net/wireless/nl80211.c

index 05db40b..1e51445 100644 (file)
@@ -4097,6 +4097,7 @@ enum nl80211_user_reg_hint_type {
  *     receiving frames destined to the local BSS
  * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number
  *     currently defined
+ * @NL80211_SURVEY_INFO_FREQUENCY_OFFSET: center frequency offset in KHz
  * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use
  */
 enum nl80211_survey_info {
@@ -4112,6 +4113,7 @@ enum nl80211_survey_info {
        NL80211_SURVEY_INFO_TIME_SCAN,
        NL80211_SURVEY_INFO_PAD,
        NL80211_SURVEY_INFO_TIME_BSS_RX,
+       NL80211_SURVEY_INFO_FREQUENCY_OFFSET,
 
        /* keep last */
        __NL80211_SURVEY_INFO_AFTER_LAST,
index d31451d..aece235 100644 (file)
@@ -9319,6 +9319,11 @@ static int nl80211_send_survey(struct sk_buff *msg, u32 portid, u32 seq,
                        survey->channel->center_freq))
                goto nla_put_failure;
 
+       if (survey->channel && survey->channel->freq_offset &&
+           nla_put_u32(msg, NL80211_SURVEY_INFO_FREQUENCY_OFFSET,
+                       survey->channel->freq_offset))
+               goto nla_put_failure;
+
        if ((survey->filled & SURVEY_INFO_NOISE_DBM) &&
            nla_put_u8(msg, NL80211_SURVEY_INFO_NOISE, survey->noise))
                goto nla_put_failure;