1139825Simp/* $FreeBSD$ */
282899Sjake/*	$OpenBSD: ieee80211_amrr.h,v 1.3 2006/06/17 19:34:31 damien Exp $	*/
380708Sjake
480708Sjake/*-
582899Sjake * Copyright (c) 2006
682899Sjake *	Damien Bergamini <damien.bergamini@free.fr>
782899Sjake *
882899Sjake * Permission to use, copy, modify, and distribute this software for any
980708Sjake * purpose with or without fee is hereby granted, provided that the above
1080708Sjake * copyright notice and this permission notice appear in all copies.
1180708Sjake *
1280708Sjake * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1380708Sjake * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1480708Sjake * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1580708Sjake * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1680708Sjake * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1782899Sjake * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1882899Sjake * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1982899Sjake */
2080708Sjake#ifndef _NET80211_IEEE80211_AMRR_H_
2182899Sjake#define _NET80211_IEEE80211_AMRR_H_
2280708Sjake
2380708Sjake/*-
2482899Sjake * Naive implementation of the Adaptive Multi Rate Retry algorithm:
2580708Sjake *
2680708Sjake * "IEEE 802.11 Rate Adaptation: A Practical Approach"
2780708Sjake *  Mathieu Lacage, Hossein Manshaei, Thierry Turletti
2880708Sjake *  INRIA Sophia - Projet Planete
2980708Sjake *  http://www-sop.inria.fr/rapports/sophia/RR-5208.html
3080708Sjake */
3180708Sjake
3280708Sjake/*
3382899Sjake * Rate control settings.
3482899Sjake */
3582899Sjakestruct ieee80211vap;
3680708Sjake
3780708Sjakestruct ieee80211_amrr {
3880708Sjake	u_int	amrr_min_success_threshold;
3980708Sjake	u_int	amrr_max_success_threshold;
4080708Sjake	int	amrr_interval;		/* update interval (ticks) */
4180708Sjake};
42104265Sjake
43133451Salc#define IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD	 1
44133451Salc#define IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD	15
45112399Sjake
4680709Sjake/*
4780709Sjake * Rate control state for a given node.
4880709Sjake */
4980709Sjakestruct ieee80211_amrr_node {
5080709Sjake	struct ieee80211_amrr *amn_amrr;/* backpointer */
5180709Sjake	int	amn_rix;		/* current rate index */
5283053Sobrien	int	amn_ticks;		/* time of last update */
53108166Sjake	/* statistics */
54108166Sjake	u_int	amn_txcnt;
55108166Sjake	u_int	amn_success;
56108166Sjake	u_int	amn_success_threshold;
57108166Sjake	u_int	amn_recovery;
5880708Sjake	u_int	amn_retrycnt;
5980708Sjake};
6083053Sobrien
61133451Salc#endif /* _NET80211_IEEE80211_AMRR_H_ */
6288651Sjake