1 #ifndef __NET_SPX_H
2 #define __NET_SPX_H
3 
4 #include <net/ipx.h>
5 
6 struct spxhdr
7 {	__u8	cctl;
8 	__u8	dtype;
9 #define SPX_DTYPE_ECONN	0xFE	/* Finished */
10 #define SPX_DTYPE_ECACK	0xFF	/* Ok */
11 	__u16	sconn;	/* Connection ID */
12 	__u16	dconn;	/* Connection ID */
13 	__u16	sequence;
14 	__u16	ackseq;
15 	__u16	allocseq;
16 };
17 
18 struct ipxspxhdr
19 {	struct ipxhdr	ipx;
20 	struct spxhdr	spx;
21 };
22 
23 #define	SPX_SYS_PKT_LEN	(sizeof(struct ipxspxhdr))
24 
25 #ifdef __KERNEL__
26 struct spx_opt
27 {	int	state;
28 	int	sndbuf;
29 	int	retries;	/* Number of WD retries */
30 	int	retransmits;	/* Number of retransmits */
31 	int	max_retries;
32 	int	wd_interval;
33 	void	*owner;
34 	__u16	dest_connid;	/* Net order */
35 	__u16	source_connid;	/* Net order */
36 	__u16	sequence;	/* Host order - our current pkt # */
37 	__u16	alloc;		/* Host order - max seq we can rcv now */
38 	__u16	rmt_ack;	/* Host order - last pkt ACKd by remote */
39 	__u16	rmt_seq;
40 	__u16	acknowledge;
41 	__u16	rmt_alloc;	/* Host order - max seq remote can handle now */
42 	ipx_address	dest_addr;
43 	ipx_address	source_addr;
44 	struct timer_list	watchdog;	/* Idle watch */
45 	struct timer_list	retransmit;	/* Retransmit timer */
46 	struct sk_buff_head     rcv_queue;
47 	struct sk_buff_head	transmit_queue;
48 	struct sk_buff_head     retransmit_queue;
49 };
50 
51 /* Packet connectino control defines */
52 #define CCTL_SPXII_XHD  0x01    /* SPX2 extended header */
53 #define CCTL_SPX_UNKNOWN 0x02   /* Unknown (unused ??) */
54 #define CCTL_SPXII_NEG  0x04    /* Negotiate size */
55 #define CCTL_SPXII      0x08    /* Set for SPX2 */
56 #define CCTL_EOM        0x10    /* End of message marker */
57 #define CCTL_URG        0x20    /* Urgent marker in SPP (not used in SPX?) */
58 #define CCTL_ACK        0x40    /* Send me an ACK */
59 #define CCTL_CTL        0x80    /* Control message */
60 #define CCTL_SYS        CCTL_CTL        /* Spec uses CCTL_SYS */
61 
62 /* Connection state defines */
63 #define SPX_CLOSED	7
64 #define	SPX_CONNECTING	8
65 #define SPX_CONNECTED	9
66 
67 /* Packet transmit types - Internal */
68 #define DATA	0	/* Data */
69 #define ACK	1	/* Data ACK */
70 #define WDACK	2	/* WD ACK */
71 #define CONACK	3	/* Connection Request ACK */
72 #define	CONREQ	4	/* Connection Request */
73 #define WDREQ	5	/* WD Request */
74 #define	DISCON	6	/* Informed Disconnect */
75 #define	DISACK	7	/* Informed Disconnect ACK */
76 #define RETRAN	8	/* Int. Retransmit of packet */
77 #define TQUEUE	9	/* Int. Transmit of a queued packet */
78 
79 /*
80  * These are good canidates for IOcontrol calls
81  */
82 
83 /* Watchdog defines */
84 #define VERIFY_TIMEOUT  3 * HZ
85 #define ABORT_TIMEOUT   30 * HZ
86 
87 /* Packet retransmit defines */
88 #define RETRY_COUNT     10
89 #define RETRY_TIME      1 * HZ
90 #define MAX_RETRY_DELAY 5 * HZ
91 
92 #endif /* __KERNEL__ */
93 #endif /* def __NET_SPX_H */
94