> Date: Mon, 11 Jan 2016 10:30:27 +0100
> From: Stefan Sperling <s...@stsp.name>
> 
> 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");
>       }
> 
> 

Reply via email to