Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62e2c102 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville
Browse files

ath5k: do not stop queues for full calibration



Some calibration types interfere with tx activity, but the queue stop does
not prevent that. In fact, some calibration types need tx activity to properly
function, so stopping the queues for them is counterproductive.
In some tests this patch has been shown to improve stability, especially in
AP or ad-hoc mode.

Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Acked-by: default avatarNick Kossifidis <mickflemm@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 12ce8ba3
Loading
Loading
Loading
Loading
+2 −12
Original line number Diff line number Diff line
@@ -2332,15 +2332,6 @@ ath5k_calibrate_work(struct work_struct *work)
					"got new rfgain, resetting\n");
			ieee80211_queue_work(ah->hw, &ah->reset_work);
		}

		/* TODO: On full calibration we should stop TX here,
		 * so that it doesn't interfere (mostly due to gain_f
		 * calibration that messes with tx packets -see phy.c).
		 *
		 * NOTE: Stopping the queues from above is not enough
		 * to stop TX but saves us from disconecting (at least
		 * we don't lose packets). */
		ieee80211_stop_queues(ah->hw);
	} else
		ah->ah_cal_mask |= AR5K_CALIBRATION_SHORT;

@@ -2355,10 +2346,9 @@ ath5k_calibrate_work(struct work_struct *work)
				ah->curchan->center_freq));

	/* Clear calibration flags */
	if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) {
		ieee80211_wake_queues(ah->hw);
	if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL)
		ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL;
	} else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT)
	else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT)
		ah->ah_cal_mask &= ~AR5K_CALIBRATION_SHORT;
}