Home | History | Annotate | Line # | Download | only in net80211
ieee80211_amrr.h revision 1.1.52.1
      1       1.1  joerg /*	$NetBSD: ieee80211_amrr.h,v 1.1.52.1 2008/02/22 16:50:25 skrll Exp $	*/
      2  1.1.52.1  skrll /*	$FreeBSD: src/sys/net80211/ieee80211_amrr.h,v 1.1 2006/11/26 19:55:26 sam Exp $	*/
      3  1.1.52.1  skrll /*	$OpenBSD: ieee80211_amrr.h,v 1.3 2006/06/17 19:34:31 damien Exp $	*/
      4       1.1  joerg 
      5       1.1  joerg /*-
      6       1.1  joerg  * Copyright (c) 2006
      7       1.1  joerg  *	Damien Bergamini <damien.bergamini (at) free.fr>
      8       1.1  joerg  *
      9       1.1  joerg  * Permission to use, copy, modify, and distribute this software for any
     10       1.1  joerg  * purpose with or without fee is hereby granted, provided that the above
     11       1.1  joerg  * copyright notice and this permission notice appear in all copies.
     12       1.1  joerg  *
     13       1.1  joerg  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     14       1.1  joerg  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     15       1.1  joerg  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     16       1.1  joerg  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     17       1.1  joerg  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     18       1.1  joerg  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     19       1.1  joerg  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     20       1.1  joerg  */
     21       1.1  joerg #ifndef _NET80211_IEEE80211_AMRR_H_
     22       1.1  joerg #define _NET80211_IEEE80211_AMRR_H_
     23       1.1  joerg 
     24       1.1  joerg /*-
     25       1.1  joerg  * Naive implementation of the Adaptive Multi Rate Retry algorithm:
     26       1.1  joerg  *
     27       1.1  joerg  * "IEEE 802.11 Rate Adaptation: A Practical Approach"
     28       1.1  joerg  *  Mathieu Lacage, Hossein Manshaei, Thierry Turletti
     29       1.1  joerg  *  INRIA Sophia - Projet Planete
     30       1.1  joerg  *  http://www-sop.inria.fr/rapports/sophia/RR-5208.html
     31       1.1  joerg  */
     32       1.1  joerg 
     33       1.1  joerg /*
     34       1.1  joerg  * Rate control settings.
     35       1.1  joerg  */
     36  1.1.52.1  skrll struct ieee80211com;
     37  1.1.52.1  skrll 
     38       1.1  joerg struct ieee80211_amrr {
     39       1.1  joerg 	u_int	amrr_min_success_threshold;
     40       1.1  joerg 	u_int	amrr_max_success_threshold;
     41  1.1.52.1  skrll 	struct ieee80211com *amrr_ic;
     42       1.1  joerg };
     43       1.1  joerg 
     44       1.1  joerg #define IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD	 1
     45       1.1  joerg #define IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD	15
     46       1.1  joerg 
     47       1.1  joerg /*
     48       1.1  joerg  * Rate control state for a given node.
     49       1.1  joerg  */
     50       1.1  joerg struct ieee80211_amrr_node {
     51       1.1  joerg 	u_int	amn_success;
     52       1.1  joerg 	u_int	amn_recovery;
     53       1.1  joerg 	u_int	amn_success_threshold;
     54       1.1  joerg 	u_int	amn_txcnt;
     55       1.1  joerg 	u_int	amn_retrycnt;
     56       1.1  joerg };
     57       1.1  joerg 
     58  1.1.52.1  skrll void	ieee80211_amrr_init(struct ieee80211_amrr *,
     59  1.1.52.1  skrll 	    struct ieee80211com *ic, int, int);
     60       1.1  joerg void	ieee80211_amrr_node_init(struct ieee80211_amrr *,
     61       1.1  joerg 	    struct ieee80211_amrr_node *);
     62       1.1  joerg void	ieee80211_amrr_choose(struct ieee80211_amrr *, struct ieee80211_node *,
     63       1.1  joerg 	    struct ieee80211_amrr_node *);
     64       1.1  joerg 
     65       1.1  joerg #endif /* _NET80211_IEEE80211_AMRR_H_ */
     66