]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/staging/rt3070/aironet.h
Merge branch 'omap-pool'
[linux-2.6-omap-h63xx.git] / drivers / staging / rt3070 / aironet.h
diff --git a/drivers/staging/rt3070/aironet.h b/drivers/staging/rt3070/aironet.h
new file mode 100644 (file)
index 0000000..1e07b19
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2007, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  *
+ * it under the terms of the GNU General Public License as published by  *
+ * the Free Software Foundation; either version 2 of the License, or     *
+ * (at your option) any later version.                                   *
+ *                                                                       *
+ * This program is distributed in the hope that it will be useful,       *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ * GNU General Public License for more details.                          *
+ *                                                                       *
+ * You should have received a copy of the GNU General Public License     *
+ * along with this program; if not, write to the                         *
+ * Free Software Foundation, Inc.,                                       *
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *                                                                       *
+ *************************************************************************
+
+       Module Name:
+       aironet.h
+
+       Abstract:
+
+       Revision History:
+       Who                     When                    What
+       --------        ----------              ----------------------------------------------
+       Name            Date                    Modification logs
+       Paul Lin        04-06-15                Initial
+*/
+
+#ifndef        __AIRONET_H__
+#define        __AIRONET_H__
+
+// Measurement Type definition
+#define        MSRN_TYPE_UNUSED                                0
+#define        MSRN_TYPE_CHANNEL_LOAD_REQ              1
+#define        MSRN_TYPE_NOISE_HIST_REQ                2
+#define        MSRN_TYPE_BEACON_REQ                    3
+#define        MSRN_TYPE_FRAME_REQ                             4
+
+// Scan Mode in Beacon Request
+#define        MSRN_SCAN_MODE_PASSIVE                  0
+#define        MSRN_SCAN_MODE_ACTIVE                   1
+#define        MSRN_SCAN_MODE_BEACON_TABLE             2
+
+// PHY type definition for Aironet beacon report, CCX 2 table 36-9
+#define        PHY_FH                                                  1
+#define        PHY_DSS                                                 2
+#define        PHY_UNUSED                                              3
+#define        PHY_OFDM                                                4
+#define        PHY_HR_DSS                                              5
+#define        PHY_ERP                                                 6
+
+// RPI table in dBm
+#define        RPI_0                   0                       //      Power <= -87
+#define        RPI_1                   1                       //      -87 < Power <= -82
+#define        RPI_2                   2                       //      -82 < Power <= -77
+#define        RPI_3                   3                       //      -77 < Power <= -72
+#define        RPI_4                   4                       //      -72 < Power <= -67
+#define        RPI_5                   5                       //      -67 < Power <= -62
+#define        RPI_6                   6                       //      -62 < Power <= -57
+#define        RPI_7                   7                       //      -57 < Power
+
+// Cisco Aironet IAPP definetions
+#define        AIRONET_IAPP_TYPE                                       0x32
+#define        AIRONET_IAPP_SUBTYPE_REQUEST            0x01
+#define        AIRONET_IAPP_SUBTYPE_REPORT                     0x81
+
+// Measurement Request detail format
+typedef        struct  _MEASUREMENT_REQUEST    {
+       UCHAR   Channel;
+       UCHAR   ScanMode;                       // Use only in beacon request, other requests did not use this field
+       USHORT  Duration;
+}      MEASUREMENT_REQUEST, *PMEASUREMENT_REQUEST;
+
+// Beacon Measurement Report
+// All these field might change to UCHAR, because we didn't do anything to these report.
+// We copy all these beacons and report to CCX 2 AP.
+typedef        struct  _BEACON_REPORT  {
+       UCHAR   Channel;
+       UCHAR   Spare;
+       USHORT  Duration;
+       UCHAR   PhyType;                        // Definiation is listed above table 36-9
+       UCHAR   RxPower;
+       UCHAR   BSSID[6];
+       UCHAR   ParentTSF[4];
+       UCHAR   TargetTSF[8];
+       USHORT  BeaconInterval;
+       USHORT  CapabilityInfo;
+}      BEACON_REPORT, *PBEACON_REPORT;
+
+// Frame Measurement Report (Optional)
+typedef        struct  _FRAME_REPORT   {
+       UCHAR   Channel;
+       UCHAR   Spare;
+       USHORT  Duration;
+       UCHAR   TA;
+       UCHAR   BSSID[6];
+       UCHAR   RSSI;
+       UCHAR   Count;
+}      FRAME_REPORT, *PFRAME_REPORT;
+
+#pragma pack(1)
+// Channel Load Report
+typedef        struct  _CHANNEL_LOAD_REPORT    {
+       UCHAR   Channel;
+       UCHAR   Spare;
+       USHORT  Duration;
+       UCHAR   CCABusy;
+}      CHANNEL_LOAD_REPORT, *PCHANNEL_LOAD_REPORT;
+#pragma pack()
+
+// Nosie Histogram Report
+typedef        struct  _NOISE_HIST_REPORT      {
+       UCHAR   Channel;
+       UCHAR   Spare;
+       USHORT  Duration;
+       UCHAR   Density[8];
+}      NOISE_HIST_REPORT, *PNOISE_HIST_REPORT;
+
+// Radio Management Capability element
+typedef        struct  _RADIO_MANAGEMENT_CAPABILITY    {
+       UCHAR   Eid;                            // TODO: Why the Eid is 1 byte, not normal 2 bytes???
+       UCHAR   Length;
+       UCHAR   AironetOui[3];          // AIronet OUI (00 40 96)
+       UCHAR   Type;                           // Type / Version
+       USHORT  Status;                         // swap16 required
+}      RADIO_MANAGEMENT_CAPABILITY, *PRADIO_MANAGEMENT_CAPABILITY;
+
+// Measurement Mode Bit definition
+typedef        struct  _MEASUREMENT_MODE       {
+       UCHAR   Rsvd:4;
+       UCHAR   Report:1;
+       UCHAR   NotUsed:1;
+       UCHAR   Enable:1;
+       UCHAR   Parallel:1;
+}      MEASUREMENT_MODE, *PMEASUREMENT_MODE;
+
+// Measurement Request element, This is little endian mode
+typedef        struct  _MEASUREMENT_REQUEST_ELEMENT    {
+       USHORT                          Eid;
+       USHORT                          Length;                         // swap16 required
+       USHORT                          Token;                          // non-zero unique token
+       UCHAR                           Mode;                           // Measurement Mode
+       UCHAR                           Type;                           // Measurement type
+}      MEASUREMENT_REQUEST_ELEMENT, *PMEASUREMENT_REQUEST_ELEMENT;
+
+// Measurement Report element, This is little endian mode
+typedef        struct  _MEASUREMENT_REPORT_ELEMENT     {
+       USHORT                          Eid;
+       USHORT                          Length;                         // swap16 required
+       USHORT                          Token;                          // non-zero unique token
+       UCHAR                           Mode;                           // Measurement Mode
+       UCHAR                           Type;                           // Measurement type
+}      MEASUREMENT_REPORT_ELEMENT, *PMEASUREMENT_REPORT_ELEMENT;
+
+// Cisco Aironet IAPP Frame Header, Network byte order used
+typedef        struct  _AIRONET_IAPP_HEADER {
+       UCHAR   CiscoSnapHeader[8];     // 8 bytes Cisco snap header
+       USHORT  Length;                         // IAPP ID & length, remember to swap16 in LE system
+       UCHAR   Type;                           // IAPP type
+       UCHAR   SubType;                        // IAPP subtype
+       UCHAR   DA[6];                          // Destination MAC address
+       UCHAR   SA[6];                          // Source MAC address
+       USHORT  Token;                          // Dialog token, no need to swap16 since it is for yoken usage only
+}      AIRONET_IAPP_HEADER, *PAIRONET_IAPP_HEADER;
+
+// Radio Measurement Request frame
+typedef        struct  _AIRONET_RM_REQUEST_FRAME       {
+    AIRONET_IAPP_HEADER        IAPP;                   // Common header
+       UCHAR                           Delay;                  // Activation Delay
+       UCHAR                           Offset;                 // Measurement offset
+}      AIRONET_RM_REQUEST_FRAME, *PAIRONET_RM_REQUEST_FRAME;
+
+// Radio Measurement Report frame
+typedef        struct  _AIRONET_RM_REPORT_FRAME        {
+    AIRONET_IAPP_HEADER        IAPP;                   // Common header
+}      AIRONET_RM_REPORT_FRAME, *PAIRONET_RM_REPORT_FRAME;
+
+// Saved element request actions which will saved in StaCfg.
+typedef        struct  _RM_REQUEST_ACTION      {
+       MEASUREMENT_REQUEST_ELEMENT     ReqElem;                // Saved request element
+       MEASUREMENT_REQUEST                     Measurement;    // Saved measurement within the request element
+}      RM_REQUEST_ACTION, *PRM_REQUEST_ACTION;
+
+// CCX administration control
+typedef        union   _CCX_CONTROL    {
+       struct  {
+               UINT32          Enable:1;                       // Enable CCX2
+               UINT32          LeapEnable:1;           // Enable LEAP at CCX2
+               UINT32          RMEnable:1;                     // Radio Measurement Enable
+               UINT32          DCRMEnable:1;           // Non serving channel Radio Measurement enable
+               UINT32          QOSEnable:1;            // Enable QOS for CCX 2.0 support
+               UINT32          FastRoamEnable:1;       // Enable fast roaming
+               UINT32          Rsvd:2;                         // Not used
+               UINT32          dBmToRoam:8;            // the condition to roam when receiving Rssi less than this value. It's negative value.
+               UINT32          TuLimit:16;                     // Limit for different channel scan
+       }       field;
+       UINT32                  word;
+}      CCX_CONTROL, *PCCX_CONTROL;
+
+#endif // __AIRONET_H__