*/
        if (!(ant->flags & ANTENNA_RX_DIVERSITY))
                config.rx = rt2x00lib_config_antenna_check(config.rx, def->rx);
-       else
+       else if(config.rx == ANTENNA_SW_DIVERSITY)
                config.rx = active->rx;
 
        if (!(ant->flags & ANTENNA_TX_DIVERSITY))
                config.tx = rt2x00lib_config_antenna_check(config.tx, def->tx);
-       else
+       else if (config.tx == ANTENNA_SW_DIVERSITY)
                config.tx = active->tx;
 
        /*
 
 static bool rt2x00lib_antenna_diversity(struct rt2x00_dev *rt2x00dev)
 {
        struct link_ant *ant = &rt2x00dev->link.ant;
-       unsigned int flags = ant->flags;
 
        /*
         * Determine if software diversity is enabled for
         * Always perform this check since within the link
         * tuner interval the configuration might have changed.
         */
-       flags &= ~ANTENNA_RX_DIVERSITY;
-       flags &= ~ANTENNA_TX_DIVERSITY;
+       ant->flags &= ~ANTENNA_RX_DIVERSITY;
+       ant->flags &= ~ANTENNA_TX_DIVERSITY;
 
        if (rt2x00dev->default_ant.rx == ANTENNA_SW_DIVERSITY)
-               flags |= ANTENNA_RX_DIVERSITY;
+               ant->flags |= ANTENNA_RX_DIVERSITY;
        if (rt2x00dev->default_ant.tx == ANTENNA_SW_DIVERSITY)
-               flags |= ANTENNA_TX_DIVERSITY;
+               ant->flags |= ANTENNA_TX_DIVERSITY;
 
        if (!(ant->flags & ANTENNA_RX_DIVERSITY) &&
            !(ant->flags & ANTENNA_TX_DIVERSITY)) {
                return true;
        }
 
-       /* Update flags */
-       ant->flags = flags;
-
        /*
         * If we have only sampled the data over the last period
         * we should now harvest the data. Otherwise just evaluate