Deleted Added
full compact
ieee80211_rssadapt.h (178354) ieee80211_rssadapt.h (206358)
1/* $FreeBSD: head/sys/net80211/ieee80211_rssadapt.h 178354 2008-04-20 20:35:46Z sam $ */
1/* $FreeBSD: head/sys/net80211/ieee80211_rssadapt.h 206358 2010-04-07 15:29:13Z rpaulo $ */
2/* $NetBSD: ieee80211_rssadapt.h,v 1.4 2005/02/26 22:45:09 perry Exp $ */
3/*-
4 * Copyright (c) 2003, 2004 David Young. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or
7 * without modification, are permitted provided that the following
8 * conditions are met:
9 * 1. Redistributions of source code must retain the above copyright

--- 28 unchanged lines hidden (view full) ---

38 */
39
40/* Buckets for frames 0-128 bytes long, 129-1024, 1025-maximum. */
41#define IEEE80211_RSSADAPT_BKTS 3
42#define IEEE80211_RSSADAPT_BKT0 128
43#define IEEE80211_RSSADAPT_BKTPOWER 3 /* 2**_BKTPOWER */
44
45struct ieee80211_rssadapt {
2/* $NetBSD: ieee80211_rssadapt.h,v 1.4 2005/02/26 22:45:09 perry Exp $ */
3/*-
4 * Copyright (c) 2003, 2004 David Young. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or
7 * without modification, are permitted provided that the following
8 * conditions are met:
9 * 1. Redistributions of source code must retain the above copyright

--- 28 unchanged lines hidden (view full) ---

38 */
39
40/* Buckets for frames 0-128 bytes long, 129-1024, 1025-maximum. */
41#define IEEE80211_RSSADAPT_BKTS 3
42#define IEEE80211_RSSADAPT_BKT0 128
43#define IEEE80211_RSSADAPT_BKTPOWER 3 /* 2**_BKTPOWER */
44
45struct ieee80211_rssadapt {
46 struct ieee80211vap *vap;
46 const struct ieee80211vap *vap;
47 int interval; /* update interval (ticks) */
48};
49
50struct ieee80211_rssadapt_node {
51 struct ieee80211_rssadapt *ra_rs; /* backpointer */
52 struct ieee80211_rateset ra_rates; /* negotiated rates */
53 int ra_rix; /* current rate index */
54 int ra_ticks; /* time of last update */

--- 6 unchanged lines hidden (view full) ---

61 uint32_t ra_nok;
62 /* exponential average packets/second */
63 uint32_t ra_pktrate;
64 /* RSSI threshold for each Tx rate */
65 uint16_t ra_rate_thresh[IEEE80211_RSSADAPT_BKTS]
66 [IEEE80211_RATE_SIZE];
67};
68
47 int interval; /* update interval (ticks) */
48};
49
50struct ieee80211_rssadapt_node {
51 struct ieee80211_rssadapt *ra_rs; /* backpointer */
52 struct ieee80211_rateset ra_rates; /* negotiated rates */
53 int ra_rix; /* current rate index */
54 int ra_ticks; /* time of last update */

--- 6 unchanged lines hidden (view full) ---

61 uint32_t ra_nok;
62 /* exponential average packets/second */
63 uint32_t ra_pktrate;
64 /* RSSI threshold for each Tx rate */
65 uint16_t ra_rate_thresh[IEEE80211_RSSADAPT_BKTS]
66 [IEEE80211_RATE_SIZE];
67};
68
69void ieee80211_rssadapt_init(struct ieee80211_rssadapt *,
70 struct ieee80211vap *, int);
71void ieee80211_rssadapt_cleanup(struct ieee80211_rssadapt *);
72void ieee80211_rssadapt_setinterval(struct ieee80211_rssadapt *, int);
73void ieee80211_rssadapt_node_init(struct ieee80211_rssadapt *,
74 struct ieee80211_rssadapt_node *, struct ieee80211_node *);
75int ieee80211_rssadapt_choose(struct ieee80211_node *,
76 struct ieee80211_rssadapt_node *, u_int);
77
78/* NB: these are public only for the inline below */
79void ieee80211_rssadapt_raise_rate(struct ieee80211_rssadapt_node *,
80 int pktlen, int rssi);
81void ieee80211_rssadapt_lower_rate(struct ieee80211_rssadapt_node *,
82 int pktlen, int rssi);
83
84#define IEEE80211_RSSADAPT_SUCCESS 1
85#define IEEE80211_RSSADAPT_FAILURE 0
69#define IEEE80211_RSSADAPT_SUCCESS 1
70#define IEEE80211_RSSADAPT_FAILURE 0
86
87static __inline void
88ieee80211_rssadapt_tx_complete(struct ieee80211_rssadapt_node *ra,
89 int success, int pktlen, int rssi)
90{
91 if (success) {
92 ra->ra_nok++;
93 if ((ra->ra_rix + 1) < ra->ra_rates.rs_nrates &&
94 (ticks - ra->ra_last_raise) >= ra->ra_raise_interval)
95 ieee80211_rssadapt_raise_rate(ra, pktlen, rssi);
96 } else {
97 ra->ra_nfail++;
98 ieee80211_rssadapt_lower_rate(ra, pktlen, rssi);
99 }
100}
101#endif /* _NET80211_IEEE80211_RSSADAPT_H_ */
71#endif /* _NET80211_IEEE80211_RSSADAPT_H_ */