rt2x00: Fix antenna diversity
authorIvo van Doorn <ivdoorn@gmail.com>
Mon, 25 Feb 2008 22:15:01 +0000 (23:15 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 28 Feb 2008 14:13:09 +0000 (09:13 -0500)
Fix 2 issues in antenna diversity selection.

1) the following statement will always return true.
if ((rssi_curr - rssi_old) > -5 || (rssi_curr - rssi_old) < 5)
It is cleaner to check if the absolute value is smaller then 5.

2) Only enable software diversity when default antenna setup
indicates support for it. Don't select it when the hardware
does not indicate support for it...

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00dev.c

index c4be2ac4d7a407887d32e4569ff3baebbc126b48..00f5f0d49e1d916d0246bf32fc18f2f80a87e6eb 100644 (file)
@@ -293,7 +293,7 @@ static void rt2x00lib_evaluate_antenna_eval(struct rt2x00_dev *rt2x00dev)
         * sample the rssi from the other antenna to make a valid
         * comparison between the 2 antennas.
         */
-       if ((rssi_curr - rssi_old) > -5 || (rssi_curr - rssi_old) < 5)
+       if (abs(rssi_curr - rssi_old) < 5)
                return;
 
        rt2x00dev->link.ant.flags |= ANTENNA_MODE_SAMPLE;
@@ -319,10 +319,10 @@ static void rt2x00lib_evaluate_antenna(struct rt2x00_dev *rt2x00dev)
        rt2x00dev->link.ant.flags &= ~ANTENNA_TX_DIVERSITY;
 
        if (rt2x00dev->hw->conf.antenna_sel_rx == 0 &&
-           rt2x00dev->default_ant.rx != ANTENNA_SW_DIVERSITY)
+           rt2x00dev->default_ant.rx == ANTENNA_SW_DIVERSITY)
                rt2x00dev->link.ant.flags |= ANTENNA_RX_DIVERSITY;
        if (rt2x00dev->hw->conf.antenna_sel_tx == 0 &&
-           rt2x00dev->default_ant.tx != ANTENNA_SW_DIVERSITY)
+           rt2x00dev->default_ant.tx == ANTENNA_SW_DIVERSITY)
                rt2x00dev->link.ant.flags |= ANTENNA_TX_DIVERSITY;
 
        if (!(rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY) &&