xref: /netbsd-src/share/man/man9/rssadapt.9 (revision 01869ca4d24a86379a68731bf9706a9f0820fe4e)
1*01869ca4Swiz.\"     $NetBSD: rssadapt.9,v 1.10 2017/07/03 21:28:48 wiz Exp $
2061f5fc4Sdyoung.\"
3061f5fc4Sdyoung.\" Copyright (c) 2004 David Young.  All rights reserved.
4061f5fc4Sdyoung.\"
5061f5fc4Sdyoung.\" This code is by David Young.
6061f5fc4Sdyoung.\"
7061f5fc4Sdyoung.\" Redistribution and use in source and binary forms, with or without
8061f5fc4Sdyoung.\" modification, are permitted provided that the following conditions
9061f5fc4Sdyoung.\" are met:
10061f5fc4Sdyoung.\" 1. Redistributions of source code must retain the above copyright
11061f5fc4Sdyoung.\"    notice, this list of conditions and the following disclaimer.
12061f5fc4Sdyoung.\" 2. Redistributions in binary form must reproduce the above
13061f5fc4Sdyoung.\"    copyright notice, this list of conditions and the following
14061f5fc4Sdyoung.\"    disclaimer in the documentation and/or other materials
15061f5fc4Sdyoung.\"    provided with the distribution.
16061f5fc4Sdyoung.\"
17061f5fc4Sdyoung.\" THIS SOFTWARE IS PROVIDED BY David Young ``AS IS'' AND ANY
18061f5fc4Sdyoung.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
19061f5fc4Sdyoung.\" THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20061f5fc4Sdyoung.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL David
21061f5fc4Sdyoung.\" Young BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22061f5fc4Sdyoung.\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
23061f5fc4Sdyoung.\" TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24061f5fc4Sdyoung.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25061f5fc4Sdyoung.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26061f5fc4Sdyoung.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27061f5fc4Sdyoung.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28061f5fc4Sdyoung.\" POSSIBILITY OF SUCH DAMAGE.
29061f5fc4Sdyoung.\"
30061f5fc4Sdyoung.Dd March 23, 2004
31061f5fc4Sdyoung.Dt RSSADAPT 9
32061f5fc4Sdyoung.Os
33061f5fc4Sdyoung.Sh NAME
34061f5fc4Sdyoung.Nm rssadapt ,
35061f5fc4Sdyoung.Nm ieee80211_rssadapt_choose ,
36061f5fc4Sdyoung.Nm ieee80211_rssadapt_input ,
37061f5fc4Sdyoung.Nm ieee80211_rssadapt_lower_rate ,
38061f5fc4Sdyoung.Nm ieee80211_rssadapt_raise_rate ,
39061f5fc4Sdyoung.Nm ieee80211_rssadapt_updatestats
40061f5fc4Sdyoung.Nd rate adaptation based on received signal strength
41061f5fc4Sdyoung.Sh SYNOPSIS
42061f5fc4Sdyoung.In net80211/ieee80211_var.h
43061f5fc4Sdyoung.In net80211/ieee80211_rssadapt.h
44061f5fc4Sdyoung.Ft void
45061f5fc4Sdyoung.Fn ieee80211_rssadapt_input "struct ieee80211com *ic" \
46061f5fc4Sdyoung"struct ieee80211_node *ni" "struct ieee80211_rssadapt *ra" "int rssi"
47061f5fc4Sdyoung.Ft void
48061f5fc4Sdyoung.Fn ieee80211_rssadapt_lower_rate "struct ieee80211com *ic" \
49061f5fc4Sdyoung"struct ieee80211_node *ni" "struct ieee80211_rssadapt *ra" \
50061f5fc4Sdyoung"struct ieee80211_rssdesc *id"
51061f5fc4Sdyoung.Ft void
52061f5fc4Sdyoung.Fn ieee80211_rssadapt_raise_rate "struct ieee80211com *ic" \
53061f5fc4Sdyoung"struct ieee80211_rssadapt *ra" "struct ieee80211_rssdesc *id"
54061f5fc4Sdyoung.Ft void
55061f5fc4Sdyoung.Fn ieee80211_rssadapt_updatestats "struct ieee80211_rssadapt *ra"
56061f5fc4Sdyoung.Ft int
57061f5fc4Sdyoung.Fn ieee80211_rssadapt_choose "struct ieee80211_rssadapt *ra" \
58061f5fc4Sdyoung"struct ieee80211_rateset *rs" "struct ieee80211_frame *wh" "u_int len" \
59061f5fc4Sdyoung"int fixed_rate" "const char *dvname" "int do_not_adapt"
60061f5fc4Sdyoung.Sh DESCRIPTION
61061f5fc4SdyoungThe
62061f5fc4Sdyoung.Nm
63061f5fc4Sdyoungmodule provides rapid adaptation of transmission data rate to 802.11
64061f5fc4Sdyoungdevice drivers based on received-signal strength
65061f5fc4Sdyoung.Pq RSS .
66061f5fc4SdyoungA driver needs only to provide
67061f5fc4Sdyoung.Nm
68061f5fc4Sdyoungwith indications of RSS and failure/success of transmissions for
69061f5fc4Sdyoungeach 802.11 client or peer.
70061f5fc4SdyoungFor each transmit packet,
71061f5fc4Sdyoung.Nm
72061f5fc4Sdyoungchooses the transmission data rate that offers the best expected
73061f5fc4Sdyoungthroughput, given the packet's length and destination.
74061f5fc4Sdyoung.Pp
75061f5fc4Sdyoung.Nm
76061f5fc4Sdyoungmodels an 802.11 channel very simply
77061f5fc4Sdyoung.Po
78061f5fc4Sdyoungsee also the
79061f5fc4Sdyoung.Sx BUGS
80061f5fc4Sdyoungsection
81061f5fc4Sdyoung.Pc .
82061f5fc4SdyoungIt assumes that the packet-error rate
83061f5fc4Sdyoung.Pq PER
84061f5fc4Sdyoungis determined by the signal-to-noise ratio
85061f5fc4Sdyoung.Pq S/N
86061f5fc4Sdyoungat the receiver, the transmission data rate, and the packet length.
87061f5fc4SdyoungThe S/N determines the choice of data rate that yields the lowest
88061f5fc4SdyoungPER for all packets of a certain length.
89061f5fc4Sdyoung.Sh FUNCTIONS
90061f5fc4Sdyoung.Bl -tag -width 18n -compact
91061f5fc4Sdyoung.It Fn ieee80211_rssadapt_choose "ra" "rs" "wh" "len" "fixed_rate" "dvname" \
92061f5fc4Sdyoung"do_not_adapt"
93061f5fc4SdyoungChoose the transmission data rate for a packet.
94061f5fc4Sdyoung.Bl -tag -width "do_not_adapt" -compact
95061f5fc4Sdyoung.It Fa ra
96c1ab60f5SwizOrdinarily, the
97061f5fc4Sdyoung.Nm
98c1ab60f5Swizstate object belonging to the node which is the packet destination.
99061f5fc4SdyoungHowever, if the destination is a broadcast/multicast address, then
100061f5fc4Sdyoung.Fa ra
101061f5fc4Sdyoungbelongs to the BSS node,
102*01869ca4Swiz.Va ic->ic_bss .
103061f5fc4Sdyoung.It Fa rs
104c1ab60f5SwizA list of eligible data rates for the node; for example, the
105061f5fc4Sdyoungrates negotiated when the node associated with the network.
106061f5fc4Sdyoung.It Fa len
107c1ab60f5SwizThe packet length in bytes, including the 802.11 header and
108c1ab60f5Swizframe check sequence
109061f5fc4Sdyoung.Pq FCS .
110061f5fc4Sdyoung.It Fa fixed_rate
111061f5fc4SdyoungIf the operator has set the data rate using, for example,
112061f5fc4Sdyoung.Ic "ifconfig wi0 media ds1" ,
113061f5fc4Sdyoungthen
114061f5fc4Sdyoung.Fa fixed_rate
115061f5fc4Sdyoungtells the index of that rate in
116061f5fc4Sdyoung.Fa rs .
117061f5fc4Sdyoung.Nm
118061f5fc4Sdyoungobeys a fixed data rate whenever the 802.11 standard allows it:
119061f5fc4Sdyoungsometimes the standard requires multicast/broadcast packets to be
120061f5fc4Sdyoungtransmitted at a so-called
121061f5fc4Sdyoung.Dq basic rate .
122061f5fc4Sdyoung.It Fa dvname
123061f5fc4SdyoungThe device driver uses
124061f5fc4Sdyoung.Fa dvname
125061f5fc4Sdyoungto indicate the name of the
126061f5fc4Sdyounginterface for the purpose of diagnostic and debug messages.
127061f5fc4SdyoungThe driver sets
128061f5fc4Sdyoung.Fa dvname
129061f5fc4Sdyoungto
130061f5fc4Sdyoung.Dv NULL
131061f5fc4Sdyoungwhen no messages are desired.
132061f5fc4Sdyoung.It Fa do_not_adapt
133061f5fc4SdyoungIf
134061f5fc4Sdyoung.Fa do_not_adapt
135061f5fc4Sdyoungis non-zero, then
136061f5fc4Sdyoung.Fn ieee80211_rssadapt_choose
137061f5fc4Sdyoungwill choose the highest rate in
138061f5fc4Sdyoung.Fa rs
139061f5fc4Sdyoungthat suits the destination, regardless of the RSS.
140061f5fc4Sdyoung.El
141061f5fc4SdyoungThe return value of
142061f5fc4Sdyoung.Fn ieee80211_rssadapt_choose
143061f5fc4Sdyoungis an index into
144061f5fc4Sdyoung.Fa rs ,
145061f5fc4Sdyoungindicating its choice of transmit data rate.
146061f5fc4Sdyoung.It Fn ieee80211_rssadapt_input "ic" "ni" "ra" "rssi"
147061f5fc4SdyoungThe RSS serves as a rough estimate of the S/N at each node.
148061f5fc4SdyoungA driver provides RSS updates using
149061f5fc4Sdyoung.Fn ieee80211_rssadapt_input ,
150c1ab60f5Swizwhose arguments are:
151061f5fc4Sdyoung.Bl -tag -width "rssi" -compact
152061f5fc4Sdyoung.It Fa ic
153c1ab60f5SwizThe wireless interface's 802.11 state object.
154061f5fc4Sdyoung.It Fa ni
155c1ab60f5SwizThe 802.11 node whose RSS the driver is updating.
156061f5fc4Sdyoung.It Fa ra
157c1ab60f5SwizThe node's
158061f5fc4Sdyoung.Nm
159c1ab60f5Swizstate object.
160061f5fc4Sdyoung.It Fa rssi
161c1ab60f5SwizThe node's received signal strength indication.
162061f5fc4SdyoungThe range of
163061f5fc4Sdyoung.Fa rssi
164061f5fc4Sdyoungis from 0 to 255.
165061f5fc4Sdyoung.El
166061f5fc4Sdyoung.It Fn ieee80211_rssadapt_lower_rate "ic" "ni" "ra" "id"
167061f5fc4Sdyoung.It Fn ieee80211_rssadapt_raise_rate "ic" "ra" "id"
168061f5fc4SdyoungDrivers call
169061f5fc4Sdyoung.Fn ieee80211_rssadapt_raise_rate
170061f5fc4Sdyoungand
171061f5fc4Sdyoung.Fn ieee80211_rssadapt_lower_rate
172061f5fc4Sdyoungto indicate transmit successes and failures, respectively.
173061f5fc4Sdyoung.Bl -tag -width "ni" -compact
174061f5fc4Sdyoung.It Fa ic
175c1ab60f5SwizThe 802.11 state object.
176061f5fc4Sdyoung.It Fa ni
177c1ab60f5SwizThe neighbor to whom the driver transmitted.
178061f5fc4Sdyoung.It Fa ra
179c1ab60f5SwizThe neighbor's
180061f5fc4Sdyoung.Nm
181c1ab60f5Swizstate object.
182061f5fc4Sdyoung.It Fa id
183c1ab60f5SwizDIsplays statistics on the transmission attempt.
184061f5fc4Sdyoung.El
185061f5fc4Sdyoung.It Fn ieee80211_rssadapt_updatestats "ra"
186061f5fc4SdyoungAn 802.11 node is eligible for its RSS thresholds to decay every
187061f5fc4Sdyoung1/10 to 10 seconds.
188061f5fc4SdyoungIt is eligible more often (every 1/10 second) at high packet rates,
189061f5fc4Sdyoungand less often (every 10 seconds) at low packet rates.
190061f5fc4SdyoungA driver assists
191061f5fc4Sdyoung.Nm
192061f5fc4Sdyoungin tracking the exponential-average packet rate by calling
193061f5fc4Sdyoung.Fn ieee80211_rssadapt_updatestats
194061f5fc4Sdyoungevery 1/10th second for each node's
195061f5fc4Sdyoung.Vt ieee80211_rssadapt
196061f5fc4Sdyoungobject.
197061f5fc4Sdyoung.Bl -tag -width "ra" -compact
198061f5fc4Sdyoung.It Fa ra
199c1ab60f5SwizThe neighbor's
200061f5fc4Sdyoung.Nm
201061f5fc4Sdyoungstate object.
202061f5fc4Sdyoung.El
203061f5fc4Sdyoung.El
204061f5fc4Sdyoung.Sh ALGORITHM
205061f5fc4Sdyoung.Nm
206061f5fc4Sdyoungmonitors the RSS from neighboring 802.11 nodes, recording the
207061f5fc4Sdyoungexponential average RSS in each neighbor's
208061f5fc4Sdyoung.Vt ieee80211_rssadapt
209061f5fc4Sdyoungstructure.
210061f5fc4Sdyoung.Nm
211061f5fc4Sdyounguses transmit success/failure feedback from the
212061f5fc4Sdyoungdevice driver to fill a table of RSS thresholds.
213061f5fc4SdyoungThe table is indexed by packet size,
214061f5fc4Sdyoung.Va L ,
215061f5fc4Sdyoungand a data rate,
216061f5fc4Sdyoung.Va R ,
2179bc855a9Ssimonbto find out the minimum exponential-average RSS that a node must show before
218061f5fc4Sdyoung.Nm
219061f5fc4Sdyoungwill indicate that a packet
220061f5fc4Sdyoung.Va L
221061f5fc4Sdyoungbytes long can be transmitted R bits per second with optimal expected
222061f5fc4Sdyoungthroughput.
223061f5fc4SdyoungWhen the driver indicates a unicast packet is transmitted unsuccessfully
224061f5fc4Sdyoung.Po
225061f5fc4Sdyoungthat is, the NIC received no ACK for the packet
226061f5fc4Sdyoung.Pc ,
227061f5fc4Sdyoung.Nm
228061f5fc4Sdyoungwill move the corresponding RSS threshold toward the exponential
229061f5fc4Sdyoungaverage RSSI at the time of transmission.
230061f5fc4SdyoungThus several consecutive transmit failures for the same
231061f5fc4Sdyoung.Ao
232061f5fc4Sdyoung.Va L ,
233061f5fc4Sdyoung.Va R
234061f5fc4Sdyoung.Ac
235061f5fc4Sdyoungtuple will ensure that the RSS threshold rises high enough that
236061f5fc4Sdyoungrate
237061f5fc4Sdyoung.Va R
238061f5fc4Sdyoungis abandoned for packets
239061f5fc4Sdyoung.Va L
240061f5fc4Sdyoungbytes long.
241061f5fc4SdyoungWhen the driver indicates a successful transmission,
242061f5fc4Sdyoungthe RSS threshold corresponding to the same packet length, but the
243061f5fc4Sdyoungnext higher data rate, is lowered slightly.
244061f5fc4SdyoungThe RSS threshold is said to
245061f5fc4Sdyoung.Dq decay .
246061f5fc4SdyoungThis ensures that occasionally
247061f5fc4Sdyoung.Nm
248061f5fc4Sdyoungindicates the driver should try the next higher data rate,
249061f5fc4Sdyoungjust in case conditions at the receiver have changed
250061f5fc4Sdyoung.Po
251061f5fc4Sdyoungfor example, noise levels have fallen
252061f5fc4Sdyoung.Pc
253061f5fc4Sdyoungand a higher data rate can be supported at the same RSS level.
254061f5fc4Sdyoung.Pp
255061f5fc4SdyoungThe rate of decay is controlled.
256061f5fc4SdyoungIn an interval of 1/10th second
257061f5fc4Sdyoungto 10 seconds, only one RSS threshold per neighbor may decay.
258061f5fc4SdyoungThe interval is connected to the exponential-average rate that packets
259061f5fc4Sdyoungare being transmitted.
260061f5fc4SdyoungAt high packet rates, the interval is shortest.
261061f5fc4SdyoungIt is longest at low packet rates.
262061f5fc4SdyoungThe rationale for this is that RSS thresholds should not decay
263061f5fc4Sdyoungrapidly if there is no information from packet transmissions to
264061f5fc4Sdyoungcounteract their decay.
265061f5fc4Sdyoung.Sh DATA STRUCTURES
266061f5fc4SdyoungAn
267061f5fc4Sdyoung.Vt ieee80211_rssdesc
268061f5fc4Sdyoungdescribes a transmission attempt.
269061f5fc4Sdyoung.Pp
270061f5fc4Sdyoung.Bd -literal -offset indent
271061f5fc4Sdyoungstruct ieee80211_rssdesc {
272061f5fc4Sdyoung        u_int                    id_len;
273061f5fc4Sdyoung        u_int                    id_rateidx;
274061f5fc4Sdyoung        struct ieee80211_node   *id_node;
275061f5fc4Sdyoung        u_int8_t                 id_rssi;
276061f5fc4Sdyoung};
277061f5fc4Sdyoung.Ed
278061f5fc4Sdyoung.Pp
279061f5fc4Sdyoung.Fa id_len
280c1ab60f5Swizis the length, in bytes, of the transmitted packet.
281061f5fc4Sdyoung.Fa id_node
282c1ab60f5Swizpoints to the neighbor's
283061f5fc4Sdyoung.Vt ieee8021_node ,
284061f5fc4Sdyoungand
285061f5fc4Sdyoung.Fa id_rssi
286c1ab60f5Swizis the exponential-average RSS at the time the packet was
287061f5fc4Sdyoungtransmitted.
288061f5fc4Sdyoung.Fa id_rateidx
289061f5fc4Sdyoungis an index into the destination-neighbor's rate-set,
290*01869ca4Swiz.Fa id_node->ni_rates ,
291061f5fc4Sdyoungindicating the transmit data rate for the packet.
292061f5fc4Sdyoung.Pp
293061f5fc4SdyoungAn
294061f5fc4Sdyoung.Vt ieee80211_rssadapt
295061f5fc4Sdyoungcontains the rate-adaptation state for a neighboring 802.11 node.
296061f5fc4SdyoungOrdinarily a driver will
297061f5fc4Sdyoung.Dq subclass
298061f5fc4Sdyoung.Vt ieee80211_node .
299061f5fc4SdyoungThe
300061f5fc4Sdyoung.Vt ieee80211_rssadapt
301061f5fc4Sdyoungstructure will be a subclass member.
302061f5fc4SdyoungIn this way, every node's
303061f5fc4Sdyoung.Nm
304061f5fc4Sdyoungcondition is independently tracked and stored in its node object.
305061f5fc4Sdyoung.Pp
306061f5fc4Sdyoung.Bd -literal -offset indent
307061f5fc4Sdyoungstruct ieee80211_rssadapt {
308061f5fc4Sdyoung        u_int16_t               ra_avg_rssi;
309061f5fc4Sdyoung        u_int32_t               ra_nfail;
310061f5fc4Sdyoung        u_int32_t               ra_nok;
311061f5fc4Sdyoung        u_int32_t               ra_pktrate;
312061f5fc4Sdyoung        u_int16_t               ra_rate_thresh[IEEE80211_RSSADAPT_BKTS]
313061f5fc4Sdyoung                                              [IEEE80211_RATE_SIZE];
314061f5fc4Sdyoung        struct timeval          ra_last_raise;
315061f5fc4Sdyoung        struct timeval          ra_raise_interval;
316061f5fc4Sdyoung};
317061f5fc4Sdyoung.Ed
318061f5fc4Sdyoung.Pp
319061f5fc4Sdyoung.Fa ra_avg_rssi
320061f5fc4Sdyoungis the exponential-average RSS, shifted left 8 bits.
321061f5fc4Sdyoung.Fa ra_nfail
322061f5fc4Sdyoungtells the number of transmit failures in the current update interval.
323061f5fc4Sdyoung.Fa ra_nok
324061f5fc4Sdyoungtells the number of transmit successes in the current update interval.
325061f5fc4Sdyoung.Fa ra_pktrate
326061f5fc4Sdyoungtells the exponential average number of transmit failure/success
327061f5fc4Sdyoungindications over past update intervals.
328061f5fc4SdyoungThis approximates the rate of packet-transmission.
329061f5fc4Sdyoung.Fa ra_rate_thresh
330061f5fc4Sdyoungcontains RSS thresholds that are indexed by
331061f5fc4Sdyoung.Aq "packet length, data rate"
332061f5fc4Sdyoungtuples.
333061f5fc4SdyoungWhen this node's exponential-average RSS exceeds
334061f5fc4Sdyoung.Fa ra_rate_thresh[i][j] ,
335061f5fc4Sdyoungthen packets at most 128 x 8^i bytes long are eligible to be
336061f5fc4Sdyoungtransmitted at the rate indexed by j.
337061f5fc4Sdyoung.Fa ra_last_raise
338061f5fc4Sdyoungand
339061f5fc4Sdyoung.Fa ra_raise_interval
340061f5fc4Sdyoungare used to control the rate that RSS thresholds
341061f5fc4Sdyoung.Dq decay .
342061f5fc4Sdyoung.Fa ra_last_raise
343c1ab60f5Swizindicates when
344061f5fc4Sdyoung.Fn ieee80211_rssadapt_raise_rate
345061f5fc4Sdyoungwas last called.
346061f5fc4Sdyoung.Fa ra_raise_interval
347061f5fc4Sdyoungtells the minimum period between consecutive calls to
348061f5fc4Sdyoung.Fn ieee80211_rssadapt_raise_rate .
349061f5fc4SdyoungIf
350061f5fc4Sdyoung.Fn ieee80211_rssadapt_raise_rate
351061f5fc4Sdyoungis called more than once in any period, the second and subsequent
352061f5fc4Sdyoungcalls are ignored.
353061f5fc4Sdyoung.Sh CODE REFERENCES
354061f5fc4SdyoungThe code for
355061f5fc4Sdyoung.Nm
356061f5fc4Sdyoungis in the file
357061f5fc4Sdyoung.Pa sys/net80211/ieee80211_rssadapt.c .
358061f5fc4Sdyoung.Pp
359061f5fc4Sdyoung.Xr wi 4
360061f5fc4Sdyoungcontains a reference implementation.
361061f5fc4SdyoungSee
362061f5fc4Sdyoung.Pa sys/dev/ic/wi.c .
363061f5fc4Sdyoung.Sh SEE ALSO
364061f5fc4Sdyoung.Xr wi 4
365061f5fc4Sdyoung.Rs
366061f5fc4Sdyoung.%A Javier del Prado Pavon
367061f5fc4Sdyoung.%A Sunghyun Choi
368061f5fc4Sdyoung.%T "Link Adaptation Strategy for IEEE 802.11 WLAN via Received Signal \
369061f5fc4SdyoungStrength Measurement"
370061f5fc4Sdyoung.%J "ICC'03"
371061f5fc4Sdyoung.%P pp. 1108-1113
372061f5fc4Sdyoung.%C Anchorage, Alaska
373061f5fc4Sdyoung.%D May 2003
374061f5fc4Sdyoung.Re
375061f5fc4Sdyoung.Sh HISTORY
376061f5fc4Sdyoung.Nm
377061f5fc4Sdyoungfirst appeared in
3789e45393aSpeter.Nx 3.0 .
379061f5fc4Sdyoung.Sh AUTHORS
380a5684d07Swiz.An David Young Aq Mt dyoung@NetBSD.org
381061f5fc4Sdyoung.Sh BUGS
382061f5fc4SdyoungTo cope with interference from microwave ovens, frequency-hopping
383061f5fc4Sdyoungradios, and other sources of RF pulse-trains and bursts,
384061f5fc4Sdyoung.Nm
385061f5fc4Sdyoungshould adapt the fragmentation threshold as well as the data rate.
386061f5fc4Sdyoung.Pp
387061f5fc4SdyoungFor improved throughput,
388061f5fc4Sdyoung.Nm
389061f5fc4Sdyoungshould indicate to drivers when they should use the 802.11b
390061f5fc4Sdyoungshort-preamble.
391061f5fc4Sdyoung.Pp
392061f5fc4SdyoungThe constants in
393061f5fc4Sdyoung.Fn ieee80211_rssadapt_updatestats
394061f5fc4Sdyoungshould be configurable.
395