batman-adv: ELP - use wifi tx bitrate as fallback throughput
authorRené Treffer <treffer@measite.de>
Tue, 26 Nov 2019 02:27:38 +0000 (10:27 +0800)
committerSimon Wunderlich <sw@simonwunderlich.de>
Sun, 8 Dec 2019 23:30:46 +0000 (00:30 +0100)
Some wifi drivers (e.g. ath10k) provide per-station rx/tx values but no
estimated throughput. Setting a better estimate than the default 1 MBit
makes these devices work well with B.A.T.M.A.N. V.

Signed-off-by: René Treffer <treffer@measite.de>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
net/batman-adv/bat_v_elp.c

index 2614a9c..6536e8c 100644 (file)
@@ -107,10 +107,17 @@ static u32 batadv_v_elp_get_throughput(struct batadv_hardif_neigh_node *neigh)
                }
                if (ret)
                        goto default_throughput;
-               if (!(sinfo.filled & BIT(NL80211_STA_INFO_EXPECTED_THROUGHPUT)))
-                       goto default_throughput;
 
-               return sinfo.expected_throughput / 100;
+               if (sinfo.filled & BIT(NL80211_STA_INFO_EXPECTED_THROUGHPUT))
+                       return sinfo.expected_throughput / 100;
+
+               /* try to estimate the expected throughput based on reported tx
+                * rates
+                */
+               if (sinfo.filled & BIT(NL80211_STA_INFO_TX_BITRATE))
+                       return cfg80211_calculate_bitrate(&sinfo.txrate) / 3;
+
+               goto default_throughput;
        }
 
        /* if not a wifi interface, check if this device provides data via