xref: /dragonfly/share/man/man9/ieee80211_output.9 (revision 0bb9290e)
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.5 2006/07/22 23:55:30 swildner Exp $
29.\" $Id: ieee80211_output.9,v 1.2 2004/07/07 12:59:39 ru Exp $
30.\"
31.Dd June 28, 2006
32.Dt IEEE80211_OUTPUT 9
33.Os
34.Sh NAME
35.Nm ieee80211_encap ,
36.Nm ieee80211_send_mgmt,
37.Nm ieee80211_add_ssid ,
38.Nm ieee80211_add_rates ,
39.Nm ieee80211_add_xrates
40.Nd software 802.11 stack output functions
41.Sh SYNOPSIS
42.In netproto/802_11/ieee80211_var.h
43.In netproto/802_11/ieee80211_proto.h
44.Ft struct mbuf *
45.Fo ieee80211_encap
46.Fa "struct ieee80211com *ic" "struct mbuf *m" "struct ieee80211_node *ni"
47.Fc
48.Ft int
49.Fo ieee80211_send_mgmt
50.Fa "struct ieee80211com *ic" "struct ieee80211_node *ni" "int type" "int arg"
51.Fc
52.Ft uint8_t *
53.Fn ieee80211_add_ssid "uint8_t *frm" "const uint8_t *ssid" "int ssid_len"
54.Ft uint8_t *
55.Fn ieee80211_add_rates "uint8_t *frm" "const struct ieee80211_rateset *rs"
56.Ft uint8_t *
57.Fn ieee80211_add_xrates "uint8_t *frm" "const struct ieee80211_rateset *rs"
58.Sh DESCRIPTION
59These functions handle the encapsulation and transmission of 802.11 frames
60within the software 802.11 stack.
61.Pp
62The
63.Fn ieee80211_encap
64function encapsulates an outbound data frame contained within the
65mbuf chain
66.Fa m
67from the interface
68.Fa ic .
69The argument
70.Fa ni
71is a reference to the destination node.
72.Pp
73.\"
74The
75.Fn ieee80211_send_mgmt
76function transmits a management frame on the interface
77.Fa ic
78to the destination node
79.Fa ni
80of type
81.Fa type .
82The node entry
83.Fa ni
84must not be
85.Dv NULL
86and is typically the non-NULL return value of
87.Xr ieee80211_find_txnode 9 .
88This function is typically called through
89.Fn IEEE80211_SEND_MGMT ,
90which is a wrapper for the invocation of
91.Va ic_send_mgmt .
92.Pp
93The argument
94.Fa arg
95specifies either a sequence number for authentication operations,
96a status code for (re)association operations,
97or a reason for deauthentication and deassociation operations.
98.Pp
99The destination node
100.Fa ni
101will have its reference count incremented to reflect its use for an
102indeterminate amount of time.
103This reference is freed either in
104.Va if_start
105or,
106during the interrupt service routine for transmission completing
107if certain transmission rate control algorithms are used.
108.Pp
109.\"
110The
111.Fn ieee80211_add_ssid
112utility function is used to add the service set ID element
113.Fa ssid
114to the frame
115.Fa frm .
116The
117.Fa ssid_len
118argument indicates the length of the
119.Fa ssid
120to be added.
121.Pp
122.\"
123The
124.Fn ieee80211_add_rates
125utility function is used to add the rate set element
126.Fa rs
127to the frame
128.Fa frm .
129.Pp
130.\"
131The
132.Fn ieee80211_add_xrates
133utility function is used to add the extended rate set element
134.Fa rs
135to the frame
136.Fa frm .
137.Pp
138.\"
139The functions
140.Fn ieee80211_add_ssid ,
141.Fn ieee80211_add_rate
142and
143.Fn ieee80211_add_xrate
144are typically used when constructing management frames from within the
145software 802.11 stack in 802.11g mode.
146.\"
147.Sh RETURN VALUES
148If the function
149.Fn ieee80211_encap
150is successful,
151the mbuf chain
152.Fa m
153is updated with the 802.11 frame header prepended,
154and a pointer to the head of the updated mbuf chain is returned.
155If an error occurs,
156.Dv NULL
157will be returned,
158and
159.Fa m
160will be freed.
161.Pp
162.\"
163The function
164.Fn ieee80211_send_mgmt
165returns 0 if successful;
166if temporary buffer space is not available,
167it returns
168.Er ENOMEM .
169.Pp
170.\"
171The functions
172.Fn ieee80211_add_ssid ,
173.Fn ieee80211_add_rate
174and
175.Fn ieee80211_add_xrate
176return a pointer to the location in the
177.Fa frm
178after the addition of the second argument.
179.\"
180.Sh SEE ALSO
181.Xr ieee80211 9 ,
182.Xr ifnet 9
183.Sh HISTORY
184The
185.Nm ieee80211
186series of functions first appeared in
187.Nx 1.5 ,
188and were later ported to
189.Fx 4.6 .
190.Sh AUTHORS
191.An -nosplit
192This man page was written by
193.An Bruce M. Simpson Aq bms@FreeBSD.org
194and
195.An Darron Broad Aq darron@kewl.org .
196