Commit 8d819a92 authored by Felix Fietkau's avatar Felix Fietkau Committed by Johannes Berg

mac80211: minstrel: reduce size of struct minstrel_rate_stats

On minstrel_ht, the size of the per-sta struct is almost 18k, making it
an order-3 allocation.
A few fields inside the per-rate statistics are bigger than they need to
be. This patch reduces the size enough to cut down the per-sta struct to
about 13k (order-2 allocation).
Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 79f241b4
...@@ -263,12 +263,12 @@ static inline unsigned int ...@@ -263,12 +263,12 @@ static inline unsigned int
minstrel_get_retry_count(struct minstrel_rate *mr, minstrel_get_retry_count(struct minstrel_rate *mr,
struct ieee80211_tx_info *info) struct ieee80211_tx_info *info)
{ {
unsigned int retry = mr->adjusted_retry_count; u8 retry = mr->adjusted_retry_count;
if (info->control.use_rts) if (info->control.use_rts)
retry = max(2U, min(mr->stats.retry_count_rtscts, retry)); retry = max_t(u8, 2, min(mr->stats.retry_count_rtscts, retry));
else if (info->control.use_cts_prot) else if (info->control.use_cts_prot)
retry = max(2U, min(mr->retry_count_cts, retry)); retry = max_t(u8, 2, min(mr->retry_count_cts, retry));
return retry; return retry;
} }
......
...@@ -33,8 +33,8 @@ minstrel_ewma(int old, int new, int weight) ...@@ -33,8 +33,8 @@ minstrel_ewma(int old, int new, int weight)
struct minstrel_rate_stats { struct minstrel_rate_stats {
/* current / last sampling period attempts/success counters */ /* current / last sampling period attempts/success counters */
unsigned int attempts, last_attempts; u16 attempts, last_attempts;
unsigned int success, last_success; u16 success, last_success;
/* total attempts/success counters */ /* total attempts/success counters */
u64 att_hist, succ_hist; u64 att_hist, succ_hist;
...@@ -46,8 +46,8 @@ struct minstrel_rate_stats { ...@@ -46,8 +46,8 @@ struct minstrel_rate_stats {
unsigned int cur_prob, probability; unsigned int cur_prob, probability;
/* maximum retry counts */ /* maximum retry counts */
unsigned int retry_count; u8 retry_count;
unsigned int retry_count_rtscts; u8 retry_count_rtscts;
u8 sample_skipped; u8 sample_skipped;
bool retry_updated; bool retry_updated;
...@@ -55,14 +55,15 @@ struct minstrel_rate_stats { ...@@ -55,14 +55,15 @@ struct minstrel_rate_stats {
struct minstrel_rate { struct minstrel_rate {
int bitrate; int bitrate;
int rix;
s8 rix;
u8 retry_count_cts;
u8 adjusted_retry_count;
unsigned int perfect_tx_time; unsigned int perfect_tx_time;
unsigned int ack_time; unsigned int ack_time;
int sample_limit; int sample_limit;
unsigned int retry_count_cts;
unsigned int adjusted_retry_count;
struct minstrel_rate_stats stats; struct minstrel_rate_stats stats;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment