Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / usr.sbin / ndiscvt / ndiscvt.8
blob30be1dd2effb7cb30d83fdd492ed02b9a5a608dc
1 .\" $NetBSD: ndiscvt.8,v 1.6 2007/12/24 18:52:34 jnemeth Exp $
2 .\"
3 .\" Copyright (c) 2003
4 .\"     Bill Paul <wpaul@windriver.com> 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 .\" 3. All advertising materials mentioning features or use of this software
15 .\"    must display the following acknowledgement:
16 .\"     This product includes software developed by Bill Paul.
17 .\" 4. Neither the name of the author nor the names of any co-contributors
18 .\"    may be used to endorse or promote products derived from this software
19 .\"   without specific prior written permission.
20 .\"
21 .\" THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
22 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 .\" ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
25 .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 .\" THE POSSIBILITY OF SUCH DAMAGE.
32 .\"
33 .\" $FreeBSD: src/usr.sbin/ndiscvt/ndiscvt.8,v 1.5.2.1 2005/02/27 15:40:17 brueffer Exp $
34 .\"
35 .Dd December 24, 2007
36 .Dt NDISCVT 8 i386
37 .Os
38 .Sh NAME
39 .Nm ndiscvt
40 .Nd convert
41 .Tn Windows\[rg]
42 NDIS drivers for use with
43 .Nx
44 .Sh SYNOPSIS
45 .Nm
46 .Op Fl O
47 .Op Fl i Ar inffile
48 .Op Fl n Ar devname
49 .Op Fl o Ar outfile
50 .Fl s Ar sysfile
51 .\".Nm
52 .\".Op Fl f Ar firmfile
53 .Sh DESCRIPTION
54 The
55 .Nm
56 utility transforms a
57 .Tn Windows\[rg]
58 NDIS driver into a data file which
59 is used to build an
60 .\".Xr ndis 4
61 ndis
62 compatibility driver module.
63 .Tn Windows\[rg]
64 drivers consist of two main parts: a
65 .Pa .SYS
66 file, which contains the actual driver executable code,
67 and an
68 .Pa .INF
69 file, which provides the
70 .Tn Windows\[rg]
71 installer with device
72 identifier information and a list of driver-specific registry keys.
73 The
74 .Nm
75 utility can convert these files into a header file that is compiled
76 into
77 .Pa if_ndis.c
78 to create an object code module that can be linked into
79 the
80 .Nx
81 kernel.
82 .Pp
83 The
84 .Pa .INF
85 file is typically required since only it contains device
86 identification data such as PCI vendor and device IDs or PCMCIA
87 indentifier strings.
88 The
89 .Pa .INF
90 file may be optionally omitted however,
91 in which case the
92 .Nm
93 utility will only perform the conversion of the
94 .Pa .SYS
95 file.
96 This is useful for debugging purposes only.
97 .Sh OPTIONS
98 The options are as follows:
99 .Bl -tag -offset indent -width XfXfirmfileXX
100 .\"***************************************************************************
101 .\" The section describing the -f option for firmware has been commented out
102 .\" Because this is not currently supported on NetBSD.
103 .\"***************************************************************************
104 .\".It Fl f Ar firmfile
105 .\"A few NDIS drivers come with additional files that the core
106 .\"driver module will load during initialization time.
107 .\"Typically,
108 .\"these files contain firmware which the driver will transfer to
109 .\"the device in order to make it fully operational.
110 .\"In
111 .\".Tn Windows\[rg] ,
112 .\"these files are usually just copied into one of the system
113 .\"directories along with the driver itself.
114 .\".Pp
115 .\"In
116 .\".Nx
117 .\"there are two mechanism for loading these files.
118 .\"If the driver
119 .\"is built as a loadable kernel module which is loaded after the
120 .\"kernel has finished booting
121 .\"(and after the root filesystem has
122 .\"been mounted),
123 .\"the extra files can simply be copied to the
124 .\".Pa /compat/ndis
125 .\"directory, and they will be loaded into the kernel on demand when the
126 .\"the driver needs them.
127 .\".Pp
128 .\"If however the driver is required to bootstrap the system
129 .\"(i.e. if
130 .\"the NDIS-based network interface is to be used for diskless/PXE
131 .\"booting),
132 .\"the files need to be pre-loaded by the bootstrap
133 .\"loader in order to be accessible, since the driver will need them
134 .\"before the root file system has been mounted.
135 .\"However, the bootstrap
136 .\"loader is only able to load files that are shared
137 .\".Nx
138 .\"binary objects.
139 .\".Pp
140 .\"The
141 .\".Fl f
142 .\"flag can be used to convert an arbitrary file
143 .\".Ar firmfile
144 .\"into shared object format
145 .\"(the actual conversion is done using
146 .\"the
147 .\".Xr objcopy 1
148 .\"and
149 .\".Xr ld 1
150 .\"commands).
151 .\"The resulting files can then be copied to the
152 .\".Pa /boot/kernel
153 .\"directory, and can be pre-loaded directly from the boot loader
154 .\"prompt, or automatically by editing the
155 .\".Xr loader.conf 5
156 .\"file.
157 .\"If desired, the files can also be loaded into memory
158 .\"at runtime using the
159 .\".Xr kldload 8
160 .\"command.
161 .\".Pp
162 .\"When an NDIS driver tries to open an external file, the
163 .\".Xr ndisapi 9
164 .\"code will first search for a loaded kernel module that matches the
165 .\"name specified in the open request, and if that fails, it will then
166 .\"try to open the file from the
167 .\".Pa /compat/ndis
168 .\"directory as well.
169 .\"Note that during kernel bootstrap, the ability
170 .\"to open files from
171 .\".Pa /compat/ndis
172 .\"is disabled: only the module search will be performed.
173 .\".Pp
174 .\"When using the
175 .\".Fl f
176 .\"flag,
177 .\".Nm
178 .\"will generate both a relocatable object file
179 .\"(with a
180 .\".Pa .o
181 .\"extension)
182 .\"and a shared object file
183 .\"(with a
184 .\".Pa .ko
185 .\"extension).
186 .\"The shared object is the one that should be placed in
187 .\"the
188 .\".Pa /boot/kernel
189 .\"directory.
190 .\"The relocatable object file is useful if the user wishes
191 .\"to create a completely static kernel image: the object file can be
192 .\"linked into the kernel directly along with the driver itself.
193 .\"Some
194 .\"editing of the kernel configuration files will be necessary in order
195 .\"to have the extra object included in the build.
196 .It Fl i Ar inffile
197 Open and parse the specified
198 .Pa .INF
199 file when performing conversion.
202 utility will parse this file and emit a device identification
203 structure and registry key configuration structures which will be
204 used by the
205 .\".Xr ndis 4
206 ndis
207 driver and
208 .\".Xr ndisapi 9
209 ndisapi
210 kernel subsystem.
211 If this is omitted,
213 will emit a dummy configuration structure only.
214 .It Fl n Ar devname
215 Specify an alternate name for the network device/interface which will
216 be created when the driver is instantiated.
217 If you need to load more
218 than one NDIS driver into your system (i.e., if you have two different
219 network cards in your system which require NDIS driver support), each
220 module you create must have a unique name.
221 Device can not be larger than
222 .Dv IFNAMSIZ .
223 If no name is specified, the driver will use the
224 default a default name
225 .Pq Dq Li ndis .
226 .It Fl O
227 Generate both an
228 .Pa ndis_driver_data.h
229 file and
231 .Pa ndis_driver.data.o
232 file.
233 The latter file will contain a copy of the
234 .Tn Windows\[rg]
235 .Pa .SYS
236 driver image encoded as a
238 ELF object file
239 (created with
240 .Xr objcopy 1 ) .
241 Turning the
242 .Tn Windows\[rg]
243 driver image directly into an object code file saves disk space
244 and compilation time.
245 .It Fl o Ar outfile
246 Specify the output file in which to place the resulting data.
247 This can be any file pathname.
249 .Ar outfile
250 is a single dash
251 .Pq Sq Fl ,
252 the data will be written to the standard output.
254 .Pa if_ndis.c
255 module expects to find the driver data in a file called
256 .Pa ndis_driver_data.h ,
257 so it is recommended that this name be used.
258 .It Fl s Ar sysfile
259 Open and parse the specified
260 .Pa .SYS
261 file.
262 This file must contain a
263 .Tn Windows\[rg]
264 driver image.
267 utility will perform some manipulation of the sections within the
268 executable file to make runtime linking within the kernel a little
269 easier and then convert the image into a data array.
271 .Sh SEE ALSO
272 .Xr ld 1 ,
273 .Xr objcopy 1 ,
274 .Xr ndis 4
275 .\".Xr kldload 8 ,
276 .\".Xr ndisapi 9
277 .Sh HISTORY
280 utility first appeared in
281 .Fx 5.3 .
282 .Sh AUTHORS
283 .An -nosplit
286 utility was written by
287 .An Bill Paul Aq wpaul@windriver.com .
289 .Xr lex 1
291 .Xr yacc 1
292 .Pa .INF
293 file parser was written by
294 .An Matthew Dodd Aq mdodd@FreeBSD.org .