mac80211: mesh: move fail_avg into mesh struct
authorJohannes Berg <johannes.berg@intel.com>
Thu, 18 Jun 2015 14:20:08 +0000 (16:20 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 17 Jul 2015 13:38:24 +0000 (15:38 +0200)
This value is only used in mesh, so move it into the new mesh
sub-struct of the station info.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mesh_hwmp.c
net/mac80211/sta_info.h

index be635341c80281ab129c1473a4cfa54823cc645b..d80e0a4c16cf98eb386bb61c3513f20619693556 100644 (file)
@@ -308,8 +308,9 @@ void ieee80211s_update_metric(struct ieee80211_local *local,
        failed = !(txinfo->flags & IEEE80211_TX_STAT_ACK);
 
        /* moving average, scaled to 100 */
-       sta->fail_avg = ((80 * sta->fail_avg + 5) / 100 + 20 * failed);
-       if (sta->fail_avg > 95)
+       sta->mesh->fail_avg =
+               ((80 * sta->mesh->fail_avg + 5) / 100 + 20 * failed);
+       if (sta->mesh->fail_avg > 95)
                mesh_plink_broken(sta);
 }
 
@@ -325,7 +326,7 @@ static u32 airtime_link_metric_get(struct ieee80211_local *local,
        u32 tx_time, estimated_retx;
        u64 result;
 
-       if (sta->fail_avg >= 100)
+       if (sta->mesh->fail_avg >= 100)
                return MAX_METRIC;
 
        sta_set_rate_info_tx(sta, &sta->last_tx_rate, &rinfo);
@@ -333,7 +334,7 @@ static u32 airtime_link_metric_get(struct ieee80211_local *local,
        if (WARN_ON(!rate))
                return MAX_METRIC;
 
-       err = (sta->fail_avg << ARITH_SHIFT) / 100;
+       err = (sta->mesh->fail_avg << ARITH_SHIFT) / 100;
 
        /* bitrate is in units of 100 Kbps, while we need rate in units of
         * 1Mbps. This will be corrected on tx_time computation.
index 0fbf3f3484466d46c75a66e518efdeafd93d041b..6dcb33484eac4901f6b71d85c4ff09f70084e03f 100644 (file)
@@ -290,6 +290,7 @@ struct ieee80211_fast_tx {
  * @nonpeer_pm: STA power save mode towards non-peer neighbors
  * @processed_beacon: set to true after peer rates and capabilities are
  *     processed
+ * @fail_avg: moving percentage of failed MSDUs
  */
 struct mesh_sta {
        struct timer_list plink_timer;
@@ -312,6 +313,9 @@ struct mesh_sta {
        enum nl80211_mesh_power_mode local_pm;
        enum nl80211_mesh_power_mode peer_pm;
        enum nl80211_mesh_power_mode nonpeer_pm;
+
+       /* moving percentage of failed MSDUs */
+       unsigned int fail_avg;
 };
 
 /**
@@ -369,7 +373,6 @@ struct mesh_sta {
  * @tx_filtered_count: number of frames the hardware filtered for this STA
  * @tx_retry_failed: number of frames that failed retry
  * @tx_retry_count: total number of retries for frames to this STA
- * @fail_avg: moving percentage of failed MSDUs
  * @tx_packets: number of RX/TX MSDUs
  * @tx_bytes: number of bytes transmitted to this STA
  * @tid_seq: per-TID sequence numbers for sending to this STA
@@ -470,8 +473,6 @@ struct sta_info {
        /* Updated from TX status path only, no locking requirements */
        unsigned long tx_filtered_count;
        unsigned long tx_retry_failed, tx_retry_count;
-       /* moving percentage of failed MSDUs */
-       unsigned int fail_avg;
 
        /* Updated from TX path only, no locking requirements */
        u64 tx_packets[IEEE80211_NUM_ACS];