.. kernel-doc:: include/net/mac80211.h
    :functions: ieee80211_tx_rate_control
 
-.. kernel-doc:: include/net/mac80211.h
-   :functions: rate_control_send_low
-
 TBD
 
 This part of the book describes mac80211 internals.
 
                il_sta = NULL;
        }
 
-       if (rate_control_send_low(sta, il_sta, txrc))
-               return;
-
        rate_mask = sta->supp_rates[sband->band];
 
        /* get user max rate if set */
 
                il_sta = NULL;
        }
 
-       /* Send management frames and NO_ACK data using lowest rate. */
-       if (rate_control_send_low(sta, il_sta, txrc))
-               return;
-
        if (!lq_sta)
                return;
 
 
                priv_sta = NULL;
        }
 
-       /* Send management frames and NO_ACK data using lowest rate. */
-       if (rate_control_send_low(sta, priv_sta, txrc))
-               return;
-
        rate_idx  = lq_sta->last_txrate_idx;
 
        if (lq_sta->last_rate_n_flags & RATE_MCS_HT_MSK) {
 
                mvm_sta = NULL;
        }
 
-       /* Send management frames and NO_ACK data using lowest rate. */
-       if (rate_control_send_low(sta, mvm_sta, txrc))
-               return;
-
        if (!mvm_sta)
                return;
 
 
        u8 try_per_rate, i, rix;
        bool not_data = !ieee80211_is_data(fc);
 
-       if (rate_control_send_low(sta, priv_sta, txrc))
-               return;
-
        rix = _rtl_rc_get_highest_rix(rtlpriv, sta, skb, not_data);
        try_per_rate = 1;
        _rtl_rc_rate_set_series(rtlpriv, sta, &rates[0], txrc,
 
        return (sta == NULL || sta->supp_rates[band] & BIT(index));
 }
 
-/**
- * rate_control_send_low - helper for drivers for management/no-ack frames
- *
- * Rate control algorithms that agree to use the lowest rate to
- * send management frames and NO_ACK data with the respective hw
- * retries should use this in the beginning of their mac80211 get_rate
- * callback. If true is returned the rate control can simply return.
- * If false is returned we guarantee that sta and sta and priv_sta is
- * not null.
- *
- * Rate control algorithms wishing to do more intelligent selection of
- * rate for multicast/broadcast frames may choose to not use this.
- *
- * @sta: &struct ieee80211_sta pointer to the target destination. Note
- *     that this may be null.
- * @priv_sta: private rate control structure. This may be null.
- * @txrc: rate control information we sholud populate for mac80211.
- */
-bool rate_control_send_low(struct ieee80211_sta *sta,
-                          void *priv_sta,
-                          struct ieee80211_tx_rate_control *txrc);
-
-
 static inline s8
 rate_lowest_index(struct ieee80211_supported_band *sband,
                  struct ieee80211_sta *sta)
 
 }
 
 
-bool rate_control_send_low(struct ieee80211_sta *pubsta,
-                          void *priv_sta,
-                          struct ieee80211_tx_rate_control *txrc)
+static bool rate_control_send_low(struct ieee80211_sta *pubsta,
+                                 struct ieee80211_tx_rate_control *txrc)
 {
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(txrc->skb);
        struct ieee80211_supported_band *sband = txrc->sband;
        int mcast_rate;
        bool use_basicrate = false;
 
-       if (!pubsta || !priv_sta || rc_no_data_or_no_ack_use_min(txrc)) {
+       if (!pubsta || rc_no_data_or_no_ack_use_min(txrc)) {
                __rate_control_send_low(txrc->hw, sband, pubsta, info,
                                        txrc->rate_idx_mask);
 
        }
        return false;
 }
-EXPORT_SYMBOL(rate_control_send_low);
 
 static bool rate_idx_match_legacy_mask(s8 *rate_idx, int n_bitrates, u32 mask)
 {
        if (ieee80211_hw_check(&sdata->local->hw, HAS_RATE_CONTROL))
                return;
 
+       if (rate_control_send_low(ista, txrc))
+               return;
+
        if (ista) {
                spin_lock_bh(&sta->rate_ctrl_lock);
                ref->ops->get_rate(ref->priv, ista, priv_sta, txrc);
                spin_unlock_bh(&sta->rate_ctrl_lock);
        } else {
-               ref->ops->get_rate(ref->priv, NULL, NULL, txrc);
+               rate_control_send_low(NULL, txrc);
        }
 
        if (ieee80211_hw_check(&sdata->local->hw, SUPPORTS_RC_TABLE))
 
        int delta;
        int sampling_ratio;
 
-       /* management/no-ack frames do not use rate control */
-       if (rate_control_send_low(sta, priv_sta, txrc))
-               return;
-
        /* check multi-rate-retry capabilities & adjust lookaround_rate */
        mrr_capable = mp->has_mrr &&
                      !txrc->rts &&
 
        struct minstrel_priv *mp = priv;
        int sample_idx;
 
-       if (rate_control_send_low(sta, priv_sta, txrc))
-               return;
-
        if (!msp->is_ht)
                return mac80211_minstrel.get_rate(priv, sta, &msp->legacy, txrc);