/****************************************************************************
 *******                                                              *******
 *******                      L I N K
 *******                                                              *******
 ****************************************************************************

 Author  : Ian Nandhra / Jeremy Rolls
 Date    :

 *
 *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK.
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

 Version : 0.01


                            Mods
 ----------------------------------------------------------------------------
  Date     By                Description
 ----------------------------------------------------------------------------

 ***************************************************************************/

#ifndef _link_h
#define _link_h 1

#ifndef lint
#ifdef SCCS_LABELS
/* static char *_rio_link_h_sccs = "@(#)link.h	1.15"; */
#endif
#endif



/*************************************************
 * Define the Link Status stuff
 ************************************************/
#define LRT_ACTIVE         ((ushort) 0x01)
#define LRT_SPARE1         ((ushort) 0x02)
#define INTRO_RCVD         ((ushort) 0x04)
#define FORCED_DISCONNECT  ((ushort) 0x08)
#define LRT_SPARE2	   ((ushort) 0x80)

#define TOP_OF_RTA_RAM     ((ushort) 0x7000)
#define HOST_SERIAL_POINTER (unsigned char **) (TOP_OF_RTA_RAM - 2 * sizeof (ushort))

/* Flags for ltt_status */
#define  WAITING_ACK		(ushort) 0x0001
#define  DATA_SENT		(ushort) 0x0002
#define  WAITING_RUP		(ushort) 0x0004
#define  WAITING_RETRY		(ushort) 0x0008
#define  WAITING_TOPOLOGY	(ushort) 0x0010
#define  SEND_SYNC		(ushort) 0x0020
#define  FOAD_THIS_LINK		(ushort) 0x0040
#define  REQUEST_SYNC		(ushort) 0x0080
#define  REMOTE_DYING		(ushort) 0x0100
#define  DIE_NOW		(ushort) 0x0200

/* Boot request stuff */
#define BOOT_REQUEST       ((ushort) 0)	/* Request for a boot */
#define BOOT_ABORT         ((ushort) 1)	/* Abort a boot */
#define BOOT_SEQUENCE      ((ushort) 2)	/* Packet with the number of packets
					   and load address */
#define BOOT_COMPLETED     ((ushort) 3)	/* Boot completed */

/* States that a link can be in */
#define	LINK_DISCONNECTED  ((ushort) 0)	/* Disconnected */
#define LINK_BOOT1         ((ushort) 1)	/* Trying to send 1st stage boot */
#define LINK_BOOT2         ((ushort) 2)	/* Trying to send 2nd stage boot */
#define LINK_BOOT2WAIT     ((ushort) 3)	/* Waiting for selftest results */
#define LINK_BOOT3         ((ushort) 4)	/* Trying to send 3rd stage boots */
#define LINK_SYNC          ((ushort) 5)	/* Syncing */

#define LINK_INTRO         ((ushort) 10)	/* Introductory packet */
#define LINK_SUPPLYID      ((ushort) 11)	/* Trying to supply an ID */
#define LINK_TOPOLOGY      ((ushort) 12)	/* Send a topology update */
#define LINK_REQUESTID     ((ushort) 13)	/* Waiting for an ID */
#define LINK_CONNECTED     ((ushort) 14)	/* Connected */

#define LINK_INTERCONNECT  ((ushort) 20)	/* Subnets interconnected */

#define LINK_SPARE	   ((ushort) 40)

/*
** Set the default timeout for link communications.
*/
#define	LINKTIMEOUT		(400 * MILLISECOND)

/*
** LED stuff
*/
#if defined(RTA)
#define LED_OFF            ((ushort) 0)	/* LED off */
#define LED_RED            ((ushort) 1)	/* LED Red */
#define LED_GREEN          ((ushort) 2)	/* LED Green */
#define LED_ORANGE         ((ushort) 4)	/* LED Orange */
#define LED_1TO8_OPEN      ((ushort) 1)	/* Port 1->8 LED on */
#define LED_9TO16_OPEN     ((ushort) 2)	/* Port 9->16 LED on */
#define LED_SET_COLOUR(colour)	(link->led = (colour))
#define LED_OR_COLOUR(colour)	(link->led |= (colour))
#define LED_TIMEOUT(time)    (link->led_timeout = RioTimePlus(RioTime(),(time)))
#else
#define LED_SET_COLOUR(colour)
#define LED_OR_COLOUR(colour)
#define LED_TIMEOUT(time)
#endif				/* RTA */

struct LPB {
	WORD link_number;	/* Link Number */
	Channel_ptr in_ch;	/* Link In Channel */
	Channel_ptr out_ch;	/* Link Out Channel */
#ifdef RTA
	uchar stat_led;		/* Port open leds */
	uchar led;		/* True, light led! */
#endif
	BYTE attached_serial[4];	/* Attached serial number */
	BYTE attached_host_serial[4];
	/* Serial number of Host who
	   booted the other end */
	WORD descheduled;	/* Currently Descheduled */
	WORD state;		/* Current state */
	WORD send_poll;		/* Send a Poll Packet */
	Process_ptr ltt_p;	/* Process Descriptor */
	Process_ptr lrt_p;	/* Process Descriptor */
	WORD lrt_status;	/* Current lrt status */
	WORD ltt_status;	/* Current ltt status */
	WORD timeout;		/* Timeout value */
	WORD topology;		/* Topology bits */
	WORD mon_ltt;
	WORD mon_lrt;
	WORD WaitNoBoot;	/* Secs to hold off booting */
	PKT_ptr add_packet_list;	/* Add packets to here */
	PKT_ptr remove_packet_list;	/* Send packets from here */
#ifdef RTA
#ifdef DCIRRUS
#define    QBUFS_PER_REDIRECT (4 / PKTS_PER_BUFFER + 1)
#else
#define    QBUFS_PER_REDIRECT (8 / PKTS_PER_BUFFER + 1)
#endif
	PKT_ptr_ptr rd_add;	/* Add a new Packet here */
	Q_BUF_ptr rd_add_qb;	/* Pointer to the add Q buf */
	PKT_ptr_ptr rd_add_st_qbb;	/* Pointer to start of the Q's buf */
	PKT_ptr_ptr rd_add_end_qbb;	/* Pointer to the end of the Q's buf */
	PKT_ptr_ptr rd_remove;	/* Remove a Packet here */
	Q_BUF_ptr rd_remove_qb;	/* Pointer to the remove Q buf */
	PKT_ptr_ptr rd_remove_st_qbb;	/* Pointer to the start of the Q buf */
	PKT_ptr_ptr rd_remove_end_qbb;	/* Pointer to the end of the Q buf */
	ushort pkts_in_q;	/* Packets in queue */
#endif

	Channel_ptr lrt_fail_chan;	/* Lrt's failure channel */
	Channel_ptr ltt_fail_chan;	/* Ltt's failure channel */

#if defined (HOST) || defined (INKERNEL)
	/* RUP structure for HOST to driver communications */
	struct RUP rup;
#endif
	struct RUP link_rup;	/* RUP for the link (POLL,
				   topology etc.) */
	WORD attached_link;	/* Number of attached link */
	WORD csum_errors;	/* csum errors */
	WORD num_disconnects;	/* number of disconnects */
	WORD num_sync_rcvd;	/* # sync's received */
	WORD num_sync_rqst;	/* # sync requests */
	WORD num_tx;		/* Num pkts sent */
	WORD num_rx;		/* Num pkts received */
	WORD module_attached;	/* Module tpyes of attached */
	WORD led_timeout;	/* LED timeout */
	WORD first_port;	/* First port to service */
	WORD last_port;		/* Last port to service */
};

#endif

/*********** end of file ***********/
