123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- ** -----------------------------------------------------------------------------
- **
- ** Perle Specialix driver for Linux
- ** Ported from existing RIO Driver for SCO sources.
- *
- * (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.
- **
- ** Module : cmdpkt.h
- ** SID : 1.2
- ** Last Modified : 11/6/98 11:34:09
- ** Retrieved : 11/6/98 11:34:20
- **
- ** ident @(#)cmdpkt.h 1.2
- **
- ** -----------------------------------------------------------------------------
- */
- #ifndef __rio_cmdpkt_h__
- #define __rio_cmdpkt_h__
- #ifdef SCCS_LABELS
- #ifndef lint
- static char *_cmdpkt_h_sccs_ = "@(#)cmdpkt.h 1.2";
- #endif
- #endif
- /*
- ** overlays for the data area of a packet. Used in both directions
- ** (to build a packet to send, and to interpret a packet that arrives)
- ** and is very inconvenient for MIPS, so they appear as two separate
- ** structures - those used for modifying/reading packets on the card
- ** and those for modifying/reading packets in real memory, which have an _M
- ** suffix.
- */
- #define RTA_BOOT_DATA_SIZE (PKT_MAX_DATA_LEN-2)
- /*
- ** The boot information packet looks like this:
- ** This structure overlays a PktCmd->CmdData structure, and so starts
- ** at Data[2] in the actual pkt!
- */
- struct BootSequence {
- u16 NumPackets;
- u16 LoadBase;
- u16 CodeSize;
- };
- #define BOOT_SEQUENCE_LEN 8
- struct SamTop {
- u8 Unit;
- u8 Link;
- };
- struct CmdHdr {
- u8 PcCommand;
- union {
- u8 PcPhbNum;
- u8 PcLinkNum;
- u8 PcIDNum;
- } U0;
- };
- struct PktCmd {
- union {
- struct {
- struct CmdHdr CmdHdr;
- struct BootSequence PcBootSequence;
- } S1;
- struct {
- u16 PcSequence;
- u8 PcBootData[RTA_BOOT_DATA_SIZE];
- } S2;
- struct {
- u16 __crud__;
- u8 PcUniqNum[4]; /* this is really a uint. */
- u8 PcModuleTypes; /* what modules are fitted */
- } S3;
- struct {
- struct CmdHdr CmdHdr;
- u8 __undefined__;
- u8 PcModemStatus;
- u8 PcPortStatus;
- u8 PcSubCommand; /* commands like mem or register dump */
- u16 PcSubAddr; /* Address for command */
- u8 PcSubData[64]; /* Date area for command */
- } S4;
- struct {
- struct CmdHdr CmdHdr;
- u8 PcCommandText[1];
- u8 __crud__[20];
- u8 PcIDNum2; /* It had to go somewhere! */
- } S5;
- struct {
- struct CmdHdr CmdHdr;
- struct SamTop Topology[LINKS_PER_UNIT];
- } S6;
- } U1;
- };
- struct PktCmd_M {
- union {
- struct {
- struct {
- u8 PcCommand;
- union {
- u8 PcPhbNum;
- u8 PcLinkNum;
- u8 PcIDNum;
- } U0;
- } CmdHdr;
- struct {
- u16 NumPackets;
- u16 LoadBase;
- u16 CodeSize;
- } PcBootSequence;
- } S1;
- struct {
- u16 PcSequence;
- u8 PcBootData[RTA_BOOT_DATA_SIZE];
- } S2;
- struct {
- u16 __crud__;
- u8 PcUniqNum[4]; /* this is really a uint. */
- u8 PcModuleTypes; /* what modules are fitted */
- } S3;
- struct {
- u16 __cmd_hdr__;
- u8 __undefined__;
- u8 PcModemStatus;
- u8 PcPortStatus;
- u8 PcSubCommand;
- u16 PcSubAddr;
- u8 PcSubData[64];
- } S4;
- struct {
- u16 __cmd_hdr__;
- u8 PcCommandText[1];
- u8 __crud__[20];
- u8 PcIDNum2; /* Tacked on end */
- } S5;
- struct {
- u16 __cmd_hdr__;
- struct Top Topology[LINKS_PER_UNIT];
- } S6;
- } U1;
- };
- #define Command U1.S1.CmdHdr.PcCommand
- #define PhbNum U1.S1.CmdHdr.U0.PcPhbNum
- #define IDNum U1.S1.CmdHdr.U0.PcIDNum
- #define IDNum2 U1.S5.PcIDNum2
- #define LinkNum U1.S1.CmdHdr.U0.PcLinkNum
- #define Sequence U1.S2.PcSequence
- #define BootData U1.S2.PcBootData
- #define BootSequence U1.S1.PcBootSequence
- #define UniqNum U1.S3.PcUniqNum
- #define ModemStatus U1.S4.PcModemStatus
- #define PortStatus U1.S4.PcPortStatus
- #define SubCommand U1.S4.PcSubCommand
- #define SubAddr U1.S4.PcSubAddr
- #define SubData U1.S4.PcSubData
- #define CommandText U1.S5.PcCommandText
- #define RouteTopology U1.S6.Topology
- #define ModuleTypes U1.S3.PcModuleTypes
- #endif
|