1#ifndef __NET_SPX_H
2#define __NET_SPX_H
3
4#include <net/ipx.h>
5
6struct 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
18struct ipxspxhdr
19{	struct ipxhdr	ipx;
20	struct spxhdr	spx;
21};
22
23#define	SPX_SYS_PKT_LEN	(sizeof(struct ipxspxhdr))
24
25#ifdef __KERNEL__
26struct 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