diff options
Diffstat (limited to 'net/mac80211/rate.c')
| -rw-r--r-- | net/mac80211/rate.c | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c index 841df93807f..0388c090dfe 100644 --- a/net/mac80211/rate.c +++ b/net/mac80211/rate.c @@ -176,20 +176,24 @@ void rate_control_get_rate(struct net_device *dev,  	rcu_read_lock();  	sta = sta_info_get(local, hdr->addr1); -	memset(sel, 0, sizeof(struct rate_selection)); +	sel->rate_idx = -1; +	sel->nonerp_idx = -1; +	sel->probe_idx = -1;  	ref->ops->get_rate(ref->priv, dev, sband, skb, sel); +	BUG_ON(sel->rate_idx < 0); +  	/* Select a non-ERP backup rate. */ -	if (!sel->nonerp) { +	if (sel->nonerp_idx < 0) {  		for (i = 0; i < sband->n_bitrates; i++) {  			struct ieee80211_rate *rate = &sband->bitrates[i]; -			if (sel->rate->bitrate < rate->bitrate) +			if (sband->bitrates[sel->rate_idx].bitrate < rate->bitrate)  				break;  			if (rate_supported(sta, sband->band, i) &&  			    !(rate->flags & IEEE80211_RATE_ERP_G)) -				sel->nonerp = rate; +				sel->nonerp_idx = i;  		}  	}  |