diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-09-14 11:10:25 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:49:27 -0400 |
commit | b708e610622cff07f4374a2b4410884f964b8489 (patch) | |
tree | 77aee49d680178df819437a35ba23cce9ad14e18 | |
parent | d4e46a3d9869563c6210b01bb651c40cbe65da80 (diff) |
[MAC80211]: remove turbo modes
This patch removes all mention of the atheros turbo modes that
can't possibly work properly anyway since in some places we don't
check for them when we should.
I have no idea what the iwlwifi drivers were doing with these but
it can't possibly have been correct.
Cc: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/mac80211.h | 7 | ||||
-rw-r--r-- | net/mac80211/debugfs.c | 2 | ||||
-rw-r--r-- | net/mac80211/ieee80211.c | 6 | ||||
-rw-r--r-- | net/mac80211/ieee80211_common.h | 2 | ||||
-rw-r--r-- | net/mac80211/ieee80211_ioctl.c | 63 | ||||
-rw-r--r-- | net/mac80211/ieee80211_sta.c | 19 | ||||
-rw-r--r-- | net/mac80211/regdomain.c | 6 | ||||
-rw-r--r-- | net/mac80211/rx.c | 2 | ||||
-rw-r--r-- | net/mac80211/tx.c | 2 | ||||
-rw-r--r-- | net/mac80211/util.c | 11 |
10 files changed, 59 insertions, 61 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index ec8c7393956b..fcb7e3f9c669 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -73,14 +73,13 @@ struct ieee80211_channel { | |||
73 | #define IEEE80211_RATE_SUPPORTED 0x00000010 | 73 | #define IEEE80211_RATE_SUPPORTED 0x00000010 |
74 | #define IEEE80211_RATE_OFDM 0x00000020 | 74 | #define IEEE80211_RATE_OFDM 0x00000020 |
75 | #define IEEE80211_RATE_CCK 0x00000040 | 75 | #define IEEE80211_RATE_CCK 0x00000040 |
76 | #define IEEE80211_RATE_TURBO 0x00000080 | ||
77 | #define IEEE80211_RATE_MANDATORY 0x00000100 | 76 | #define IEEE80211_RATE_MANDATORY 0x00000100 |
78 | 77 | ||
79 | #define IEEE80211_RATE_CCK_2 (IEEE80211_RATE_CCK | IEEE80211_RATE_PREAMBLE2) | 78 | #define IEEE80211_RATE_CCK_2 (IEEE80211_RATE_CCK | IEEE80211_RATE_PREAMBLE2) |
80 | #define IEEE80211_RATE_MODULATION(f) \ | 79 | #define IEEE80211_RATE_MODULATION(f) \ |
81 | (f & (IEEE80211_RATE_CCK | IEEE80211_RATE_OFDM)) | 80 | (f & (IEEE80211_RATE_CCK | IEEE80211_RATE_OFDM)) |
82 | 81 | ||
83 | /* Low-level driver should set PREAMBLE2, OFDM, CCK, and TURBO flags. | 82 | /* Low-level driver should set PREAMBLE2, OFDM and CCK flags. |
84 | * BASIC, SUPPORTED, ERP, and MANDATORY flags are set in 80211.o based on the | 83 | * BASIC, SUPPORTED, ERP, and MANDATORY flags are set in 80211.o based on the |
85 | * configuration. */ | 84 | * configuration. */ |
86 | struct ieee80211_rate { | 85 | struct ieee80211_rate { |
@@ -101,12 +100,10 @@ struct ieee80211_rate { | |||
101 | 100 | ||
102 | /* 802.11g is backwards-compatible with 802.11b, so a wlan card can | 101 | /* 802.11g is backwards-compatible with 802.11b, so a wlan card can |
103 | * actually be both in 11b and 11g modes at the same time. */ | 102 | * actually be both in 11b and 11g modes at the same time. */ |
104 | enum { | 103 | enum ieee80211_phymode { |
105 | MODE_IEEE80211A, /* IEEE 802.11a */ | 104 | MODE_IEEE80211A, /* IEEE 802.11a */ |
106 | MODE_IEEE80211B, /* IEEE 802.11b only */ | 105 | MODE_IEEE80211B, /* IEEE 802.11b only */ |
107 | MODE_ATHEROS_TURBO, /* Atheros Turbo mode (2x.11a at 5 GHz) */ | ||
108 | MODE_IEEE80211G, /* IEEE 802.11g (and 802.11b compatibility) */ | 106 | MODE_IEEE80211G, /* IEEE 802.11g (and 802.11b compatibility) */ |
109 | MODE_ATHEROS_TURBOG, /* Atheros Turbo mode (2x.11g at 2.4 GHz) */ | ||
110 | 107 | ||
111 | /* keep last */ | 108 | /* keep last */ |
112 | NUM_IEEE80211_MODES | 109 | NUM_IEEE80211_MODES |
diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c index dc5ed1a8bf62..12db9adc0361 100644 --- a/net/mac80211/debugfs.c +++ b/net/mac80211/debugfs.c | |||
@@ -28,8 +28,6 @@ static const char *ieee80211_mode_str(int mode) | |||
28 | return "IEEE 802.11b"; | 28 | return "IEEE 802.11b"; |
29 | case MODE_IEEE80211G: | 29 | case MODE_IEEE80211G: |
30 | return "IEEE 802.11g"; | 30 | return "IEEE 802.11g"; |
31 | case MODE_ATHEROS_TURBO: | ||
32 | return "Atheros Turbo (5 GHz)"; | ||
33 | default: | 31 | default: |
34 | return "UNKNOWN"; | 32 | return "UNKNOWN"; |
35 | } | 33 | } |
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c index 506cfa06b184..0e8a70f408e2 100644 --- a/net/mac80211/ieee80211.c +++ b/net/mac80211/ieee80211.c | |||
@@ -118,10 +118,6 @@ ieee80211_fill_frame_info(struct ieee80211_local *local, | |||
118 | case MODE_IEEE80211G: | 118 | case MODE_IEEE80211G: |
119 | fi->phytype = htonl(ieee80211_phytype_pbcc_dot11_g); | 119 | fi->phytype = htonl(ieee80211_phytype_pbcc_dot11_g); |
120 | break; | 120 | break; |
121 | case MODE_ATHEROS_TURBO: | ||
122 | fi->phytype = | ||
123 | htonl(ieee80211_phytype_dsss_dot11_turbo); | ||
124 | break; | ||
125 | default: | 121 | default: |
126 | fi->phytype = htonl(0xAAAAAAAA); | 122 | fi->phytype = htonl(0xAAAAAAAA); |
127 | break; | 123 | break; |
@@ -1225,7 +1221,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
1225 | local->long_retry_limit = 4; | 1221 | local->long_retry_limit = 4; |
1226 | local->hw.conf.radio_enabled = 1; | 1222 | local->hw.conf.radio_enabled = 1; |
1227 | 1223 | ||
1228 | local->enabled_modes = (unsigned int) -1; | 1224 | local->enabled_modes = ~0; |
1229 | 1225 | ||
1230 | INIT_LIST_HEAD(&local->modes_list); | 1226 | INIT_LIST_HEAD(&local->modes_list); |
1231 | 1227 | ||
diff --git a/net/mac80211/ieee80211_common.h b/net/mac80211/ieee80211_common.h index d0bbd00b4617..5b5fb7bcfd72 100644 --- a/net/mac80211/ieee80211_common.h +++ b/net/mac80211/ieee80211_common.h | |||
@@ -73,8 +73,6 @@ enum ieee80211_phytype { | |||
73 | ieee80211_phytype_ofdm_dot11_g = 6, | 73 | ieee80211_phytype_ofdm_dot11_g = 6, |
74 | ieee80211_phytype_pbcc_dot11_g = 7, | 74 | ieee80211_phytype_pbcc_dot11_g = 7, |
75 | ieee80211_phytype_ofdm_dot11_a = 8, | 75 | ieee80211_phytype_ofdm_dot11_a = 8, |
76 | ieee80211_phytype_dsss_dot11_turbog = 255, | ||
77 | ieee80211_phytype_dsss_dot11_turbo = 256, | ||
78 | }; | 76 | }; |
79 | 77 | ||
80 | enum ieee80211_ssi_type { | 78 | enum ieee80211_ssi_type { |
diff --git a/net/mac80211/ieee80211_ioctl.c b/net/mac80211/ieee80211_ioctl.c index 10ec05624a67..e1c4502b26bf 100644 --- a/net/mac80211/ieee80211_ioctl.c +++ b/net/mac80211/ieee80211_ioctl.c | |||
@@ -26,6 +26,41 @@ | |||
26 | #include "wpa.h" | 26 | #include "wpa.h" |
27 | #include "aes_ccm.h" | 27 | #include "aes_ccm.h" |
28 | 28 | ||
29 | |||
30 | /* | ||
31 | * Wow. This ioctl interface is such crap, it's tied | ||
32 | * to internal definitions. I hope it dies soon. | ||
33 | */ | ||
34 | static int mode_to_hostapd_mode(enum ieee80211_phymode mode) | ||
35 | { | ||
36 | switch (mode) { | ||
37 | case MODE_IEEE80211A: | ||
38 | return 0; | ||
39 | case MODE_IEEE80211B: | ||
40 | return 1; | ||
41 | case MODE_IEEE80211G: | ||
42 | return 3; | ||
43 | case NUM_IEEE80211_MODES: | ||
44 | WARN_ON(1); | ||
45 | break; | ||
46 | } | ||
47 | WARN_ON(1); | ||
48 | return -1; | ||
49 | } | ||
50 | |||
51 | static enum ieee80211_phymode hostapd_mode_to_mode(int hostapd_mode) | ||
52 | { | ||
53 | switch (hostapd_mode) { | ||
54 | case 0: | ||
55 | return MODE_IEEE80211A; | ||
56 | case 1: | ||
57 | return MODE_IEEE80211B; | ||
58 | case 3: | ||
59 | return MODE_IEEE80211G; | ||
60 | } | ||
61 | return NUM_IEEE80211_MODES; | ||
62 | } | ||
63 | |||
29 | static int ieee80211_set_encryption(struct net_device *dev, u8 *sta_addr, | 64 | static int ieee80211_set_encryption(struct net_device *dev, u8 *sta_addr, |
30 | int idx, int alg, int set_tx_key, | 65 | int idx, int alg, int set_tx_key, |
31 | const u8 *_key, size_t key_len) | 66 | const u8 *_key, size_t key_len) |
@@ -141,9 +176,6 @@ static int ieee80211_ioctl_giwname(struct net_device *dev, | |||
141 | case MODE_IEEE80211G: | 176 | case MODE_IEEE80211G: |
142 | strcpy(name, "IEEE 802.11g"); | 177 | strcpy(name, "IEEE 802.11g"); |
143 | break; | 178 | break; |
144 | case MODE_ATHEROS_TURBO: | ||
145 | strcpy(name, "5GHz Turbo"); | ||
146 | break; | ||
147 | default: | 179 | default: |
148 | strcpy(name, "IEEE 802.11"); | 180 | strcpy(name, "IEEE 802.11"); |
149 | break; | 181 | break; |
@@ -594,9 +626,6 @@ static int ieee80211_ioctl_siwrate(struct net_device *dev, | |||
594 | struct ieee80211_rate *rates = &mode->rates[i]; | 626 | struct ieee80211_rate *rates = &mode->rates[i]; |
595 | int this_rate = rates->rate; | 627 | int this_rate = rates->rate; |
596 | 628 | ||
597 | if (mode->mode == MODE_ATHEROS_TURBO || | ||
598 | mode->mode == MODE_ATHEROS_TURBOG) | ||
599 | this_rate *= 2; | ||
600 | if (target_rate == this_rate) { | 629 | if (target_rate == this_rate) { |
601 | sdata->bss->max_ratectrl_rateidx = i; | 630 | sdata->bss->max_ratectrl_rateidx = i; |
602 | if (rate->fixed) | 631 | if (rate->fixed) |
@@ -786,6 +815,7 @@ static int ieee80211_ioctl_prism2_param(struct net_device *dev, | |||
786 | int param = *i; | 815 | int param = *i; |
787 | int value = *(i + 1); | 816 | int value = *(i + 1); |
788 | int ret = 0; | 817 | int ret = 0; |
818 | int mode; | ||
789 | 819 | ||
790 | if (!capable(CAP_NET_ADMIN)) | 820 | if (!capable(CAP_NET_ADMIN)) |
791 | return -EPERM; | 821 | return -EPERM; |
@@ -840,7 +870,7 @@ static int ieee80211_ioctl_prism2_param(struct net_device *dev, | |||
840 | break; | 870 | break; |
841 | 871 | ||
842 | case PRISM2_PARAM_NEXT_MODE: | 872 | case PRISM2_PARAM_NEXT_MODE: |
843 | local->next_mode = value; | 873 | local->next_mode = hostapd_mode_to_mode(value); |
844 | break; | 874 | break; |
845 | 875 | ||
846 | case PRISM2_PARAM_KEY_TX_RX_THRESHOLD: | 876 | case PRISM2_PARAM_KEY_TX_RX_THRESHOLD: |
@@ -868,7 +898,15 @@ static int ieee80211_ioctl_prism2_param(struct net_device *dev, | |||
868 | break; | 898 | break; |
869 | 899 | ||
870 | case PRISM2_PARAM_HW_MODES: | 900 | case PRISM2_PARAM_HW_MODES: |
871 | local->enabled_modes = value; | 901 | mode = 1; |
902 | local->enabled_modes = 0; | ||
903 | while (value) { | ||
904 | if (value & 1) | ||
905 | local->enabled_modes |= | ||
906 | hostapd_mode_to_mode(mode); | ||
907 | mode <<= 1; | ||
908 | value >>= 1; | ||
909 | } | ||
872 | break; | 910 | break; |
873 | 911 | ||
874 | case PRISM2_PARAM_CREATE_IBSS: | 912 | case PRISM2_PARAM_CREATE_IBSS: |
@@ -909,6 +947,7 @@ static int ieee80211_ioctl_get_prism2_param(struct net_device *dev, | |||
909 | struct ieee80211_sub_if_data *sdata; | 947 | struct ieee80211_sub_if_data *sdata; |
910 | int *param = (int *) extra; | 948 | int *param = (int *) extra; |
911 | int ret = 0; | 949 | int ret = 0; |
950 | int mode; | ||
912 | 951 | ||
913 | sdata = IEEE80211_DEV_TO_SUB_IF(dev); | 952 | sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
914 | 953 | ||
@@ -946,7 +985,13 @@ static int ieee80211_ioctl_get_prism2_param(struct net_device *dev, | |||
946 | break; | 985 | break; |
947 | 986 | ||
948 | case PRISM2_PARAM_HW_MODES: | 987 | case PRISM2_PARAM_HW_MODES: |
949 | *param = local->enabled_modes; | 988 | mode = 0; |
989 | *param = 0; | ||
990 | while (mode < NUM_IEEE80211_MODES) { | ||
991 | if (local->enabled_modes & (1<<mode)) | ||
992 | *param |= mode_to_hostapd_mode(1<<mode); | ||
993 | mode++; | ||
994 | } | ||
950 | break; | 995 | break; |
951 | 996 | ||
952 | case PRISM2_PARAM_CREATE_IBSS: | 997 | case PRISM2_PARAM_CREATE_IBSS: |
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c index 1b4ebe81191c..8fdbd38e02c4 100644 --- a/net/mac80211/ieee80211_sta.c +++ b/net/mac80211/ieee80211_sta.c | |||
@@ -618,8 +618,6 @@ static void ieee80211_send_assoc(struct net_device *dev, | |||
618 | *pos++ = len; | 618 | *pos++ = len; |
619 | for (i = 0; i < len; i++) { | 619 | for (i = 0; i < len; i++) { |
620 | int rate = mode->rates[i].rate; | 620 | int rate = mode->rates[i].rate; |
621 | if (mode->mode == MODE_ATHEROS_TURBO) | ||
622 | rate /= 2; | ||
623 | *pos++ = (u8) (rate / 5); | 621 | *pos++ = (u8) (rate / 5); |
624 | } | 622 | } |
625 | 623 | ||
@@ -629,8 +627,6 @@ static void ieee80211_send_assoc(struct net_device *dev, | |||
629 | *pos++ = mode->num_rates - len; | 627 | *pos++ = mode->num_rates - len; |
630 | for (i = len; i < mode->num_rates; i++) { | 628 | for (i = len; i < mode->num_rates; i++) { |
631 | int rate = mode->rates[i].rate; | 629 | int rate = mode->rates[i].rate; |
632 | if (mode->mode == MODE_ATHEROS_TURBO) | ||
633 | rate /= 2; | ||
634 | *pos++ = (u8) (rate / 5); | 630 | *pos++ = (u8) (rate / 5); |
635 | } | 631 | } |
636 | } | 632 | } |
@@ -889,10 +885,7 @@ static void ieee80211_send_probe_req(struct net_device *dev, u8 *dst, | |||
889 | pos = skb_put(skb, 1); | 885 | pos = skb_put(skb, 1); |
890 | supp_rates[1]++; | 886 | supp_rates[1]++; |
891 | } | 887 | } |
892 | if (mode->mode == MODE_ATHEROS_TURBO) | 888 | *pos = rate->rate / 5; |
893 | *pos = rate->rate / 10; | ||
894 | else | ||
895 | *pos = rate->rate / 5; | ||
896 | } | 889 | } |
897 | 890 | ||
898 | ieee80211_sta_tx(dev, skb, 0); | 891 | ieee80211_sta_tx(dev, skb, 0); |
@@ -1285,16 +1278,12 @@ static void ieee80211_rx_mgmt_assoc_resp(struct net_device *dev, | |||
1285 | mode = local->oper_hw_mode; | 1278 | mode = local->oper_hw_mode; |
1286 | for (i = 0; i < elems.supp_rates_len; i++) { | 1279 | for (i = 0; i < elems.supp_rates_len; i++) { |
1287 | int rate = (elems.supp_rates[i] & 0x7f) * 5; | 1280 | int rate = (elems.supp_rates[i] & 0x7f) * 5; |
1288 | if (mode->mode == MODE_ATHEROS_TURBO) | ||
1289 | rate *= 2; | ||
1290 | for (j = 0; j < mode->num_rates; j++) | 1281 | for (j = 0; j < mode->num_rates; j++) |
1291 | if (mode->rates[j].rate == rate) | 1282 | if (mode->rates[j].rate == rate) |
1292 | rates |= BIT(j); | 1283 | rates |= BIT(j); |
1293 | } | 1284 | } |
1294 | for (i = 0; i < elems.ext_supp_rates_len; i++) { | 1285 | for (i = 0; i < elems.ext_supp_rates_len; i++) { |
1295 | int rate = (elems.ext_supp_rates[i] & 0x7f) * 5; | 1286 | int rate = (elems.ext_supp_rates[i] & 0x7f) * 5; |
1296 | if (mode->mode == MODE_ATHEROS_TURBO) | ||
1297 | rate *= 2; | ||
1298 | for (j = 0; j < mode->num_rates; j++) | 1287 | for (j = 0; j < mode->num_rates; j++) |
1299 | if (mode->rates[j].rate == rate) | 1288 | if (mode->rates[j].rate == rate) |
1300 | rates |= BIT(j); | 1289 | rates |= BIT(j); |
@@ -1514,8 +1503,6 @@ static void ieee80211_rx_bss_info(struct net_device *dev, | |||
1514 | rate = elems.ext_supp_rates | 1503 | rate = elems.ext_supp_rates |
1515 | [i - elems.supp_rates_len]; | 1504 | [i - elems.supp_rates_len]; |
1516 | own_rate = 5 * (rate & 0x7f); | 1505 | own_rate = 5 * (rate & 0x7f); |
1517 | if (mode->mode == MODE_ATHEROS_TURBO) | ||
1518 | own_rate *= 2; | ||
1519 | for (j = 0; j < num_rates; j++) | 1506 | for (j = 0; j < num_rates; j++) |
1520 | if (rates[j].rate == own_rate) | 1507 | if (rates[j].rate == own_rate) |
1521 | supp_rates |= BIT(j); | 1508 | supp_rates |= BIT(j); |
@@ -2344,8 +2331,6 @@ static int ieee80211_sta_join_ibss(struct net_device *dev, | |||
2344 | mode = local->oper_hw_mode; | 2331 | mode = local->oper_hw_mode; |
2345 | for (i = 0; i < bss->supp_rates_len; i++) { | 2332 | for (i = 0; i < bss->supp_rates_len; i++) { |
2346 | int bitrate = (bss->supp_rates[i] & 0x7f) * 5; | 2333 | int bitrate = (bss->supp_rates[i] & 0x7f) * 5; |
2347 | if (mode->mode == MODE_ATHEROS_TURBO) | ||
2348 | bitrate *= 2; | ||
2349 | for (j = 0; j < mode->num_rates; j++) | 2334 | for (j = 0; j < mode->num_rates; j++) |
2350 | if (mode->rates[j].rate == bitrate) | 2335 | if (mode->rates[j].rate == bitrate) |
2351 | rates |= BIT(j); | 2336 | rates |= BIT(j); |
@@ -2418,8 +2403,6 @@ static int ieee80211_sta_create_ibss(struct net_device *dev, | |||
2418 | pos = bss->supp_rates; | 2403 | pos = bss->supp_rates; |
2419 | for (i = 0; i < mode->num_rates; i++) { | 2404 | for (i = 0; i < mode->num_rates; i++) { |
2420 | int rate = mode->rates[i].rate; | 2405 | int rate = mode->rates[i].rate; |
2421 | if (mode->mode == MODE_ATHEROS_TURBO) | ||
2422 | rate /= 2; | ||
2423 | *pos++ = (u8) (rate / 5); | 2406 | *pos++ = (u8) (rate / 5); |
2424 | } | 2407 | } |
2425 | 2408 | ||
diff --git a/net/mac80211/regdomain.c b/net/mac80211/regdomain.c index b697a2afbb4b..f42678fa62d1 100644 --- a/net/mac80211/regdomain.c +++ b/net/mac80211/regdomain.c | |||
@@ -82,12 +82,6 @@ static void ieee80211_unmask_channel(int mode, struct ieee80211_channel *chan) | |||
82 | 82 | ||
83 | chan->flag = 0; | 83 | chan->flag = 0; |
84 | 84 | ||
85 | if (ieee80211_regdom == 64 && | ||
86 | (mode == MODE_ATHEROS_TURBO || mode == MODE_ATHEROS_TURBOG)) { | ||
87 | /* Do not allow Turbo modes in Japan. */ | ||
88 | return; | ||
89 | } | ||
90 | |||
91 | for (i = 0; channel_range[i].start_freq; i++) { | 85 | for (i = 0; channel_range[i].start_freq; i++) { |
92 | const struct ieee80211_channel_range *r = &channel_range[i]; | 86 | const struct ieee80211_channel_range *r = &channel_range[i]; |
93 | if (r->start_freq <= chan->freq && r->end_freq >= chan->freq) { | 87 | if (r->start_freq <= chan->freq && r->end_freq >= chan->freq) { |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 91b7886bf797..8c6e29089216 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -94,8 +94,6 @@ ieee80211_rx_h_load_stats(struct ieee80211_txrx_data *rx) | |||
94 | * 1 usec = 1/8 * (1080 / 10) = 13.5 */ | 94 | * 1 usec = 1/8 * (1080 / 10) = 13.5 */ |
95 | 95 | ||
96 | if (mode->mode == MODE_IEEE80211A || | 96 | if (mode->mode == MODE_IEEE80211A || |
97 | mode->mode == MODE_ATHEROS_TURBO || | ||
98 | mode->mode == MODE_ATHEROS_TURBOG || | ||
99 | (mode->mode == MODE_IEEE80211G && | 97 | (mode->mode == MODE_IEEE80211G && |
100 | rate->flags & IEEE80211_RATE_ERP)) | 98 | rate->flags & IEEE80211_RATE_ERP)) |
101 | hdrtime = CHAN_UTIL_HDR_SHORT; | 99 | hdrtime = CHAN_UTIL_HDR_SHORT; |
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index b29dc70b2f01..08d221674bc0 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -747,8 +747,6 @@ ieee80211_tx_h_load_stats(struct ieee80211_txrx_data *tx) | |||
747 | * 1 usec = 1/8 * (1080 / 10) = 13.5 */ | 747 | * 1 usec = 1/8 * (1080 / 10) = 13.5 */ |
748 | 748 | ||
749 | if (mode->mode == MODE_IEEE80211A || | 749 | if (mode->mode == MODE_IEEE80211A || |
750 | mode->mode == MODE_ATHEROS_TURBO || | ||
751 | mode->mode == MODE_ATHEROS_TURBOG || | ||
752 | (mode->mode == MODE_IEEE80211G && | 750 | (mode->mode == MODE_IEEE80211G && |
753 | tx->u.tx.rate->flags & IEEE80211_RATE_ERP)) | 751 | tx->u.tx.rate->flags & IEEE80211_RATE_ERP)) |
754 | hdrtime = CHAN_UTIL_HDR_SHORT; | 752 | hdrtime = CHAN_UTIL_HDR_SHORT; |
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index c970996ba6f9..29c0a0e1f52c 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -93,11 +93,6 @@ void ieee80211_prepare_rates(struct ieee80211_local *local, | |||
93 | if (rate->rate == 10 || rate->rate == 20) | 93 | if (rate->rate == 10 || rate->rate == 20) |
94 | rate->flags |= IEEE80211_RATE_BASIC; | 94 | rate->flags |= IEEE80211_RATE_BASIC; |
95 | break; | 95 | break; |
96 | case MODE_ATHEROS_TURBO: | ||
97 | if (rate->rate == 120 || rate->rate == 240 || | ||
98 | rate->rate == 480) | ||
99 | rate->flags |= IEEE80211_RATE_BASIC; | ||
100 | break; | ||
101 | case MODE_IEEE80211G: | 96 | case MODE_IEEE80211G: |
102 | if (rate->rate == 10 || rate->rate == 20 || | 97 | if (rate->rate == 10 || rate->rate == 20 || |
103 | rate->rate == 55 || rate->rate == 110) | 98 | rate->rate == 55 || rate->rate == 110) |
@@ -116,8 +111,6 @@ void ieee80211_prepare_rates(struct ieee80211_local *local, | |||
116 | if (rate->rate == 10) | 111 | if (rate->rate == 10) |
117 | rate->flags |= IEEE80211_RATE_MANDATORY; | 112 | rate->flags |= IEEE80211_RATE_MANDATORY; |
118 | break; | 113 | break; |
119 | case MODE_ATHEROS_TURBO: | ||
120 | break; | ||
121 | case MODE_IEEE80211G: | 114 | case MODE_IEEE80211G: |
122 | if (rate->rate == 10 || rate->rate == 20 || | 115 | if (rate->rate == 10 || rate->rate == 20 || |
123 | rate->rate == 55 || rate->rate == 110 || | 116 | rate->rate == 55 || rate->rate == 110 || |
@@ -273,8 +266,7 @@ int ieee80211_frame_duration(struct ieee80211_local *local, size_t len, | |||
273 | * DIV_ROUND_UP() operations. | 266 | * DIV_ROUND_UP() operations. |
274 | */ | 267 | */ |
275 | 268 | ||
276 | if (local->hw.conf.phymode == MODE_IEEE80211A || erp || | 269 | if (local->hw.conf.phymode == MODE_IEEE80211A || erp) { |
277 | local->hw.conf.phymode == MODE_ATHEROS_TURBO) { | ||
278 | /* | 270 | /* |
279 | * OFDM: | 271 | * OFDM: |
280 | * | 272 | * |
@@ -288,7 +280,6 @@ int ieee80211_frame_duration(struct ieee80211_local *local, size_t len, | |||
288 | * 802.11g - 19.8.4: aSIFSTime = 10 usec + | 280 | * 802.11g - 19.8.4: aSIFSTime = 10 usec + |
289 | * signal ext = 6 usec | 281 | * signal ext = 6 usec |
290 | */ | 282 | */ |
291 | /* FIX: Atheros Turbo may have different (shorter) duration? */ | ||
292 | dur = 16; /* SIFS + signal ext */ | 283 | dur = 16; /* SIFS + signal ext */ |
293 | dur += 16; /* 17.3.2.3: T_PREAMBLE = 16 usec */ | 284 | dur += 16; /* 17.3.2.3: T_PREAMBLE = 16 usec */ |
294 | dur += 4; /* 17.3.2.3: T_SIGNAL = 4 usec */ | 285 | dur += 4; /* 17.3.2.3: T_SIGNAL = 4 usec */ |