File: /usr/src/linux/drivers/char/rio/pkt.h

1     /****************************************************************************
2      *******                                                              *******
3      *******            P A C K E T   H E A D E R   F I L E
4      *******                                                              *******
5      ****************************************************************************
6     
7      Author  : Ian Nandhra / Jeremy Rolls
8      Date    :
9     
10      *
11      *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK.
12      *
13      *      This program is free software; you can redistribute it and/or modify
14      *      it under the terms of the GNU General Public License as published by
15      *      the Free Software Foundation; either version 2 of the License, or
16      *      (at your option) any later version.
17      *
18      *      This program is distributed in the hope that it will be useful,
19      *      but WITHOUT ANY WARRANTY; without even the implied warranty of
20      *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21      *      GNU General Public License for more details.
22      *
23      *      You should have received a copy of the GNU General Public License
24      *      along with this program; if not, write to the Free Software
25      *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26     
27      Version : 0.01
28     
29     
30                                 Mods
31      ----------------------------------------------------------------------------
32       Date     By                Description
33      ----------------------------------------------------------------------------
34     
35      ***************************************************************************/
36     
37     #ifndef _pkt_h
38     #define _pkt_h 1
39     
40     
41     #ifdef SCCS_LABELS
42     #ifndef lint
43     /* static char *_rio_pkt_h_sccs = "@(#)pkt.h	1.8"; */
44     #endif
45     #endif
46     
47     #define MAX_TTL         0xf
48     #define PKT_CMD_BIT     ((ushort) 0x080)
49     #define PKT_CMD_DATA    ((ushort) 0x080)
50     
51     #define PKT_ACK         ((ushort) 0x040)
52     
53     #define PKT_TGL         ((ushort) 0x020)
54     
55     #define PKT_LEN_MASK    ((ushort) 0x07f)
56     
57     #define DATA_WNDW       ((ushort) 0x10)
58     #define PKT_TTL_MASK    ((ushort) 0x0f)
59     
60     #define PKT_MAX_DATA_LEN   72
61     
62     #define PKT_LENGTH         sizeof(struct PKT)
63     #define SYNC_PKT_LENGTH    (PKT_LENGTH + 4)
64     
65     #define CONTROL_PKT_LEN_MASK PKT_LEN_MASK
66     #define CONTROL_PKT_CMD_BIT  PKT_CMD_BIT
67     #define CONTROL_PKT_ACK (PKT_ACK << 8)
68     #define CONTROL_PKT_TGL (PKT_TGL << 8)
69     #define CONTROL_PKT_TTL_MASK (PKT_TTL_MASK << 8)
70     #define CONTROL_DATA_WNDW  (DATA_WNDW << 8)
71     
72     struct PKT    {
73     #ifdef INKERNEL
74                        BYTE    dest_unit ;    /* Destination Unit Id */
75                        BYTE    dest_port ;    /* Destination POrt */
76                        BYTE    src_unit ;     /* Source Unit Id */
77                        BYTE    src_port ;     /* Source POrt */
78     #else
79                        union       
80                        {
81                            ushort destination;         /* Complete destination */
82                            struct
83                            {
84                                unsigned char unit;     /* Destination unit */
85                                unsigned char port;     /* Destination port */
86                            } s1;
87                        } u1;
88                        union       
89                        {
90                            ushort source;              /* Complete source */
91                            struct
92                            {
93                                unsigned char unit;     /* Source unit */
94                                unsigned char port;     /* Source port */
95                            } s2;
96                        } u2;
97     #endif
98     #ifdef INKERNEL
99                        BYTE len ;
100                        BYTE control;
101     #else
102                        union
103                        {
104                             ushort      control;
105                             struct
106                             {
107                                 unsigned char len;
108                                 unsigned char control;
109                             } s3;
110                         } u3;
111     #endif
112                        BYTE    data[PKT_MAX_DATA_LEN] ;     
113                                                        /* Actual data :-) */
114                        WORD  csum ;                  /* C-SUM */
115                    } ;
116     #endif
117     
118     /*********** end of file ***********/
119     
120     
121