1//---------------------------------------------------------------------------
2// FT1000 driver for Flarion Flash OFDM NIC Device
3//
4// Copyright (C) 2002 Flarion Technologies, All rights reserved.
5//
6// This program is free software; you can redistribute it and/or modify it
7// under the terms of the GNU General Public License as published by the Free
8// Software Foundation; either version 2 of the License, or (at your option) any
9// later version. This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11// or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12// more details. You should have received a copy of the GNU General Public
13// License along with this program; if not, write to the
14// Free Software Foundation, Inc., 59 Temple Place -
15// Suite 330, Boston, MA 02111-1307, USA.
16//---------------------------------------------------------------------------
17//
18// File:         ft1000_ioctl.h
19//
20// Description:    Common structures and defines relating to IOCTL
21//
22// History:
23// 11/5/02    Whc                Created.
24//
25//---------------------------------------------------------------------------//---------------------------------------------------------------------------
26#ifndef _FT1000IOCTLH_
27#define _FT1000IOCTLH_
28
29typedef struct _IOCTL_GET_VER
30{
31    unsigned long drv_ver;
32} __attribute__ ((packed)) IOCTL_GET_VER, *PIOCTL_GET_VER;
33
34//Data structure for Dsp statistics
35typedef struct _IOCTL_GET_DSP_STAT
36{
37    unsigned char DspVer[DSPVERSZ];        // DSP version number
38    unsigned char HwSerNum[HWSERNUMSZ];    // Hardware Serial Number
39    unsigned char Sku[SKUSZ];              // SKU
40    unsigned char eui64[EUISZ];            // EUI64
41    unsigned short ConStat;                // Connection Status
42                                //    Bits 0-3 = Connection Status Field
43                                //               0000=Idle (Disconnect)
44                                //               0001=Searching
45                                //               0010=Active (Connected)
46                                //               0011=Waiting for L2 down
47                                //               0100=Sleep
48    unsigned short LedStat;                // Led Status
49                                //    Bits 0-3   = Signal Strength Field
50                                //                 0000 = -105dBm to -92dBm
51                                //                 0001 = -92dBm to -85dBm
52                                //                 0011 = -85dBm to -75dBm
53                                //                 0111 = -75dBm to -50dBm
54                                //                 1111 = -50dBm to 0dBm
55                                //    Bits 4-7   = Reserved
56                                //    Bits 8-11  = SNR Field
57                                //                 0000 = <2dB
58                                //                 0001 = 2dB to 8dB
59                                //                 0011 = 8dB to 15dB
60                                //                 0111 = 15dB to 22dB
61                                //                 1111 = >22dB
62                                //    Bits 12-15 = Reserved
63    unsigned long nTxPkts;                // Number of packets transmitted from host to dsp
64    unsigned long nRxPkts;                // Number of packets received from dsp to host
65    unsigned long nTxBytes;               // Number of bytes transmitted from host to dsp
66    unsigned long nRxBytes;               // Number of bytes received from dsp to host
67    unsigned long ConTm;                  // Current session connection time in seconds
68    unsigned char CalVer[CALVERSZ];       // Proprietary Calibration Version
69    unsigned char CalDate[CALDATESZ];     // Proprietary Calibration Date
70} __attribute__ ((packed)) IOCTL_GET_DSP_STAT, *PIOCTL_GET_DSP_STAT;
71
72//Data structure for Dual Ported RAM messaging between Host and Dsp
73typedef struct _IOCTL_DPRAM_BLK
74{
75    unsigned short total_len;
76	struct pseudo_hdr pseudohdr;
77    unsigned char buffer[1780];
78} __attribute__ ((packed)) IOCTL_DPRAM_BLK, *PIOCTL_DPRAM_BLK;
79
80typedef struct _IOCTL_DPRAM_COMMAND
81{
82    unsigned short extra;
83    IOCTL_DPRAM_BLK dpram_blk;
84} __attribute__ ((packed)) IOCTL_DPRAM_COMMAND, *PIOCTL_DPRAM_COMMAND;
85
86//
87// Custom IOCTL command codes
88//
89#define FT1000_MAGIC_CODE      'F'
90
91#define IOCTL_REGISTER_CMD					0
92#define IOCTL_SET_DPRAM_CMD					3
93#define IOCTL_GET_DPRAM_CMD					4
94#define IOCTL_GET_DSP_STAT_CMD      6
95#define IOCTL_GET_VER_CMD           7
96#define IOCTL_CONNECT               10
97#define IOCTL_DISCONNECT            11
98
99#define IOCTL_FT1000_GET_DSP_STAT _IOR (FT1000_MAGIC_CODE, IOCTL_GET_DSP_STAT_CMD, sizeof(IOCTL_GET_DSP_STAT) )
100#define IOCTL_FT1000_GET_VER _IOR (FT1000_MAGIC_CODE, IOCTL_GET_VER_CMD, sizeof(IOCTL_GET_VER) )
101#define IOCTL_FT1000_CONNECT _IOW (FT1000_MAGIC_CODE, IOCTL_CONNECT, 0 )
102#define IOCTL_FT1000_DISCONNECT _IOW (FT1000_MAGIC_CODE, IOCTL_DISCONNECT, 0 )
103#define IOCTL_FT1000_SET_DPRAM _IOW (FT1000_MAGIC_CODE, IOCTL_SET_DPRAM_CMD, sizeof(IOCTL_DPRAM_BLK) )
104#define IOCTL_FT1000_GET_DPRAM _IOR (FT1000_MAGIC_CODE, IOCTL_GET_DPRAM_CMD, sizeof(IOCTL_DPRAM_BLK) )
105#define IOCTL_FT1000_REGISTER  _IOW (FT1000_MAGIC_CODE, IOCTL_REGISTER_CMD, sizeof(unsigned short *) )
106#endif // _FT1000IOCTLH_
107
108