> Date: Mon, 11 Jan 2016 10:30:27 +0100
> From: Stefan Sperling <[email protected]>
>
> This diff removes turbo mode, which is a proprietary extension offered
> by Atheros devices of the ath(4) 11a/b/g generation. This seems to be
> a channel bonding technique, similar to 11n 40 MHz channels but not
> interoperable with 11n.
>
> I'd like to remove this because the implementation looks incomplete, the
> code adds extra complexity, and because turbo mode apparently only works
> with a specific set of old Atheros devices from 10 years ago.
Agreed. I don't have any working ath(4) hardware to test this. This
diff introduces some long (>80 characters) lines; you might want to
fix that before you commit it.
> Index: share/man/man4/ifmedia.4
> ===================================================================
> RCS file: /cvs/src/share/man/man4/ifmedia.4,v
> retrieving revision 1.21
> diff -u -p -r1.21 ifmedia.4
> --- share/man/man4/ifmedia.4 10 Sep 2015 17:55:21 -0000 1.21
> +++ share/man/man4/ifmedia.4 10 Jan 2016 13:53:44 -0000
> @@ -286,9 +286,6 @@ IBSS master mode.
> .It Dv IFM_IEEE80211_MONITOR
> Monitor mode.
> [monitor]
> -.It Dv IFM_IEEE80211_TURBO
> -Turbo mode.
> -[turbo]
> .El
> .Pp
> The following media modes are defined for IEEE802.11 Wireless LAN:
> Index: sys/dev/ic/ar5210.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ar5210.c,v
> retrieving revision 1.46
> diff -u -p -r1.46 ar5210.c
> --- sys/dev/ic/ar5210.c 12 Jul 2014 18:48:17 -0000 1.46
> +++ sys/dev/ic/ar5210.c 10 Jan 2016 14:01:53 -0000
> @@ -26,8 +26,8 @@
> #include <dev/ic/ar5210var.h>
>
> HAL_BOOL ar5k_ar5210_nic_reset(struct ath_hal *, u_int32_t);
> -HAL_BOOL ar5k_ar5210_nic_wakeup(struct ath_hal *, HAL_BOOL, HAL_BOOL);
> -void ar5k_ar5210_init_tx_queue(struct ath_hal *, u_int, HAL_BOOL);
> +HAL_BOOL ar5k_ar5210_nic_wakeup(struct ath_hal *, HAL_BOOL);
> +void ar5k_ar5210_init_tx_queue(struct ath_hal *, u_int);
> void ar5k_ar5210_fill(struct ath_hal *);
> HAL_BOOL ar5k_ar5210_do_calibrate(struct ath_hal *, HAL_CHANNEL *);
> HAL_BOOL ar5k_ar5210_noise_floor(struct ath_hal *, HAL_CHANNEL *);
> @@ -202,7 +202,7 @@ ar5k_ar5210_attach(u_int16_t device, voi
> ar5k_ar5210_fill(hal);
>
> /* Bring device out of sleep and reset its units */
> - if (ar5k_ar5210_nic_wakeup(hal, AH_FALSE, AH_TRUE) != AH_TRUE)
> + if (ar5k_ar5210_nic_wakeup(hal, AH_TRUE) != AH_TRUE)
> return (NULL);
>
> /* Get MAC, PHY and RADIO revisions */
> @@ -270,7 +270,7 @@ ar5k_ar5210_nic_reset(struct ath_hal *ha
> }
>
> HAL_BOOL
> -ar5k_ar5210_nic_wakeup(struct ath_hal *hal, HAL_BOOL turbo, HAL_BOOL initial)
> +ar5k_ar5210_nic_wakeup(struct ath_hal *hal, HAL_BOOL initial)
> {
> /*
> * Reset and wakeup the device
> @@ -294,9 +294,8 @@ ar5k_ar5210_nic_wakeup(struct ath_hal *h
> return (AH_FALSE);
> }
>
> - /* ...enable Atheros turbo mode if requested */
> - AR5K_REG_WRITE(AR5K_AR5210_PHY_FC,
> - turbo == AH_TRUE ? AR5K_AR5210_PHY_FC_TURBO_MODE : 0);
> + /* ...do not enable Atheros turbo mode */
> + AR5K_REG_WRITE(AR5K_AR5210_PHY_FC, 0);
>
> /* ...reset chipset */
> if (ar5k_ar5210_nic_reset(hal, AR5K_AR5210_RC_CHIP) == AH_FALSE) {
> @@ -337,8 +336,6 @@ ar5k_ar5210_get_rate_table(struct ath_ha
> switch (mode) {
> case HAL_MODE_11A:
> return (&hal->ah_rt_11a);
> - case HAL_MODE_TURBO:
> - return (&hal->ah_rt_turbo);
> case HAL_MODE_11B:
> case HAL_MODE_11G:
> default:
> @@ -373,9 +370,7 @@ ar5k_ar5210_reset(struct ath_hal *hal, H
> /* Not used, keep for HAL compatibility */
> *status = HAL_OK;
>
> - if (ar5k_ar5210_nic_wakeup(hal,
> - channel->c_channel_flags & IEEE80211_CHAN_T ?
> - AH_TRUE : AH_FALSE, AH_FALSE) == AH_FALSE)
> + if (ar5k_ar5210_nic_wakeup(hal, AH_FALSE) == AH_FALSE)
> return (AH_FALSE);
>
> /*
> @@ -797,21 +792,19 @@ ar5k_ar5210_release_tx_queue(struct ath_
> }
>
> void
> -ar5k_ar5210_init_tx_queue(struct ath_hal *hal, u_int aifs, HAL_BOOL turbo)
> +ar5k_ar5210_init_tx_queue(struct ath_hal *hal, u_int aifs)
> {
> int i;
> struct {
> u_int16_t mode_register;
> - u_int32_t mode_base, mode_turbo;
> + u_int32_t mode_base;
> } initial[] = AR5K_AR5210_INI_MODE(aifs);
>
> /*
> * Write initial mode register settings
> */
> for (i = 0; i < nitems(initial); i++)
> - AR5K_REG_WRITE((u_int32_t)initial[i].mode_register,
> - turbo == AH_TRUE ?
> - initial[i].mode_turbo : initial[i].mode_base);
> + AR5K_REG_WRITE((u_int32_t)initial[i].mode_register,
> initial[i].mode_base);
> }
>
> HAL_BOOL
> @@ -829,8 +822,7 @@ ar5k_ar5210_reset_tx_queue(struct ath_ha
> return (AH_TRUE);
>
> /* Set turbo/base mode parameters */
> - ar5k_ar5210_init_tx_queue(hal, hal->ah_aifs + tq->tqi_aifs,
> - hal->ah_turbo == AH_TRUE ? AH_TRUE : AH_FALSE);
> + ar5k_ar5210_init_tx_queue(hal, hal->ah_aifs + tq->tqi_aifs);
>
> /*
> * Set retry limits
> @@ -1742,8 +1734,7 @@ ar5k_ar5210_set_slot_time(struct ath_hal
> if (slot_time < HAL_SLOT_TIME_9 || slot_time > HAL_SLOT_TIME_MAX)
> return (AH_FALSE);
>
> - AR5K_REG_WRITE(AR5K_AR5210_SLOT_TIME,
> - ar5k_htoclock(slot_time, hal->ah_turbo));
> + AR5K_REG_WRITE(AR5K_AR5210_SLOT_TIME, ar5k_htoclock(slot_time));
>
> return (AH_TRUE);
> }
> @@ -1751,19 +1742,18 @@ ar5k_ar5210_set_slot_time(struct ath_hal
> u_int
> ar5k_ar5210_get_slot_time(struct ath_hal *hal)
> {
> - return (ar5k_clocktoh(AR5K_REG_READ(AR5K_AR5210_SLOT_TIME) &
> - 0xffff, hal->ah_turbo));
> + return (ar5k_clocktoh(AR5K_REG_READ(AR5K_AR5210_SLOT_TIME) & 0xffff));
> }
>
> HAL_BOOL
> ar5k_ar5210_set_ack_timeout(struct ath_hal *hal, u_int timeout)
> {
> - if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5210_TIME_OUT_ACK),
> - hal->ah_turbo) <= timeout)
> + if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5210_TIME_OUT_ACK))
> + <= timeout)
> return (AH_FALSE);
>
> AR5K_REG_WRITE_BITS(AR5K_AR5210_TIME_OUT, AR5K_AR5210_TIME_OUT_ACK,
> - ar5k_htoclock(timeout, hal->ah_turbo));
> + ar5k_htoclock(timeout));
>
> return (AH_TRUE);
> }
> @@ -1772,18 +1762,18 @@ u_int
> ar5k_ar5210_get_ack_timeout(struct ath_hal *hal)
> {
> return (ar5k_clocktoh(AR5K_REG_MS(AR5K_REG_READ(AR5K_AR5210_TIME_OUT),
> - AR5K_AR5210_TIME_OUT_ACK), hal->ah_turbo));
> + AR5K_AR5210_TIME_OUT_ACK)));
> }
>
> HAL_BOOL
> ar5k_ar5210_set_cts_timeout(struct ath_hal *hal, u_int timeout)
> {
> - if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5210_TIME_OUT_CTS),
> - hal->ah_turbo) <= timeout)
> + if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5210_TIME_OUT_CTS))
> + <= timeout)
> return (AH_FALSE);
>
> AR5K_REG_WRITE_BITS(AR5K_AR5210_TIME_OUT, AR5K_AR5210_TIME_OUT_CTS,
> - ar5k_htoclock(timeout, hal->ah_turbo));
> + ar5k_htoclock(timeout));
>
> return (AH_TRUE);
> }
> @@ -1792,7 +1782,7 @@ u_int
> ar5k_ar5210_get_cts_timeout(struct ath_hal *hal)
> {
> return (ar5k_clocktoh(AR5K_REG_MS(AR5K_REG_READ(AR5K_AR5210_TIME_OUT),
> - AR5K_AR5210_TIME_OUT_CTS), hal->ah_turbo));
> + AR5K_AR5210_TIME_OUT_CTS)));
> }
>
> /*
> @@ -2313,7 +2303,7 @@ ar5k_ar5210_get_capabilities(struct ath_
> hal->ah_capabilities.cap_range.range_2ghz_max = 0;
>
> /* Set supported modes */
> - hal->ah_capabilities.cap_mode = HAL_MODE_11A | HAL_MODE_TURBO;
> + hal->ah_capabilities.cap_mode = HAL_MODE_11A;
>
> /* Set number of GPIO pins */
> hal->ah_gpio_npins = AR5K_AR5210_NUM_GPIO;
> Index: sys/dev/ic/ar5210var.h
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ar5210var.h,v
> retrieving revision 1.14
> diff -u -p -r1.14 ar5210var.h
> --- sys/dev/ic/ar5210var.h 12 Mar 2007 01:04:52 -0000 1.14
> +++ sys/dev/ic/ar5210var.h 8 Jan 2016 00:16:23 -0000
> @@ -184,40 +184,25 @@ extern ar5k_attach_t ar5k_ar5210_attach;
>
> #define AR5K_AR5210_INI_MODE(_aifs) {
> \
> { AR5K_AR5210_SLOT_TIME, \
> - AR5K_INIT_SLOT_TIME, \
> - AR5K_INIT_SLOT_TIME_TURBO }, \
> + AR5K_INIT_SLOT_TIME }, \
> { AR5K_AR5210_SLOT_TIME, \
> - AR5K_INIT_ACK_CTS_TIMEOUT, \
> - AR5K_INIT_ACK_CTS_TIMEOUT_TURBO }, \
> + AR5K_INIT_ACK_CTS_TIMEOUT }, \
> { AR5K_AR5210_USEC, \
> - AR5K_INIT_TRANSMIT_LATENCY, \
> - AR5K_INIT_TRANSMIT_LATENCY_TURBO}, \
> + AR5K_INIT_TRANSMIT_LATENCY }, \
> { AR5K_AR5210_IFS0, \
> ((AR5K_INIT_SIFS + (_aifs) * AR5K_INIT_SLOT_TIME) \
> - << AR5K_AR5210_IFS0_DIFS_S) | AR5K_INIT_SIFS, \
> - ((AR5K_INIT_SIFS_TURBO + (_aifs) * AR5K_INIT_SLOT_TIME_TURBO) \
> - << AR5K_AR5210_IFS0_DIFS_S) | AR5K_INIT_SIFS_TURBO }, \
> + << AR5K_AR5210_IFS0_DIFS_S) | AR5K_INIT_SIFS }, \
> { AR5K_AR5210_IFS1, \
> - AR5K_INIT_PROTO_TIME_CNTRL, \
> - AR5K_INIT_PROTO_TIME_CNTRL_TURBO }, \
> + AR5K_INIT_PROTO_TIME_CNTRL }, \
> { AR5K_AR5210_PHY(17), \
> - (AR5K_REG_READ(AR5K_AR5210_PHY(17)) & ~0x7F) | 0x1C, \
> - (AR5K_REG_READ(AR5K_AR5210_PHY(17)) & ~0x7F) | 0x38 }, \
> + (AR5K_REG_READ(AR5K_AR5210_PHY(17)) & ~0x7F) | 0x1C }, \
> { AR5K_AR5210_PHY_FC, \
> AR5K_AR5210_PHY_FC_SERVICE_ERR | \
> AR5K_AR5210_PHY_FC_TXURN_ERR | \
> AR5K_AR5210_PHY_FC_ILLLEN_ERR | \
> AR5K_AR5210_PHY_FC_ILLRATE_ERR | \
> AR5K_AR5210_PHY_FC_PARITY_ERR | \
> - AR5K_AR5210_PHY_FC_TIMING_ERR | 0x1020, \
> - AR5K_AR5210_PHY_FC_SERVICE_ERR | \
> - AR5K_AR5210_PHY_FC_TXURN_ERR | \
> - AR5K_AR5210_PHY_FC_ILLLEN_ERR | \
> - AR5K_AR5210_PHY_FC_ILLRATE_ERR | \
> - AR5K_AR5210_PHY_FC_PARITY_ERR | \
> - AR5K_AR5210_PHY_FC_TURBO_MODE | \
> - AR5K_AR5210_PHY_FC_TURBO_SHORT | \
> - AR5K_AR5210_PHY_FC_TIMING_ERR | 0x2020 }, \
> + AR5K_AR5210_PHY_FC_TIMING_ERR | 0x1020 }, \
> }
>
> /*
> Index: sys/dev/ic/ar5211.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ar5211.c,v
> retrieving revision 1.47
> diff -u -p -r1.47 ar5211.c
> --- sys/dev/ic/ar5211.c 20 Mar 2015 11:05:49 -0000 1.47
> +++ sys/dev/ic/ar5211.c 10 Jan 2016 14:03:38 -0000
> @@ -301,11 +301,6 @@ ar5k_ar5211_nic_wakeup(struct ath_hal *h
> return (AH_FALSE);
> }
>
> - if (flags & IEEE80211_CHAN_TURBO) {
> - turbo = AR5K_AR5211_PHY_TURBO_MODE |
> - AR5K_AR5211_PHY_TURBO_SHORT;
> - }
> -
> /*
> * Reset and wakeup the device
> */
> @@ -384,8 +379,6 @@ ar5k_ar5211_get_rate_table(struct ath_ha
> switch (mode) {
> case HAL_MODE_11A:
> return (&hal->ah_rt_11a);
> - case HAL_MODE_TURBO:
> - return (&hal->ah_rt_turbo);
> case HAL_MODE_11B:
> return (&hal->ah_rt_11b);
> case HAL_MODE_11G:
> @@ -453,11 +446,6 @@ ar5k_ar5211_reset(struct ath_hal *hal, H
> freq = AR5K_INI_RFGAIN_5GHZ;
> ee_mode = AR5K_EEPROM_MODE_11A;
> break;
> - case CHANNEL_T:
> - mode = AR5K_INI_VAL_11A_TURBO;
> - freq = AR5K_INI_RFGAIN_5GHZ;
> - ee_mode = AR5K_EEPROM_MODE_11A;
> - break;
> case CHANNEL_B:
> mode = AR5K_INI_VAL_11B;
> freq = AR5K_INI_RFGAIN_2GHZ;
> @@ -1864,12 +1852,12 @@ ar5k_ar5211_get_slot_time(struct ath_hal
> HAL_BOOL
> ar5k_ar5211_set_ack_timeout(struct ath_hal *hal, u_int timeout)
> {
> - if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5211_TIME_OUT_ACK),
> - hal->ah_turbo) <= timeout)
> + if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5211_TIME_OUT_ACK))
> + <= timeout)
> return (AH_FALSE);
>
> AR5K_REG_WRITE_BITS(AR5K_AR5211_TIME_OUT, AR5K_AR5211_TIME_OUT_ACK,
> - ar5k_htoclock(timeout, hal->ah_turbo));
> + ar5k_htoclock(timeout));
>
> return (AH_TRUE);
> }
> @@ -1878,18 +1866,18 @@ u_int
> ar5k_ar5211_get_ack_timeout(struct ath_hal *hal)
> {
> return (ar5k_clocktoh(AR5K_REG_MS(AR5K_REG_READ(AR5K_AR5211_TIME_OUT),
> - AR5K_AR5211_TIME_OUT_ACK), hal->ah_turbo));
> + AR5K_AR5211_TIME_OUT_ACK)));
> }
>
> HAL_BOOL
> ar5k_ar5211_set_cts_timeout(struct ath_hal *hal, u_int timeout)
> {
> - if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5211_TIME_OUT_CTS),
> - hal->ah_turbo) <= timeout)
> + if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5211_TIME_OUT_CTS))
> + <= timeout)
> return (AH_FALSE);
>
> AR5K_REG_WRITE_BITS(AR5K_AR5211_TIME_OUT, AR5K_AR5211_TIME_OUT_CTS,
> - ar5k_htoclock(timeout, hal->ah_turbo));
> + ar5k_htoclock(timeout));
>
> return (AH_TRUE);
> }
> @@ -1898,7 +1886,7 @@ u_int
> ar5k_ar5211_get_cts_timeout(struct ath_hal *hal)
> {
> return (ar5k_clocktoh(AR5K_REG_MS(AR5K_REG_READ(AR5K_AR5211_TIME_OUT),
> - AR5K_AR5211_TIME_OUT_CTS), hal->ah_turbo));
> + AR5K_AR5211_TIME_OUT_CTS)));
> }
>
> /*
> Index: sys/dev/ic/ar5212.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ar5212.c,v
> retrieving revision 1.55
> diff -u -p -r1.55 ar5212.c
> --- sys/dev/ic/ar5212.c 12 Jul 2014 18:48:17 -0000 1.55
> +++ sys/dev/ic/ar5212.c 10 Jan 2016 14:04:46 -0000
> @@ -354,11 +354,6 @@ ar5k_ar5212_nic_wakeup(struct ath_hal *h
> return (AH_FALSE);
> }
>
> - if (flags & IEEE80211_CHAN_TURBO) {
> - turbo = AR5K_AR5212_PHY_TURBO_MODE |
> - AR5K_AR5212_PHY_TURBO_SHORT;
> - }
> -
> /*
> * Reset and wakeup the device
> */
> @@ -437,8 +432,6 @@ ar5k_ar5212_get_rate_table(struct ath_ha
> switch (mode) {
> case HAL_MODE_11A:
> return (&hal->ah_rt_11a);
> - case HAL_MODE_TURBO:
> - return (&hal->ah_rt_turbo);
> case HAL_MODE_11B:
> return (&hal->ah_rt_11b);
> case HAL_MODE_11G:
> @@ -526,16 +519,6 @@ ar5k_ar5212_reset(struct ath_hal *hal, H
> freq = AR5K_INI_RFGAIN_2GHZ;
> ee_mode = AR5K_EEPROM_MODE_11G;
> break;
> - case CHANNEL_T:
> - mode = AR5K_INI_VAL_11A_TURBO;
> - freq = AR5K_INI_RFGAIN_5GHZ;
> - ee_mode = AR5K_EEPROM_MODE_11A;
> - break;
> - case CHANNEL_TG:
> - mode = AR5K_INI_VAL_11G_TURBO;
> - freq = AR5K_INI_RFGAIN_2GHZ;
> - ee_mode = AR5K_EEPROM_MODE_11G;
> - break;
> case CHANNEL_XR:
> mode = AR5K_INI_VAL_XR;
> freq = AR5K_INI_RFGAIN_5GHZ;
> @@ -603,9 +586,7 @@ ar5k_ar5212_reset(struct ath_hal *hal, H
> /*
> * Set rate duration table
> */
> - rt = ar5k_ar5212_get_rate_table(hal,
> - channel->c_channel_flags & IEEE80211_CHAN_TURBO ?
> - HAL_MODE_TURBO : HAL_MODE_XR);
> + rt = ar5k_ar5212_get_rate_table(hal, HAL_MODE_XR);
>
> for (i = 0; i < rt->rt_rate_count; i++) {
> AR5K_REG_WRITE(AR5K_AR5212_RATE_DUR(rt->rt_info[i].r_rate_code),
> @@ -613,19 +594,17 @@ ar5k_ar5212_reset(struct ath_hal *hal, H
> rt->rt_info[i].r_control_rate, AH_FALSE));
> }
>
> - if ((channel->c_channel_flags & IEEE80211_CHAN_TURBO) == 0) {
> - rt = ar5k_ar5212_get_rate_table(hal, HAL_MODE_11B);
> - for (i = 0; i < rt->rt_rate_count; i++) {
> - data = AR5K_AR5212_RATE_DUR(rt->rt_info[i].r_rate_code);
> - AR5K_REG_WRITE(data,
> + rt = ar5k_ar5212_get_rate_table(hal, HAL_MODE_11B);
> + for (i = 0; i < rt->rt_rate_count; i++) {
> + data = AR5K_AR5212_RATE_DUR(rt->rt_info[i].r_rate_code);
> + AR5K_REG_WRITE(data,
> + ath_hal_computetxtime(hal, rt, 14,
> + rt->rt_info[i].r_control_rate, AH_FALSE));
> + if (rt->rt_info[i].r_short_preamble) {
> + AR5K_REG_WRITE(data +
> + (rt->rt_info[i].r_short_preamble << 2),
> ath_hal_computetxtime(hal, rt, 14,
> rt->rt_info[i].r_control_rate, AH_FALSE));
> - if (rt->rt_info[i].r_short_preamble) {
> - AR5K_REG_WRITE(data +
> - (rt->rt_info[i].r_short_preamble << 2),
> - ath_hal_computetxtime(hal, rt, 14,
> - rt->rt_info[i].r_control_rate, AH_FALSE));
> - }
> }
> }
>
> @@ -663,7 +642,7 @@ ar5k_ar5212_reset(struct ath_hal *hal, H
> u_int32_t coef_scaled, coef_exp, coef_man, ds_coef_exp,
> ds_coef_man, clock;
>
> - clock = channel->c_channel_flags & IEEE80211_CHAN_T ? 80 : 40;
> + clock = 40;
> coef_scaled = ((5 * (clock << 24)) / 2) / channel->c_channel;
>
> for (coef_exp = 31; coef_exp > 0; coef_exp--)
> @@ -2237,12 +2216,12 @@ ar5k_ar5212_get_slot_time(struct ath_hal
> HAL_BOOL
> ar5k_ar5212_set_ack_timeout(struct ath_hal *hal, u_int timeout)
> {
> - if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5212_TIME_OUT_ACK),
> - hal->ah_turbo) <= timeout)
> + if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5212_TIME_OUT_ACK))
> + <= timeout)
> return (AH_FALSE);
>
> AR5K_REG_WRITE_BITS(AR5K_AR5212_TIME_OUT, AR5K_AR5212_TIME_OUT_ACK,
> - ar5k_htoclock(timeout, hal->ah_turbo));
> + ar5k_htoclock(timeout));
>
> return (AH_TRUE);
> }
> @@ -2251,18 +2230,18 @@ u_int
> ar5k_ar5212_get_ack_timeout(struct ath_hal *hal)
> {
> return (ar5k_clocktoh(AR5K_REG_MS(AR5K_REG_READ(AR5K_AR5212_TIME_OUT),
> - AR5K_AR5212_TIME_OUT_ACK), hal->ah_turbo));
> + AR5K_AR5212_TIME_OUT_ACK)));
> }
>
> HAL_BOOL
> ar5k_ar5212_set_cts_timeout(struct ath_hal *hal, u_int timeout)
> {
> - if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5212_TIME_OUT_CTS),
> - hal->ah_turbo) <= timeout)
> + if (ar5k_clocktoh(AR5K_REG_MS(0xffffffff, AR5K_AR5212_TIME_OUT_CTS))
> + <= timeout)
> return (AH_FALSE);
>
> AR5K_REG_WRITE_BITS(AR5K_AR5212_TIME_OUT, AR5K_AR5212_TIME_OUT_CTS,
> - ar5k_htoclock(timeout, hal->ah_turbo));
> + ar5k_htoclock(timeout));
>
> return (AH_TRUE);
> }
> @@ -2271,7 +2250,7 @@ u_int
> ar5k_ar5212_get_cts_timeout(struct ath_hal *hal)
> {
> return (ar5k_clocktoh(AR5K_REG_MS(AR5K_REG_READ(AR5K_AR5212_TIME_OUT),
> - AR5K_AR5212_TIME_OUT_CTS), hal->ah_turbo));
> + AR5K_AR5212_TIME_OUT_CTS)));
> }
>
> /*
> Index: sys/dev/ic/ar5xxx.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ar5xxx.c,v
> retrieving revision 1.58
> diff -u -p -r1.58 ar5xxx.c
> --- sys/dev/ic/ar5xxx.c 13 Jul 2014 23:10:23 -0000 1.58
> +++ sys/dev/ic/ar5xxx.c 10 Jan 2016 14:00:07 -0000
> @@ -75,7 +75,6 @@ static const struct {
> static const HAL_RATE_TABLE ar5k_rt_11a = AR5K_RATES_11A;
> static const HAL_RATE_TABLE ar5k_rt_11b = AR5K_RATES_11B;
> static const HAL_RATE_TABLE ar5k_rt_11g = AR5K_RATES_11G;
> -static const HAL_RATE_TABLE ar5k_rt_turbo = AR5K_RATES_TURBO;
> static const HAL_RATE_TABLE ar5k_rt_xr = AR5K_RATES_XR;
>
> int ar5k_eeprom_read_ants(struct ath_hal *, u_int32_t *, u_int);
> @@ -199,7 +198,6 @@ ath_hal_attach(u_int16_t device, void *a
> hal->ah_abi = HAL_ABI_VERSION;
> hal->ah_op_mode = HAL_M_STA;
> hal->ah_radar.r_enabled = AR5K_TUNE_RADAR_ALERT;
> - hal->ah_turbo = AH_FALSE;
> hal->ah_txpower.txp_tpc = AR5K_TUNE_TPC_TXPOWER;
> hal->ah_imr = 0;
> hal->ah_atim_window = 0;
> @@ -266,8 +264,6 @@ ath_hal_attach(u_int16_t device, void *a
> ar5k_rt_copy(&hal->ah_rt_11b, &ar5k_rt_11b);
> if (hal->ah_capabilities.cap_mode & HAL_MODE_11G)
> ar5k_rt_copy(&hal->ah_rt_11g, &ar5k_rt_11g);
> - if (hal->ah_capabilities.cap_mode & HAL_MODE_TURBO)
> - ar5k_rt_copy(&hal->ah_rt_turbo, &ar5k_rt_turbo);
> if (hal->ah_capabilities.cap_mode & HAL_MODE_XR)
> ar5k_rt_copy(&hal->ah_rt_xr, &ar5k_rt_xr);
>
> @@ -334,16 +330,6 @@ ath_hal_computetxtime(struct ath_hal *ha
> value = AR5K_OFDM_TX_TIME(rate->rateKbps, frame_length);
> break;
>
> - case IEEE80211_T_TURBO:
> - /*
> - * Orthogonal Frequency Division Multiplexing
> - * Atheros "Turbo Mode" (doubled rates)
> - */
> - if (AR5K_TURBO_NUM_BITS_PER_SYM(rate->rateKbps) == 0)
> - return (0);
> - value = AR5K_TURBO_TX_TIME(rate->rateKbps, frame_length);
> - break;
> -
> case IEEE80211_T_XR:
> /*
> * Orthogonal Frequency Division Multiplexing
> @@ -406,7 +392,7 @@ ath_hal_init_channels(struct ath_hal *ha
> IEEE80211_CHAN_2GHZ);
> max = ieee80211_mhz2ieee(IEEE80211_CHANNELS_2GHZ_MAX,
> IEEE80211_CHAN_2GHZ);
> - flags = CHANNEL_B | CHANNEL_TG |
> + flags = CHANNEL_B |
> (hal->ah_version == AR5K_AR5211 ?
> CHANNEL_PUREG : CHANNEL_G);
>
> @@ -424,7 +410,7 @@ ath_hal_init_channels(struct ath_hal *ha
> IEEE80211_CHAN_5GHZ);
> max = ieee80211_mhz2ieee(IEEE80211_CHANNELS_5GHZ_MAX,
> IEEE80211_CHAN_5GHZ);
> - flags = CHANNEL_A | CHANNEL_T | CHANNEL_XR;
> + flags = CHANNEL_A | CHANNEL_XR;
> goto debugchan;
> }
>
> @@ -455,12 +441,9 @@ ath_hal_init_channels(struct ath_hal *ha
> continue;
>
> /* Match modes */
> - if (ar5k_5ghz_channels[i].rc_mode & IEEE80211_CHAN_TURBO) {
> - all_channels[c].c_channel_flags = CHANNEL_T;
> - } else if (ar5k_5ghz_channels[i].rc_mode &
> - IEEE80211_CHAN_OFDM) {
> + if (ar5k_5ghz_channels[i].rc_mode & IEEE80211_CHAN_OFDM)
> all_channels[c].c_channel_flags = CHANNEL_A;
> - } else
> + else
> continue;
>
> /* Write channel and increment counter */
> @@ -494,9 +477,6 @@ ath_hal_init_channels(struct ath_hal *ha
> all_channels[c].c_channel_flags |=
> hal->ah_version == AR5K_AR5211 ?
> CHANNEL_PUREG : CHANNEL_G;
> - if (ar5k_2ghz_channels[i].rc_mode &
> - IEEE80211_CHAN_TURBO)
> - all_channels[c].c_channel_flags |= CHANNEL_TG;
> }
>
> /* Write channel and increment counter */
> @@ -637,15 +617,15 @@ ar5k_bitswap(u_int32_t val, u_int bits)
> }
>
> u_int
> -ar5k_htoclock(u_int usec, HAL_BOOL turbo)
> +ar5k_htoclock(u_int usec)
> {
> - return (turbo == AH_TRUE ? (usec * 80) : (usec * 40));
> + return (usec * 40);
> }
>
> u_int
> -ar5k_clocktoh(u_int clock, HAL_BOOL turbo)
> +ar5k_clocktoh(u_int clock)
> {
> - return (turbo == AH_TRUE ? (clock / 80) : (clock / 40));
> + return (clock / 40);
> }
>
> void
> @@ -923,9 +903,6 @@ ar5k_eeprom_init(struct ath_hal *hal)
> */
> mode = AR5K_EEPROM_MODE_11A;
>
> - ee->ee_turbo_max_power[mode] =
> - AR5K_EEPROM_HDR_T_5GHZ_DBM(ee->ee_header);
> -
> offset = AR5K_EEPROM_MODES_11A(hal->ah_ee_version);
>
> if ((ret = ar5k_eeprom_read_ants(hal, &offset, mode)) != 0)
> @@ -1011,7 +988,6 @@ ar5k_eeprom_init(struct ath_hal *hal)
> ar5k_eeprom_bin2freq(hal, (val >> 8) & 0xff, mode);
>
> AR5K_EEPROM_READ(offset++, val);
> - ee->ee_turbo_max_power[mode] = val & 0x7f;
> ee->ee_xr_power[mode] = (val >> 7) & 0x3f;
>
> AR5K_EEPROM_READ(offset++, val);
> @@ -1137,8 +1113,6 @@ ar5k_channel(struct ath_hal *hal, HAL_CH
>
> hal->ah_current_channel.c_channel = channel->c_channel;
> hal->ah_current_channel.c_channel_flags = channel->c_channel_flags;
> - hal->ah_turbo = channel->c_channel_flags == CHANNEL_T ?
> - AH_TRUE : AH_FALSE;
>
> return (AH_TRUE);
> }
> Index: sys/dev/ic/ar5xxx.h
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ar5xxx.h,v
> retrieving revision 1.55
> diff -u -p -r1.55 ar5xxx.h
> --- sys/dev/ic/ar5xxx.h 24 Nov 2015 17:11:39 -0000 1.55
> +++ sys/dev/ic/ar5xxx.h 10 Jan 2016 13:57:34 -0000
> @@ -400,20 +400,6 @@ typedef struct {
> { 1, IEEE80211_T_OFDM, 54000, 12, 0, 108, 8 } } \
> }
>
> -#define AR5K_RATES_TURBO { 8, {
> \
> - 255, 255, 255, 255, 255, 255, 255, 255, 6, 4, 2, 0, \
> - 7, 5, 3, 1, 255, 255, 255, 255, 255, 255, 255, 255, \
> - 255, 255, 255, 255, 255, 255, 255, 255 }, { \
> - { 1, IEEE80211_T_TURBO, 6000, 11, 0, 140, 0 }, \
> - { 1, IEEE80211_T_TURBO, 9000, 15, 0, 18, 0 }, \
> - { 1, IEEE80211_T_TURBO, 12000, 10, 0, 152, 2 }, \
> - { 1, IEEE80211_T_TURBO, 18000, 14, 0, 36, 2 }, \
> - { 1, IEEE80211_T_TURBO, 24000, 9, 0, 176, 4 }, \
> - { 1, IEEE80211_T_TURBO, 36000, 13, 0, 72, 4 }, \
> - { 1, IEEE80211_T_TURBO, 48000, 8, 0, 96, 4 }, \
> - { 1, IEEE80211_T_TURBO, 54000, 12, 0, 108, 4 } } \
> -}
> -
> #define AR5K_RATES_XR { 12, {
> \
> 255, 3, 1, 255, 255, 255, 2, 0, 10, 8, 6, 4, \
> 11, 9, 7, 5, 255, 255, 255, 255, 255, 255, 255, 255, \
> @@ -455,12 +441,9 @@ typedef struct {
> #define CHANNEL_B (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK)
> #define CHANNEL_G (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN)
> #define CHANNEL_PUREG (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM)
> -#define CHANNEL_T (CHANNEL_A | IEEE80211_CHAN_TURBO)
> -#define CHANNEL_TG (CHANNEL_PUREG | IEEE80211_CHAN_TURBO)
> #define CHANNEL_XR (CHANNEL_A | IEEE80211_CHAN_XR)
> #define CHANNEL_MODES \
> - (CHANNEL_A | CHANNEL_B | CHANNEL_G | CHANNEL_PUREG | \
> - CHANNEL_T | CHANNEL_TG | CHANNEL_XR)
> + (CHANNEL_A | CHANNEL_B | CHANNEL_G | CHANNEL_PUREG | CHANNEL_XR)
>
> typedef enum {
> HAL_CHIP_5GHZ = IEEE80211_CHAN_5GHZ,
> @@ -757,7 +740,6 @@ struct ar5k_eeprom_info {
> u_int16_t ee_i_cal[AR5K_EEPROM_N_MODES];
> u_int16_t ee_q_cal[AR5K_EEPROM_N_MODES];
> u_int16_t ee_fixed_bias[AR5K_EEPROM_N_MODES];
> - u_int16_t ee_turbo_max_power[AR5K_EEPROM_N_MODES];
> u_int16_t ee_xr_power[AR5K_EEPROM_N_MODES];
> u_int16_t ee_switch_settling[AR5K_EEPROM_N_MODES];
> u_int16_t ee_ant_tx_rx[AR5K_EEPROM_N_MODES];
> @@ -1102,7 +1084,6 @@ struct ath_hal {
> HAL_OPMODE ah_op_mode;
> HAL_POWER_MODE ah_power_mode;
> HAL_CHANNEL ah_current_channel;
> - HAL_BOOL ah_turbo;
> HAL_BOOL ah_calibration;
> HAL_BOOL ah_running;
> HAL_BOOL ah_single_chip;
> @@ -1114,7 +1095,6 @@ struct ath_hal {
> HAL_RATE_TABLE ah_rt_11a;
> HAL_RATE_TABLE ah_rt_11b;
> HAL_RATE_TABLE ah_rt_11g;
> - HAL_RATE_TABLE ah_rt_turbo;
> HAL_RATE_TABLE ah_rt_xr;
>
> u_int32_t ah_mac_srev;
> @@ -2290,8 +2270,8 @@ u_int16_t ar5k_regdomain_from_ieee(iee
> u_int16_t ar5k_get_regdomain(struct ath_hal *);
>
> u_int32_t ar5k_bitswap(u_int32_t, u_int);
> -u_int ar5k_clocktoh(u_int, HAL_BOOL);
> -u_int ar5k_htoclock(u_int, HAL_BOOL);
> +u_int ar5k_clocktoh(u_int);
> +u_int ar5k_htoclock(u_int);
> void ar5k_rt_copy(HAL_RATE_TABLE *, const HAL_RATE_TABLE *);
>
> HAL_BOOL ar5k_register_timeout(struct ath_hal *, u_int32_t,
> Index: sys/dev/ic/ath.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ath.c,v
> retrieving revision 1.109
> diff -u -p -r1.109 ath.c
> --- sys/dev/ic/ath.c 8 Dec 2015 13:34:22 -0000 1.109
> +++ sys/dev/ic/ath.c 8 Jan 2016 00:02:41 -0000
> @@ -299,7 +299,6 @@ ath_attach(u_int16_t devid, struct ath_s
> ath_rate_setup(sc, IEEE80211_MODE_11A);
> ath_rate_setup(sc, IEEE80211_MODE_11B);
> ath_rate_setup(sc, IEEE80211_MODE_11G);
> - ath_rate_setup(sc, IEEE80211_MODE_TURBO);
>
> error = ath_desc_alloc(sc);
> if (error != 0) {
> @@ -617,8 +616,6 @@ ath_chan2flags(struct ieee80211com *ic,
> return CHANNEL_B;
> case IEEE80211_MODE_11G:
> return CHANNEL_G;
> - case IEEE80211_MODE_TURBO:
> - return CHANNEL_T;
> default:
> panic("%s: unsupported mode %d", __func__, mode);
> return 0;
> @@ -3052,9 +3049,6 @@ ath_rate_setup(struct ath_softc *sc, u_i
> break;
> case IEEE80211_MODE_11G:
> sc->sc_rates[mode] = ath_hal_get_rate_table(ah, HAL_MODE_11G);
> - break;
> - case IEEE80211_MODE_TURBO:
> - sc->sc_rates[mode] = ath_hal_get_rate_table(ah, HAL_MODE_TURBO);
> break;
> default:
> DPRINTF(ATH_DEBUG_ANY,
> Index: sys/dev/ic/pgt.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/pgt.c,v
> retrieving revision 1.85
> diff -u -p -r1.85 pgt.c
> --- sys/dev/ic/pgt.c 11 Dec 2015 16:07:01 -0000 1.85
> +++ sys/dev/ic/pgt.c 8 Jan 2016 00:02:46 -0000
> @@ -2635,8 +2635,6 @@ badopmode:
> preamble = PGT_OID_PREAMBLE_MODE_SHORT;
> DPRINTF(("IEEE80211_MODE_11G\n"));
> break;
> - case IEEE80211_MODE_TURBO: /* not handled */
> - /* FALLTHROUGH */
> case IEEE80211_MODE_AUTO:
> profile = PGT_PROFILE_MIXED_G_WIFI;
> preamble = PGT_OID_PREAMBLE_MODE_DYNAMIC;
> Index: sys/net/if_media.h
> ===================================================================
> RCS file: /cvs/src/sys/net/if_media.h,v
> retrieving revision 1.35
> diff -u -p -r1.35 if_media.h
> --- sys/net/if_media.h 15 Nov 2015 00:17:47 -0000 1.35
> +++ sys/net/if_media.h 8 Jan 2016 00:07:47 -0000
> @@ -285,7 +285,6 @@ uint64_t ifmedia_baudrate(uint64_t);
> #define IFM_IEEE80211_IBSS 0x0000000000040000ULL /* Operate in
> IBSS mode */
> #define IFM_IEEE80211_IBSSMASTER 0x0000000000080000ULL /* Operate as
> an IBSS master */
> #define IFM_IEEE80211_MONITOR 0x0000000000100000ULL /* Operate in
> Monitor mode */
> -#define IFM_IEEE80211_TURBO 0x0000000000200000ULL /* Operate in
> Turbo mode */
>
> /* operating mode for multi-mode devices */
> #define IFM_IEEE80211_11A 0x0000000100000000ULL /* 5GHz, OFDM mode */
> @@ -652,7 +651,6 @@ struct ifmedia_description {
> { IFM_IEEE80211|IFM_IEEE80211_IBSS, "ibss" }, \
> { IFM_IEEE80211|IFM_IEEE80211_IBSSMASTER, "ibss-master" }, \
> { IFM_IEEE80211|IFM_IEEE80211_MONITOR, "monitor" }, \
> - { IFM_IEEE80211|IFM_IEEE80211_TURBO, "turbo" }, \
> \
> { IFM_TDM|IFM_TDM_HDLC_CRC16, "hdlc-crc16" }, \
> { IFM_TDM|IFM_TDM_PPP, "ppp" }, \
> Index: sys/net80211/ieee80211.c
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211.c,v
> retrieving revision 1.56
> diff -u -p -r1.56 ieee80211.c
> --- sys/net80211/ieee80211.c 5 Jan 2016 18:41:16 -0000 1.56
> +++ sys/net80211/ieee80211.c 8 Jan 2016 00:24:41 -0000
> @@ -109,8 +109,6 @@ ieee80211_channel_init(struct ifnet *ifp
> ic->ic_modecaps |= 1<<IEEE80211_MODE_11B;
> if (IEEE80211_IS_CHAN_PUREG(c))
> ic->ic_modecaps |= 1<<IEEE80211_MODE_11G;
> - if (IEEE80211_IS_CHAN_T(c))
> - ic->ic_modecaps |= 1<<IEEE80211_MODE_TURBO;
> if (IEEE80211_IS_CHAN_N(c))
> ic->ic_modecaps |= 1<<IEEE80211_MODE_11N;
> }
> @@ -277,13 +275,12 @@ ieee80211_media_init(struct ifnet *ifp,
> ifmedia_init(&ic->ic_media, 0, media_change, media_stat);
> maxrate = 0;
> memset(&allrates, 0, sizeof(allrates));
> - for (mode = IEEE80211_MODE_AUTO; mode <= IEEE80211_MODE_TURBO; mode++) {
> + for (mode = IEEE80211_MODE_AUTO; mode <= IEEE80211_MODE_11G; mode++) {
> static const uint64_t mopts[] = {
> IFM_AUTO,
> IFM_IEEE80211_11A,
> IFM_IEEE80211_11B,
> IFM_IEEE80211_11G,
> - IFM_IEEE80211_11A | IFM_IEEE80211_TURBO,
> };
> if ((ic->ic_modecaps & (1<<mode)) == 0)
> continue;
> @@ -442,15 +439,7 @@ ieee80211_media_change(struct ifnet *ifp
> default:
> return EINVAL;
> }
> - /*
> - * Turbo mode is an ``option''. Eventually it
> - * needs to be applied to 11g too.
> - */
> - if (ime->ifm_media & IFM_IEEE80211_TURBO) {
> - if (newphymode != IEEE80211_MODE_11A)
> - return EINVAL;
> - newphymode = IEEE80211_MODE_TURBO;
> - }
> +
> /*
> * Validate requested mode is available.
> */
> @@ -659,10 +648,6 @@ ieee80211_media_status(struct ifnet *ifp
> case IEEE80211_MODE_11G:
> imr->ifm_active |= IFM_IEEE80211_11G;
> break;
> - case IEEE80211_MODE_TURBO:
> - imr->ifm_active |= IFM_IEEE80211_11A
> - | IFM_IEEE80211_TURBO;
> - break;
> case IEEE80211_MODE_11N:
> imr->ifm_active |= IFM_IEEE80211_11N;
> break;
> @@ -705,7 +690,6 @@ ieee80211_setbasicrates(struct ieee80211
> { 3, { 12, 24, 48 } }, /* IEEE80211_MODE_11A */
> { 2, { 2, 4 } }, /* IEEE80211_MODE_11B */
> { 4, { 2, 4, 11, 22 } }, /* IEEE80211_MODE_11G */
> - { 0 }, /* IEEE80211_MODE_TURBO */
> { 0 }, /* IEEE80211_MODE_11N */
> };
> enum ieee80211_phymode mode;
> @@ -743,7 +727,6 @@ ieee80211_setmode(struct ieee80211com *i
> IEEE80211_CHAN_A, /* IEEE80211_MODE_11A */
> IEEE80211_CHAN_B, /* IEEE80211_MODE_11B */
> IEEE80211_CHAN_PUREG, /* IEEE80211_MODE_11G */
> - IEEE80211_CHAN_T, /* IEEE80211_MODE_TURBO */
> IEEE80211_CHAN_HT, /* IEEE80211_MODE_11N */
> };
> const struct ieee80211_channel *c;
> @@ -766,14 +749,9 @@ ieee80211_setmode(struct ieee80211com *i
> modeflags = chanflags[mode];
> for (i = 0; i <= IEEE80211_CHAN_MAX; i++) {
> c = &ic->ic_channels[i];
> - if (mode == IEEE80211_MODE_AUTO) {
> - /* ignore turbo channels for autoselect */
> - if ((c->ic_flags &~ IEEE80211_CHAN_TURBO) != 0)
> - break;
> - } else {
> - if ((c->ic_flags & modeflags) == modeflags)
> - break;
> - }
> + if (mode == IEEE80211_MODE_AUTO ||
> + (c->ic_flags & modeflags) == modeflags)
> + break;
> }
> if (i > IEEE80211_CHAN_MAX) {
> DPRINTF(("no channels found for mode %u\n", mode));
> @@ -786,14 +764,9 @@ ieee80211_setmode(struct ieee80211com *i
> memset(ic->ic_chan_active, 0, sizeof(ic->ic_chan_active));
> for (i = 0; i <= IEEE80211_CHAN_MAX; i++) {
> c = &ic->ic_channels[i];
> - if (mode == IEEE80211_MODE_AUTO) {
> - /* take anything but pure turbo channels */
> - if ((c->ic_flags &~ IEEE80211_CHAN_TURBO) != 0)
> - setbit(ic->ic_chan_active, i);
> - } else {
> - if ((c->ic_flags & modeflags) == modeflags)
> - setbit(ic->ic_chan_active, i);
> - }
> + if (mode == IEEE80211_MODE_AUTO ||
> + (c->ic_flags & modeflags) == modeflags)
> + setbit(ic->ic_chan_active, i);
> }
> /*
> * If no current/default channel is setup or the current
> @@ -846,10 +819,6 @@ ieee80211_next_mode(struct ifnet *ifp)
> for (++ic->ic_curmode;
> ic->ic_curmode <= IEEE80211_MODE_MAX;
> ic->ic_curmode++) {
> - /* Wrap around and ignore turbo mode */
> - if (ic->ic_curmode == IEEE80211_MODE_TURBO)
> - continue;
> -
> /*
> * Skip over 11n mode. Its set of channels is the superset
> * of all channels supported by the other modes.
> @@ -879,8 +848,6 @@ ieee80211_next_mode(struct ifnet *ifp)
> * Because the result of this function is ultimately used to select a
> * rate from the rate set of the returned mode, it must not return
> * IEEE80211_MODE_11N, which uses MCS instead of rates for unicast frames.
> - *
> - * XXX never returns turbo modes -dcy
> */
> enum ieee80211_phymode
> ieee80211_chan2mode(struct ieee80211com *ic,
> @@ -896,12 +863,9 @@ ieee80211_chan2mode(struct ieee80211com
> return ic->ic_curmode;
> /*
> * In autoselect or 11n mode; deduce a mode based on the channel
> - * characteristics. We assume that turbo-only channels
> - * are not considered when the channel set is constructed.
> + * characteristics.
> */
> - if (IEEE80211_IS_CHAN_T(chan))
> - return IEEE80211_MODE_TURBO;
> - else if (IEEE80211_IS_CHAN_5GHZ(chan))
> + if (IEEE80211_IS_CHAN_5GHZ(chan))
> return IEEE80211_MODE_11A;
> else if (chan->ic_flags & (IEEE80211_CHAN_OFDM|IEEE80211_CHAN_DYN))
> return IEEE80211_MODE_11G;
> @@ -918,7 +882,6 @@ ieee80211_mcs2media(struct ieee80211com
> {
> switch (mode) {
> case IEEE80211_MODE_11A:
> - case IEEE80211_MODE_TURBO:
> case IEEE80211_MODE_11B:
> case IEEE80211_MODE_11G:
> /* these modes use rates, not MCS */
> @@ -1002,7 +965,6 @@ ieee80211_rate2media(struct ieee80211com
> mask = rate & IEEE80211_RATE_VAL;
> switch (mode) {
> case IEEE80211_MODE_11A:
> - case IEEE80211_MODE_TURBO:
> mask |= IFM_IEEE80211_11A;
> break;
> case IEEE80211_MODE_11B:
> Index: sys/net80211/ieee80211_ioctl.h
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211_ioctl.h,v
> retrieving revision 1.22
> diff -u -p -r1.22 ieee80211_ioctl.h
> --- sys/net80211/ieee80211_ioctl.h 15 Nov 2015 01:05:25 -0000 1.22
> +++ sys/net80211/ieee80211_ioctl.h 8 Jan 2016 00:08:22 -0000
> @@ -167,7 +167,6 @@ struct ieee80211_channel {
> /*
> * Channel attributes (XXX must keep in sync with radiotap flags).
> */
> -#define IEEE80211_CHAN_TURBO 0x0010 /* Turbo channel */
> #define IEEE80211_CHAN_CCK 0x0020 /* CCK channel */
> #define IEEE80211_CHAN_OFDM 0x0040 /* OFDM channel */
> #define IEEE80211_CHAN_2GHZ 0x0080 /* 2 GHz spectrum channel */
> Index: sys/net80211/ieee80211_output.c
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211_output.c,v
> retrieving revision 1.106
> diff -u -p -r1.106 ieee80211_output.c
> --- sys/net80211/ieee80211_output.c 6 Jan 2016 19:56:50 -0000 1.106
> +++ sys/net80211/ieee80211_output.c 8 Jan 2016 00:08:48 -0000
> @@ -270,7 +270,6 @@ ieee80211_mgmt_output(struct ifnet *ifp,
> * 11A 15 1023
> * 11B 31 1023
> * 11G 15* 1023 (*) aCWmin(1)
> - * Turbo A/G 7 1023 (Atheros proprietary mode)
> */
> #if 0
> static const struct ieee80211_edca_ac_params
> @@ -293,12 +292,6 @@ static const struct ieee80211_edca_ac_pa
> [EDCA_AC_VI] = { 3, 4, 2, 94 },
> [EDCA_AC_VO] = { 2, 3, 2, 47 }
> },
> - [IEEE80211_MODE_TURBO] = {
> - [EDCA_AC_BK] = { 3, 10, 7, 0 },
> - [EDCA_AC_BE] = { 3, 10, 2, 0 },
> - [EDCA_AC_VI] = { 2, 3, 2, 94 },
> - [EDCA_AC_VO] = { 2, 2, 1, 47 }
> - }
> };
> #endif
>
> @@ -323,12 +316,6 @@ static const struct ieee80211_edca_ac_pa
> [EDCA_AC_VI] = { 3, 4, 1, 94 },
> [EDCA_AC_VO] = { 2, 3, 1, 47 }
> },
> - [IEEE80211_MODE_TURBO] = {
> - [EDCA_AC_BK] = { 3, 10, 7, 0 },
> - [EDCA_AC_BE] = { 3, 5, 2, 0 },
> - [EDCA_AC_VI] = { 2, 3, 1, 94 },
> - [EDCA_AC_VO] = { 2, 2, 1, 47 }
> - }
> };
> #endif /* IEEE80211_STA_ONLY */
>
> Index: sys/net80211/ieee80211_proto.c
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211_proto.c,v
> retrieving revision 1.59
> diff -u -p -r1.59 ieee80211_proto.c
> --- sys/net80211/ieee80211_proto.c 7 Jan 2016 23:22:31 -0000 1.59
> +++ sys/net80211/ieee80211_proto.c 8 Jan 2016 00:06:12 -0000
> @@ -73,7 +73,6 @@ const char * const ieee80211_phymode_nam
> "11a", /* IEEE80211_MODE_11A */
> "11b", /* IEEE80211_MODE_11B */
> "11g", /* IEEE80211_MODE_11G */
> - "turbo", /* IEEE80211_MODE_TURBO */
> "11n", /* IEEE80211_MODE_11N */
> };
>
> Index: sys/net80211/ieee80211_radiotap.h
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211_radiotap.h,v
> retrieving revision 1.12
> diff -u -p -r1.12 ieee80211_radiotap.h
> --- sys/net80211/ieee80211_radiotap.h 15 Nov 2015 01:05:25 -0000 1.12
> +++ sys/net80211/ieee80211_radiotap.h 8 Jan 2016 00:09:07 -0000
> @@ -187,7 +187,6 @@ enum ieee80211_radiotap_type {
>
> #ifndef _KERNEL
> /* For IEEE80211_RADIOTAP_CHANNEL */
> -#define IEEE80211_CHAN_TURBO 0x0010 /* Turbo channel */
> #define IEEE80211_CHAN_CCK 0x0020 /* CCK channel */
> #define IEEE80211_CHAN_OFDM 0x0040 /* OFDM channel */
> #define IEEE80211_CHAN_2GHZ 0x0080 /* 2 GHz spectrum channel */
> Index: sys/net80211/ieee80211_regdomain.h
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211_regdomain.h,v
> retrieving revision 1.8
> diff -u -p -r1.8 ieee80211_regdomain.h
> --- sys/net80211/ieee80211_regdomain.h 18 Dec 2005 17:59:59 -0000
> 1.8
> +++ sys/net80211/ieee80211_regdomain.h 8 Jan 2016 00:09:42 -0000
> @@ -522,8 +522,6 @@ struct ieee80211_regchannel {
> { 2472, DMN_APLD, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> \
> { 2432, DMN_ETSIB, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> - { 2437, DMN_ETSIB, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM| \
> - IEEE80211_CHAN_TURBO }, \
> { 2442, DMN_ETSIB, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> \
> { 2412, DMN_ETSIC, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> @@ -531,8 +529,6 @@ struct ieee80211_regchannel {
> { 2422, DMN_ETSIC, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2427, DMN_ETSIC, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2432, DMN_ETSIC, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> - { 2437, DMN_ETSIC, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM| \
> - IEEE80211_CHAN_TURBO }, \
> { 2442, DMN_ETSIC, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2447, DMN_ETSIC, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2452, DMN_ETSIC, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> @@ -546,8 +542,6 @@ struct ieee80211_regchannel {
> { 2422, DMN_FCCA, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2427, DMN_FCCA, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2432, DMN_FCCA, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> - { 2437, DMN_FCCA, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM| \
> - IEEE80211_CHAN_TURBO }, \
> { 2442, DMN_FCCA, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2447, DMN_FCCA, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2452, DMN_FCCA, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> @@ -574,8 +568,6 @@ struct ieee80211_regchannel {
> { 2422, DMN_WORLD, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2427, DMN_WORLD, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2432, DMN_WORLD, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> - { 2437, DMN_WORLD, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM| \
> - IEEE80211_CHAN_TURBO }, \
> { 2442, DMN_WORLD, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2447, DMN_WORLD, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> { 2452, DMN_WORLD, IEEE80211_CHAN_CCK|IEEE80211_CHAN_OFDM }, \
> @@ -692,20 +684,15 @@ struct ieee80211_regchannel {
> \
> { 5180, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> { 5200, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> - { 5210, DMN_FCC1, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5220, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> { 5240, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> - { 5250, DMN_FCC1, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5260, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> { 5280, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> - { 5290, DMN_FCC1, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5300, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> { 5320, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> { 5745, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> - { 5760, DMN_FCC1, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5765, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> { 5785, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> - { 5800, DMN_FCC1, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5805, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> { 5825, DMN_FCC1, IEEE80211_CHAN_OFDM }, \
> \
> @@ -725,13 +712,10 @@ struct ieee80211_regchannel {
> \
> { 5180, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5200, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> - { 5210, DMN_FCC3, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5220, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5240, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> - { 5250, DMN_FCC3, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5260, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5280, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> - { 5290, DMN_FCC3, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5300, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5320, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5500, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> @@ -746,10 +730,8 @@ struct ieee80211_regchannel {
> { 5680, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5700, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5745, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> - { 5760, DMN_FCC3, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5765, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5785, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> - { 5800, DMN_FCC3, IEEE80211_CHAN_OFDM|IEEE80211_CHAN_TURBO }, \
> { 5805, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> { 5825, DMN_FCC3, IEEE80211_CHAN_OFDM }, \
> \
> Index: sys/net80211/ieee80211_var.h
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211_var.h,v
> retrieving revision 1.69
> diff -u -p -r1.69 ieee80211_var.h
> --- sys/net80211/ieee80211_var.h 6 Jan 2016 19:56:50 -0000 1.69
> +++ sys/net80211/ieee80211_var.h 8 Jan 2016 00:07:07 -0000
> @@ -60,7 +60,6 @@
> enum ieee80211_phytype {
> IEEE80211_T_DS, /* direct sequence spread spectrum */
> IEEE80211_T_OFDM, /* frequency division multiplexing */
> - IEEE80211_T_TURBO, /* high rate OFDM, aka turbo mode */
> IEEE80211_T_XR /* extended range mode */
> };
> #define IEEE80211_T_CCK IEEE80211_T_DS /* more common nomenclature */
> @@ -71,8 +70,7 @@ enum ieee80211_phymode {
> IEEE80211_MODE_11A = 1, /* 5GHz, OFDM */
> IEEE80211_MODE_11B = 2, /* 2GHz, CCK */
> IEEE80211_MODE_11G = 3, /* 2GHz, OFDM */
> - IEEE80211_MODE_TURBO = 4, /* 5GHz, OFDM, 2x clock */
> - IEEE80211_MODE_11N = 5, /* 11n, 2GHz/5GHz */
> + IEEE80211_MODE_11N = 4, /* 11n, 2GHz/5GHz */
> };
> #define IEEE80211_MODE_MAX (IEEE80211_MODE_11N+1)
>
> @@ -106,7 +104,6 @@ struct ieee80211_channel {
> /*
> * Channel attributes (XXX must keep in sync with radiotap flags).
> */
> -#define IEEE80211_CHAN_TURBO 0x0010 /* Turbo channel */
> #define IEEE80211_CHAN_CCK 0x0020 /* CCK channel */
> #define IEEE80211_CHAN_OFDM 0x0040 /* OFDM channel */
> #define IEEE80211_CHAN_2GHZ 0x0080 /* 2 GHz spectrum channel */
> @@ -127,10 +124,6 @@ struct ieee80211_channel {
> (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM)
> #define IEEE80211_CHAN_G \
> (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN)
> -#define IEEE80211_CHAN_T \
> - (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO)
> -#define IEEE80211_CHAN_TG \
> - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO)
>
> #define IEEE80211_IS_CHAN_A(_c) \
> (((_c)->ic_flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A)
> @@ -140,10 +133,6 @@ struct ieee80211_channel {
> (((_c)->ic_flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG)
> #define IEEE80211_IS_CHAN_G(_c) \
> (((_c)->ic_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G)
> -#define IEEE80211_IS_CHAN_T(_c) \
> - (((_c)->ic_flags & IEEE80211_CHAN_T) == IEEE80211_CHAN_T)
> -#define IEEE80211_IS_CHAN_TG(_c) \
> - (((_c)->ic_flags & IEEE80211_CHAN_TG) == IEEE80211_CHAN_TG)
> #define IEEE80211_IS_CHAN_N(_c) \
> (((_c)->ic_flags & IEEE80211_CHAN_HT) == IEEE80211_CHAN_HT)
>
> Index: usr.sbin/hostapd/print-802_11.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/hostapd/print-802_11.c,v
> retrieving revision 1.8
> diff -u -p -r1.8 print-802_11.c
> --- usr.sbin/hostapd/print-802_11.c 15 Jul 2015 03:05:00 -0000 1.8
> +++ usr.sbin/hostapd/print-802_11.c 10 Jan 2016 13:59:11 -0000
> @@ -539,8 +539,6 @@ ieee802_11_radio_if_print(u_int8_t *buf,
> flags & IEEE80211_CHAN_5GHZ)
> PRINTF(", 11a");
>
> - if (flags & IEEE80211_CHAN_TURBO)
> - PRINTF(", TURBO");
> if (flags & IEEE80211_CHAN_XR)
> PRINTF(", XR");
> }
> Index: usr.sbin/tcpdump/print-802_11.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/tcpdump/print-802_11.c,v
> retrieving revision 1.27
> diff -u -p -r1.27 print-802_11.c
> --- usr.sbin/tcpdump/print-802_11.c 13 Oct 2015 14:36:15 -0000 1.27
> +++ usr.sbin/tcpdump/print-802_11.c 10 Jan 2016 13:59:23 -0000
> @@ -953,8 +953,6 @@ ieee802_11_radio_if_print(u_char *user,
> flags & IEEE80211_CHAN_5GHZ)
> printf(", 11a");
>
> - if (flags & IEEE80211_CHAN_TURBO)
> - printf(", TURBO");
> if (flags & IEEE80211_CHAN_XR)
> printf(", XR");
> }
>
>