---- a/ath/if_ath.c
-+++ b/ath/if_ath.c
-@@ -10890,8 +10890,13 @@
- break;
- #endif
- case ATH_ACKRATE:
-- sc->sc_ackrate = val;
-- ath_set_ack_bitrate(sc, sc->sc_ackrate);
-+ if (val == -1)
-+ sc->sc_ackrate_override = 0;
-+ else {
-+ sc->sc_ackrate_override = 1;
-+ sc->sc_ackrate = val;
-+ ath_set_ack_bitrate(sc, sc->sc_ackrate);
-+ }
- break;
- case ATH_RP:
- ath_rp_record(sc,
---- a/ath/if_athvar.h
-+++ b/ath/if_athvar.h
-@@ -698,6 +698,7 @@
- unsigned int sc_hasclrkey:1; /* CLR key supported */
- unsigned int sc_stagbeacons:1; /* use staggered beacons */
- unsigned int sc_dfswait:1; /* waiting on channel for radar detect */
-+ unsigned int sc_ackrate_override:1; /* override ack rate */
- unsigned int sc_ackrate:1; /* send acks at high bitrate */
- unsigned int sc_dfs_cac:1; /* waiting on channel for radar detect */
- unsigned int sc_hasintmit:1; /* Interference mitigation */
---- a/ath/if_ath_hal_extensions.c
-+++ b/ath/if_ath_hal_extensions.c
-@@ -129,6 +129,9 @@
- int
- ath_set_ack_bitrate(struct ath_softc *sc, int high)
- {
-+ if (!sc->sc_ackrate_override)
-+ return 0;
-+
- if (ar_device(sc->devid) == 5212 || ar_device(sc->devid) == 5213) {
- /* set ack to be sent at low bit-rate */
- u_int32_t v = AR5K_STA_ID1_BASE_RATE_11B | AR5K_STA_ID1_ACKCTS_6MB;