1/*
2 * IPWireless 3G PCMCIA Network Driver
3 *
4 * Original code
5 *   by Stephen Blackheath <stephen@blacksapphire.com>,
6 *      Ben Martel <benm@symmetric.co.nz>
7 *
8 * Copyrighted as follows:
9 *   Copyright (C) 2004 by Symmetric Systems Ltd (NZ)
10 *
11 * Various driver changes and rewrites, port to new kernels
12 *   Copyright (C) 2006-2007 Jiri Kosina
13 *
14 * Misc code cleanups and updates
15 *   Copyright (C) 2007 David Sterba
16 */
17
18#ifndef _IPWIRELESS_CS_SETUP_PROTOCOL_H_
19#define _IPWIRELESS_CS_SETUP_PROTOCOL_H_
20
21/* Version of the setup protocol and transport protocols */
22#define TL_SETUP_VERSION		1
23
24#define TL_SETUP_VERSION_QRY_TMO	1000
25#define TL_SETUP_MAX_VERSION_QRY	30
26
27/* Message numbers 0-9 are obsoleted and must not be reused! */
28#define TL_SETUP_SIGNO_GET_VERSION_QRY	10
29#define TL_SETUP_SIGNO_GET_VERSION_RSP	11
30#define TL_SETUP_SIGNO_CONFIG_MSG	12
31#define TL_SETUP_SIGNO_CONFIG_DONE_MSG	13
32#define TL_SETUP_SIGNO_OPEN_MSG		14
33#define TL_SETUP_SIGNO_CLOSE_MSG	15
34
35#define TL_SETUP_SIGNO_INFO_MSG     20
36#define TL_SETUP_SIGNO_INFO_MSG_ACK 21
37
38#define TL_SETUP_SIGNO_REBOOT_MSG      22
39#define TL_SETUP_SIGNO_REBOOT_MSG_ACK  23
40
41/* Synchronous start-messages */
42struct tl_setup_get_version_qry {
43	unsigned char sig_no;		/* TL_SETUP_SIGNO_GET_VERSION_QRY */
44} __attribute__ ((__packed__));
45
46struct tl_setup_get_version_rsp {
47	unsigned char sig_no;		/* TL_SETUP_SIGNO_GET_VERSION_RSP */
48	unsigned char version;		/* TL_SETUP_VERSION */
49} __attribute__ ((__packed__));
50
51struct tl_setup_config_msg {
52	unsigned char sig_no;		/* TL_SETUP_SIGNO_CONFIG_MSG */
53	unsigned char port_no;
54	unsigned char prio_data;
55	unsigned char prio_ctrl;
56} __attribute__ ((__packed__));
57
58struct tl_setup_config_done_msg {
59	unsigned char sig_no;		/* TL_SETUP_SIGNO_CONFIG_DONE_MSG */
60} __attribute__ ((__packed__));
61
62/* Asynchronous messages */
63struct tl_setup_open_msg {
64	unsigned char sig_no;		/* TL_SETUP_SIGNO_OPEN_MSG */
65	unsigned char port_no;
66} __attribute__ ((__packed__));
67
68struct tl_setup_close_msg {
69	unsigned char sig_no;		/* TL_SETUP_SIGNO_CLOSE_MSG */
70	unsigned char port_no;
71} __attribute__ ((__packed__));
72
73/* Driver type  - for use in tl_setup_info_msg.driver_type */
74#define COMM_DRIVER     0
75#define NDISWAN_DRIVER  1
76#define NDISWAN_DRIVER_MAJOR_VERSION  2
77#define NDISWAN_DRIVER_MINOR_VERSION  0
78
79/*
80 * It should not matter when this message comes over as we just store the
81 * results and send the ACK.
82 */
83struct tl_setup_info_msg {
84	unsigned char sig_no;		/* TL_SETUP_SIGNO_INFO_MSG */
85	unsigned char driver_type;
86	unsigned char major_version;
87	unsigned char minor_version;
88} __attribute__ ((__packed__));
89
90struct tl_setup_info_msgAck {
91	unsigned char sig_no;		/* TL_SETUP_SIGNO_INFO_MSG_ACK */
92} __attribute__ ((__packed__));
93
94struct TlSetupRebootMsgAck {
95	unsigned char sig_no;		/* TL_SETUP_SIGNO_REBOOT_MSG_ACK */
96} __attribute__ ((__packed__));
97
98/* Define a union of all the msgs that the driver can receive from the card.*/
99union ipw_setup_rx_msg {
100	unsigned char sig_no;
101	struct tl_setup_get_version_rsp version_rsp_msg;
102	struct tl_setup_open_msg open_msg;
103	struct tl_setup_close_msg close_msg;
104	struct tl_setup_info_msg InfoMsg;
105	struct tl_setup_info_msgAck info_msg_ack;
106} __attribute__ ((__packed__));
107
108#endif				/* _IPWIRELESS_CS_SETUP_PROTOCOL_H_ */
109