#include "power.h"
 #include "usbpipe.h"
 
-static const u8 fallback_rate0[5][5] = {
-       {RATE_18M, RATE_18M, RATE_12M, RATE_12M, RATE_12M},
-       {RATE_24M, RATE_24M, RATE_18M, RATE_12M, RATE_12M},
-       {RATE_36M, RATE_36M, RATE_24M, RATE_18M, RATE_18M},
-       {RATE_48M, RATE_48M, RATE_36M, RATE_24M, RATE_24M},
-       {RATE_54M, RATE_54M, RATE_48M, RATE_36M, RATE_36M}
-};
-
-static const u8 fallback_rate1[5][5] = {
-       {RATE_18M, RATE_18M, RATE_12M, RATE_6M, RATE_6M},
-       {RATE_24M, RATE_24M, RATE_18M, RATE_6M, RATE_6M},
-       {RATE_36M, RATE_36M, RATE_24M, RATE_12M, RATE_12M},
-       {RATE_48M, RATE_48M, RATE_24M, RATE_12M, RATE_12M},
-       {RATE_54M, RATE_54M, RATE_36M, RATE_18M, RATE_18M}
-};
-
 int vnt_int_start_interrupt(struct vnt_private *priv)
 {
        int ret = 0;
 {
        struct vnt_usb_send_context *context;
        struct ieee80211_tx_info *info;
-       struct ieee80211_rate *rate;
        u8 tx_retry = (tsr & 0xf0) >> 4;
        s8 idx;
 
        info = IEEE80211_SKB_CB(context->skb);
        idx = info->control.rates[0].idx;
 
-       if (context->fb_option && !(tsr & (TSR_TMO | TSR_RETRYTMO))) {
-               u8 tx_rate;
-               u8 retry = tx_retry;
-
-               rate = ieee80211_get_tx_rate(priv->hw, info);
-               tx_rate = rate->hw_value - RATE_18M;
-
-               if (retry > 4)
-                       retry = 4;
-
-               if (context->fb_option == AUTO_FB_0)
-                       tx_rate = fallback_rate0[tx_rate][retry];
-               else if (context->fb_option == AUTO_FB_1)
-                       tx_rate = fallback_rate1[tx_rate][retry];
-
-               if (info->band == NL80211_BAND_5GHZ)
-                       idx = tx_rate - RATE_6M;
-               else
-                       idx = tx_rate;
-       }
-
        ieee80211_tx_info_clear_status(info);
 
        info->status.rates[0].count = tx_retry;
 
        struct vnt_usb_send_context *tx_context;
        unsigned long flags;
        u16 tx_bytes, tx_header_size, tx_body_size, current_rate, duration_id;
-       u8 pkt_type, fb_option = AUTO_FB_NONE;
+       u8 pkt_type;
        bool need_rts = false;
        bool need_mic = false;
 
 
        tx_buffer_head->current_rate = cpu_to_le16(current_rate);
 
-       /* legacy rates TODO use ieee80211_tx_rate */
-       if (current_rate >= RATE_18M && ieee80211_is_data(hdr->frame_control)) {
-               if (priv->auto_fb_ctrl == AUTO_FB_0) {
-                       tx_buffer_head->fifo_ctl |=
-                                               cpu_to_le16(FIFOCTL_AUTO_FB_0);
-
-                       priv->tx_rate_fb0 =
-                               vnt_fb_opt0[FB_RATE0][current_rate - RATE_18M];
-                       priv->tx_rate_fb1 =
-                               vnt_fb_opt0[FB_RATE1][current_rate - RATE_18M];
-
-                       fb_option = AUTO_FB_0;
-               } else if (priv->auto_fb_ctrl == AUTO_FB_1) {
-                       tx_buffer_head->fifo_ctl |=
-                                               cpu_to_le16(FIFOCTL_AUTO_FB_1);
-
-                       priv->tx_rate_fb0 =
-                               vnt_fb_opt1[FB_RATE0][current_rate - RATE_18M];
-                       priv->tx_rate_fb1 =
-                               vnt_fb_opt1[FB_RATE1][current_rate - RATE_18M];
-
-                       fb_option = AUTO_FB_1;
-               }
-       }
-
-       tx_context->fb_option = fb_option;
-
        duration_id = vnt_generate_tx_parameter(tx_context, tx_buffer, &mic_hdr,
                                                need_mic, need_rts);