www.pudn.com > tcpipstack.rar > SED.H


/*  
 *  Header file for very simple ethernet driver, based on 3Com Multibus 
 *  board. 
 * 
 * Copyright (C) 1986, IMAGEN Corporation 
 *  "This code may be duplicated in whole or in part provided that [1] there 
 *   is no commercial gain involved in the duplication, and [2] that this 
 *   copyright notice is preserved on all copies.  Any other duplication 
 *   requires written notice of the author." 
 
|===================================================================| 
|  The author of this code hereby licenses all duplication and/or   | 
|  modification of this code, in whole or in part, consistent with  | 
|  the terms of the GNU Library General Public License.             | 
|              - Geoffrey H. Cooper 10/29/97                        | 
|===================================================================| 
 
|===================================================================| 
|  My changes can be considered public domain.  Geof's statement    | 
|  will cover everything.                                           | 
|              - Rick Rodman 09/02/97                               | 
|===================================================================| 
 
 */ 
 
#define	en10size        (8*1024)	/* size of interface memory */ 
#define	en10pages	((en10size) >> pageshift) 
#define E10P_MIN	60              /* Minimum Ethernet packet size */ 
 
/*  
 * The position of the 3Com interface in virtual memory.  If we're 
 * Running the bootloader function, then it must be in the last 8k 
 * of virtual addresses. 
 */ 
#ifdef BOOTLOADER 
#define SED3CVA vm_3ComAdr /* hack, only need pb68.h if bootloader */ 
#endif 
#ifndef SED3CVA 
#define SED3CVA 0x1c000 
#endif 
 
/* 10Mb Ethernet interface addresses */ 
 
#define	MECSR(eth_va)	*(word*)(((octet *) eth_va) + 0x0) 
#define	MEBACK(eth_va)	*(word*)(((octet *) eth_va) + 0x2) 
#define	MEAROM(eth_va)	(word*)(((octet *) eth_va) + 0x400) 
#define	MEARAM(eth_va)	(word*)(((octet *) eth_va) + 0x600) 
#define	MEXHDR(eth_va)	*(word*)(((octet *) eth_va) + 0x800) 
#define	MEXBUF(eth_va)	(word*)(((octet *) eth_va) + 0x1000) 
#define	MEAHDR(eth_va)	(word*)(((octet *) eth_va) + 0x1000) 
#define	MEBHDR(eth_va)	(word*)(((octet *) eth_va) + 0x1800) 
 
/* control/status register fields */ 
 
#define	BBSW		0x8000	/* Buffer B belongs to Network */ 
#define	ABSW		0x4000	/* Buffer A belongs to Network */ 
#define	TBSW		0x2000	/* Transmit buffer belongs to Network */ 
#define	JAM		0x1000	/* Set when transmit collision */ 
#define	AMSW		0x0800  
#define	RBBA		0x0400	/* Oldest received packet is in B */ 
/*#define	UNUSED		0x0200 */ 
#define	RESET		0x0100	/* Reset the controller */ 
#define	BINT		0x0080	/* Interrupt when BBSW=>0 (packet in B) */ 
#define	AINT		0x0040	/* Interrupt when ABSW=>0 (packet in A) */ 
#define	TINT		0x0020	/* Interrupt when TBSW=>0 (transmit done) */ 
#define	JINT		0x0010	/* Enable interrupts when JAM=>1 */ 
#define	PA		0x000F	/* Which packets should be received? */ 
#define INTENABLS	0x00F0 
 
/* 
 * Receiver Header Fields:  
 * The receiver header is the first (short) word of the receive buffer.  It 
 * includes such information as how big the packet is, whether it was a 
 * broadcast, whether there was an error in receiving it, etc. 
 */ 
 
#define	R_FCS		0x8000	/* fcs error */ 
#define	R_BCAST		0x4000	/* packet was NOT a broadcast */ 
#define	R_RANGE		0x2000	/* range error (size of pkt?) */ 
#define	R_MATCH		0x1000	/* packet is multicast (i.e., address 
				   received is not that of the interface) */ 
#define	R_FRAME		0x0800	/* framing error */ 
#define	R_ERROR		0x8800	/* was there any error */ 
#define	R_OFFSET	0x07FF	/* packet length + 1 word */ 
 
/* extern octet *sed_FormatPacket(), *sed_WaitPacket(); */ 
 
/* end of sed.h */