348-ackcts.patch 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. --- a/ath/if_ath.c
  2. +++ b/ath/if_ath.c
  3. @@ -2723,6 +2723,9 @@ ar_device(int devid)
  4. static int
  5. ath_set_ack_bitrate(struct ath_softc *sc, int high)
  6. {
  7. + if (!sc->sc_ackrate_override)
  8. + return 0;
  9. +
  10. if (ar_device(sc->devid) == 5212 || ar_device(sc->devid) == 5213) {
  11. /* set ack to be sent at low bit-rate */
  12. /* registers taken from the OpenBSD 5212 HAL */
  13. @@ -10789,8 +10792,13 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl
  14. break;
  15. #endif
  16. case ATH_ACKRATE:
  17. - sc->sc_ackrate = val;
  18. - ath_set_ack_bitrate(sc, sc->sc_ackrate);
  19. + if (val == -1)
  20. + sc->sc_ackrate_override = 0;
  21. + else {
  22. + sc->sc_ackrate_override = 1;
  23. + sc->sc_ackrate = val;
  24. + ath_set_ack_bitrate(sc, sc->sc_ackrate);
  25. + }
  26. break;
  27. case ATH_RP:
  28. ath_rp_record(sc,
  29. --- a/ath/if_athvar.h
  30. +++ b/ath/if_athvar.h
  31. @@ -681,6 +681,7 @@ struct ath_softc {
  32. unsigned int sc_devstopped:1; /* stopped due to of no tx bufs */
  33. unsigned int sc_stagbeacons:1; /* use staggered beacons */
  34. unsigned int sc_dfswait:1; /* waiting on channel for radar detect */
  35. + unsigned int sc_ackrate_override:1; /* override ack rate */
  36. unsigned int sc_ackrate:1; /* send acks at high bitrate */
  37. unsigned int sc_dfs_cac:1; /* waiting on channel for radar detect */
  38. unsigned int sc_hasintmit:1; /* Interference mitigation */