aboutsummaryrefslogtreecommitdiffstats
path: root/package/madwifi/patches-r3776/312-ack_cts_rate.patch
blob: 3f172ca0b790cd2cbbc104f549f4f532918c7e2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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;