libconf.ant.rx = rx;
        libconf.ant.tx = tx;
 
+       if (rx == rt2x00dev->link.ant.active.rx &&
+           tx == rt2x00dev->link.ant.active.tx)
+               return;
+
        /*
         * Antenna setup changes require the RX to be disabled,
         * else the changes will be ignored by the device.
 
        if (sample_a == sample_b)
                return;
 
-       if (rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY) {
-               if (sample_a > sample_b && rx == ANTENNA_B)
-                       rx = ANTENNA_A;
-               else if (rx == ANTENNA_A)
-                       rx = ANTENNA_B;
-       }
+       if (rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY)
+               rx = (sample_a > sample_b) ? ANTENNA_A : ANTENNA_B;
 
-       if (rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY) {
-               if (sample_a > sample_b && tx == ANTENNA_B)
-                       tx = ANTENNA_A;
-               else if (tx == ANTENNA_A)
-                       tx = ANTENNA_B;
-       }
+       if (rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY)
+               tx = (sample_a > sample_b) ? ANTENNA_A : ANTENNA_B;
 
        rt2x00lib_config_antenna(rt2x00dev, rx, tx);
 }
 
        if (!(rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY) &&
            !(rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY)) {
-               rt2x00dev->link.ant.flags &= ~ANTENNA_MODE_SAMPLE;
+               rt2x00dev->link.ant.flags = 0;
                return;
        }