%
% $RCSfile: ethdrv.tex,v $
%
% $Revision: 1.1 $
% $Date: 1995/07/28 21:16:42 $
%

\protspec{ETHDRV}{ETHDRV (Out-of-kernel Ethernet Driver Protocol
  (mach3 platform))}
\index{ethdrv}

\topic{SPECIFICATION}

\noindent

ETHDRV is the Mach out-of-kernel ethernet driver, interacting with an
ethernet device through a Mach device control port.


\topic{SYNOPSIS}

\noindent 

Each instantiation of ETHDRV is associated with a single ethernet
device.  ETHDRV has the ability to block out certain packet types and
to prevent other Mach servers from receiving ethernet packets.


\topic{REALM}

ETHDRV is in the ASYNC realm, supporting the ethernet driver interface
described in the ETH appendix.


\topic{PARTICIPANTS}

ETHDRV supports the ethernet driver interface rather than a standard
xkernel UPI interface and thus makes no use of participant stacks.


\topic{CONTROL OPERATIONS}

\begin{description}

\item[{\tt ETH\_SET\_PRIORITY:}]
Changes the priority of the packet filter to the given value.  See
CONFIGURATION below for an explanation of filter values.
\begin{description}
\item[{\rm Input:}] {\tt int filterValue }
\item[{\rm Output:}] none
\end{description}

\end{description}



\topic{EXTERNAL INTERFACE}

ETHDRV supports the ethernet driver interface
described in the ETH appendix.


\topic{CONFIGURATION}

ETHDRV requires no lower protocol.  Its instance name must be the name
of the unmapped device as passed to the Mach system call {\tt
device\_open}, unless the rom {\tt dev} option is used as described
below.  For example, if the unmapped device is named {\tt SE0}, the
instance of ETHDRV using that device must be configured as:

\begin{quote}
{\tt name=ethdrv/SE0;}
\end{quote}

\noindent
Check to make sure that {\tt /etc/NETWORKS} is set up to use the
unmapped device.  E.g.,

\begin{quote}
{\tt 192.12.69.1 on SE0 }
\end{quote}

\noindent
The device name is case-sensitive; {\tt se0} represents the mapped device,
while {\tt SE0} represents the unmapped device.

\medskip

\noindent
ETHDRV recognizes the following ROM options:

\smallskip

{\tt ethdrv/xxx priority n}:
Instantiation xxx of ETHDRV should use packet filter priority n.  
A priority >= 200 will not allow other servers to receive ethernet
packets.   Adjusting the priority in this way is a privileged
Mach operation. 

\medskip

{\tt ethdrv/xxx block n}:
Instantiation xxx of ETHDRV should drop packets with ethernet type
n.  The type may be specified in either hexadecimal (prefixed with
'x') or decimal.

\medskip

{\tt ethdrv/xxx dev devname}:
Instantiation xxx of ETHDRV should open the device specified in the
string ``devname''.  For example,\\
{\tt ethdrv/1 dev SE0;}


\topic{AUTHORS}

\noindent Mats Bjorkman, Hilarie Orman, Michael Pagels, Ed Menze

