diff options
Diffstat (limited to 'system/alpha/h/edevice.h')
-rw-r--r-- | system/alpha/h/edevice.h | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/system/alpha/h/edevice.h b/system/alpha/h/edevice.h new file mode 100644 index 000000000..d1162b7b8 --- /dev/null +++ b/system/alpha/h/edevice.h @@ -0,0 +1,249 @@ +#ifndef __ETHER_DEVICE_H_LOADED +#define __ETHER_DEVICE_H_LOADED +/***************************************************************************** + + Copyright © 1993, 1994 Digital Equipment Corporation, + Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the copyright notice and this permission notice appear in all copies +of software and supporting documentation, and that the name of Digital not +be used in advertising or publicity pertaining to distribution of the software +without specific, written prior permission. Digital grants this permission +provided that you prominently mark, as not part of the original, any +modifications made to this software or documentation. + +Digital Equipment Corporation disclaims all warranties and/or guarantees +with regard to this software, including all implied warranties of fitness for +a particular purpose and merchantability, and makes no representations +regarding the use of, or the results of the use of, the software and +documentation in terms of correctness, accuracy, reliability, currentness or +otherwise; and you rely on the software, documentation and results solely at +your own risk. + +******************************************************************************/ + +/* + * $Id: edevice.h,v 1.1.1.1 1997/10/30 23:27:15 verghese Exp $ + */ + +/* + * MODULE DESCRIPTION: + * + * Ethernet device interface for EB64 monitor + * + * HISTORY: + * + * $Log: edevice.h,v $ + * Revision 1.1.1.1 1997/10/30 23:27:15 verghese + * current 10/29/97 + * + * Revision 1.7 1994/08/05 20:13:47 fdh + * Updated Copyright header and RCS $Id: identifier. + * + * Revision 1.6 1994/06/28 20:08:21 fdh + * Modified filenames and build precedure to fit into a FAT filesystem. + * + * Revision 1.5 1994/06/20 14:18:59 fdh + * Fixup header file preprocessor #include conditionals. + * + * Revision 1.4 1994/01/21 09:45:59 rusling + * Added #ifdef <filename>_H around the module. + * Additionally, any included files are not ifdef'd + * *before* they're included (ie address.h). + * + * Revision 1.3 1993/11/22 13:17:13 rusling + * Merged with PCI/21040 changes. + * + * Revision 1.2 1993/10/01 16:05:27 berent + * Added module initialisation function + * + * Revision 1.1 1993/08/06 10:30:01 berent + * Initial revision + * + * + */ + +#include "address.h" + + +/* ether_device_init - initialises an ethernet device + * + * Arguments: + * + * device_no - device number + * + * Returned value + * TRUE - initialised succesfully + * FALSE - error on initialisation + */ +extern int ether_device_init(int device_no); + +/* ether_device_read - reads a frame from an ethernet device + * + * Arguments: + * + * device_no - device number + * balance_buffer - spare buffer to maintain buffer balance + * frame_buffer - returned buffer containing frame + * + * Returned value: + * + * positive - size of frame read; frame copied into buffer if <= size. + * 0 - nothing to read + * negative - error on read + * + * DESCRIPTION: + * This function reads a frame from the device if there is one ready to be read. The + * frame read is returned in frame_buffer. To maintain the driver's pool of buffers + * the caller must give the driver an unused buffer (balance_buffer) before the + * driver returns the frame. Once this function has been called balance_buffer must + * not be used by the calling software. + * + * On return frame_buffer will always point to a valid buffer. If the read has failed + * (result <= 0) the contents of this buffer will not be valid. Note that whether or + * not the read succeeds it is undefined whether the same buffer will be returned as + * frame_buffer as was passed down as balance_buffer. + */ +extern int ether_device_read(int device_no, + unsigned char balance_buffer[ETHER_BUFFER_SIZE], + unsigned char ** frame_buffer); + +/* ether_device_write - queue a frame to be sent on an ethernet device + * + * Arguments: + * + * device_no - device number + * frame_buffer - buffer containing frame + * frame - the frame itself + * size - size of frame + * balance_buffer - returned buffer to maintain buffer balance + * + * Returned value: + * + * TRUE - succefully queued for sending + * FALSE - unable to send + * + * DESCRIPTION: + * This function writes a frame to the device To maintain the caller's pool of buffers + * the driver must give the caller an unused buffer (balance_buffer) in return for + * the buffer containing the frame to be transmitted. + * + * If the send succeeds then frame_buffer must not be accessed by the caller after this + * call. If the send can't be queued then frame_buffer will remain valid and + * the returned value of balance_buffer is undefined and must not be used. + * + */ +extern int ether_device_write(int device_no, + unsigned char * frame, + int size, + unsigned char frame_buffer[ETHER_BUFFER_SIZE], + unsigned char ** balance_buffer); + +/* ether_device_flush - wait for all writes on an ethernet device to complete + * + * Argument: + * + * device_no - device to be flushed + */ +extern int ether_device_flush(int device_no); + +/* ether_device_print_stats - print device statistics + * + * Argument: + * + * device_no - device number + */ +extern void ether_device_print_stats(int device_no); + +/* ether_device_preg - print device registers + * + * Argument: + * + * device_no - device number + */ +extern void ether_device_preg(int device_no); + + +/* ether_device_clear_interrupts - clear all interrupts from an ethernet device + * + * Argument: + * + * device_no - device number, -1 means all devices + */ +extern void ether_device_clear_interrupts(int device_no); + +/* ether_device_get_hw_address - gets the hardware mac address of the device + * + * Arguments: + * + * device_no - device_number + * hw_address - returned hardware address + */ +extern void ether_device_get_hw_address(int device_no, mac_addr hw_address); + +/* ether_device_next - get the next valid device number + * + * Argument: + * + * previous_device_number - previous device number; or -1 if no previous device. + * + * Result: + * + * next valid device number or -1 if no more devices. + * + * Description: + * The purpose of this function it to allow the device table to be scanned. + * If it called initially with -1 and then repeatedly called with its previous + * return value as its argument it will return each valid device number + * precisely once before returning -1. + * + * Notes: + * 1) The device numbers will not neccesary be returned in assending order + * 2) If previous_device_number is not the number of a valid device (or -1) the + * result is undefined. + */ +extern int ether_device_number(int previous_device_number); + +/* ether_device_register - register a new ethernet device + * + * Arguments: + * device_no - device_number + * init_func - initialisation function + * read_func - read function + * write_func - write function + * flush_func - flush function + * stats_func - print statistics function + * preg_func - print device registers function + * clear_interrupts_func - clear interrupts function + * hw_addr_func - get hardware address function + * description - description of the device. + */ +extern void ether_device_register(int device_no, + int (* init_func)(int device_no), + int (* read_func)(int device_no, + unsigned char balance_buffer[ETHER_BUFFER_SIZE], + unsigned char ** frame_buffer), + int (* write_func)(int device_no, + unsigned char * frame, + int size, + unsigned char frame_buffer[ETHER_BUFFER_SIZE], + unsigned char ** balance_buffer), + int (* flush_func)(int device_no), + void (* stats_func)(int device_no), + void (* preg_func)(int device_no), + void (* clear_interrupts_func)(int device_no), + void (* hw_addr_func)(int device_no, mac_addr hw_address) , + char *description + ); + +/* ether_device_init_module - initialise or reinitialise the ether_device module + */ +extern void ether_device_init_module(void); + +extern void ether_device_show(); + +#endif /* __ETHER_DEVICE_H_LOADED */ |