Skip to content

Commit

Permalink
mac80211: clean up rate control code
Browse files Browse the repository at this point in the history
It seems exceedingly unlikely that we'll ever
support swapping rate control algorithms at
runtime, so remove the unused refcounting code.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Johannes Berg authored and John W. Linville committed Jan 24, 2012
1 parent 151a02f commit 889cbb9
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 34 deletions.
27 changes: 4 additions & 23 deletions net/mac80211/rate.c
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,6 @@ static struct rate_control_ref *rate_control_alloc(const char *name,
ref = kmalloc(sizeof(struct rate_control_ref), GFP_KERNEL);
if (!ref)
goto fail_ref;
kref_init(&ref->kref);
ref->local = local;
ref->ops = ieee80211_rate_control_ops_get(name);
if (!ref->ops)
Expand All @@ -184,11 +183,8 @@ static struct rate_control_ref *rate_control_alloc(const char *name,
return NULL;
}

static void rate_control_release(struct kref *kref)
static void rate_control_free(struct rate_control_ref *ctrl_ref)
{
struct rate_control_ref *ctrl_ref;

ctrl_ref = container_of(kref, struct rate_control_ref, kref);
ctrl_ref->ops->free(ctrl_ref->priv);

#ifdef CONFIG_MAC80211_DEBUGFS
Expand Down Expand Up @@ -383,21 +379,10 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
BUG_ON(info->control.rates[0].idx < 0);
}

struct rate_control_ref *rate_control_get(struct rate_control_ref *ref)
{
kref_get(&ref->kref);
return ref;
}

void rate_control_put(struct rate_control_ref *ref)
{
kref_put(&ref->kref, rate_control_release);
}

int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
const char *name)
{
struct rate_control_ref *ref, *old;
struct rate_control_ref *ref;

ASSERT_RTNL();

Expand All @@ -417,12 +402,8 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
return -ENOENT;
}

old = local->rate_ctrl;
WARN_ON(local->rate_ctrl);
local->rate_ctrl = ref;
if (old) {
rate_control_put(old);
sta_info_flush(local, NULL);
}

wiphy_debug(local->hw.wiphy, "Selected rate control algorithm '%s'\n",
ref->ops->name);
Expand All @@ -440,6 +421,6 @@ void rate_control_deinitialize(struct ieee80211_local *local)
return;

local->rate_ctrl = NULL;
rate_control_put(ref);
rate_control_free(ref);
}

4 changes: 0 additions & 4 deletions net/mac80211/rate.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <linux/types.h>
#include <linux/kref.h>
#include <net/mac80211.h>
#include "ieee80211_i.h"
#include "sta_info.h"
Expand All @@ -23,14 +22,11 @@ struct rate_control_ref {
struct ieee80211_local *local;
struct rate_control_ops *ops;
void *priv;
struct kref kref;
};

void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
struct sta_info *sta,
struct ieee80211_tx_rate_control *txrc);
struct rate_control_ref *rate_control_get(struct rate_control_ref *ref);
void rate_control_put(struct rate_control_ref *ref);

static inline void rate_control_tx_status(struct ieee80211_local *local,
struct ieee80211_supported_band *sband,
Expand Down
10 changes: 3 additions & 7 deletions net/mac80211/sta_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,10 +208,8 @@ struct sta_info *sta_info_get_by_idx(struct ieee80211_sub_if_data *sdata,
*/
void sta_info_free(struct ieee80211_local *local, struct sta_info *sta)
{
if (sta->rate_ctrl) {
if (sta->rate_ctrl)
rate_control_free_sta(sta);
rate_control_put(sta->rate_ctrl);
}

#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
wiphy_debug(local->hw.wiphy, "Destroyed STA %pM\n", sta->sta.addr);
Expand Down Expand Up @@ -264,13 +262,11 @@ static int sta_prepare_rate_control(struct ieee80211_local *local,
if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL)
return 0;

sta->rate_ctrl = rate_control_get(local->rate_ctrl);
sta->rate_ctrl = local->rate_ctrl;
sta->rate_ctrl_priv = rate_control_alloc_sta(sta->rate_ctrl,
&sta->sta, gfp);
if (!sta->rate_ctrl_priv) {
rate_control_put(sta->rate_ctrl);
if (!sta->rate_ctrl_priv)
return -ENOMEM;
}

return 0;
}
Expand Down

0 comments on commit 889cbb9

Please sign in to comment.