1 /* 2 * Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 */ 8 9 #ifndef __RC_MINSTREL_H 10 #define __RC_MINSTREL_H 11 12 struct minstrel_rate { 13 int bitrate; 14 int rix; 15 16 unsigned int perfect_tx_time; 17 unsigned int ack_time; 18 19 int sample_limit; 20 unsigned int retry_count; 21 unsigned int retry_count_cts; 22 unsigned int retry_count_rtscts; 23 unsigned int adjusted_retry_count; 24 25 u32 success; 26 u32 attempts; 27 u32 last_attempts; 28 u32 last_success; 29 30 /* parts per thousand */ 31 u32 cur_prob; 32 u32 probability; 33 34 /* per-rate throughput */ 35 u32 cur_tp; 36 u32 throughput; 37 38 u64 succ_hist; 39 u64 att_hist; 40 }; 41 42 struct minstrel_sta_info { 43 unsigned long stats_update; 44 unsigned int sp_ack_dur; 45 unsigned int rate_avg; 46 47 unsigned int lowest_rix; 48 49 unsigned int max_tp_rate; 50 unsigned int max_tp_rate2; 51 unsigned int max_prob_rate; 52 unsigned int packet_count; 53 unsigned int sample_count; 54 int sample_deferred; 55 56 unsigned int sample_idx; 57 unsigned int sample_column; 58 59 int n_rates; 60 struct minstrel_rate *r; 61 bool prev_sample; 62 63 /* sampling table */ 64 u8 *sample_table; 65 66 #ifdef CONFIG_MAC80211_DEBUGFS 67 struct dentry *dbg_stats; 68 #endif 69 }; 70 71 struct minstrel_priv { 72 struct ieee80211_hw *hw; 73 bool has_mrr; 74 unsigned int cw_min; 75 unsigned int cw_max; 76 unsigned int max_retry; 77 unsigned int ewma_level; 78 unsigned int segment_size; 79 unsigned int update_interval; 80 unsigned int lookaround_rate; 81 unsigned int lookaround_rate_mrr; 82 }; 83 84 void minstrel_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir); 85 void minstrel_remove_sta_debugfs(void *priv, void *priv_sta); 86 87 #endif 88