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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
--- a/ath/if_ath.c
+++ b/ath/if_ath.c
@@ -10265,11 +10265,11 @@
sc->sc_currates = rt;
sc->sc_curmode = mode;
/*
- * All protection frames are transmitted at 2Mb/s for
- * 11g, otherwise at 1Mb/s.
+ * All protection frames are transmitted at 11Mb/s for
+ * 11g, otherwise at 2Mb/s.
* XXX select protection rate index from rate table.
*/
- sc->sc_protrix = (mode == IEEE80211_MODE_11G ? 1 : 0);
+ sc->sc_protrix = (mode == IEEE80211_MODE_11G ? 3 : 1);
/* rate index used to send mgt frames */
sc->sc_minrateix = 0;
}
--- a/ath/if_athvar.h
+++ b/ath/if_athvar.h
@@ -272,6 +272,10 @@
#define AES_ICV_FIELD_SIZE 8 /* AES ICV field size */
#define EXT_IV_FIELD_SIZE 4 /* ext IV field size */
+/* This is what the HAL uses by default for 11a+g */
+#define ATH_DEFAULT_CWMIN 15
+#define ATH_DEFAULT_CWMAX 1023
+
/* XR specific macros */
#define XR_DEFAULT_GRPPOLL_RATE_STR "0.25 1 1 3 3 6 6 20"
--- a/ath_rate/minstrel/minstrel.c
+++ b/ath_rate/minstrel/minstrel.c
@@ -197,7 +197,7 @@
unsigned int x = 0, tt = 0;
unsigned int cix = rt->info[rix].controlRate;
int rts = 0, cts = 0;
- int cw = WIFI_CW_MIN;
+ int cw = ATH_DEFAULT_CWMIN;
KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode));
@@ -281,7 +281,7 @@
tt += (long_retries + 1) * ath_hal_computetxtime(sc->sc_ah, rt, length,
rix, AH_TRUE);
for (x = 0; x <= short_retries + long_retries; x++) {
- cw = MIN(WIFI_CW_MAX, (cw + 1) * 2);
+ cw = MIN(ATH_DEFAULT_CWMAX, (cw + 1) * 2);
tt += (t_slot * cw / 2);
}
return tt;
--- a/ath_rate/minstrel/minstrel.h
+++ b/ath_rate/minstrel/minstrel.h
@@ -180,14 +180,6 @@
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif
-#if 0
-#define WIFI_CW_MIN 31
-#define WIFI_CW_MAX 1023
-#else
-#define WIFI_CW_MIN 3
-#define WIFI_CW_MAX 10
-#endif
-
/*
* Definitions for pulling the rate and trie counts from
* a 5212 h/w descriptor. These Don't belong here; the
--- a/ath_rate/sample/sample.c
+++ b/ath_rate/sample/sample.c
@@ -170,7 +170,7 @@
struct ieee80211com *ic = &sc->sc_ic;
unsigned int tt = 0;
unsigned int x;
- unsigned int cw = WIFI_CW_MIN;
+ unsigned int cw = ATH_DEFAULT_CWMIN;
unsigned int cix = rt->info[rix].controlRate;
KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode));
@@ -254,7 +254,7 @@
tt += (long_retries+1)*ath_hal_computetxtime(sc->sc_ah, rt, length,
rix, AH_TRUE);
for (x = 0; x <= short_retries + long_retries; x++) {
- cw = MIN(WIFI_CW_MAX, (cw + 1) * 2);
+ cw = MIN(ATH_DEFAULT_CWMAX, (cw + 1) * 2);
tt += (t_slot * cw / 2);
}
return tt;
--- a/ath_rate/sample/sample.h
+++ b/ath_rate/sample/sample.h
@@ -106,9 +106,6 @@
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif
-#define WIFI_CW_MIN 31
-#define WIFI_CW_MAX 1023
-
/*
* Definitions for pulling the rate and trie counts from
* a 5212 h/w descriptor. These Don't belong here; the
|