OSDN Git Service

cfg80211/mac80211: add connected to auth server to station info
authorMarkus Theil <markus.theil@tu-ilmenau.de>
Thu, 11 Jun 2020 14:02:38 +0000 (16:02 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 31 Jul 2020 07:24:24 +0000 (09:24 +0200)
This patch adds the necessary bits to later query the auth server
flag for every peer from iw.

Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
Link: https://lore.kernel.org/r/20200611140238.427461-2-markus.theil@tu-ilmenau.de
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/cfg80211.h
include/uapi/linux/nl80211.h
net/mac80211/sta_info.c
net/mac80211/sta_info.h
net/wireless/nl80211.c

index 8d5071f..39fe21e 100644 (file)
@@ -1598,6 +1598,7 @@ struct cfg80211_tid_stats {
  *     an FCS error. This counter should be incremented only when TA of the
  *     received packet with an FCS error matches the peer MAC address.
  * @airtime_link_metric: mesh airtime link metric.
+ * @connected_to_as: true if mesh STA has a path to authentication server
  */
 struct station_info {
        u64 filled;
@@ -1655,6 +1656,8 @@ struct station_info {
        u32 fcs_err_count;
 
        u32 airtime_link_metric;
+
+       u8 connected_to_as;
 };
 
 #if IS_ENABLED(CONFIG_CFG80211)
index f1770e3..d6b6599 100644 (file)
@@ -3370,6 +3370,8 @@ enum nl80211_sta_bss_param {
  * @NL80211_STA_INFO_AIRTIME_LINK_METRIC: airtime link metric for mesh station
  * @NL80211_STA_INFO_ASSOC_AT_BOOTTIME: Timestamp (CLOCK_BOOTTIME, nanoseconds)
  *     of STA's association
+ * @NL80211_STA_INFO_CONNECTED_TO_AS: set to true if STA has a path to a
+ *     authentication server (u8, 0 or 1)
  * @__NL80211_STA_INFO_AFTER_LAST: internal
  * @NL80211_STA_INFO_MAX: highest possible station info attribute
  */
@@ -3417,6 +3419,7 @@ enum nl80211_sta_info {
        NL80211_STA_INFO_AIRTIME_WEIGHT,
        NL80211_STA_INFO_AIRTIME_LINK_METRIC,
        NL80211_STA_INFO_ASSOC_AT_BOOTTIME,
+       NL80211_STA_INFO_CONNECTED_TO_AS,
 
        /* keep last */
        __NL80211_STA_INFO_AFTER_LAST,
index cd8487b..a39773b 100644 (file)
@@ -2426,7 +2426,8 @@ void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo,
                                 BIT_ULL(NL80211_STA_INFO_LOCAL_PM) |
                                 BIT_ULL(NL80211_STA_INFO_PEER_PM) |
                                 BIT_ULL(NL80211_STA_INFO_NONPEER_PM) |
-                                BIT_ULL(NL80211_STA_INFO_CONNECTED_TO_GATE);
+                                BIT_ULL(NL80211_STA_INFO_CONNECTED_TO_GATE) |
+                                BIT_ULL(NL80211_STA_INFO_CONNECTED_TO_AS);
 
                sinfo->llid = sta->mesh->llid;
                sinfo->plid = sta->mesh->plid;
@@ -2439,6 +2440,7 @@ void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo,
                sinfo->peer_pm = sta->mesh->peer_pm;
                sinfo->nonpeer_pm = sta->mesh->nonpeer_pm;
                sinfo->connected_to_gate = sta->mesh->connected_to_gate;
+               sinfo->connected_to_as = sta->mesh->connected_to_as;
 #endif
        }
 
index 4972804..9d398c9 100644 (file)
@@ -385,6 +385,7 @@ DECLARE_EWMA(mesh_tx_rate_avg, 8, 16)
  * @processed_beacon: set to true after peer rates and capabilities are
  *     processed
  * @connected_to_gate: true if mesh STA has a path to a mesh gate
+ * @connected_to_as: true if mesh STA has a path to a authentication server
  * @fail_avg: moving percentage of failed MSDUs
  * @tx_rate_avg: moving average of tx bitrate
  */
@@ -404,6 +405,7 @@ struct mesh_sta {
 
        bool processed_beacon;
        bool connected_to_gate;
+       bool connected_to_as;
 
        enum nl80211_plink_state plink_state;
        u32 plink_timeout;
index 434fd06..13a38aa 100644 (file)
@@ -5395,6 +5395,7 @@ static int nl80211_send_station(struct sk_buff *msg, u32 cmd, u32 portid,
        PUT_SINFO(PEER_PM, peer_pm, u32);
        PUT_SINFO(NONPEER_PM, nonpeer_pm, u32);
        PUT_SINFO(CONNECTED_TO_GATE, connected_to_gate, u8);
+       PUT_SINFO(CONNECTED_TO_AS, connected_to_as, u8);
 
        if (sinfo->filled & BIT_ULL(NL80211_STA_INFO_BSS_PARAM)) {
                bss_param = nla_nest_start_noflag(msg,