aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rc80211_pid_algo.c
diff options
context:
space:
mode:
authorStefano Brivio <stefano.brivio@polimi.it>2007-12-22 22:43:57 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:00:53 -0500
commit13e05aa631b195ce30737b320da17e7542c82ead (patch)
tree8bb18fb5efb02dd873e969be5c2edd36a7ef5488 /net/mac80211/rc80211_pid_algo.c
parentfa44327c06492c9bd625dbc8dbe35e5d5965fec6 (diff)
rc80211-pid: fix sta_info refcounting
Fix a bug which caused uncorrect refcounting of PHYs in mac80211. Thanks to Johannes Berg for spotting this out. Cc: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Stefano Brivio <stefano.brivio@polimi.it> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mac80211/rc80211_pid_algo.c')
-rw-r--r--net/mac80211/rc80211_pid_algo.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/rc80211_pid_algo.c b/net/mac80211/rc80211_pid_algo.c
index 3e26280d3142..da3529017da1 100644
--- a/net/mac80211/rc80211_pid_algo.c
+++ b/net/mac80211/rc80211_pid_algo.c
@@ -254,7 +254,7 @@ static void rate_control_pid_tx_status(void *priv, struct net_device *dev,
254 /* Ignore all frames that were sent with a different rate than the rate 254 /* Ignore all frames that were sent with a different rate than the rate
255 * we currently advise mac80211 to use. */ 255 * we currently advise mac80211 to use. */
256 if (status->control.rate != &local->oper_hw_mode->rates[sta->txrate]) 256 if (status->control.rate != &local->oper_hw_mode->rates[sta->txrate])
257 return; 257 goto ignore;
258 258
259 spinfo = sta->rate_ctrl_priv; 259 spinfo = sta->rate_ctrl_priv;
260 spinfo->tx_num_xmit++; 260 spinfo->tx_num_xmit++;
@@ -295,6 +295,7 @@ static void rate_control_pid_tx_status(void *priv, struct net_device *dev,
295 if (time_after(jiffies, spinfo->last_sample + period)) 295 if (time_after(jiffies, spinfo->last_sample + period))
296 rate_control_pid_sample(pinfo, local, sta); 296 rate_control_pid_sample(pinfo, local, sta);
297 297
298ignore:
298 sta_info_put(sta); 299 sta_info_put(sta);
299} 300}
300 301