]> Pileus Git - ~andy/linux/blobdiff - net/mac80211/ieee80211_rate.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
[~andy/linux] / net / mac80211 / ieee80211_rate.c
index 65fc9ad615e9a40f0bec56ccebdcc12147647221..b957e67c5fba83dff74f2a1ced9c5a200a3b5217 100644 (file)
@@ -115,6 +115,10 @@ ieee80211_rate_control_ops_get(const char *name)
                /* try default if specific alg requested but not found */
                ops = ieee80211_try_rate_control_ops_get(ieee80211_default_rc_algo);
 
+       /* try built-in one if specific alg requested but not found */
+       if (!ops && strlen(CONFIG_MAC80211_RC_DEFAULT))
+               ops = ieee80211_try_rate_control_ops_get(CONFIG_MAC80211_RC_DEFAULT);
+
        return ops;
 }
 
@@ -164,29 +168,13 @@ void rate_control_get_rate(struct net_device *dev,
 {
        struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
        struct rate_control_ref *ref = local->rate_ctrl;
-       struct ieee80211_sub_if_data *sdata;
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
        struct sta_info *sta = sta_info_get(local, hdr->addr1);
        int i;
-       u16 fc;
 
        memset(sel, 0, sizeof(struct rate_selection));
 
-       /* Send management frames and broadcast/multicast data using lowest
-        * rate. */
-       fc = le16_to_cpu(hdr->frame_control);
-       if ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA ||
-           is_multicast_ether_addr(hdr->addr1))
-               sel->rate = rate_lowest(local, mode, sta);
-
-       /* If a forced rate is in effect, select it. */
-       sdata = IEEE80211_DEV_TO_SUB_IF(dev);
-       if (sdata->bss && sdata->bss->force_unicast_rateidx > -1)
-               sel->rate = &mode->rates[sdata->bss->force_unicast_rateidx];
-
-       /* If we haven't found the rate yet, ask the rate control algo. */
-       if (!sel->rate)
-               ref->ops->get_rate(ref->priv, dev, mode, skb, sel);
+       ref->ops->get_rate(ref->priv, dev, mode, skb, sel);
 
        /* Select a non-ERP backup rate. */
        if (!sel->nonerp) {