diff options
Diffstat (limited to 'net')
-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 |
9 files changed, 57 insertions, 56 deletions
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 */ |