wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacoidmsg.h
changeset 0 c40eb8fe8501
child 3 6524e815f76f
equal deleted inserted replaced
-1:000000000000 0:c40eb8fe8501
       
     1 /*
       
     2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   This file contains definitions for OID messages, which are 
       
    15 *                used for issuing management commands to UMAC.
       
    16 *
       
    17 */
       
    18 
       
    19 /*
       
    20 * %version: 42 %
       
    21 */
       
    22 
       
    23 #ifndef WLAN_OID_MSG_H
       
    24 #define WLAN_OID_MSG_H
       
    25 
       
    26 #include "umac_types.h"
       
    27 
       
    28 
       
    29                                                         //    Query   
       
    30                                                         //    | Set
       
    31                                                         //    | | 
       
    32 enum TWlanCommandId                                     //    | | 
       
    33     {                                                   //    | | 
       
    34     E802_11_CONNECT = 0x0C000000,                       //      X
       
    35     E802_11_START_IBSS,                                 //      X
       
    36     E802_11_SCAN,                                       //      X    
       
    37     E802_11_STOP_SCAN,                                  //      X
       
    38     E802_11_DISCONNECT,                                 //      X
       
    39     E802_11_SET_POWER_MODE,                             //      X
       
    40     E802_11_SET_RCPI_TRIGGER_LEVEL,                     //      X     
       
    41     E802_11_SET_TX_POWER_LEVEL,                         //      X
       
    42     E802_11_CONFIGURE,                                  //      X
       
    43     E802_11_GET_LAST_RCPI,                              //    X       
       
    44     E802_11_DISABLE_USER_DATA,                          //      X
       
    45     E802_11_ENABLE_USER_DATA,                           //      X
       
    46     E802_11_ADD_CIPHER_KEY,                             //      X
       
    47     E802_11_ADD_MULTICAST_ADDR,                         //      X
       
    48     E802_11_REMOVE_MULTICAST_ADDR,                      //      X
       
    49     E802_11_CONFIGURE_BSS_LOST,                         //      X
       
    50     E802_11_SET_TX_RATE_ADAPT_PARAMS,                   //      X
       
    51     E802_11_CONFIGURE_TX_RATE_POLICIES,                 //      X
       
    52     E802_11_SET_POWER_MODE_MGMT_PARAMS,                 //      X
       
    53     E802_11_CONFIGURE_PWR_MODE_MGMT_TRAFFIC_OVERRIDE,   //      X
       
    54     E802_11_GET_FRAME_STATISTICS,                       //    X
       
    55     E802_11_CONFIGURE_UAPSD,                            //      X
       
    56     E802_11_CONFIGURE_TX_QUEUE,                         //      X
       
    57     E802_11_GET_MAC_ADDRESS,                            //    X
       
    58     E802_11_CONFIGURE_ARP_IP_ADDRESS_FILTERING,         //      X
       
    59     E802_11_CONFIGURE_HT_BLOCK_ACK,                     //      X
       
    60     E802_11_CONFIGURE_PROPRIETARY_SNAP_HDR              //      X
       
    61     };
       
    62 
       
    63 const TUint KMaxCipherKeyLength = 32; // 256 bits
       
    64    
       
    65 // -------------------------------------------------------------------------
       
    66 
       
    67 /** 802.11 Power management modes */
       
    68 enum TPowerMode
       
    69     {
       
    70     /** Continuous Awake Mode (CAM). */
       
    71     EPowerModeCam,
       
    72     /** Power Save (PS) Mode */
       
    73     EPowerModePs
       
    74     };
       
    75 
       
    76 /** WLAN wake-up modes in 802.11 PS mode */
       
    77 enum TWlanWakeUpInterval
       
    78     {
       
    79     EWakeUpIntervalAllBeacons     = 0,
       
    80     EWakeUpIntervalAllDtims       = 1,
       
    81     EWakeUpIntervalEveryNthBeacon = 2,
       
    82     EWakeUpIntervalEveryNthDtim   = 3,
       
    83     };
       
    84    
       
    85 // -------------------------------------------------------------------------
       
    86 enum TAuthenticationMode
       
    87     {
       
    88     /**
       
    89     * IEEE 802.11 open authentication mode. 
       
    90     * No checks when accepting clients in this mode.
       
    91     */
       
    92     EAuthModeOpen,
       
    93     /** IEEE 802.11 shared authentication that uses pre-shared WEP-key. */
       
    94     EAuthModeShared,
       
    95     /** Vendor specific authentication mode */
       
    96     EAuthModeLeap,
       
    97     /** Not a real mode, defined as an upper bound. */
       
    98     EAuthModeMax
       
    99     };
       
   100 
       
   101 // -------------------------------------------------------------------------
       
   102 /** WLAN rates, units of 500 kbit/sec */
       
   103 enum TRate
       
   104     {
       
   105     ENoRate = 0,
       
   106     E1Mbps = 2,
       
   107     E2Mbps = 4,
       
   108     E5_5Mbps = 11,
       
   109     E11Mbps = 22,
       
   110     E22Mbps = 44,
       
   111     EBASIC_1Mbps = 0x82,
       
   112     EBASIC_2Mbps = 0x84,
       
   113     EBASIC_5_5Mbps = 0x8b,
       
   114     EBASIC_11Mbps = 0x96,
       
   115     EBASIC_22Mbps = 0xac
       
   116     };
       
   117     
       
   118 // -------------------------------------------------------------------------
       
   119 
       
   120 typedef enum _TEncryptionStatus
       
   121     {
       
   122     /** Security is disabled. */
       
   123     EEncryptionDisabled,
       
   124     /** Use WEP security */
       
   125     EEncryptionWep,
       
   126     /** Use 802.1x security */
       
   127     EEncryption802dot1x,
       
   128     /** Use WPA security */
       
   129     EEncryptionWpa,
       
   130     /** WEP mixed cell */
       
   131     EEncryptionWepMixed,
       
   132     /** 802.1x mixed cell */
       
   133     EEncryption802dot1xMixed,
       
   134     /** Use WAPI security */
       
   135     EEncryptionWAPI
       
   136     } TEncryptionStatus;
       
   137 
       
   138 // -------------------------------------------------------------------------
       
   139 /**
       
   140 * The possible cipher suites.
       
   141 */
       
   142 enum TWlanCipherSuite
       
   143     {
       
   144     EWlanCipherSuiteNone,
       
   145     EWlanCipherSuiteTkip,
       
   146     EWlanCipherSuiteCcmp,
       
   147     EWlanCipherSuiteWep,
       
   148     EWlanCipherSuiteWapi
       
   149     };
       
   150 
       
   151 // -------------------------------------------------------------------------
       
   152 //
       
   153 // PRAGMA PACK 4 BEGINS
       
   154 //
       
   155 #pragma pack(4)
       
   156 
       
   157 typedef struct _TSSID
       
   158     {
       
   159     /** 
       
   160     * Length of ssid-field in octets. This can be zero. 
       
   161     * If this is set to zero in the Scan command (message) when doing an
       
   162     * active scan, a broadcast scan is performed.
       
   163     */
       
   164     TUint32 ssidLength;
       
   165     /**
       
   166     * SSID information field.
       
   167     */
       
   168     TUint8 ssid[KMaxSSIDLength];
       
   169     } TSSID;
       
   170 
       
   171 #pragma pack()
       
   172 //
       
   173 // PRAGMA PACK 4 ENDS
       
   174 //
       
   175 // -------------------------------------------------------------------------
       
   176 
       
   177 
       
   178 enum TScanMode
       
   179     {
       
   180     /** Send probe requests to specified channels. */
       
   181     EActiveScan,
       
   182     /** Listen beacons from specified channels. */
       
   183     EPassiveScan
       
   184     };
       
   185 
       
   186 typedef struct _SChannels
       
   187     {
       
   188     TUint8 iBand; // 1 = 2.4 GHz, 2 = 4.9 GHz, 4 = 5 GHz
       
   189     TUint8 iChannels2dot4GHz[2];
       
   190     TUint8 iChannels4dot9GHz[3];
       
   191     TUint8 iChannels5GHz[26];
       
   192     } SChannels;
       
   193 
       
   194 // -------------------------------------------------------------------------
       
   195 
       
   196 typedef struct _TTxRateClass
       
   197     {
       
   198     /** Number of attempts to tx at 54 Mbits/s */
       
   199     TUint8  txPolicy54;
       
   200     /** Number of attempts to tx at 48 Mbits/s */
       
   201     TUint8  txPolicy48;
       
   202     /** Number of attempts to tx at 36 Mbits/s */
       
   203     TUint8  txPolicy36;
       
   204     /** Number of attempts to tx at 33 Mbits/s */
       
   205     TUint8  txPolicy33;
       
   206     /** Number of attempts to tx at 24 Mbits/s */
       
   207     TUint8  txPolicy24;
       
   208     /** Number of attempts to tx at 22 Mbits/s */
       
   209     TUint8  txPolicy22;
       
   210     /** Number of attempts to tx at 18 Mbits/s */
       
   211     TUint8  txPolicy18;
       
   212     /** Number of attempts to tx at 12 Mbits/s */
       
   213     TUint8  txPolicy12;
       
   214     /** Number of attempts to tx at 11 Mbits/s */
       
   215     TUint8  txPolicy11;
       
   216     /** Number of attempts to tx at 9 Mbits/s */
       
   217     TUint8  txPolicy9;
       
   218     /** Number of attempts to tx at 6 Mbits/s */
       
   219     TUint8  txPolicy6;
       
   220     /** Number of attempts to tx at 5.5 Mbits/s */
       
   221     TUint8  txPolicy5_5;
       
   222     /** Number of attempts to tx at 2 Mbits/s */
       
   223     TUint8  txPolicy2;
       
   224     /** Number of attempts to tx at 1 Mbits/s */
       
   225     TUint8  txPolicy1;
       
   226 
       
   227     /** 802.11 ShortRetryLimit used in the rate class */    
       
   228     TUint8  shortRetryLimit;
       
   229     /** 802.11 LongRetryLimit used in the rate class */    
       
   230     TUint8  longRetryLimit;
       
   231     
       
   232     /** 
       
   233     * Transmit flags. 
       
   234     * Bit 0 - truncate. If this bit is set, then attempts to send a frame
       
   235     * stop when the total valid per-rate attempts have been exhausted, 
       
   236     * otherwise, and also in the case the feature is not supported
       
   237     * by WHA layer, transmissions will continue at the lowest available 
       
   238     * rate until the appropriate one of the iShortRetryLimit, iLongRetryLimit,
       
   239     * dot11MaxTransmitMsduLifetime, is exhausted. [optional]
       
   240     * Bit 1 - indicates if the preamble override from the rate class should 
       
   241     * be used in transmit. [optional]
       
   242     * Bit 2 - defines the type of preamble to be used by the rate class. 
       
   243     * 0 means long preamble and 1 means short preamble. [optional]    
       
   244     */    
       
   245     TUint32 flags;
       
   246     } TTxRateClass;
       
   247 
       
   248 const TUint8 KMaxNbrOfRateClasses = 4;
       
   249 
       
   250 typedef struct _TTxRatePolicy 
       
   251     {    
       
   252     TUint32         numOfPolicyObjects;
       
   253     TTxRateClass    txRateClass[KMaxNbrOfRateClasses];
       
   254     } TTxRatePolicy;
       
   255 
       
   256 // -------------------------------------------------------------------------
       
   257 
       
   258 typedef TUint8 TRateClassIndex; 
       
   259 
       
   260 /** Tx Queue to Rate Class mapping */
       
   261 
       
   262 typedef TRateClassIndex TQueue2RateClass[EQueueIdMax];
       
   263 
       
   264 // -------------------------------------------------------------------------
       
   265 
       
   266 typedef TUint32 TRateMask; 
       
   267 
       
   268 /** Initial Max Tx Rate for Rate Class */
       
   269 typedef TRateMask TInitialMaxTxRate4RateClass[KMaxNbrOfRateClasses];
       
   270 
       
   271 /** Tx rate masks */
       
   272 
       
   273 const TRateMask KRate1Mbits       = 0x00000001;
       
   274 const TRateMask KRate2Mbits       = 0x00000002;
       
   275 const TRateMask KRate5_5Mbits     = 0x00000004;
       
   276 const TRateMask KRate6Mbits       = 0x00000008;
       
   277 const TRateMask KRate9Mbits       = 0x00000010;
       
   278 const TRateMask KRate11Mbits      = 0x00000020;
       
   279 const TRateMask KRate12Mbits      = 0x00000040;
       
   280 const TRateMask KRate18Mbits      = 0x00000080;
       
   281 const TRateMask KRate22Mbits      = 0x00000100;
       
   282 const TRateMask KRate24Mbits      = 0x00000200;
       
   283 const TRateMask KRate33Mbits      = 0x00000400;
       
   284 const TRateMask KRate36Mbits      = 0x00000800;
       
   285 const TRateMask KRate48Mbits      = 0x00001000;
       
   286 const TRateMask KRate54Mbits      = 0x00002000;
       
   287 
       
   288 /** 
       
   289 * Rate policy to use when the WLAN vendor implementation handles 
       
   290 * Tx rate adaptation
       
   291 */
       
   292 typedef TRateMask TTxAutoRatePolicy[KMaxNbrOfRateClasses];
       
   293 
       
   294 // -------------------------------------------------------------------------
       
   295 
       
   296 const   TUint8  KHtMcsSetLength = 10;
       
   297 typedef TUint8  THtMcsSet[KHtMcsSetLength];
       
   298 typedef THtMcsSet THtMcsPolicy[KMaxNbrOfRateClasses];
       
   299 
       
   300 // -------------------------------------------------------------------------
       
   301 
       
   302 /** the possible values for maximum service period length */
       
   303 enum TMaxServicePeriodLength
       
   304     {
       
   305     EMaxServicePeriodLengthAll  = 0x00,
       
   306     EMaxServicePeriodLengthTwo  = 0x20,
       
   307     EMaxServicePeriodLengthFour = 0x40,
       
   308     EMaxServicePeriodLengthSix  = 0x60,
       
   309     };
       
   310 
       
   311 // -------------------------------------------------------------------------
       
   312 
       
   313 /** data frame statistics per Access Category */
       
   314 typedef struct _TAccessCategoryStatistics
       
   315     {
       
   316     /** nbr of received unicast data frames */
       
   317     TUint rxUnicastDataFrameCount;
       
   318     /** nbr of successfully transmitted unicast data frames */
       
   319     TUint txUnicastDataFrameCount;
       
   320     /** nbr of received multicast data frames */
       
   321     TUint rxMulticastDataFrameCount;
       
   322     /** nbr of successfully transmitted multicast data frames */
       
   323     TUint txMulticastDataFrameCount;
       
   324     /** nbr of data frame transmit retries */
       
   325     TUint txRetryCount;
       
   326     /** nbr of data frames that could not be delivered to the WLAN AP/STA */
       
   327     TUint txErrorCount;
       
   328     /** 
       
   329     * average data frame Transmit / Media Delay in microseconds.
       
   330     * Zero if no frames were transmitted.
       
   331     */
       
   332     TUint txMediaDelay;
       
   333     /** 
       
   334     * average data frame Total Transmit Delay in microseconds. 
       
   335     * Zero if no frames were transmitted.
       
   336     */
       
   337     TUint totalTxDelay;
       
   338     /** nbr of data frames whose total transmit delay was <= 10ms */
       
   339     TUint totalTxDelayBin0;
       
   340     /** nbr of data frames whose total transmit delay was ]10,20]ms */
       
   341     TUint totalTxDelayBin1;
       
   342     /** nbr of data frames whose total transmit delay was ]20,40]ms */
       
   343     TUint totalTxDelayBin2;
       
   344     /** nbr of data frames whose total transmit delay was > 40ms */
       
   345     TUint totalTxDelayBin3;
       
   346     } TAccessCategoryStatistics;
       
   347 
       
   348 // -------------------------------------------------------------------------
       
   349 
       
   350     
       
   351 /**
       
   352 * Common header for all messages.
       
   353 */
       
   354 #pragma pack(4)
       
   355 typedef struct _TOIDHeader
       
   356     {
       
   357     /** OID identification (TWlanCommandId). */
       
   358     TUint32 oid_id;
       
   359     } TOIDHeader;
       
   360 #pragma pack()
       
   361 
       
   362 
       
   363 // -------------------------------------------------------------------------
       
   364 
       
   365 typedef struct _TConnectMsg
       
   366     {
       
   367     /** Common message header */
       
   368     TOIDHeader hdr;
       
   369     /** Name of the network. */
       
   370     TSSID SSID;
       
   371     /** BSSID of the access point / IBSS network. */
       
   372     TMacAddress BSSID;
       
   373     /** Authentication algorithm number to be used */
       
   374     TUint16 authAlgorithmNbr;
       
   375     /** Used encryption mode */
       
   376     TEncryptionStatus encryptionStatus;
       
   377     /** Pairwise cipher to use; if any */
       
   378     TWlanCipherSuite pairwiseCipher;
       
   379     /** 
       
   380     * ETrue when connecting to an infrastructure network; 
       
   381     * EFalse otherwise. 
       
   382     */
       
   383     TBool isInfra;
       
   384     /** 
       
   385     * Pointer to a Beacon or Probe Response frame body from the network
       
   386     * to connect to
       
   387     */
       
   388     const TUint8* scanResponseFrameBody;
       
   389     /** Length of the Beacon or Probe Response frame body */
       
   390     TUint16 scanResponseFrameBodyLength;
       
   391     /** 
       
   392     * Pointer to the IE(s) to be included into the (re-)association request.
       
   393     * NULL if there are no IE(s) to be included.
       
   394     */
       
   395     const TUint8* ieData;
       
   396     /** Length of the IEs */
       
   397     TUint16 ieDataLength;
       
   398     /** 
       
   399     * ETrue if the current pairwise cipher key should be marked as invalid
       
   400     * EFalse if the current pairwise cipher key should not be marked as invalid
       
   401     * If a pairwise key doesn't exist, this value has no effect
       
   402     **/
       
   403     TBool invalidatePairwiseKey;
       
   404     /** 
       
   405     * ETrue if the current group cipher key should be marked as invalid
       
   406     * EFalse if the current group cipher key should not be marked as invalid
       
   407     * If a group key doesn't exist, this value has no effect
       
   408     **/
       
   409     TBool invalidateGroupKey;
       
   410     /**
       
   411      * ETrue if Radio Measurements are on
       
   412      */
       
   413     TBool radioMeasurement;    
       
   414     } TConnectMsg;
       
   415 
       
   416 // -------------------------------------------------------------------------
       
   417 
       
   418 typedef struct _TStartIBSSMsg
       
   419     {
       
   420     /** Common message header */
       
   421     TOIDHeader hdr;
       
   422     /** Name of the network. */
       
   423     TSSID SSID;
       
   424     /** Beacon period in TUs (kusec). */
       
   425     TUint32 beaconInterval;
       
   426     /** ATIM window. */
       
   427     TUint32 ATIM;
       
   428     /** Used channel (1-14). Has to be legal in the current region. */
       
   429     TUint32 channel;
       
   430     /**
       
   431     * Used encryption mode.
       
   432     * [EEncryptionWep|EEncryptionDisabled]
       
   433     */
       
   434     TEncryptionStatus encryptionStatus;
       
   435     } TStartIBSSMsg;
       
   436 
       
   437 // -------------------------------------------------------------------------
       
   438 
       
   439 typedef struct _TScanMsg
       
   440     {
       
   441     /** Common message header */
       
   442     TOIDHeader hdr;
       
   443     /** Scan mode [active|passive]. */
       
   444     TScanMode mode;
       
   445     /** Network whose APs are scanned. Can be broadcast SSID. */
       
   446     TSSID SSID;
       
   447     /** Rate that is used in active scanning. */
       
   448     TRate scanRate;
       
   449     /** Channel set for scanning */
       
   450     SChannels channels;
       
   451     /** Min. time to listen beacons/probe responses on a channel. */
       
   452     TUint32 minChannelTime;
       
   453     /** Max. time to listen beacons/probe responses on a channel. */
       
   454     TUint32 maxChannelTime;
       
   455     /** ETrue if split scan shall be used; EFalse otherwise */
       
   456     TBool splitScan;
       
   457     } TScanMsg;
       
   458 
       
   459 // -------------------------------------------------------------------------
       
   460 
       
   461 typedef struct _TStopScanMsg
       
   462     {
       
   463     /** Common message header */
       
   464     TOIDHeader hdr;
       
   465     } TStopScanMsg;
       
   466 
       
   467 // -------------------------------------------------------------------------
       
   468 
       
   469 typedef struct _TDisconnectMsg
       
   470     {
       
   471     /** Common message header */
       
   472     TOIDHeader hdr;
       
   473     } TDisconnectMsg;
       
   474 
       
   475 // -------------------------------------------------------------------------
       
   476 
       
   477 typedef struct _TSetPowerModeMsg
       
   478     {
       
   479     /** Common message header */
       
   480     TOIDHeader hdr;
       
   481     /** 
       
   482     * 802.11 Power management mode. If the mode is EPowerModePs, we start
       
   483     * with Light PS 
       
   484     */
       
   485     TPowerMode powerMode;
       
   486     /** 
       
   487     * This setting is relevant only if powerMode is EPowerModePs.
       
   488     * If ETrue, disables the dynamic power mode management handling in UMAC.
       
   489     * If EFalse, allows the dynamic power mode management handling in UMAC.
       
   490     */
       
   491     TBool disableDynamicPowerModeManagement;
       
   492     
       
   493     /** 
       
   494     * WLAN wake-up mode in Light PS mode
       
   495     */
       
   496     TWlanWakeUpInterval wakeupModeInLightPs;
       
   497     /** 
       
   498     * Specifies the value of N for wake-up modes 2 and 3 in Light PS mode. 
       
   499     * So, is relevant only for wake-up modes 2 & 3 
       
   500     */
       
   501     TUint8 listenIntervalInLightPs;
       
   502     
       
   503     /** 
       
   504     * WLAN wake-up mode in Deep PS mode
       
   505     */
       
   506     TWlanWakeUpInterval wakeupModeInDeepPs;
       
   507     /** 
       
   508     * Specifies the value of N for wake-up modes 2 and 3 in Deep PS mode. 
       
   509     * So, is relevant only for wake-up modes 2 & 3 
       
   510     */
       
   511     TUint8 listenIntervalInDeepPs;
       
   512     } TSetPowerModeMsg;
       
   513 
       
   514 // -------------------------------------------------------------------------
       
   515 typedef struct _TSetRcpiTriggerLevelMsg
       
   516     {
       
   517     /** Common message header */
       
   518     TOIDHeader hdr;
       
   519     /** RCPI trigger level. */
       
   520     TInt32 RcpiTrigger;
       
   521     } TSetRcpiTriggerLevelMsg;
       
   522 
       
   523 // -------------------------------------------------------------------------
       
   524 
       
   525 typedef struct _TSetTxPowerLevelMsg
       
   526     {
       
   527     /** Common message header */
       
   528     TOIDHeader hdr;
       
   529     /**
       
   530     * Transmission power level in dBm.
       
   531     */
       
   532     TUint32 level;
       
   533     } TSetTxPowerLevelMsg;
       
   534 
       
   535 // -------------------------------------------------------------------------
       
   536 
       
   537 typedef struct _TConfigureMsg
       
   538     {
       
   539     /** Common message header */
       
   540     TOIDHeader hdr;
       
   541     /** Limit for packet size when to use RTS/CTS protocol. */
       
   542     TUint16 RTSThreshold;
       
   543     /** Max. time to (re-)send whole MSDU packet (in TUs) */
       
   544     TUint32 maxTxMSDULifetime;
       
   545     /**
       
   546     * When U-APSD power save mode is used for Voice AC, we are not in Voice
       
   547     * over WLAN Call state and we transmit at least voiceCallEntryTxThreshold
       
   548     * Voice priority frames during the time period (microseconds) denoted by
       
   549     * this parameter, we enter Voice over WLAN Call state
       
   550     */
       
   551     TUint32 voiceCallEntryTimeout;
       
   552     /** 
       
   553     * Threshold value for the number of Voice priority frames to enter
       
   554     * Voice over WLAN Call state. (See also the voiceCallEntryTimeout 
       
   555     * parameter)
       
   556     */
       
   557     TUint32 voiceCallEntryTxThreshold;
       
   558     /** 
       
   559     * The time interval (in microseconds) between QoS Null Data frames,
       
   560     * which we send during a Voice over WLAN Call in U-APSD power save
       
   561     * mode, if there are no other frames to be transmitted 
       
   562     */
       
   563     TUint32 voiceNullTimeout;
       
   564     /** 
       
   565     * If there are no Voice priority frames transmitted during the duration
       
   566     * of this timer (microseconds), we assume that the Voice over WLAN
       
   567     * Call has ended and we will stop sending the QoS Null Data frames
       
   568     * in U-APSD power save mode 
       
   569     */
       
   570     TUint32 noVoiceTimeout;
       
   571     /** 
       
   572     * The time interval (in microseconds) between Null Data frames,
       
   573     * which we send to the AP in infrastructure mode to keep the WLAN 
       
   574     * connection alive, if there are no other frames to be transmitted 
       
   575     */
       
   576     TUint32 keepAliveTimeout;
       
   577     /** 
       
   578     * If this RCPI level is predicted to be reached within the time
       
   579     * specified by spTimeToCountPrediction, a signal loss prediction
       
   580     * indication is sent. 
       
   581     */
       
   582     TUint32 spRcpiIndicationLevel;
       
   583     /** 
       
   584     * Specifies the time (in microseconds) how far into the future signal
       
   585     * prediction is done.
       
   586     */
       
   587     TUint32 spTimeToCountPrediction;
       
   588     /** 
       
   589     * The minimum time difference (in microseconds) between two signal
       
   590     * loss prediction indications.
       
   591     */
       
   592     TUint32 spMinIndicationInterval;
       
   593 
       
   594     } TConfigureMsg;
       
   595 
       
   596 // -------------------------------------------------------------------------
       
   597 
       
   598 typedef struct _TGetLastRcpiMsg
       
   599     {
       
   600     /** Common message header */
       
   601     TOIDHeader hdr;
       
   602     } TGetLastRcpiMsg;
       
   603 
       
   604 // -------------------------------------------------------------------------
       
   605 
       
   606 typedef struct _TDisableUserDataMsg
       
   607     {
       
   608     /** Common message header */
       
   609     TOIDHeader hdr;
       
   610     } TDisableUserDataMsg;
       
   611 
       
   612 // -------------------------------------------------------------------------
       
   613 
       
   614 typedef struct _TEnableUserDataMsg
       
   615     {
       
   616     /** Common message header */
       
   617     TOIDHeader hdr;
       
   618     } TEnableUserDataMsg;
       
   619 
       
   620 // -------------------------------------------------------------------------
       
   621 
       
   622 typedef struct _TAddCipherKeyMsg
       
   623     {
       
   624     /** Common message header */
       
   625     TOIDHeader hdr;
       
   626     /** cipher suite */
       
   627     TWlanCipherSuite cipherSuite;
       
   628     /** index of the key */
       
   629     TUint8 keyIndex;
       
   630     /** data blob that holds the cipher key */
       
   631     TUint8 data[KMaxCipherKeyLength];
       
   632     /** length of the data blob */
       
   633     TUint32 length;
       
   634     /** defines the MAC address the key is used for */
       
   635     TMacAddress macAddress;
       
   636     /** Is the key used as a default key. Applies to broadcast wep keys */
       
   637     TBool useAsDefaultKey;
       
   638     } TAddCipherKeyMsg;
       
   639 
       
   640 // -------------------------------------------------------------------------
       
   641 
       
   642 typedef struct _TAddMulticastAddrMsg
       
   643     {
       
   644     /** Common message header */
       
   645     TOIDHeader hdr;
       
   646     /** 
       
   647     * Defines the multicast MAC address to be added. 
       
   648     * Note that this will also automatically enable multicast filtering,
       
   649     * if it hasn't already been enabled by an earlier TAddMulticastAddrMsg.
       
   650     */
       
   651     TMacAddress macAddress;
       
   652     } TAddMulticastAddrMsg;
       
   653 
       
   654 // -------------------------------------------------------------------------
       
   655 
       
   656 typedef struct _TRemoveMulticastAddrMsg
       
   657     {
       
   658     /** Common message header */
       
   659     TOIDHeader hdr;
       
   660     /** 
       
   661     * If ETrue, remove all the currently specified multicast addresses.
       
   662     * Otherwise remove only macAddress (included in this message).
       
   663     * Note that if there are no multicast addresses left after this removal,
       
   664     * the multicast filtering will be disabled and all multicast packets will
       
   665     * again be received and accepted.
       
   666     */
       
   667     TBool removeAll;
       
   668     /** Defines the multicast MAC address to be removed */
       
   669     TMacAddress macAddress;
       
   670     } TRemoveMulticastAddrMsg;
       
   671 
       
   672 // -------------------------------------------------------------------------
       
   673 
       
   674 typedef struct _TConfigureBssLostMsg
       
   675     {
       
   676     /** Common message header */
       
   677     TOIDHeader hdr;
       
   678     /**
       
   679     * The number of consecutive beacons that can be lost in infrastructure 
       
   680     * mode before BSS Lost is indicated
       
   681     */
       
   682     TUint32 beaconLostCount;
       
   683     /**  
       
   684     * The number of consecutive transmissions that can fail totally before 
       
   685     * BSS lost is indicated
       
   686     */
       
   687     TUint8 failedTxPacketCount;
       
   688     } TConfigureBssLostMsg;
       
   689 
       
   690 // -------------------------------------------------------------------------
       
   691 
       
   692 typedef struct _TSetTxRateAdaptationParamsMsg
       
   693     {
       
   694     /** Common message header */
       
   695     TOIDHeader hdr;
       
   696     /*
       
   697     * minimum and initial rate increase checkpoint in units of frames
       
   698     * Range: [stepDownCheckpoint,maxStepUpCheckpoint]
       
   699     */
       
   700     TUint8  minStepUpCheckpoint;
       
   701     /*
       
   702     * maximum rate increase checkpoint in units of frames
       
   703     * Range: [stepDownCheckpoint,UCHAR_MAX]
       
   704     */
       
   705     TUint8  maxStepUpCheckpoint;
       
   706     /*
       
   707     * rate increase checkpoint is multiplied with this value if sending a 
       
   708     * probe frame fails
       
   709     * Range: [1,maxStepUpCheckpoint]
       
   710     */
       
   711     TUint8  stepUpCheckpointFactor;
       
   712     /*
       
   713     * after this many frames the need to decrease the rate is checked
       
   714     * Range: [2,UCHAR_MAX]
       
   715     */
       
   716     TUint8  stepDownCheckpoint;
       
   717     /*
       
   718     * minimum and initial rate increase threshold percentage
       
   719     * Range: [1,maxStepUpThreshold]
       
   720     */
       
   721     TUint8  minStepUpThreshold;
       
   722     /*
       
   723     * maximum rate increase threshold percentage value
       
   724     * Range: [1,100]
       
   725     */
       
   726     TUint8  maxStepUpThreshold;
       
   727     /*
       
   728     * rate increase threshold is incremented by this value if sending a probe 
       
   729     * frame fails
       
   730     * Range: [0,maxStepUpThreshold]
       
   731     */
       
   732     TUint8  stepUpThresholdIncrement;        
       
   733     /*
       
   734     * rate decrease threshold percentage
       
   735     * Range: [1,100]
       
   736     */
       
   737     TUint8  stepDownThreshold;
       
   738     /*
       
   739     * if EFalse, the rate adaptation algorithm handles the first frame 
       
   740     * transmitted after a rate increase in a special way. Otherwise the
       
   741     * special handling is disabled
       
   742     */
       
   743     TBool   disableProbeHandling;
       
   744     } TSetTxRateAdaptationParamsMsg;
       
   745 
       
   746 // -------------------------------------------------------------------------
       
   747 
       
   748 typedef struct _TConfigureTxRatePoliciesMsg
       
   749     {
       
   750     /** Common message header */
       
   751     TOIDHeader hdr;
       
   752     /*
       
   753     * defines the rate class(es) to use for frame Tx.
       
   754     * If WLAN PDD does not support as many rate classes as are specified
       
   755     * in this command message, only the rate class specified for ELegacy 
       
   756     * queue, which shall be the first class in this array, will be used.
       
   757     */
       
   758     TTxRatePolicy ratePolicy;
       
   759     /*
       
   760     * for every Tx queue / QoS Access Category, defines the rate class to
       
   761     * be used. 
       
   762     * TQueueId is used to index this array.
       
   763     */
       
   764     TQueue2RateClass queue2RateClass;
       
   765     /*
       
   766     * Max Tx rate which will be initially used to transmit using the 
       
   767     * rate class in question. If the specified rate is not supported, 
       
   768     * the next lower supported rate from the rate class will be used 
       
   769     * instead.
       
   770     * Only the first numOfPolicyObjects values (see TTxRatePolicy) from 
       
   771     * the beginning of the array are relevant.
       
   772     */
       
   773     TInitialMaxTxRate4RateClass initialMaxTxRate4RateClass;
       
   774     /** 
       
   775     * defines the rate class(es) to use for frame Tx when the WLAN vendor
       
   776     * implementation handles Tx rate adaptation.
       
   777     * If WLAN PDD does not support as many rate classes as are specified
       
   778     * in this command message, only the rate class specified for ELegacy 
       
   779     * queue, which shall be the first class in this array, will be used.
       
   780     * The mapping defined in queue2RateClass applies also to these classes.
       
   781     * The shortRetryLimit and the longRetryLimit values defined as part of 
       
   782     * the ratePolicy are relevant also with the auto rate policy. 
       
   783     * Only the first numOfPolicyObjects values (see TTxRatePolicy) from 
       
   784     * the beginning of the array are relevant.
       
   785     */
       
   786     TTxAutoRatePolicy autoRatePolicy;
       
   787     /** 
       
   788     * defines the HT MCS sets to use for frame Tx when communicating
       
   789     * with a HT network.
       
   790     * If WLAN PDD does not support as many MCS sets as are specified
       
   791     * in this command message, only the MCS set specified for ELegacy 
       
   792     * queue, which shall be the first MCS set in this array, will be used.
       
   793     * The mapping defined in queue2RateClass applies also to these MCS sets.
       
   794     * The shortRetryLimit and the longRetryLimit values defined as part of 
       
   795     * the ratePolicy are relevant also with the MCS sets. 
       
   796     * Only the first numOfPolicyObjects values (see TTxRatePolicy) from 
       
   797     * the beginning of the array are relevant.
       
   798     */
       
   799     THtMcsPolicy htMcsPolicy;
       
   800     } TConfigureTxRatePoliciesMsg;
       
   801 
       
   802 // -------------------------------------------------------------------------
       
   803 
       
   804 typedef struct _TSetPowerModeMgmtParamsMsg
       
   805     {
       
   806     /** Common message header */
       
   807     TOIDHeader hdr;
       
   808     /*
       
   809     * time interval in microseconds after which transition from Active mode 
       
   810     * to Light PS mode is considered
       
   811     */
       
   812     TUint32 toLightPsTimeout;
       
   813     /*
       
   814     * frame count threshold used when considering transition from Active
       
   815     * to Light PS mode
       
   816     */ 
       
   817     TUint16 toLightPsFrameThreshold;
       
   818     /*
       
   819     * time interval in microseconds after which the frame counter used when 
       
   820     * considering transition from Light PS to Active mode is reset
       
   821     */
       
   822     TUint32 toActiveTimeout;
       
   823     /*
       
   824     * frame count threshold used when considering transition from Light PS
       
   825     * to Active mode
       
   826     */
       
   827     TUint16 toActiveFrameThreshold;
       
   828     /*
       
   829     * time interval in microseconds after which transition from Light PS mode 
       
   830     * to Deep PS mode is considered
       
   831     */
       
   832     TUint32 toDeepPsTimeout;
       
   833     /*
       
   834     * frame count threshold used when considering transition from Light PS
       
   835     * to Deep PS mode
       
   836     */
       
   837     TUint16 toDeepPsFrameThreshold;
       
   838     /*
       
   839     * received frame payload length (in bytes) threshold in U-APSD network for
       
   840     * Best Effort Access Category
       
   841     */
       
   842     TUint16 uapsdRxFrameLengthThreshold;    
       
   843     } TSetPowerModeMgmtParamsMsg;
       
   844 
       
   845 // -------------------------------------------------------------------------
       
   846 
       
   847 typedef struct _TConfigurePwrModeMgmtTrafficOverrideMsg
       
   848     {
       
   849     /** Common message header */
       
   850     TOIDHeader hdr;
       
   851     /** 
       
   852     * The settings here become effective once using the PS mode has been 
       
   853     * allowed by WLAN Mgmt Client.
       
   854     * When a setting below is ETrue, any amount of Rx or Tx traffic via
       
   855     * the AC in question won't cause a change from PS to CAM mode once PS
       
   856     * mode has been entered, and traffic via that AC won't make us to 
       
   857     * stay in CAM either.
       
   858     * Every AC has a separate setting for U-APSD and legacy PS.
       
   859     * The U-APSD setting is used if U-APSD is used for the AC in question.
       
   860     * Otherwise the corresponding legacy setting is used.
       
   861     */
       
   862     /** 
       
   863     * U-APSD Voice AC setting
       
   864     */
       
   865     TBool stayInPsDespiteUapsdVoiceTraffic;
       
   866     /** 
       
   867     * U-APSD Video AC setting
       
   868     */
       
   869     TBool stayInPsDespiteUapsdVideoTraffic;
       
   870     /** 
       
   871     * U-APSD Best Effort AC setting
       
   872     */
       
   873     TBool stayInPsDespiteUapsdBestEffortTraffic;
       
   874     /** 
       
   875     * U-APSD Background AC setting
       
   876     */
       
   877     TBool stayInPsDespiteUapsdBackgroundTraffic;
       
   878     /** 
       
   879     * legacy Voice AC setting
       
   880     */
       
   881     TBool stayInPsDespiteLegacyVoiceTraffic;
       
   882     /** 
       
   883     * legacy Video AC setting
       
   884     */
       
   885     TBool stayInPsDespiteLegacyVideoTraffic;
       
   886     /** 
       
   887     * legacy Best Effort AC setting
       
   888     */
       
   889     TBool stayInPsDespiteLegacyBestEffortTraffic;
       
   890     /** 
       
   891     * legacy Background AC setting
       
   892     */
       
   893     TBool stayInPsDespiteLegacyBackgroundTraffic;
       
   894     } TConfigurePwrModeMgmtTrafficOverrideMsg;
       
   895 
       
   896 // -------------------------------------------------------------------------
       
   897 
       
   898 typedef struct _TGetFrameStatisticsMsg
       
   899     {
       
   900     /** Common message header */
       
   901     TOIDHeader hdr;
       
   902     } TGetFrameStatisticsMsg;
       
   903 
       
   904 
       
   905 typedef struct _TStatisticsResponse
       
   906     {
       
   907     /** data frame statistics per Access Category */    
       
   908     TAccessCategoryStatistics acSpecific[EQueueIdMax];
       
   909     /** nbr of FCS errors in received MPDUs */
       
   910     TUint fcsErrorCount;
       
   911     } TStatisticsResponse;
       
   912 
       
   913 // -------------------------------------------------------------------------
       
   914 
       
   915 typedef struct _TConfigureUapsdMsg
       
   916     {
       
   917     /** Common message header */
       
   918     TOIDHeader hdr;
       
   919     /** 
       
   920     * the maximum number of buffered MSDUs and MMPDUs the AP may send during
       
   921     * a service period
       
   922     */
       
   923     TMaxServicePeriodLength maxServicePeriodLength;
       
   924     /** 
       
   925     * if ETrue the Voice AC is made both trigger and delivery enabled 
       
   926     * when connecting to a QoS AP supporting U-APSD 
       
   927     */
       
   928     TBool uapsdForVoice;
       
   929     /** 
       
   930     * if ETrue the Video AC is made both trigger and delivery enabled 
       
   931     * when connecting to a QoS AP supporting U-APSD 
       
   932     */
       
   933     TBool uapsdForVideo;
       
   934     /** 
       
   935     * if ETrue the Best Effort AC is made both trigger and delivery enabled 
       
   936     * when connecting to a QoS AP supporting U-APSD 
       
   937     */
       
   938     TBool uapsdForBestEffort;
       
   939     /** 
       
   940     * if ETrue the Background AC is made both trigger and delivery enabled 
       
   941     * when connecting to a QoS AP supporting U-APSD 
       
   942     */
       
   943     TBool uapsdForBackground;
       
   944     } TConfigureUapsdMsg;
       
   945 
       
   946 // -------------------------------------------------------------------------
       
   947 
       
   948 typedef struct _TConfigureTxQueueMsg
       
   949     {
       
   950     /** Common message header */
       
   951     TOIDHeader hdr;
       
   952     /* ID of the transmit queue to configure */
       
   953     TQueueId queueId;
       
   954     /** 
       
   955     * The amount of time the queue is allowed to access the WLAN air 
       
   956     * interface during one second interval. The unit of the parameter is 
       
   957     * 32 microseconds. Value 0 means that the medium time is unlimited.
       
   958     */
       
   959     TUint16 mediumTime;
       
   960     /** 
       
   961     * Maximum Transmit MSDU Lifetime to be used for the specified queue. 
       
   962     * Overrides the global maxTxMSDULifetime value specified in TConfigureMsg.
       
   963     * Unit: TUs
       
   964     */
       
   965     TUint32 maxTxMSDULifetime;
       
   966     } TConfigureTxQueueMsg;
       
   967 
       
   968 // -------------------------------------------------------------------------
       
   969 
       
   970 typedef struct _TGetMacAddressMsg
       
   971     {
       
   972     /** Common message header */
       
   973     TOIDHeader hdr;
       
   974     } TGetMacAddressMsg;
       
   975 
       
   976 // -------------------------------------------------------------------------
       
   977 
       
   978 typedef struct _TConfigureArpIpAddressFilteringMsg
       
   979     {
       
   980     /** Common message header */
       
   981     TOIDHeader hdr;
       
   982     /** 
       
   983     * if ETrue the filtering will be enabled 
       
   984     * if EFalse the filtering will be disabled
       
   985     */
       
   986     TBool enableFiltering;
       
   987     /** 
       
   988     * When filtering is enabled and the WLAN device receives an ARP packet 
       
   989     * where the target protocol address field does not match this address
       
   990     * the packet is dropped. 
       
   991     * Note that the address needs to be in big-endian byte order.
       
   992     */
       
   993     TIpv4Address ipV4Addr;
       
   994     } TConfigureArpIpAddressFilteringMsg;
       
   995     
       
   996 // -------------------------------------------------------------------------
       
   997 
       
   998 typedef struct _TConfigureHtBlockAckMsg
       
   999     {
       
  1000     /** Common message header */
       
  1001     TOIDHeader hdr;
       
  1002 
       
  1003     static const TUint8 KTid0 = ( 1 << 0 );
       
  1004     static const TUint8 KTid1 = ( 1 << 1 );
       
  1005     static const TUint8 KTid2 = ( 1 << 2 );
       
  1006     static const TUint8 KTid3 = ( 1 << 3 );
       
  1007     static const TUint8 KTid4 = ( 1 << 4 );
       
  1008     static const TUint8 KTid5 = ( 1 << 5 );
       
  1009     static const TUint8 KTid6 = ( 1 << 6 );
       
  1010     static const TUint8 KTid7 = ( 1 << 7 );
       
  1011 
       
  1012     /**
       
  1013     * A bit-map containing the block ACK usage status for the tx direction. 
       
  1014     * Each bit corresponds to a TID, bit 0 corresponding to TID 0.
       
  1015     * If a bit is set, block ACK can be used for the corresponding TID. The
       
  1016     * WLAN device may initiate block ACK session with the AP for the TID in 
       
  1017     * question.
       
  1018     * If a bit is not set and there already is a block ACK session with the 
       
  1019     * AP for this TID, the WLAN device should terminate the session.
       
  1020     */ 
       
  1021     TUint8 iTxBlockAckUsage;
       
  1022     /*
       
  1023     * A bit-map containing the block ACK usage status the rx direction.
       
  1024     * Each bit corresponds to a TID, bit 0 corresponding to TID 0.
       
  1025     * If a bit is set, block ACK can be is used for the corresponding TID. The
       
  1026     * WLAN device may accept block ACK session requests from the AP for this
       
  1027     * TID.
       
  1028     * If a bit is not set, block ACK should not be used for the corresponding
       
  1029     * TID. The WLAN device should reject block ACK session requests from the
       
  1030     * AP for this TID. If there already is a block ACK session with the AP for
       
  1031     * this TID, the WLAN device should terminate the session.
       
  1032     */
       
  1033     TUint8 iRxBlockAckUsage;
       
  1034     } TConfigureHtBlockAckMsg;
       
  1035 
       
  1036 // -------------------------------------------------------------------------
       
  1037 
       
  1038 typedef struct _TConfigureProprietarySnapHdrMsg
       
  1039     {
       
  1040     /** Common message header */
       
  1041     TOIDHeader hdr;
       
  1042     /** 
       
  1043     * Otherwise valid received 802.11 Data frames containing this SNAP header
       
  1044     * are accepted and forwarded to the WLAN Management Client. 
       
  1045     * Currently only a single SNAP header can be configured. So if this 
       
  1046     * command is issued several times, the provided SNAP header replaces the
       
  1047     * previous one. 
       
  1048     */
       
  1049     TSnapHeader snapHdr;
       
  1050     } TConfigureProprietarySnapHdrMsg;
       
  1051         
       
  1052     
       
  1053 #endif      // WLAN_OID_MSG_H