Ver Fonte

[PATCH] rt2x00: Remove rt2x00_clear_link

rt2x00_clear_link() was becoming too large for statically inline,
also it was used on a single location and shouldn't really be
used anywhere else. So move the entire code into the function
rt2x00lib_start_link_tuner()

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Ivo van Doorn há 17 anos atrás
pai
commit
8de8c5162b

+ 3 - 15
drivers/net/wireless/rt2x00/rt2x00.h

@@ -276,26 +276,14 @@ struct link {
 	struct delayed_work work;
 };
 
-/*
- * Clear all counters inside the link structure.
- */
-static inline void rt2x00_clear_link(struct link *link)
-{
-	link->count = 0;
-	memset(&link->qual, 0, sizeof(link->qual));
-	link->qual.rx_percentage = 50;
-	link->qual.tx_percentage = 50;
-}
-
 /*
  * Update the rssi using the walking average approach.
  */
 static inline void rt2x00_update_link_rssi(struct link *link, int rssi)
 {
-	if (!link->qual.avg_rssi)
-		link->qual.avg_rssi = rssi;
-	else
-		link->qual.avg_rssi = ((link->qual.avg_rssi * 7) + rssi) / 8;
+	if (link->qual.avg_rssi)
+		rssi = ((link->qual.avg_rssi * 7) + rssi) / 8;
+	link->qual.avg_rssi = rssi;
 }
 
 /*

+ 15 - 1
drivers/net/wireless/rt2x00/rt2x00dev.c

@@ -67,7 +67,21 @@ EXPORT_SYMBOL_GPL(rt2x00lib_get_ring);
  */
 static void rt2x00lib_start_link_tuner(struct rt2x00_dev *rt2x00dev)
 {
-	rt2x00_clear_link(&rt2x00dev->link);
+	rt2x00dev->link.count = 0;
+	rt2x00dev->link.vgc_level = 0;
+
+	memset(&rt2x00dev->link.qual, 0, sizeof(rt2x00dev->link.qual));
+
+	/*
+	 * The RX and TX percentage should start at 50%
+	 * this will assure we will get at least get some
+	 * decent value when the link tuner starts.
+	 * The value will be dropped and overwritten with
+	 * the correct (measured )value anyway during the
+	 * first run of the link tuner.
+	 */
+	rt2x00dev->link.qual.rx_percentage = 50;
+	rt2x00dev->link.qual.tx_percentage = 50;
 
 	/*
 	 * Reset the link tuner.