aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/rc.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/rc.h')
-rw-r--r--drivers/net/wireless/ath/ath9k/rc.h63
1 files changed, 46 insertions, 17 deletions
diff --git a/drivers/net/wireless/ath/ath9k/rc.h b/drivers/net/wireless/ath/ath9k/rc.h
index 601803aa06ff..e914c334c65e 100644
--- a/drivers/net/wireless/ath/ath9k/rc.h
+++ b/drivers/net/wireless/ath/ath9k/rc.h
@@ -24,7 +24,7 @@
24struct ath_softc; 24struct ath_softc;
25 25
26#define ATH_RATE_MAX 30 26#define ATH_RATE_MAX 30
27#define RATE_TABLE_SIZE 64 27#define RATE_TABLE_SIZE 72
28#define MAX_TX_RATE_PHY 48 28#define MAX_TX_RATE_PHY 48
29 29
30 30
@@ -36,19 +36,34 @@ struct ath_softc;
36#define RC_HT_20 0x0010 36#define RC_HT_20 0x0010
37#define RC_HT_40 0x0020 37#define RC_HT_40 0x0020
38 38
39#define RC_SS_OR_LEGACY(f) ((f) & (RC_SS | RC_LEGACY)) 39#define RC_STREAM_MASK 0xe
40#define RC_DS_OR_LATER(f) ((((f) & RC_STREAM_MASK) == RC_DS) || \
41 (((f) & RC_STREAM_MASK) == (RC_DS | RC_TS)))
42#define RC_TS_ONLY(f) (((f) & RC_STREAM_MASK) == RC_TS)
43#define RC_SS_OR_LEGACY(f) ((f) & (RC_SS | RC_LEGACY))
40 44
41#define RC_HT_2040 (RC_HT_20 | RC_HT_40) 45#define RC_HT_2040 (RC_HT_20 | RC_HT_40)
42#define RC_ALL_STREAM (RC_SS | RC_DS) 46#define RC_ALL_STREAM (RC_SS | RC_DS | RC_TS)
43#define RC_L_SD (RC_LEGACY | RC_SS | RC_DS) 47#define RC_L_SD (RC_LEGACY | RC_SS | RC_DS)
44#define RC_HT_SD_2040 (RC_HT_2040 | RC_SS | RC_DS) 48#define RC_L_SDT (RC_LEGACY | RC_SS | RC_DS | RC_TS)
45#define RC_HT_S_20 (RC_HT_20 | RC_SS) 49#define RC_HT_S_20 (RC_HT_20 | RC_SS)
46#define RC_HT_SD_20 (RC_HT_20 | RC_SS | RC_DS)
47#define RC_HT_SD_40 (RC_HT_40 | RC_SS | RC_DS)
48#define RC_HT_S_20 (RC_HT_20 | RC_SS)
49#define RC_HT_S_40 (RC_HT_40 | RC_SS)
50#define RC_HT_D_20 (RC_HT_20 | RC_DS) 50#define RC_HT_D_20 (RC_HT_20 | RC_DS)
51#define RC_HT_T_20 (RC_HT_20 | RC_TS)
52#define RC_HT_S_40 (RC_HT_40 | RC_SS)
51#define RC_HT_D_40 (RC_HT_40 | RC_DS) 53#define RC_HT_D_40 (RC_HT_40 | RC_DS)
54#define RC_HT_T_40 (RC_HT_40 | RC_TS)
55
56#define RC_HT_SD_20 (RC_HT_20 | RC_SS | RC_DS)
57#define RC_HT_DT_20 (RC_HT_20 | RC_DS | RC_TS)
58#define RC_HT_SD_40 (RC_HT_40 | RC_SS | RC_DS)
59#define RC_HT_DT_40 (RC_HT_40 | RC_DS | RC_TS)
60
61#define RC_HT_SD_2040 (RC_HT_2040 | RC_SS | RC_DS)
62#define RC_HT_SDT_2040 (RC_HT_2040 | RC_SS | RC_DS | RC_TS)
63
64#define RC_HT_SDT_20 (RC_HT_20 | RC_SS | RC_DS | RC_TS)
65#define RC_HT_SDT_40 (RC_HT_40 | RC_SS | RC_DS | RC_TS)
66
52#define RC_ALL (RC_LEGACY | RC_HT_2040 | RC_ALL_STREAM) 67#define RC_ALL (RC_LEGACY | RC_HT_2040 | RC_ALL_STREAM)
53 68
54enum { 69enum {
@@ -56,12 +71,16 @@ enum {
56 WLAN_RC_PHY_CCK, 71 WLAN_RC_PHY_CCK,
57 WLAN_RC_PHY_HT_20_SS, 72 WLAN_RC_PHY_HT_20_SS,
58 WLAN_RC_PHY_HT_20_DS, 73 WLAN_RC_PHY_HT_20_DS,
74 WLAN_RC_PHY_HT_20_TS,
59 WLAN_RC_PHY_HT_40_SS, 75 WLAN_RC_PHY_HT_40_SS,
60 WLAN_RC_PHY_HT_40_DS, 76 WLAN_RC_PHY_HT_40_DS,
77 WLAN_RC_PHY_HT_40_TS,
61 WLAN_RC_PHY_HT_20_SS_HGI, 78 WLAN_RC_PHY_HT_20_SS_HGI,
62 WLAN_RC_PHY_HT_20_DS_HGI, 79 WLAN_RC_PHY_HT_20_DS_HGI,
80 WLAN_RC_PHY_HT_20_TS_HGI,
63 WLAN_RC_PHY_HT_40_SS_HGI, 81 WLAN_RC_PHY_HT_40_SS_HGI,
64 WLAN_RC_PHY_HT_40_DS_HGI, 82 WLAN_RC_PHY_HT_40_DS_HGI,
83 WLAN_RC_PHY_HT_40_TS_HGI,
65 WLAN_RC_PHY_MAX 84 WLAN_RC_PHY_MAX
66}; 85};
67 86
@@ -69,27 +88,36 @@ enum {
69 || (_phy == WLAN_RC_PHY_HT_40_DS) \ 88 || (_phy == WLAN_RC_PHY_HT_40_DS) \
70 || (_phy == WLAN_RC_PHY_HT_20_DS_HGI) \ 89 || (_phy == WLAN_RC_PHY_HT_20_DS_HGI) \
71 || (_phy == WLAN_RC_PHY_HT_40_DS_HGI)) 90 || (_phy == WLAN_RC_PHY_HT_40_DS_HGI))
91#define WLAN_RC_PHY_TS(_phy) ((_phy == WLAN_RC_PHY_HT_20_TS) \
92 || (_phy == WLAN_RC_PHY_HT_40_TS) \
93 || (_phy == WLAN_RC_PHY_HT_20_TS_HGI) \
94 || (_phy == WLAN_RC_PHY_HT_40_TS_HGI))
72#define WLAN_RC_PHY_20(_phy) ((_phy == WLAN_RC_PHY_HT_20_SS) \ 95#define WLAN_RC_PHY_20(_phy) ((_phy == WLAN_RC_PHY_HT_20_SS) \
73 || (_phy == WLAN_RC_PHY_HT_20_DS) \ 96 || (_phy == WLAN_RC_PHY_HT_20_DS) \
97 || (_phy == WLAN_RC_PHY_HT_20_TS) \
74 || (_phy == WLAN_RC_PHY_HT_20_SS_HGI) \ 98 || (_phy == WLAN_RC_PHY_HT_20_SS_HGI) \
75 || (_phy == WLAN_RC_PHY_HT_20_DS_HGI)) 99 || (_phy == WLAN_RC_PHY_HT_20_DS_HGI) \
100 || (_phy == WLAN_RC_PHY_HT_20_TS_HGI))
76#define WLAN_RC_PHY_40(_phy) ((_phy == WLAN_RC_PHY_HT_40_SS) \ 101#define WLAN_RC_PHY_40(_phy) ((_phy == WLAN_RC_PHY_HT_40_SS) \
77 || (_phy == WLAN_RC_PHY_HT_40_DS) \ 102 || (_phy == WLAN_RC_PHY_HT_40_DS) \
103 || (_phy == WLAN_RC_PHY_HT_40_TS) \
78 || (_phy == WLAN_RC_PHY_HT_40_SS_HGI) \ 104 || (_phy == WLAN_RC_PHY_HT_40_SS_HGI) \
79 || (_phy == WLAN_RC_PHY_HT_40_DS_HGI)) 105 || (_phy == WLAN_RC_PHY_HT_40_DS_HGI) \
106 || (_phy == WLAN_RC_PHY_HT_40_TS_HGI))
80#define WLAN_RC_PHY_SGI(_phy) ((_phy == WLAN_RC_PHY_HT_20_SS_HGI) \ 107#define WLAN_RC_PHY_SGI(_phy) ((_phy == WLAN_RC_PHY_HT_20_SS_HGI) \
81 || (_phy == WLAN_RC_PHY_HT_20_DS_HGI) \ 108 || (_phy == WLAN_RC_PHY_HT_20_DS_HGI) \
109 || (_phy == WLAN_RC_PHY_HT_20_TS_HGI) \
82 || (_phy == WLAN_RC_PHY_HT_40_SS_HGI) \ 110 || (_phy == WLAN_RC_PHY_HT_40_SS_HGI) \
83 || (_phy == WLAN_RC_PHY_HT_40_DS_HGI)) 111 || (_phy == WLAN_RC_PHY_HT_40_DS_HGI) \
112 || (_phy == WLAN_RC_PHY_HT_40_TS_HGI))
84 113
85#define WLAN_RC_PHY_HT(_phy) (_phy >= WLAN_RC_PHY_HT_20_SS) 114#define WLAN_RC_PHY_HT(_phy) (_phy >= WLAN_RC_PHY_HT_20_SS)
86 115
87#define WLAN_RC_CAP_MODE(capflag) (((capflag & WLAN_RC_HT_FLAG) ? \ 116#define WLAN_RC_CAP_MODE(capflag) (((capflag & WLAN_RC_HT_FLAG) ? \
88 ((capflag & WLAN_RC_40_FLAG) ? RC_HT_40 : RC_HT_20) : RC_LEGACY)) 117 ((capflag & WLAN_RC_40_FLAG) ? RC_HT_40 : RC_HT_20) : RC_LEGACY))
89 118
90#define WLAN_RC_CAP_STREAM(capflag) \ 119#define WLAN_RC_CAP_STREAM(capflag) (((capflag & WLAN_RC_TS_FLAG) ? \
91 (((capflag) & WLAN_RC_DS_FLAG) ? RC_DS : RC_SS) 120 (RC_TS) : ((capflag & WLAN_RC_DS_FLAG) ? RC_DS : RC_SS)))
92
93 121
94/* Return TRUE if flag supports HT20 && client supports HT20 or 122/* Return TRUE if flag supports HT20 && client supports HT20 or
95 * return TRUE if flag supports HT40 && client supports HT40. 123 * return TRUE if flag supports HT40 && client supports HT40.
@@ -100,9 +128,10 @@ enum {
100 ((flag & RC_HT_40) && (capflag & WLAN_RC_40_FLAG))) 128 ((flag & RC_HT_40) && (capflag & WLAN_RC_40_FLAG)))
101 129
102#define WLAN_RC_DS_FLAG (0x01) 130#define WLAN_RC_DS_FLAG (0x01)
103#define WLAN_RC_40_FLAG (0x02) 131#define WLAN_RC_TS_FLAG (0x02)
104#define WLAN_RC_SGI_FLAG (0x04) 132#define WLAN_RC_40_FLAG (0x04)
105#define WLAN_RC_HT_FLAG (0x08) 133#define WLAN_RC_SGI_FLAG (0x08)
134#define WLAN_RC_HT_FLAG (0x10)
106 135
107/** 136/**
108 * struct ath_rate_table - Rate Control table 137 * struct ath_rate_table - Rate Control table