1 /* 2 ************************************************************************* 3 * Ralink Tech Inc. 4 * 5F., No.36, Taiyuan St., Jhubei City, 5 * Hsinchu County 302, 6 * Taiwan, R.O.C. 7 * 8 * (c) Copyright 2002-2007, Ralink Technology, Inc. 9 * 10 * This program is free software; you can redistribute it and/or modify * 11 * it under the terms of the GNU General Public License as published by * 12 * the Free Software Foundation; either version 2 of the License, or * 13 * (at your option) any later version. * 14 * * 15 * This program is distributed in the hope that it will be useful, * 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 18 * GNU General Public License for more details. * 19 * * 20 * You should have received a copy of the GNU General Public License * 21 * along with this program; if not, write to the * 22 * Free Software Foundation, Inc., * 23 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 24 * * 25 ************************************************************************* 26 27 Module Name: 28 aironet.h 29 30 Abstract: 31 32 Revision History: 33 Who When What 34 -------- ---------- ---------------------------------------------- 35 Name Date Modification logs 36 Paul Lin 04-06-15 Initial 37 */ 38 39 #ifndef __AIRONET_H__ 40 #define __AIRONET_H__ 41 42 // Measurement Type definition 43 #define MSRN_TYPE_UNUSED 0 44 #define MSRN_TYPE_CHANNEL_LOAD_REQ 1 45 #define MSRN_TYPE_NOISE_HIST_REQ 2 46 #define MSRN_TYPE_BEACON_REQ 3 47 #define MSRN_TYPE_FRAME_REQ 4 48 49 // Scan Mode in Beacon Request 50 #define MSRN_SCAN_MODE_PASSIVE 0 51 #define MSRN_SCAN_MODE_ACTIVE 1 52 #define MSRN_SCAN_MODE_BEACON_TABLE 2 53 54 // PHY type definition for Aironet beacon report, CCX 2 table 36-9 55 #define PHY_FH 1 56 #define PHY_DSS 2 57 #define PHY_UNUSED 3 58 #define PHY_OFDM 4 59 #define PHY_HR_DSS 5 60 #define PHY_ERP 6 61 62 // RPI table in dBm 63 #define RPI_0 0 // Power <= -87 64 #define RPI_1 1 // -87 < Power <= -82 65 #define RPI_2 2 // -82 < Power <= -77 66 #define RPI_3 3 // -77 < Power <= -72 67 #define RPI_4 4 // -72 < Power <= -67 68 #define RPI_5 5 // -67 < Power <= -62 69 #define RPI_6 6 // -62 < Power <= -57 70 #define RPI_7 7 // -57 < Power 71 72 // Cisco Aironet IAPP definetions 73 #define AIRONET_IAPP_TYPE 0x32 74 #define AIRONET_IAPP_SUBTYPE_REQUEST 0x01 75 #define AIRONET_IAPP_SUBTYPE_REPORT 0x81 76 77 // Measurement Request detail format 78 typedef struct _MEASUREMENT_REQUEST { 79 UCHAR Channel; 80 UCHAR ScanMode; // Use only in beacon request, other requests did not use this field 81 USHORT Duration; 82 } MEASUREMENT_REQUEST, *PMEASUREMENT_REQUEST; 83 84 // Beacon Measurement Report 85 // All these field might change to UCHAR, because we didn't do anything to these report. 86 // We copy all these beacons and report to CCX 2 AP. 87 typedef struct _BEACON_REPORT { 88 UCHAR Channel; 89 UCHAR Spare; 90 USHORT Duration; 91 UCHAR PhyType; // Definiation is listed above table 36-9 92 UCHAR RxPower; 93 UCHAR BSSID[6]; 94 UCHAR ParentTSF[4]; 95 UCHAR TargetTSF[8]; 96 USHORT BeaconInterval; 97 USHORT CapabilityInfo; 98 } BEACON_REPORT, *PBEACON_REPORT; 99 100 // Frame Measurement Report (Optional) 101 typedef struct _FRAME_REPORT { 102 UCHAR Channel; 103 UCHAR Spare; 104 USHORT Duration; 105 UCHAR TA; 106 UCHAR BSSID[6]; 107 UCHAR RSSI; 108 UCHAR Count; 109 } FRAME_REPORT, *PFRAME_REPORT; 110 111 #pragma pack(1) 112 // Channel Load Report 113 typedef struct _CHANNEL_LOAD_REPORT { 114 UCHAR Channel; 115 UCHAR Spare; 116 USHORT Duration; 117 UCHAR CCABusy; 118 } CHANNEL_LOAD_REPORT, *PCHANNEL_LOAD_REPORT; 119 #pragma pack() 120 121 // Nosie Histogram Report 122 typedef struct _NOISE_HIST_REPORT { 123 UCHAR Channel; 124 UCHAR Spare; 125 USHORT Duration; 126 UCHAR Density[8]; 127 } NOISE_HIST_REPORT, *PNOISE_HIST_REPORT; 128 129 // Radio Management Capability element 130 typedef struct _RADIO_MANAGEMENT_CAPABILITY { 131 UCHAR Eid; // TODO: Why the Eid is 1 byte, not normal 2 bytes??? 132 UCHAR Length; 133 UCHAR AironetOui[3]; // AIronet OUI (00 40 96) 134 UCHAR Type; // Type / Version 135 USHORT Status; // swap16 required 136 } RADIO_MANAGEMENT_CAPABILITY, *PRADIO_MANAGEMENT_CAPABILITY; 137 138 // Measurement Mode Bit definition 139 typedef struct _MEASUREMENT_MODE { 140 UCHAR Rsvd:4; 141 UCHAR Report:1; 142 UCHAR NotUsed:1; 143 UCHAR Enable:1; 144 UCHAR Parallel:1; 145 } MEASUREMENT_MODE, *PMEASUREMENT_MODE; 146 147 // Measurement Request element, This is little endian mode 148 typedef struct _MEASUREMENT_REQUEST_ELEMENT { 149 USHORT Eid; 150 USHORT Length; // swap16 required 151 USHORT Token; // non-zero unique token 152 UCHAR Mode; // Measurement Mode 153 UCHAR Type; // Measurement type 154 } MEASUREMENT_REQUEST_ELEMENT, *PMEASUREMENT_REQUEST_ELEMENT; 155 156 // Measurement Report element, This is little endian mode 157 typedef struct _MEASUREMENT_REPORT_ELEMENT { 158 USHORT Eid; 159 USHORT Length; // swap16 required 160 USHORT Token; // non-zero unique token 161 UCHAR Mode; // Measurement Mode 162 UCHAR Type; // Measurement type 163 } MEASUREMENT_REPORT_ELEMENT, *PMEASUREMENT_REPORT_ELEMENT; 164 165 // Cisco Aironet IAPP Frame Header, Network byte order used 166 typedef struct _AIRONET_IAPP_HEADER { 167 UCHAR CiscoSnapHeader[8]; // 8 bytes Cisco snap header 168 USHORT Length; // IAPP ID & length, remember to swap16 in LE system 169 UCHAR Type; // IAPP type 170 UCHAR SubType; // IAPP subtype 171 UCHAR DA[6]; // Destination MAC address 172 UCHAR SA[6]; // Source MAC address 173 USHORT Token; // Dialog token, no need to swap16 since it is for yoken usage only 174 } AIRONET_IAPP_HEADER, *PAIRONET_IAPP_HEADER; 175 176 // Radio Measurement Request frame 177 typedef struct _AIRONET_RM_REQUEST_FRAME { 178 AIRONET_IAPP_HEADER IAPP; // Common header 179 UCHAR Delay; // Activation Delay 180 UCHAR Offset; // Measurement offset 181 } AIRONET_RM_REQUEST_FRAME, *PAIRONET_RM_REQUEST_FRAME; 182 183 // Radio Measurement Report frame 184 typedef struct _AIRONET_RM_REPORT_FRAME { 185 AIRONET_IAPP_HEADER IAPP; // Common header 186 } AIRONET_RM_REPORT_FRAME, *PAIRONET_RM_REPORT_FRAME; 187 188 // Saved element request actions which will saved in StaCfg. 189 typedef struct _RM_REQUEST_ACTION { 190 MEASUREMENT_REQUEST_ELEMENT ReqElem; // Saved request element 191 MEASUREMENT_REQUEST Measurement; // Saved measurement within the request element 192 } RM_REQUEST_ACTION, *PRM_REQUEST_ACTION; 193 194 // CCX administration control 195 typedef union _CCX_CONTROL { 196 struct { 197 UINT32 Enable:1; // Enable CCX2 198 UINT32 LeapEnable:1; // Enable LEAP at CCX2 199 UINT32 RMEnable:1; // Radio Measurement Enable 200 UINT32 DCRMEnable:1; // Non serving channel Radio Measurement enable 201 UINT32 QOSEnable:1; // Enable QOS for CCX 2.0 support 202 UINT32 FastRoamEnable:1; // Enable fast roaming 203 UINT32 Rsvd:2; // Not used 204 UINT32 dBmToRoam:8; // the condition to roam when receiving Rssi less than this value. It's negative value. 205 UINT32 TuLimit:16; // Limit for different channel scan 206 } field; 207 UINT32 word; 208 } CCX_CONTROL, *PCCX_CONTROL; 209 210 #endif // __AIRONET_H__ 211