!ieee80211_is_data(fc);
 }
 
-static void rc_send_low_broadcast(s8 *idx, u32 basic_rates,
+static void rc_send_low_basicrate(s8 *idx, u32 basic_rates,
                                  struct ieee80211_supported_band *sband)
 {
        u8 i;
 }
 
 
-bool rate_control_send_low(struct ieee80211_sta *sta,
+bool rate_control_send_low(struct ieee80211_sta *pubsta,
                           void *priv_sta,
                           struct ieee80211_tx_rate_control *txrc)
 {
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(txrc->skb);
        struct ieee80211_supported_band *sband = txrc->sband;
+       struct sta_info *sta;
        int mcast_rate;
+       bool use_basicrate = false;
 
-       if (!sta || !priv_sta || rc_no_data_or_no_ack_use_min(txrc)) {
-               __rate_control_send_low(txrc->hw, sband, sta, info);
+       if (!pubsta || !priv_sta || rc_no_data_or_no_ack_use_min(txrc)) {
+               __rate_control_send_low(txrc->hw, sband, pubsta, info);
 
-               if (!sta && txrc->bss) {
+               if (!pubsta && txrc->bss) {
                        mcast_rate = txrc->bss_conf->mcast_rate[sband->band];
                        if (mcast_rate > 0) {
                                info->control.rates[0].idx = mcast_rate - 1;
                                return true;
                        }
+                       use_basicrate = true;
+               } else if (pubsta) {
+                       sta = container_of(pubsta, struct sta_info, sta);
+                       if (ieee80211_vif_is_mesh(&sta->sdata->vif))
+                               use_basicrate = true;
+               }
 
-                       rc_send_low_broadcast(&info->control.rates[0].idx,
+               if (use_basicrate)
+                       rc_send_low_basicrate(&info->control.rates[0].idx,
                                              txrc->bss_conf->basic_rates,
                                              sband);
-               }
+
                return true;
        }
        return false;