| Felix Fietkau | cccf129 | 2008-10-05 18:07:45 +0200 | [diff] [blame] | 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 | unsigned int retry_count; | 
|  | 20 | unsigned int retry_count_cts; | 
|  | 21 | unsigned int retry_count_rtscts; | 
|  | 22 | unsigned int adjusted_retry_count; | 
|  | 23 |  | 
|  | 24 | u32 success; | 
|  | 25 | u32 attempts; | 
|  | 26 | u32 last_attempts; | 
|  | 27 | u32 last_success; | 
|  | 28 |  | 
|  | 29 | /* parts per thousand */ | 
|  | 30 | u32 cur_prob; | 
|  | 31 | u32 probability; | 
|  | 32 |  | 
|  | 33 | /* per-rate throughput */ | 
|  | 34 | u32 cur_tp; | 
|  | 35 | u32 throughput; | 
|  | 36 |  | 
|  | 37 | u64 succ_hist; | 
|  | 38 | u64 att_hist; | 
|  | 39 | }; | 
|  | 40 |  | 
|  | 41 | struct minstrel_sta_info { | 
|  | 42 | unsigned long stats_update; | 
|  | 43 | unsigned int sp_ack_dur; | 
|  | 44 | unsigned int rate_avg; | 
|  | 45 |  | 
|  | 46 | unsigned int lowest_rix; | 
|  | 47 |  | 
|  | 48 | unsigned int max_tp_rate; | 
|  | 49 | unsigned int max_tp_rate2; | 
|  | 50 | unsigned int max_prob_rate; | 
|  | 51 | unsigned int packet_count; | 
|  | 52 | unsigned int sample_count; | 
|  | 53 | int sample_deferred; | 
|  | 54 |  | 
|  | 55 | unsigned int sample_idx; | 
|  | 56 | unsigned int sample_column; | 
|  | 57 |  | 
|  | 58 | int n_rates; | 
|  | 59 | struct minstrel_rate *r; | 
|  | 60 |  | 
|  | 61 | /* sampling table */ | 
|  | 62 | u8 *sample_table; | 
|  | 63 |  | 
|  | 64 | #ifdef CONFIG_MAC80211_DEBUGFS | 
|  | 65 | struct dentry *dbg_stats; | 
|  | 66 | #endif | 
|  | 67 | }; | 
|  | 68 |  | 
|  | 69 | struct minstrel_priv { | 
|  | 70 | struct ieee80211_hw *hw; | 
|  | 71 | bool has_mrr; | 
|  | 72 | unsigned int cw_min; | 
|  | 73 | unsigned int cw_max; | 
|  | 74 | unsigned int max_retry; | 
|  | 75 | unsigned int ewma_level; | 
|  | 76 | unsigned int segment_size; | 
|  | 77 | unsigned int update_interval; | 
|  | 78 | unsigned int lookaround_rate; | 
|  | 79 | unsigned int lookaround_rate_mrr; | 
|  | 80 | }; | 
|  | 81 |  | 
|  | 82 | void minstrel_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir); | 
|  | 83 | void minstrel_remove_sta_debugfs(void *priv, void *priv_sta); | 
|  | 84 |  | 
|  | 85 | #endif |