2008-10-05 20:07:45 +04:00
/*
* Copyright ( C ) 2008 Felix Fietkau < nbd @ openwrt . org >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef __RC_MINSTREL_H
# define __RC_MINSTREL_H
struct minstrel_rate {
int bitrate ;
int rix ;
unsigned int perfect_tx_time ;
unsigned int ack_time ;
2008-10-15 21:13:59 +04:00
int sample_limit ;
2008-10-05 20:07:45 +04:00
unsigned int retry_count ;
unsigned int retry_count_cts ;
unsigned int retry_count_rtscts ;
unsigned int adjusted_retry_count ;
u32 success ;
u32 attempts ;
u32 last_attempts ;
u32 last_success ;
/* parts per thousand */
u32 cur_prob ;
u32 probability ;
/* per-rate throughput */
u32 cur_tp ;
u64 succ_hist ;
u64 att_hist ;
} ;
struct minstrel_sta_info {
unsigned long stats_update ;
unsigned int sp_ack_dur ;
unsigned int rate_avg ;
unsigned int lowest_rix ;
unsigned int max_tp_rate ;
unsigned int max_tp_rate2 ;
unsigned int max_prob_rate ;
unsigned int packet_count ;
unsigned int sample_count ;
int sample_deferred ;
unsigned int sample_idx ;
unsigned int sample_column ;
int n_rates ;
struct minstrel_rate * r ;
2008-10-15 21:13:59 +04:00
bool prev_sample ;
2008-10-05 20:07:45 +04:00
/* sampling table */
u8 * sample_table ;
# ifdef CONFIG_MAC80211_DEBUGFS
struct dentry * dbg_stats ;
# endif
} ;
struct minstrel_priv {
struct ieee80211_hw * hw ;
bool has_mrr ;
unsigned int cw_min ;
unsigned int cw_max ;
unsigned int max_retry ;
unsigned int ewma_level ;
unsigned int segment_size ;
unsigned int update_interval ;
unsigned int lookaround_rate ;
unsigned int lookaround_rate_mrr ;
} ;
2010-03-02 00:17:38 +03:00
struct minstrel_debugfs_info {
size_t len ;
char buf [ ] ;
} ;
2010-03-02 00:21:40 +03:00
extern struct rate_control_ops mac80211_minstrel ;
2008-10-05 20:07:45 +04:00
void minstrel_add_sta_debugfs ( void * priv , void * priv_sta , struct dentry * dir ) ;
void minstrel_remove_sta_debugfs ( void * priv , void * priv_sta ) ;
2010-03-02 00:21:40 +03:00
/* debugfs */
int minstrel_stats_open ( struct inode * inode , struct file * file ) ;
ssize_t minstrel_stats_read ( struct file * file , char __user * buf , size_t len , loff_t * ppos ) ;
int minstrel_stats_release ( struct inode * inode , struct file * file ) ;
2008-10-05 20:07:45 +04:00
# endif