diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/rc.h')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/rc.h | 63 |
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 @@ | |||
24 | struct ath_softc; | 24 | struct 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 | ||
54 | enum { | 69 | enum { |
@@ -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 |