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