openwrt/package/madwifi/patches-r3776/312-ack_cts_rate.patch

47 lines
1.9 KiB
Diff

Index: madwifi-trunk-r3776/ath/if_ath.c
===================================================================
--- madwifi-trunk-r3776.orig/ath/if_ath.c 2008-07-17 02:37:41.000000000 +0200
+++ madwifi-trunk-r3776/ath/if_ath.c 2008-07-17 03:04:02.000000000 +0200
@@ -10889,8 +10889,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,
Index: madwifi-trunk-r3776/ath/if_athvar.h
===================================================================
--- madwifi-trunk-r3776.orig/ath/if_athvar.h 2008-07-17 02:37:41.000000000 +0200
+++ madwifi-trunk-r3776/ath/if_athvar.h 2008-07-17 03:04:02.000000000 +0200
@@ -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 */
Index: madwifi-trunk-r3776/ath/if_ath_hal_extensions.c
===================================================================
--- madwifi-trunk-r3776.orig/ath/if_ath_hal_extensions.c 2008-07-17 00:21:39.000000000 +0200
+++ madwifi-trunk-r3776/ath/if_ath_hal_extensions.c 2008-07-17 03:04:48.000000000 +0200
@@ -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;