home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
- User documentation for the packet driver collection
- Russell Nelson
- Clarkson University
- Potsdam, NY 13676
- nelson@clutx.clarkson.edu
-
-
- The purpose of the packet drivers
-
- Every PC Ethernet board is different. The 3c501 was, for
- some time, the most popular board, and would have become the
- defacto standard but for its poor performance. By the time 3Com
- created a board with acceptable performance, so had many others,
- and 3Com lost its lead. FTP Software, in order to support each
- of these boards without losing its collective mind, created the
- Packet Driver Spec (PDS).
-
- Some boards use DMA, programmed I/O, shared memory, and/or
- bus mastering. The PDS masks the differences between these
- boards by defining a software interface to the boards. This
- software interface is a software interrupt in the range between
- 0x60 (hex) and 0x80.
-
-
- Document conventions
-
- All numbers in this document are given in C-style
- representation. Decimal is expressed as 11, hexadecimal is
- expressed as 0x0B, octal is expressed as 013. All reference to
- network hardware addresses (source, destination and multicast)
- and demultiplexing information for the packet headers assumes
- they are represented as they would be in a MAC-level packet
- header being passed to the send_pkt() function.
-
-
- Using the packet drivers
-
- The packet driver must be installed prior to use. Since
- each packet driver takes only approximately 1800 bytes, this is
- best done in your autoexec.bat. Since the Ethernet boards
- typically have jumpers on board, the packet driver must be
- informed of the values of these jumpers (auto-configure is
- possible, but can disturb other boards). The first parameter
- is the software interrupt used to communicate with the packet
- driver. And again, because each board is different, the rest of
- the parameters will be different.
-
- All parameters must be specified in C-style representation.
- Decimal is expressed as 11, hexadecimal is expressed as 0x0B,
- octal is expressed as 013. Any numbers that the packet driver
- prints will be in the same notation.
-
- Before installing the packet driver, you must choose a software
- interrupt number in the range between 0x60 and 0x80. Some of
- these interrupts are used for other purposes, so your first
-
-
-
-
-
-
- choice may not work. See Appendix A for the section of Ralf
- Brown's interrupt list between 0x60 and 0x80.
-
- Running a packet driver with no specifications will give a
- usage message. The parameters for each packet driver are
- documented below.
-
- Most drivers can now also be used in a PROM boot environment,
- see PROMBOOT.NOT for how to use -d and -n options for that
- purpose.
-
- The -w switch is used for Windows. Install the packet driver
- before running MS-Windows.
-
- 3Com 3C501
-
- usage: 3C501 [-n] [-d] [-w] packet_int_no [int_no
- [io_addr]]
-
- The 3c501 driver requires two additional parameters -- the
- hardware interrupt number and the I/O address. The defaults are
- 3 and 0x300.
-
-
- 3Com 3C503
-
- usage: 3C503 [-n] [-d] [-w] packet_int_no [int_level(2-5)
- [io_addr [cable_type]]]
-
- The 3c503 driver requires three additional parameters --
- the hardware interrupt number, the I/O address, and the cable
- type. The 3c503 can be attached to thick or thin Ethernet
- cables, and the selection is made in software. The cable type
- parameter should be zero for thick, and one for thin. The
- defaults are 2, 0x300, and 0 (thin). The 3c503 uses shared
- memory whose address is set by jumpers, but the software can ask
- the board what the address is.
-
-
- 3Com 3c505
-
- usage: 3c505 [-n] [-d] [-w] packet_int_no [int_no [io_addr
- [base_addr]]]
-
- The 3c505 driver requires three additional parameters --
- the hardware interrupt number, the I/O address, and the memory
- base address. The defaults are 2 and 0x300 and 0xd000.
-
-
-
-
-
-
- 3Com 3c523
-
- usage: 3c523 [-n] [-d] [-w] packet_int_no [int_no [io_addr
- [base_addr]]]
-
- The 3c523 driver requires three additional parameters --
- the hardware interrupt number, the I/O address, and the memory
- base address. The defaults are 3 and 0x300 and 0xc000.
-
-
- ARCNET
-
- usage: arcnet [-n] [-d] [-w] packet_int_no [int_no
- [io_addr [base_addr]]]
-
- The ARCNET driver requires three additional parameters --
- the hardware interrupt number, the I/O address, and the memory
- base address. The defaults are 5 and 0x2e0 and 0xd800. Note
- that a packet driver client must specifically support ARCNET.
- The only known client is Phil Karn's (KA9Q) networking package,
- NOS.
-
-
- AT&T
-
- usage: at&t [-n] [-d] [-w] packet_int_no [int_no [io_addr
- [base_addr]]]
-
- The AT&T driver requires three additional parameters --
- the hardware interrupt number, the I/O address, and the memory
- base address. The defaults are 2 and 0x360 and 0xd000. This
- driver supports the StarLAN 1, StarLAN 10 NAU, EN100 and StarLAN
- Fiber NAU.
-
-
- IBM Token Ring
-
- usage: ibmtoken [-n] [-d] [-w] packet_int_no [adapter_no]
-
- The IBM Token Ring packet driver requires one additional
- parameters -- the adapter number. The default is zero. See
- IBMTOKEN.DOC for more information.
-
-
- Novell IPX
-
- usage: ipxpkt [-n] [-d] [-w] packet_int_no
-
- The ipxpkt packet driver simulates Ethernet on Novell IPX
- protocol.
-
-
-
-
-
-
- BICC Data Networks' ISOLAN 4110 ethernet
-
- usage: isolan [-n] [-d] [-w] packet_int_no [int_no
- [base_addr]]
-
- The BICC Isolan requires three additional parameters --
- the hardware interrupt number and the memory base address. The
- defaults are 2 and 0xb800h.
-
-
- Netbios
-
- usage: nb [-n] [-d] [-w] packet_int_no ip.ad.dr.ess
- [receive queue size]
-
- The netbios packet driver transports IP packets over
- NetBIOS.
-
-
- Novell ne1000
-
- usage: ne1000 [-n] [-d] [-w] packet_int_no [int_no
- [io_addr]]
-
- The ne1000 driver requires two additional parameters --
- the hardware interrupt number and the I/O address. The defaults
- are 3 and 0x300.
-
-
- Novell ne2000
-
- usage: ne2000 [-n] [-d] [-w] packet_int_no [int_no
- [io_addr]]
-
- The ne2000 driver requires two additional parameters --
- the hardware interrupt number and the I/O address. The defaults
- are 2 and 0x300.
-
-
- Racal/Interlan (Formerly Interlan) NI5010
-
- usage: NI5010 [-n] [-d] [-w] packet_int_no [int_no
- [io_addr]]
-
- The NI5010 driver requires two additional parameters --
- the hardware interrupt number and the I/O address. The defaults
- are 3 and 0x300.
-
-
-
-
-
-
- Racal/Interlan (Formerly Micom-Interlan) NI5210
-
- usage: ni5210 [-n] [-d] [-w] packet_int_no [int_no
- [io_addr [base_addr]]]
-
- The NI5210 driver requires three additional parameters --
- the hardware interrupt number, the I/O address, and the memory
- base address. The defaults are 2 and 0x360 and 0xd000. Note
- that Interlan sets the default memory base to 0xa000, which is
- brain-damaged, because that area of memory is specifically
- reserved for video adapters, and in fact the EGA and VGA use
- it.
-
-
- Racal/Interlan NI6510
-
- usage: ni6510 [-n] [-d] [-w] packet_int_no [int_no
- [io_addr]]
-
- The ni6510 driver has two additional parameters -- the
- hardware interrupt number and the I/O address. The defaults are
- 2 and auto-sense. These parameters do not need to be set unless
- the auto-sense routine fails, or otherwise disrupts operation of
- your PC.
-
-
- Racal-Interlan (Formerly Micom-Interlan) NI9210
-
- usage: ni9210 [-n] [-d] [-w] packet_int_no [int_no
- [io_addr [base_addr]]]
-
- The ni9210 driver requires three additional parameters --
- the hardware interrupt number, the I/O address, and the memory
- base address. The defaults are 2 and 0x360 and 0xd000.
-
-
- SLIP8250
-
- usage: SLIP8250 [-n] [-d] [-w] packet_int_no [-h]
- [driver_class] [int_no]
- [io_addr] [baud_rate] [send_buf_size] [recv_buf_size]
- The driver_class should be SLIP, KISS, AX.25, or a
- number.
-
- The SLIP8250 driver is not strictly an Ethernet adapter,
- however some software packages (such as KA9Q's NET and NCSA
- Telnet) support Serial Line IP (SLIP). SLIP must be specially
- supported because it doesn't use ARP and has no hardware
- addresses prepended to its packets. The PDS is not clear on
- this, but the packet driver does the SLIP encoding. The
- parameters are as follows. The -h flag is included if you wish
- to use hardware handshaking (the packet driver will then suspend
- the transmission of characters while CTS is low). The
- driver_class is the class that is returned to a client of the
- packet driver spec in the driver_info call. The int_no is the
-
-
-
-
-
-
- hardware interrupt number, defaults to 4 (COM1). The io_addr is
- the hardware I/O address, defaults to 0x3f8 (COM1). The
- baud_rate defaults to 4800 baud. The send_buf_size and
- recv_buf_size default to 3000 each.
-
-
- Tiara Lancard
-
- usage: tiara [-n] [-d] [-w] packet_int_no [int_no
- [io_addr]]
-
- The Tiara driver runs the Tiara LANCARD/E cards, both
- eight and
- sixteen bit cards. The Tiara driver requires two additional
- parameters,
- the hardware interrupt number, and the I/O port.
-
- Western Digital WD8003 E EBT EB ET/A and E/A
-
- usage: WD8003E [-n] [-d] [-w] packet_int_no [-o]
- [int_level [io_addr [mem_base]]]
-
- The WD8003E driver runs the Western Digital E, EBT, EB,
- ET/A, and E/A Ethernet cards. The WD8003E requires three
- additional parameters -- the hardware interrupt number, the I/O
- address, and the memory base address. The defaults are 2 and
- 0x280 and 0xd000. The wd8003 cards do not enable their memory
- until configuration time. Some 386 memory mappers will map
- memory into the area that the card intends to use. You should
- be able to configure your software to leave this area of memory
- alone. Also driver will refuse to map memory into occupied
- memory. The occupied memory test fails on some machines, so the
- optional switch -o allows you to disable the check for occupied
- memory.
-
-
- Errorlevels
-
- Some of the packet drivers return error codes. Some of
- these error codes indicate fatal errors, and some are merely
- warnings. For the moment, you must consult the source to see
- what the errorcodes mean. For example, pktchk returns 0 if a
- packet driver exists at a given address, and 1 if not. You
- might use it in a batch file that only installs a packet driver
- if one is not found.
-
- rem only install the packet driver if there isn't one
- rem already.
- pktchk 0x7e
- if errorlevel 0 goto gotit
- ni5210 0x7e
- :gotit
-
- The "errorlevel" test is true if the errorlevel is less
- than or equal to the parameter.
-
-
-
-
-
-
- Utility Programs
-
- There are also several utility programs for packet
- drivers:
-
-
- PKTADDR
-
- usage: pktaddr packet_int_no [ethernet_addr]
-
- If the second argument is given, the Ethernet address of
- the given packet driver is set. The Ethernet address is printed
- out.
-
-
- PKTALL
-
- usage: pktall packet_int_no
-
- All packets are received and discarded from the given
- packet driver. This program is of most use with PKTMODE and
- TRACE.
-
-
- PKTCHK
-
- usage: pktchk packet_int_no [packet_int_no]
-
- Test for existance of a packet driver. Returns with
- errorlevel 0 if the specified interrupt has a packet driver. If
- the second argument is given, all interrupts in the range are
- checked for a packet driver. If no packet driver is found at
- all, errorlevel 1 is returned.
-
-
- PKTMODE
-
- usage: pktmode packet_int_no [receive_mode]
-
- If the second argument is given, the receive mode of the
- given packet driver is set. A decimal number from the list of
- modes should be used. All the possible modes are printed out.
- Unimplemented modes are marked with "xx", and the current mode
- is marked with "->".
-
-
- PKTMULTI
-
- usage: pktmulti packet_int_no [-f filename | address ...]
-
- The specified addresses are set as allowed multicast
- addresses. If no list of addresses is given, then the current
- list of addresses is printed. The
-
-
-
-
-
-
- addresses may either be specified on the command line, or in a
- file using the -f option. When a file is used, any whitespace
- in the file is ignored.
-
-
- PKTSTAT
-
- usage: pktstat first_int_no [last_int_no]
-
- The statistics for all packet drivers in the given range
- are printed. The default range is 0x60 through 0x80. The
- meanings of the columns are given below.
-
-
- pkt_in is the number of packets ever received by this driver.
- pkt_out is the number of packets ever transmitted by this
- driver.
- byt_in is the number of bytes ever received by this driver.
- byt_out is the number of bytes ever transmitted by this driver.
- pk_drop Packets dropped because there was no handler for that
- Ethernet packet type.
- err_in Dependent upon the packet driver.
- err_out Dependent upon the packet driver.
-
-
- PKTSEND
-
- usage: pktsend packet_int_no [-r] [-f filename | packet]
-
- The specified packet is sent using the specified packet
- driver. The -r option says to repeat sending as fast as
- possible. You shouldn't use this option very often. The packet
- may either be specified on the command line, or in a file using
- the -f option. When a file is used, any whitespace in the file
- is ignored.
-
-
- TERMIN
-
- usage: termin [-s] packet_int_no
-
- The specified packet driver is terminated, and its memory
- recovered.
-
- The s-option (stop) is used to prepare for termination.
- The in-use flag for all handles are cleared. This prevents
- upcalls to handlers that are to be removed and also makes it
- possible to later terminate the packet driver even though
- handles are not released. Actually, doing termin -s after prom
- boot is like cutting the branch you are sitting on. Recipe for
- removing packet driver, IPX and NET:
-
-
-
-
-
-
- pktdrvr 0x7c ....
- MARKNET C:IPX&NET3.MRK
- PDIPX
- NET3
- . . .
- NET3 u ; unload netx to avoid
- communication timeout
- TERMIN -s 0x7c ; pkt drvr no longer calls any
- nonexistent rcvrs
- RELNET ipxet3.mrk ; IPX is "removed"
- TERMIN 0x7c ; It is now safe to terminate the
- packet driver
-
-
- TRACE
-
- usage: trace packet_int_no [buffer_size]
-
- Trace is very useful for debugging packet driver
- troubles. Trace lets you trace all transactions between a user
- program and the packet driver. The transactions are stored in a
- memory buffer whose size is set with buffer_size. The default
- size is 10,000 bytes.
-
- When you run trace, it sets itself up and then spawns
- COMMAND.COM so that you can run a network program that uses the
- packet driver. After you quit your network session, you issue
- an "EXIT" command. This returns you to trace, which writes the
- transaction log to "TRACE.OUT". The following program, DUMP,
- interprets TRACE.OUT.
-
-
- DUMP
-
- usage: dump
-
- Interprets the contents of TRACE.OUT as written by TRACE.
-
-
- Who?
-
- See the file support.txt for a listing of all the people who
- contributed packet drivers.
-
-
-
-
-
-
- Appendix A
- Interrupt usage in the range 0x60 through 0x80
-
-
-
- 60 -- -- reserved for user interrupt
- 60 -- -- FTP Driver - PC/TCP Packet Driver Specification
- 60 01 FF FTP Driver - DRIVER INFO
- 60 02 -- FTP Driver - ACCESS TYPE
- 60 03 -- FTP Driver - RELEASE TYPE
- 60 04 -- FTP Driver - SEND PACKET
- 60 05 -- FTP Driver - TERMINATE DRIVER FOR HANDLE
- 60 06 -- FTP Driver - GET ADDRESS
- 60 07 -- FTP Driver - RESET INTERFACE
- 60 11 -- 10-NET - LOCK AND WAIT
- 60 12 -- 10-NET - LOCK
- 60 13 -- 10-NET - UNLOCK
- 60 20 -- FTP Driver - SET RECEIVE MODE
- 60 21 -- FTP Driver - GET RECEIVE MODE
- 60 24 -- FTP Driver - GET STATISTICS
- 61 -- -- reserved for user interrupt
- 62 -- -- reserved for user interrupt
- 63 -- -- reserved for user interrupt
- 64 -- -- reserved for user interrupt
- 65 -- -- reserved for user interrupt
- 66 -- -- reserved for user interrupt
- 67 -- -- LIM EMS
- ...
- 67 DE 00 Virtual Control Program Interface - INSTALLATION CHECK
- ...
- 68 01 -- APPC/PC
- ...
- 69 -- -- unused
- 6A -- -- unused
- 6B -- -- unused
- 6C -- -- system resume vector (CONVERTIBLE)
- 6C -- -- DOS 3.2 Realtime Clock update
- 6D -- -- VGA - internal
- 6E -- -- unused
- 6F -- -- Novell NetWare - PCOX API (3270 PC terminal interface)
- 6F 00 -- 10-NET - LOGIN
- ...
- 70 -- -- IRQ8 - AT/XT286/PS50+ - REAL-TIME CLOCK
- 71 -- -- IRQ9 - AT/XT286/PS50+ - LAN ADAPTER 1
- 72 -- -- IRQ10 - AT/XT286/PS50+ - RESERVED
- 73 -- -- IRQ11 - AT/XT286/PS50+ - RESERVED
- 74 -- -- IRQ12 - PS50+ - MOUSE INTERRUPT
- 75 -- -- IRQ13 - AT/XT286/PS50+ - 80287 ERROR
- 76 -- -- IRQ14 - AT/XT286/PS50+ - FIXED DISK
- 77 -- -- IRQ15 - AT/XT286/PS50+ - RESERVED
- 78 -- -- not used
- 79 -- -- not used
- 7A -- -- Novell NetWare - LOW-LEVEL API
- 7A -- -- AutoCAD Device Interface
- 7B -- -- not used
-
-
-
-
-
-
- 7C -- -- not used
- 7D -- -- not used
- 7E -- -- not used
- 7F -- -- HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
- 7F -- -- HLLAPI (High-Level Language API)
- 80 -- -- reserved for BASIC
-