Merge from vendor branch ZLIB:
[dragonfly.git] / share / man / man9 / ieee80211_output.9
1 .\"
2 .\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
3 .\" Copyright (c) 2004 Darron Broad <darron@kewl.org>
4 .\" All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\"
15 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 .\" SUCH DAMAGE.
26 .\"
27 .\" $FreeBSD$
28 .\" $DragonFly: src/share/man/man9/ieee80211_output.9,v 1.1 2004/07/27 14:50:56 hmp Exp $
29 .\" $Id: ieee80211_output.9,v 1.2 2004/07/07 12:59:39 ru Exp $
30 .\"
31 .Dd March 2, 2004
32 .Dt IEEE80211_OUTPUT 9
33 .Os
34 .Sh NAME
35 .Nm ieee80211_encap , ieee80211_add_rates ,
36 .Nm ieee80211_add_xrates , ieee80211_send_mgmt
37 .Nd software 802.11 stack output functions
38 .Sh SYNOPSIS
39 .In net80211/ieee80211_var.h
40 .In net80211/ieee80211_proto.h
41 .Ft struct mbuf *
42 .Fo ieee80211_encap
43 .Fa "struct ifnet *ifp" "struct mbuf *m" "struct ieee80211_node **pni"
44 .Fc
45 .Ft u_int8_t *
46 .Fn ieee80211_add_rates "u_int8_t *frm" "const struct ieee80211_rateset *rs"
47 .Ft u_int8_t *
48 .Fn ieee80211_add_xrates "u_int8_t *frm" "const struct ieee80211_rateset *rs"
49 .Ft int
50 .Fo ieee80211_send_mgmt
51 .Fa "struct ieee80211com *ic" "struct ieee80211_node *ni" "int type" "int arg"
52 .Fc
53 .Sh DESCRIPTION
54 These functions handle the encapsulation and transmission of 802.11 frames
55 within the software 802.11 stack.
56 .Pp
57 The
58 .Fn ieee80211_encap
59 function encapsulates an outbound data frame contained within the
60 mbuf chain
61 .Fa m
62 from the interface
63 .Fa ifp .
64 The argument
65 .Fa *pni
66 is a reference to the destination node.
67 .Pp
68 If the function is successful, the mbuf chain is updated with the
69 802.11 frame header prepended, and a pointer to the head of the chain
70 is returned.
71 If an error occurs,
72 .Dv NULL
73 will be returned, and
74 .Fa *pni
75 is also set to
76 .Dv NULL .
77 The caller is responsible for freeing the node reference if
78 .Fa *pni
79 is
80 .Pf non- Dv NULL
81 on return.
82 The convention is that
83 .Va ic_bss
84 is not reference counted; the caller is responsible for maintaining this
85 reference count.
86 .Pp
87 .\"
88 The
89 .Fn ieee80211_add_rates
90 utility function is used to add the rate set element
91 .Fa *rs
92 to the frame
93 .Fa frm .
94 A pointer to the location in the buffer after the addition of the rate set
95 is returned.
96 It is typically used when constructing management frames from within the
97 software 802.11 stack.
98 .Pp
99 .\"
100 The
101 .Fn ieee80211_add_xrates
102 utility function is used to add the extended rate set element
103 .Fa *rs
104 to the frame
105 .Fa frm .
106 A pointer to the location in the buffer after the addition of the rate set
107 is returned.
108 It is typically used when constructing management frames from within the
109 software 802.11 stack in 802.11g mode.
110 .Pp
111 .\"
112 The
113 .Fn ieee80211_send_mgmt
114 function transmits a management frame on the interface
115 .Fa ic
116 to the destination node
117 .Fa ni
118 of type
119 .Fa type .
120 .Pp
121 The argument
122 .Fa arg
123 specifies either a sequence number for authentication operations,
124 a status code for [re]association operations,
125 or a reason for deauthentication and deassociation operations.
126 .Pp
127 Nodes other than
128 .Va ic_bss
129 have their reference count incremented to reflect their use for an
130 indeterminate amount of time.
131 This reference is freed when the function returns.
132 .Pp
133 The function returns 0 if successful; if temporary buffer space is not
134 available, the function returns
135 .Er ENOMEM .
136 .\"
137 .Sh SEE ALSO
138 .Xr ieee80211 9 ,
139 .Xr ifnet 9
140 .Sh HISTORY
141 The
142 .Nm ieee80211
143 series of functions first appeared in
144 .Nx 1.5 ,
145 and were later ported to
146 .Fx 4.6 .
147 .Sh AUTHORS
148 .An -nosplit
149 This man page was written by
150 .An Bruce M. Simpson Aq bms@FreeBSD.org
151 and
152 .An Darron Broad Aq darron@kewl.org .