wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacDot11State.h
changeset 0 c40eb8fe8501
child 12 af3fb27c7511
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacDot11State.h	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,1357 @@
+/*
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Declaration of the WlanDot11State class
+*
+*/
+
+/*
+* %version: 57 %
+*/
+
+#ifndef WLANDOT11STATE_H
+#define WLANDOT11STATE_H
+
+#include "umacinternaldefinitions.h"
+#include "UmacMacActionState.h"
+
+class WlanWsaAddKey;
+class WlanElementLocator;
+
+
+/**
+*  ?one_line_short_description.
+*  ?other_description_lines
+*
+*  @lib wlanumac.lib
+*  @since S60 3.1
+*/
+class WlanDot11State : public WlanMacActionState
+    {
+public:
+
+    /**
+    * Destructor.
+    */
+    virtual ~WlanDot11State() {};
+
+    void AddDefaultBroadcastWepKeyComplete( 
+        WlanContextImpl& aCtxImpl ) const;
+    
+    // Functions from base classes
+
+    /**
+    * Scan all available networks. 
+    * This SW module decides is background scan or foreground scan used
+    * @param aCtxImpl statemachine context
+    * @param aMode passive or active scan see #TScanMode
+    * @param aSSID Network that APs are scanned. Can be broadcast SSID.
+    * @param aScanRate Rate that is used in active scanning see #TRate
+    * @param aMinChannelTime min. time to listen beacons/probe responses on 
+    *                        a channel
+    * @param aMaxChannelTime max. time to listen beacons/probe responses on 
+    *                        a channel
+    * @param aSplitScan if ETrue, use split scan
+    * @return KErrNone = command completed successfully, 
+    * any other = failure
+    */
+    virtual TBool Scan(
+        WlanContextImpl& aCtxImpl,
+        TScanMode aMode,                    
+        const TSSID& aSSID,                 
+        TRate aScanRate, 
+        SChannels& aChannels,
+        TUint32 aMinChannelTime,            
+        TUint32 aMaxChannelTime,
+        TBool aSplitScan );               
+
+    /**
+    * From WlanMacState.
+    * Stop a previously started scan process. 
+    *
+    * @since S60 3.2
+    * @param aCtxImpl global statemachine context
+    * @return ETrue if a state transition occurred
+    *         EFalse otherwise
+    */
+    virtual TBool StopScan( WlanContextImpl& aCtxImpl );
+
+    /**
+    * From WlanMacState.
+    * Set 802.11 power mgmt mode in infrastructure networks.
+    * @param aCtxImpl statemachine context
+    * @param aPowerMode desired power mode
+    * @param aDisableDynamicPowerModeManagement If ETrue, disables the dynamic
+    *        power mode management handling. Relevant only when aPowerMode
+    *        is EPowerModePs
+    * @param aWakeupModeInLightPs WLAN wake-up mode in Light PS mode
+    * @param aListenIntervalInLightPs specifies the value of N for wake-up
+    *        modes 2 and 3 in Light PS mode. 
+    * @param aWakeupModeInDeepPs WLAN wake-up mode in Deep PS mode
+    * @param aListenIntervalInDeepPs specifies the value of N for wake-up 
+    *        modes 2 and 3 in Deep PS mode
+    * @return ETrue if a state transition occurred
+    *         EFalse otherwise
+    */
+    virtual TBool SetPowerMode(
+        WlanContextImpl& aCtxImpl,
+        TPowerMode aPowerMode,
+        TBool aDisableDynamicPowerModeManagement,
+        TWlanWakeUpInterval aWakeupModeInLightPs, 
+        TUint8 aListenIntervalInLightPs,
+        TWlanWakeUpInterval aWakeupModeInDeepPs,
+        TUint8 aListenIntervalInDeepPs );
+
+    /**
+    * Enable user data from/to protcol stack 
+    * (802.1x: pass data through after succesfull authentication)
+    * @param aCtxImpl statemachine context
+    * @return KErrNone command completed successfully 
+    */
+
+    virtual TBool EnableUserData(
+        WlanContextImpl& aCtxImpl );
+    /**
+    * Disable user data from/to protcol stack 
+    * (802.1x: block data during authentication).
+    * @param aCtxImpl global state machine context
+    * @return KErrNone command completed successfully 
+    * any other = failure
+    */
+    virtual TBool DisableUserData(
+        WlanContextImpl& aCtxImpl );
+
+    /**
+    * Transmit a protocol stack frame
+    * 
+    * The frame to be sent needs to be in 802.3 format
+    * @param aCtxImpl global state machine context
+    * @param aDataBuffer meta header of the frame to be transmitted
+    * @param aMore ETrue if another frame is also ready to be transmitted
+    *              EFalse otherwise
+    */
+    virtual TBool TxData( 
+        WlanContextImpl& aCtxImpl,
+        TDataBuffer& aDataBuffer,
+        TBool aMore );
+
+    virtual void TxMgmtData( 
+        WlanContextImpl& aCtxImpl,
+        TDataBuffer& aDataBuffer );
+
+    // Frame receive
+
+    virtual TAny* RequestForBuffer ( 
+        WlanContextImpl& aCtxImpl,             
+        TUint16 aLength );
+
+    virtual void ReceivePacket( 
+        WlanContextImpl& aCtxImpl, 
+        WHA::TStatus aStatus,
+        const void* aFrame,
+        TUint16 aLength,
+        WHA::TRate aRate,
+        WHA::TRcpi aRcpi,
+        WHA::TChannelNumber aChannel,
+        TUint8* aBuffer,
+        TUint32 aFlags );
+
+    // from packet scheduler
+
+    /**
+     * Method called when packet has been transferred to the WLAN device
+     *
+     * @since S60 3.1
+     * @param aCtxImpl global state machine context
+     * @param aPacketId packet whose transfer is complete
+     * @param aMetaHeader frame meta header
+     */
+    virtual void OnPacketTransferComplete( 
+        WlanContextImpl& aCtxImpl, 
+        TUint32 aPacketId,
+        TDataBuffer* aMetaHeader );
+
+    virtual void OnPacketSendComplete(
+        WlanContextImpl& aCtxImpl, 
+        WHA::TStatus aStatus,
+        TUint32 aPacketId,
+        WHA::TRate aRate,
+        TUint32 aPacketQueueDelay,
+        TUint32 aMediaDelay,
+        TUint aTotalTxDelay,
+        TUint8 aAckFailures,
+        WHA::TQueueId aQueueId,
+        WHA::TRate aRequestedRate,
+        TBool aMulticastData );
+
+    /**
+    * Method called when Packet Scheduler's packet scheduling method 
+    * should be called, as there exists a packet that is suitable for 
+    * transmission.
+    * NOTE: if any other Packet Scheduler method is called within this
+    * context the result is undefined.
+    * 
+    * @param aMore ETrue if another frame is also ready to be transmitted
+    *              EFalse otherwise
+    */
+    virtual void CallPacketSchedule( 
+        WlanContextImpl& aCtxImpl,
+        TBool aMore );
+
+    /**
+     * Method called when packet has been flushed (removed)
+     * from packet scheduler
+     *
+     * @since S60 3.1
+     * @param aCtxImpl global state machine context
+     * @param aPacketId packet that was flushed
+     * @param aMetaHeader frame meta header
+     */
+    virtual void OnPacketFlushEvent(
+        WlanContextImpl& aCtxImpl, 
+        TUint32 aPacketId,
+        TDataBuffer* aMetaHeader );
+
+    virtual void OnPacketPushPossible( WlanContextImpl& aCtxImpl );
+
+    virtual void Indication( 
+        WlanContextImpl& aCtxImpl, 
+        WHA::TIndicationId aIndicationId,
+        const WHA::UIndicationParams& aIndicationParams );
+        
+    /**
+    * Configure Tx queue parameters to WHA (adaptation) layer
+    * 
+    * @param aCtxImpl statemachine context
+    * @param aQueueId Id of the queue to configure
+    * @param aCompleteManagementRequest ETrue if this request came from the
+    *                                   WLAN Mgmt client and that request
+    *                                   needs to be completed.
+    *                                   EFalse otherwise.
+    * @return ETrue if a state change occurred in the state machine 
+    *         EFalse otherwise
+    */
+    TBool ConfigureTxQueue( 
+        WlanContextImpl& aCtxImpl,
+        WHA::TQueueId aQueueId,
+        TBool aCompleteManagementRequest = EFalse );            
+
+    virtual TBool ConfigureAcParams( 
+        WlanContextImpl& aCtxImpl );                    
+    
+    /**
+    * ?member_description.
+    * @since Series 60 3.1
+    * @param aCtxImpl global statemachine context
+    */
+    virtual TBool SetCtsToSelfMib( WlanContextImpl& aCtxImpl );
+    
+    /**
+    * Informs lower layer about the dynamic HT configuration
+    * of the target/current network
+    * @param aCtxImpl statemachine context
+    * @return ETrue if a state change occurred
+    *         EFalse otherwise
+    */
+    virtual TBool ConfigureHtBssOperation( WlanContextImpl& aCtxImpl );
+
+protected:
+
+    static const TUint32 KCompleteManagementRequest = 0xACDCACDC;
+
+    /**
+    * C++ default constructor.
+    */
+    WlanDot11State() {};
+
+    /**
+     * Add/set (or replace) a broadcast WEP key,
+     * conditionally set it as the default key and as a pairwise key 
+     *
+     * @since S60 3.1
+     * @param aCtxImpl statemachine context
+     * @param aKeyIndex Index of the key in the default key table 
+     * @param aUseAsDefaulKey use as the default key
+     * @param aUseAsPairwiseKey use as the pairwise key
+     * @param aKeyLength Length of the key in BYTES
+     * @param aKey The WEP key
+     * @param aMac MAC address associated with the key
+     * @return ETrue if state transition occurred, EFalse otherwise
+     */
+    TBool OnAddBroadcastWepKey(
+        WlanContextImpl& aCtxImpl,
+        TUint32 aKeyIndex,             
+        TBool aUseAsDefaulKey,                
+        TBool aUseAsPairwiseKey,
+        TUint32 aKeyLength,                      
+        const TUint8 aKey[KMaxWEPKeyLength],
+        const TMacAddress& aMac );   
+
+    /**
+    * Set inital WLAN specific parameters. 
+    * @param aCtxImpl statemachine context
+    * @param aRTSThreshold 
+    * limit for packet size when to use RTS/CTS protocol
+    * @param aMaxTxMSDULifetime 
+    * Max. time to (re-)send whole MSDU packet. (In TUs.)
+    * @return status of the command, 
+
+    */        
+    static void OnConfigureUmacMib(
+        WlanContextImpl& aCtxImpl,
+        TUint16 aRTSThreshold,             
+        TUint32 aMaxTxMSDULifetime);   
+
+
+    /**
+    * 
+    *
+    * @since S60 3.2
+    * @param aCtxImpl statemachine context
+    * @param 
+    * @return ETrue if ...
+    */
+    TBool InitNetworkConnect( 
+        WlanContextImpl& aCtxImpl,
+        TUint16 aScanResponseFrameBodyLength,
+        const TUint8* aScanResponseFrameBody ) const;
+
+    /**
+    * Resolves correct transmit queue for frame
+    *
+    * @since S60 3.1
+    * @param aCtxImpl statemachine context
+    * @param aDot11MacHeader start of dot11 mac header
+    * @return transmit queue id to use for the packet
+    */
+    WHA::TQueueId QueueId( 
+        const WlanContextImpl& aCtxImpl,
+        const TUint8* aDot11MacHeader ) const;
+
+    /**
+    * Transmit dot11-deauthenticate frame.
+    *
+    * @since S60 3.1
+    * @param aCtxImpl global statemachine context
+    * @param aReason reason code of the frame
+    * @param aWaitIfIntTxBufNotFree if ETrue, the caller wants to wait for the
+    *        internal Tx buffer to become free if it is not free now
+    *        if EFalse, the caller doesn't want to wait for the internal Tx 
+    *        buffer in case it happens to be occupied
+    * @return ETrue if Packet Scheduler accepted the frame for transmit
+    *         EFalse otherwise
+    */
+    TBool TxDeauthenticate( 
+        WlanContextImpl& aCtxImpl, 
+        T802Dot11ManagementReasonCode aReason,
+        TBool aWaitIfIntTxBufNotFree = EFalse ) const;
+
+    /**
+    * Transmit dot11-disassociate frame.
+    *
+    * @since S60 3.1
+    * @param aCtxImpl global statemachine context
+    * @param aReason reason code of the frame
+    * @param aWaitIfIntTxBufNotFree if ETrue, the caller wants to wait for the
+    *        internal Tx buffer to become free if it is not free now
+    *        if EFalse, the caller doesn't want to wait for the internal Tx 
+    *        buffer in case it happens to be occupied
+    * @return ETrue if Packet Scheduler accepted the frame for transmit
+    *         EFalse otherwise
+    */
+    TBool TxDisassociate( 
+        WlanContextImpl& aCtxImpl, 
+        T802Dot11ManagementReasonCode aReason,
+        TBool aWaitIfIntTxBufNotFree = EFalse ) const;
+
+    /**
+    * Creates AES pairwise key setting context
+    *
+    * @since Series 60 3.1
+    * @param aCtxImpl global statemachine context
+    * @param aWhaAddKey reference to WHA Add Key command object
+    * @param aMacAddr MAC address to be associated to the key
+    */
+    static WHA::SAesPairwiseKey* CreateAesPtkCtx( 
+        WlanContextImpl& aCtxImpl,
+        WlanWsaAddKey& aWhaAddKey,
+        const TUint8* aData, 
+        const TMacAddress& aMacAddr );
+
+    /**
+    * Creates TKIP pairwise key setting context
+    *
+    * @since Series 60 3.1
+    * @param aCtxImpl global statemachine context
+    * @param aWhaAddKey reference to WHA Add Key command object
+    * @param aMacAddr MAC address to be associated to the key
+    */
+    static WHA::STkipPairwiseKey* CreateTkipPtkCtx( 
+        WlanContextImpl& aCtxImpl,
+        WlanWsaAddKey& aWhaAddKey,
+        const TUint8* aData, 
+        T802Dot11WepKeyId aKeyIndex, 
+        const TMacAddress& aMacAddr );
+
+    /**
+    * Creates WEP pairwise key setting context
+    *
+    * @since Series 60 3.1
+    * @param aCtxImpl global statemachine context
+    * @param aWhaAddKey reference to WHA Add Key command object
+    * @param aMacAddr MAC address to be associated with the key
+    * @param aKeyLength length of the key
+    * @param aKey the key
+    */
+    static WHA::SWepPairwiseKey* CreateUnicastWepKeyCtx(
+        WlanContextImpl& aCtxImpl,
+        WlanWsaAddKey& aWhaAddKey,
+        const TMacAddress& aMacAddr,
+        TUint32 aKeyLength,                      
+        const TUint8 aKey[KMaxWEPKeyLength] );
+
+    /**
+    * Creates WAPI pairwise key setting context
+    *
+    * @param aCtxImpl global statemachine context
+    * @param aWhaAddKey reference to WHA Add Key command object
+    * @param aData key data
+    * @param aKeyIndex key index
+    * @param aMacAddr MAC address to be associated to the key
+    */
+    static WHA::SWapiPairwiseKey* CreateWapiPtkCtx( 
+        WlanContextImpl& aCtxImpl,
+        WlanWsaAddKey& aWhaAddKey,
+        const TUint8* aData, 
+        T802Dot11WepKeyId aKeyIndex, 
+        const TMacAddress& aMacAddr );
+
+    /**
+    * Determines the initial transmit rate for Null Data, Qos Null
+    * and PS Poll templates.
+    * @since Series 60 3.1
+    * @param aCtxImpl Global statemachine context
+    * @return Initial transmit rate
+    */
+    WHA::TRate InitialSpecialFrameTxRate( 
+        const WlanContextImpl& aCtxImpl ) const;
+        
+    /**
+    * Transfers a dot11 frame up to the client of the management interface
+    *
+    * @since Series 60 3.2
+    * @param aCtxImpl global statemachine context
+    * @param aFrame frame to be transferred
+    * @param aLength length of the frame
+    * @param aRcpi RCPI of the frame
+    * @param aBuffer pointer to the beginning of the Rx buffer allocated
+    *        for the frame
+    */
+    TBool XferDot11FrameToMgmtClient( 
+        WlanContextImpl& aCtxImpl,
+        const void* aFrame,
+        TUint32 aLength,
+        const WHA::TRcpi aRcpi,
+        TUint8* aBuffer ) const;
+
+    virtual TBool DoErrorIndication( 
+        WlanContextImpl& aCtxImpl, 
+        WHA::TStatus aStatus );
+
+    virtual void OnWhaCommandResponse( 
+        WlanContextImpl& aCtxImpl, 
+        WHA::TCommandId aCommandId, 
+        WHA::TStatus aStatus,
+        const WHA::UCommandResponseParams& aCommandResponseParams,
+        TUint32 aAct );
+
+    virtual TBool OnWlanWakeUpIntervalChange( WlanContextImpl& aCtxImpl );    
+    
+    /**
+    * Returns a WHA queue ID / WMM Access Category corresponding to the 802.1d
+    * priority given as the parameter
+    * @since Series 60 3.1
+    * @param aPriority 802.1d priority
+    */
+    static WHA::TQueueId Queue( TUint8 aPriority );
+
+    static TBool UapsdEnabledInNetwork( 
+        const SRxWmmIeData& aRxWmmIE );
+    
+    static TBool UapsdEnabledInNetwork( 
+        const SWmmParamElemData& aWmmParamElem );
+    
+    static void EnableQos( WlanContextImpl& aCtxImpl, 
+        TBool aUapsdEnabledInNw );
+    
+    /**
+     * Determines if U-APSD will be used for the ACs/Tx Queues.
+     * This depends on whether U-APSD is supported by the AP, and if it
+     * is, whether WLAN Mgmt Client has requested U-APSD to be used
+     * for the AC.
+     * Also freezes the dynamic power mode management traffic override 
+     * settings.
+     * 
+     * @since S60 v3.2
+     * @param aCtxImpl statemachine context
+     */
+    static void DetermineAcUapsdUsage( WlanContextImpl& aCtxImpl );
+
+    /**
+    * Resets the specified AC (Access Category) parameters to default values.
+    * 
+    * @param aCtxImpl statemachine context
+    * @param aAccessCategory access category
+    * @param aUseAandGvalues If ETrue uses the 802.11a/g specific
+    *        default values. Otherwise uses the 802.11b default values
+    */
+    static void ResetAcParameters( 
+        WlanContextImpl& aCtxImpl,
+        WHA::TQueueId aAccessCategory,
+        TBool aUseAandGvalues );
+
+    /**
+    * Resets the AC (Access Category) parameters of every AC to default values.
+    * @param aCtxImpl statemachine context
+    * @param aUseAandGvalues If ETrue uses the 802.11a/g specific
+    *        default values. Otherwise uses the 802.11b default values
+    */
+    static void ResetAcParameters( 
+        WlanContextImpl& aCtxImpl, 
+        TBool aUseAandGvalues = EFalse );               
+    
+    /**
+    * Checks if the AC parameters of the specified AC are valid & reasonable
+    * @param aCtxImpl statemachine context
+    * @param aAccessCategory access category
+    */
+    static TBool AcParametersValid( 
+        WlanContextImpl& aCtxImpl,
+        WHA::TQueueId aAccessCategory );
+    
+    static void ParseAcParameters( 
+        WlanContextImpl& aCtxImpl, 
+        const SWmmParamElemData& aWmmParamElem );
+                   
+    /**
+     * Stores the Tx Rate Policy related information provided by wlan mgmt
+     * client
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy rate policy (policy objects)
+     * @param aQueue2RateClass Tx queue (AC) to rate policy object mapping
+     * @param aInitialMaxTxRate4RateClass initial max Tx rate for the
+     *        policy objects
+     * @param aAutoRatePolicy auto rate policy
+     * @param aHtMcsPolicy HT MCS policy
+     */
+    static void StoreTxRatePolicyInfo( 
+        WlanContextImpl& aCtxImpl,
+        const TTxRatePolicy& aRatePolicy,
+        const TQueue2RateClass& aQueue2RateClass,
+        const TInitialMaxTxRate4RateClass& aInitialMaxTxRate4RateClass,
+        const TTxAutoRatePolicy& aAutoRatePolicy,
+        const THtMcsPolicy& aHtMcsPolicy );
+
+    /**
+    * Configures the Tx rate policies according to the information provided
+    * by the WLAN mgmt client
+    *
+    * @since Series 60 3.1
+    * @param aCtxImpl Global statemachine context
+    * @param aCompleteMgmtRequest If ETrue, a WLAN Mgmt client request needs 
+    *        to be completed
+    *        If EFalse, a request doesn't need to be completed
+    * @return ETrue if the operation succeeded & a state change occurred
+    *         EFalse if a fatal error occurred
+    */
+    TBool ConfigureTxRatePolicies( 
+        WlanContextImpl& aCtxImpl, 
+        TBool aCompleteMgmtRequest = EFalse );
+    
+    /**
+    * Determines whether the outgoing data frame is question is a multicast
+    *
+    * @since Series 60 3.2
+    * @param aDataFrameHdr ptr to the start of the data MAC frame header
+    * @return ETrue if the DA of the frame is a multicast address
+    *         EFalse otherwise
+    */
+    static TBool OutgoingMulticastDataFrame( const SDataFrameHeader* aDataFrameHdr );
+    
+    /**
+    * Updates frame statistics after completed data frame transmit attempt
+    *
+    * @since Series 60 3.2
+    * @param aCtxImpl Global statemachine context
+    * @param aAccessCategory AC/Queue via which the frame was transmitted
+    * @param aStatus frame Tx status
+    * @param aMulticastData ETrue if the frame was a multicast
+    * @param aAckFailures The number of times the frame was transmitted 
+    *                     without receiving an acknowledgement
+    * @param aMediaDelay The total time the packet spent in the WLAN device
+    *                    before transmission was completed.
+    * @param aTotalTxDelay The time between SendPacket and SendPacketComplete
+    */
+    static void UpdateTxDataFrameStatistics( 
+        WlanContextImpl& aCtxImpl,
+        WHA::TQueueId aAccessCategory,
+        WHA::TStatus aStatus,
+        TBool aMulticastData, 
+        TUint aAckFailures,
+        TUint32 aMediaDelay,
+        TUint aTotalTxDelay );
+
+    /**
+     * Configures Tx rate policy objects, sets the policy object to use for 
+     * every Tx Queue / QoS AC, and also sets the Initial Max Tx Rate to be 
+     * used for the configured policy objects
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy rate policy (policy objects)
+     * @param aQueue2RateClass Tx queue (AC) to rate policy object mapping
+     * @param aInitialMaxTxRate4RateClass initial max Tx rate for the
+     *        policy objects
+     * @param aAutoRatePolicy auto rate policy
+     * @param aHtMcsPolicy HT MCS policy 
+     * @return ETrue if a state change occurred
+     *         EFalse otherwise
+     */
+    virtual TBool ConfigureTxRatePolicies( 
+        WlanContextImpl& aCtxImpl,
+        const TTxRatePolicy& aRatePolicy,
+        const TQueue2RateClass& aQueue2RateClass,
+        const TInitialMaxTxRate4RateClass& aInitialMaxTxRate4RateClass,
+        const TTxAutoRatePolicy& aAutoRatePolicy,
+        const THtMcsPolicy& aHtMcsPolicy );
+
+    /**
+    * Determines if there is a meaningful diffrence between the desired 802.11
+    * PS Mode wake-up settings compared to the current settings
+    * @param aCtxImpl statemachine context
+    * @return ETrue a meaningful difference exists
+    *         EFalse otherwise
+    */
+    TBool DifferenceInPsModeWakeupSettings( 
+        const WlanContextImpl& aCtxImpl ) const;
+
+    /**
+    * Informs lower layer about the HT capabilities
+    * of the target network
+    * @param aCtxImpl statemachine context
+    * @return ETrue if a state change occurred
+    *         EFalse otherwise
+    */
+    TBool ConfigureHtCapabilities(
+        WlanContextImpl& aCtxImpl );
+
+    /**
+    * Resets the HT Capabilities MIB to its default value
+    * @param aCtxImpl statemachine context
+    */
+    void ResetHtCapabilitiesMib( WlanContextImpl& aCtxImpl );
+    
+    /**
+    * Resets the HT Block Ack Configure MIB to its default value
+    * @param aCtxImpl statemachine context
+    */
+    void ResetHtBlockAckConfigureMib( WlanContextImpl& aCtxImpl );
+    
+    /**
+    * Determines if HT control field is present in received
+    * 802.11 management or 802.11 data frame
+    * @param aCtxImpl statemachine context
+    * @param aFrame received frame
+    * @param aFlags flags from WHA frame receive method
+    * @return ETrue if HT control field is present
+    *         EFalse otherwise
+    */
+    static TBool HtcFieldPresent(
+        WlanContextImpl& aCtxImpl,
+        const TAny* aFrame,
+        TUint32 aFlags );
+    
+private:
+
+    /**
+    * @param aCtxImpl statemachine context
+    * @param aRate TRate value
+    * @return ETrue mapping success, any other failure
+    */ 
+    static void ResolveScanRate( 
+        WlanContextImpl& aCtxImpl,
+        const TRate aRate, 
+        WHA::TRate& aScanRate );
+
+    static TBool NetworkCapabilityInformationMet( 
+        WlanContextImpl& aCtxImpl );
+    static TBool AreSupportedRatesMet( WlanContextImpl& aCtxImpl,
+                                       TBool aCheckAlsoExtendedRates );
+    static TBool ProcessSingleSupportedRateElement(
+        WlanContextImpl& aCtxImpl,
+        const TUint8 aApRate,
+        TUint32& aRateBitmask );
+
+    /**
+    * Sets the WHA::KMibArpIpAddressTable MIB
+    * 
+    * @param aCtxImpl statemachine context
+    * @param aEnableFiltering If ETrue, filtering is enabled
+    *                         If EFalse, filtering is disabled
+    * @param aIpv4Address Address to set in the MIB. Relevant only when
+    *        enabling filtering
+    * @return ETrue if a state change occurred in the state machine 
+    *         EFalse otherwise
+    */
+    TBool SetArpIpAddressTableMib(
+        WlanContextImpl& aCtxImpl,
+        TBool aEnableFiltering,
+        TIpv4Address aIpv4Address );
+
+
+    // Functions from base classes
+    
+    virtual TBool OnDot11PwrMgmtTransitRequired( 
+        WlanContextImpl& aCtxImpl );
+
+    /**
+    * Indicates Consecutive Beacons Lost 
+    * to WLAN Mgmt Client; if necessary
+    * 
+    * @since S60 5.0
+    * @param aCtxImpl global statemachine context
+    */
+    virtual void DoConsecutiveBeaconsLostIndication( WlanContextImpl& aCtxImpl );
+
+    virtual void DoRegainedBSSIndication( WlanContextImpl& aCtxImpl );
+
+    virtual void DoRadarIndication( WlanContextImpl& aCtxImpl );
+
+    virtual void DoRcpiIndication( 
+         WlanContextImpl& aCtxImpl,
+         WHA::TRcpi aRcpi );
+
+    /**
+    * Indicates that the WLAN device has detected problems in the power
+    * save mode operation of the AP
+    * 
+    * @param aCtxImpl global statemachine context
+    */
+    virtual void DoPsModeErrorIndication( WlanContextImpl& aCtxImpl );
+    
+    /**
+    * Add (or replace) a TKIP key
+    * @param aCtxImpl statemachine context
+    * @param aData data blob that holds TKIP parameters
+    * @param aLength length of the data blob
+    * @param aKeyIndex value for key id filed of WEP IV
+    * @return ETrue if state transition occurred, EFalse otherwise
+    */
+    virtual TBool AddTkIPKey( 
+        WlanContextImpl& aCtxImpl,
+        const TUint8* aData, 
+        TUint32 aLength,
+        T802Dot11WepKeyId aKeyIndex,
+        const TMacAddress& aMacAddr );
+
+    /**
+    *
+    * Add (or replace) a multicast TKIP key.
+    * @param aCtxImpl statemachine context
+    * @param aKeyIndex Value for the key id field of WEP IV.
+    * @param aLength Length of the TKIP parameters.
+    * @param aData TKIP parameters.
+    * @return ETrue if state transition occurred, EFalse otherwise
+    */
+    virtual TBool AddMulticastTKIPKey( 
+        WlanContextImpl& aCtxImpl,
+        T802Dot11WepKeyId aKeyIndex,
+        TUint32 aLength,
+        const TUint8* aData );
+
+    /**
+    * Add (or replace) a pairwise AES key.
+    *
+    * @param aCtxImpl statemachine context
+    * @param aLength Length of the AES parameters.
+    * @param aData AES parameters.
+    * @return ETrue if state transition occurred, EFalse otherwise
+    */
+    virtual TBool AddAesKey( 
+        WlanContextImpl& aCtxImpl,
+        const TUint8* aData, 
+        TUint32 aLength,
+        const TMacAddress& aMacAddr );
+
+    /**
+    * Add (or replace) an AES group key.
+    *
+    * @param aCtxImpl statemachine context
+    * @param aKeyIndex Value for the key id field of WEP IV.
+    * @param aLength Length of the AES parameters.
+    * @param aData AES parameters.
+    * @return ETrue if state transition occurred, EFalse otherwise
+    */
+    virtual TBool AddMulticastAesKey( 
+        WlanContextImpl& aCtxImpl,
+        T802Dot11WepKeyId aKeyIndex,
+        TUint32 aLength,
+        const TUint8* aData );
+
+    /**
+    * Add (or replace) a unicast WEP key.
+    * @param aCtxImpl statemachine context
+    * @param aMacAddr MAC address to which the WEP key corresponds to
+    * @param aKeyLength Length of the key in BYTES
+    * @param aKey The WEP key
+    * @return ETrue if state transition occurred, EFalse otherwise
+    */
+    virtual TBool AddUnicastWepKey(
+        WlanContextImpl& aCtxImpl,
+        const TMacAddress& aMacAddr,
+        TUint32 aKeyLength,                      
+        const TUint8 aKey[KMaxWEPKeyLength]);
+
+    /**
+    * From MWlanUserEvent
+    * Add (or replace) a multicast WAPI key.
+    *
+    * @param aCtxImpl statemachine context
+    * @param aKeyIndex  Value for the key id field of WEP IV.
+    * @param aLength    Length of the WAPI parameters.
+    * @param aData      WAPI parameters.
+    * @return ETrue if state transition occurred, EFalse otherwise
+    */
+    virtual TBool AddMulticastWapiKey( 
+        WlanContextImpl& aCtxImpl,
+        T802Dot11WepKeyId aKeyIndex,
+        TUint32 aLength,
+        const TUint8* aData );
+
+    /**
+    * From MWlanUserEvent
+    * Add (or replace) a pairwise WAPI key.
+    *
+    * @param aCtxImpl statemachine context
+    * @param aData data blob that holds WAPI parameters
+    * @param aLength length of the data blob
+    * @param aKeyIndex value for key id field of WEP IV
+    * @param aMacAddr MAC address of the peer station
+    * @return ETrue if state transition occurred, EFalse otherwise
+    */
+    virtual TBool AddUnicastWapiKey( 
+        WlanContextImpl& aCtxImpl,
+        const TUint8* aData, 
+        TUint32 aLength,
+        T802Dot11WepKeyId aKeyIndex,
+        const TMacAddress& aMacAddr );
+
+    /**
+    * Set transmission power level. 
+    * This has to be legal at the current region.
+    * @param aCtxImpl statemachine context
+    * @param aLevel Transmission power level in mW.
+    * @return KErrNone command completed successfully 
+    * any other = failure
+    */
+    virtual TBool SetTxPowerLevel(
+        WlanContextImpl& aCtxImpl,
+        TUint32 aLevel);    
+    
+    /**
+    * Gets last RCPI value
+    * @param aCtxImpl statemachine context
+    * @return KErrNone command completed successfully 
+    * any other = failure
+    */
+    virtual TBool GetLastRcpi(
+        WlanContextImpl& aCtxImpl );       
+    
+    /**
+     * Configures the parameters which define when BSS lost is indicated.
+     * The indication is sent when either one of the specified thresholds
+     * is exceeded.
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aBeaconLostCount beacon lost count threshold
+     * @aFailedTxPacketCount failed Tx packet count threshold
+     * @return ETrue if a state change occurred
+     *         EFalse otherwise
+     */
+    virtual TBool ConfigureBssLost( 
+        WlanContextImpl& aCtxImpl,
+        TUint32 aBeaconLostCount,
+        TUint8 aFailedTxPacketCount );
+
+    /**
+    * Sets the Tx rate adaptation algorithm parameters
+    *
+    * @since S60 3.1
+    * @param aCtxImpl statemachine context
+    * @param aMinStepUpCheckpoint minimum and initial rate increase 
+    *        checkpoint in units of frames
+    *        Range: [aStepDownCheckpoint,aMaxStepUpCheckpoint]
+    * @param aMaxStepUpCheckpoint maximum rate increase checkpoint in units 
+    *        of frames
+    *        Range: [aStepDownCheckpoint,UCHAR_MAX]
+    * @param aStepUpCheckpointFactor StepUpCheckpoint is multiplied with this
+    *        value if sending a probe frame fails
+    *        Range: [1,aMaxStepUpCheckpoint]
+    * @param aStepDownCheckpoint after this many frames the need to decrease
+    *        the rate is checked
+    *        Range: [2,UCHAR_MAX]
+    * @param aMinStepUpThreshold minimum and initial StepUpThreshold 
+    *        percentage
+    *        Range: [1,aMaxStepUpThreshold]
+    * @param aMaxStepUpThreshold maximum StepUpThreshold percentage
+    *        Range: [1,100]
+    * @param aStepUpThresholdIncrement StepUpThreshold is incremented by this
+    *        value if sending a probe frame fails
+    *        Range: [0,aMaxStepUpThreshold]
+    * @param aStepDownThreshold if the percentage of frames which failed to
+    *        be transmitted at the originally requested rate is at least 
+    *        aStepDownThreshold at the aStepDownCheckpoint, the rate will
+    *        be decreased
+    *        Range: [1,100]
+    * @param aDisableProbeHandling if EFalse, the rate adaptation algorithm
+    *        handles the first frame transmitted after a rate increase in a
+    *        special way. Otherwise the special handling is disabled
+    * @return ETrue if a state change occurred
+    *         EFalse otherwise
+    */
+    virtual TBool SetTxRateAdaptParams( 
+        WlanContextImpl& aCtxImpl,
+        TUint8 aMinStepUpCheckpoint,
+        TUint8 aMaxStepUpCheckpoint,
+        TUint8 aStepUpCheckpointFactor,
+        TUint8 aStepDownCheckpoint,
+        TUint8 aMinStepUpThreshold,
+        TUint8 aMaxStepUpThreshold,
+        TUint8 aStepUpThresholdIncrement,
+        TUint8 aStepDownThreshold,
+        TBool aDisableProbeHandling );
+
+    /**
+    * Sets the dynamic power mode transition algorithm parameters
+    *
+    * @since S60 3.1
+    * @param aCtxImpl statemachine context
+    * @param aToLightPsTimeout time interval in microseconds after which 
+    *        transition from Active mode to Light PS mode is considered
+    * @param aToLightPsFrameThreshold frame count threshold used when 
+    *        considering transition from Active to Light PS mode
+    * @param aToActiveTimeout time interval in microseconds after which the 
+    *        frame counter used when considering transition from Light PS 
+    *        to Active mode is reset
+    * @param aToActiveFrameThreshold frame count threshold used when 
+    *        considering transition from Light PS to Active mode
+    * @param aToDeepPsTimeout time interval in microseconds after which 
+    *        transition from Light PS mode to Deep PS mode is considered
+    * @param aToDeepPsFrameThreshold frame count threshold used when 
+    *        considering transition from Light PS to Deep PS mode
+    * @param aUapsdRxFrameLengthThreshold received frame 
+    *        payload length (in bytes) threshold in U-APSD network for
+    *        Best Effort Access Category
+    * @return ETrue if a state change occurred
+    *         EFalse otherwise
+    */
+    virtual TBool SetPowerModeManagementParameters(
+        WlanContextImpl& aCtxImpl,
+        TUint32 aToLightPsTimeout,
+        TUint16 aToLightPsFrameThreshold,
+        TUint32 aToActiveTimeout,
+        TUint16 aToActiveFrameThreshold,
+        TUint32 aToDeepPsTimeout,
+        TUint16 aToDeepPsFrameThreshold,
+        TUint16 aUapsdRxFrameLengthThreshold );
+    
+    /**
+    * Configures dynamic power mode management traffic override
+    *
+    * The settings here become effective once using the PS mode has been 
+    * allowed by WLAN Mgmt Client.
+    * When a setting below is ETrue, any amount of Rx or Tx traffic via
+    * the AC in question won't cause a change from PS to CAM mode once PS
+    * mode has been entered, and traffic via that AC won't make us to 
+    * stay in CAM either.
+    * Every AC has a separate setting for U-APSD and legacy PS.
+    * The U-APSD setting is used if U-APSD is used for the AC in question.
+    * Otherwise the corresponding legacy setting is used.
+    *    
+    * @since S60 3.2
+    * @param aCtxImpl statemachine context
+    * @param aStayInPsDespiteUapsdVoiceTraffic U-APSD Voice AC setting
+    * @param aStayInPsDespiteUapsdVideoTraffic U-APSD Video AC setting
+    * @param aStayInPsDespiteUapsdBestEffortTraffic U-APSD Best Effort AC 
+    *                                               setting
+    * @param aStayInPsDespiteUapsdBackgroundTraffic U-APSD Background AC 
+    *                                               setting
+    * @param aStayInPsDespiteLegacyVoiceTraffic legacy Voice AC setting
+    * @param aStayInPsDespiteLegacyVideoTraffic legacy Video AC setting
+    * @param aStayInPsDespiteLegacyBestEffortTraffic legacy Best Effort AC 
+    *                                                setting
+    * @param aStayInPsDespiteLegacyBackgroundTraffic legacy Background AC 
+    *                                                setting
+    * @return ETrue if a state change occurred
+    *         EFalse otherwise
+    */
+    virtual TBool ConfigurePwrModeMgmtTrafficOverride( 
+        WlanContextImpl& aCtxImpl,
+        TBool aStayInPsDespiteUapsdVoiceTraffic,
+        TBool aStayInPsDespiteUapsdVideoTraffic,
+        TBool aStayInPsDespiteUapsdBestEffortTraffic, 
+        TBool aStayInPsDespiteUapsdBackgroundTraffic,
+        TBool aStayInPsDespiteLegacyVoiceTraffic,
+        TBool aStayInPsDespiteLegacyVideoTraffic,
+        TBool aStayInPsDespiteLegacyBestEffortTraffic,
+        TBool aStayInPsDespiteLegacyBackgroundTraffic );
+
+    /**
+     * Gets data frame Rx & Tx statistics
+     *
+     * @since S60 v3.2
+     * @param aCtxImpl statemachine context
+     * @return ETrue if a state change occurred
+     *         EFalse otherwise
+     */
+    virtual TBool GetFrameStatistics( WlanContextImpl& aCtxImpl );
+
+    /**
+     * Configures U-APSD usage
+     *
+     * @since S60 v3.2
+     * @param aCtxImpl statemachine context
+     * @param aMaxServicePeriodLength
+     * @param aUapsdForVoice if ETrue the Voice AC is made both trigger and 
+     *                       delivery enabled when connecting to a QoS AP 
+     *                       supporting U-APSD.
+     *                       Otherwise it's made neither trigger nor delivery 
+     *                       enabled
+     * @param aUapsdForVideo if ETrue the Video AC is made both trigger and 
+     *                       delivery enabled 
+     *                       when connecting to a QoS AP supporting U-APSD.
+     *                       Otherwise it's made neither trigger nor delivery 
+     *                       enabled
+     * @param aUapsdForBestEffort if ETrue the Best Effort AC is made both 
+     *                            trigger and delivery enabled when connecting
+     *                            to a QoS AP supporting U-APSD.
+     *                            Otherwise it's made neither trigger nor 
+     *                            delivery enabled    
+     * @param aUapsdForBackground if ETrue the Background AC is made both 
+     *                            trigger and delivery enabled when connecting
+     *                            to a QoS AP supporting U-APSD.
+     *                            Otherwise it's made neither trigger nor 
+     *                            delivery enabled    
+     */
+    virtual TBool ConfigureUapsd( 
+        WlanContextImpl& aCtxImpl,
+        TMaxServicePeriodLength aMaxServicePeriodLength,
+        TBool aUapsdForVoice,
+        TBool aUapsdForVideo,
+        TBool aUapsdForBestEffort,
+        TBool aUapsdForBackground );
+
+    /**
+     * Get our own MAC address
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @return ETrue if a state change occurred
+     *         EFalse otherwise
+     */
+    virtual TBool GetMacAddress(
+        WlanContextImpl& aCtxImpl );
+
+    /**
+    * Configures ARP IP address filtering
+    * 
+    * @param aCtxImpl statemachine context
+    * @param aEnableFiltering If ETrue, filtering is enabled
+    *                         If EFalse, filtering is disabled
+    * @param aIpv4Address If the target IP Address in a received ARP request 
+    *        doesn't match this address, the packet shall be discarded
+    *        on the lower layers.
+    *        Relevant only when enabling filtering.
+    * @return ETrue if a state change occurred in the state machine 
+    *         EFalse otherwise
+    */
+    virtual TBool ConfigureArpIpAddressFiltering(
+        WlanContextImpl& aCtxImpl,
+        TBool aEnableFiltering,
+        TIpv4Address aIpv4Address );
+
+    /**
+    * Configures HT Block Ack use
+    * 
+    * @param aCtxImpl statemachine context
+    * @param aTxBlockAckUsage Bit map defining Block Ack use in Tx direction
+    * @param aRxBlockAckUsage Bit map defining Block Ack use in Rx direction
+    * @return ETrue if a state change occurred in the state machine 
+    *         EFalse otherwise
+    */
+    virtual TBool ConfigureHtBlockAck(
+        WlanContextImpl& aCtxImpl, 
+        TUint8 aTxBlockAckUsage,
+        TUint8 aRxBlockAckUsage );        
+
+    /**
+    * Configures Proprietary SNAP header. 
+    * Valid received 802.11 Data frames containing this SNAP header
+    * are accepted and forwarded to the WLAN Management Client.
+    * 
+    * @param aCtxImpl statemachine context
+    * @param 
+    * @return ETrue if a state change occurred in the state machine 
+    *         EFalse otherwise
+    */
+    virtual TBool ConfigureProprietarySnapHdr(
+        WlanContextImpl& aCtxImpl, 
+        const TSnapHeader& aSnapHeader );        
+
+    /**
+     * Sets the beacon lost count value
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aBeaconLostCount beacon lost count
+     * @return ETrue if a state change occurred
+     *         EFalse otherwise
+     */
+    TBool SetBeaconLostCountMib(
+        WlanContextImpl& aCtxImpl,
+        TUint32 aBeaconLostCount);    
+    
+    /**
+     * Resorts to using only a single Tx rate policy.
+     * This is done when the WLAN Mgmt client provides us with more rate 
+     * classes / policies than the lower layers are able to handle
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy the rate policy
+     * @param aQueue2RateClass Tx queue to rate class mapping
+     */
+    void ResortToSingleTxRatePolicy(
+        WlanContextImpl& aCtxImpl,
+        TTxRatePolicy& aRatePolicy,
+        TQueue2RateClass& aQueue2RateClass ) const;
+
+    /**
+     * Finalize the 802.11b/g non-autorate policy so that it contains only
+     * rates which are also supported by the lower layers and the current
+     * network 
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy the rate policy
+     * @param aRateMasks intersection of 802.11b/g rates which are:
+     *        - included in the rate class AND
+     *        - supported by the lower layers AND
+     *        - supported by the current network
+     * @param aInitialMaxTxRate4RateClass initial max Tx rate for every
+     *        rate class 
+     */
+    void FinalizeTxRatePolicy(
+        WlanContextImpl& aCtxImpl,
+        TTxRatePolicy& aRatePolicy,
+        TWhaRateMasks& aRateMasks,
+        TInitialMaxTxRate4RateClass& aInitialMaxTxRate4RateClass ) const;
+    
+    /**
+     * Builds a rate mask by including aRate in it if that rate has non-zero
+     * Tx Attempts and is supported both by the nw and by WHA layer.
+     * Additionally makes aTxAttempts zero if aRate is not supported either by
+     * the nw or by WHA layer. Otherwise keeps the aTxAttempts value intact
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRate the rate
+     * @param aTxAttempts nbr of Tx attempts to make with aRate
+     * @param aRateMask the rate mask
+     */
+    void HandleRate(
+        WlanContextImpl& aCtxImpl,
+        WHA::TRate aRate,
+        TUint8& aTxAttempts,
+        WHA::TRate& aRateMask ) const;        
+
+    /**
+     * Builds a rate mask from a Rate Class and updates Tx attempts value in
+     * the Rate Class when necessary (see HandleRate()).
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRateClass the rate class
+     * @param aRateMask the rate mask
+     */
+    void HandleRates(
+        WlanContextImpl& aCtxImpl,
+        TTxRateClass& aRateClass,
+        WHA::TRate& aRateMask ) const;
+ 
+    /**
+     * Updates rate class and rate mask to contain the rates which both the 
+     * WHA layer and the nw support
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy the rate policy
+     * @param aRateClassInd denotes the rate class within the rate policy
+     * @param aRateMask the rate mask
+     */
+    void RecoverRatePolicy(
+        WlanContextImpl& aCtxImpl,
+        TTxRatePolicy& aRatePolicy,
+        TUint aRateClassInd,
+        WHA::TRate& aRateMask ) const;
+
+    /**
+     * Finalize the 802.11 b/g autorate policies so that they contain only 
+     * rates which are also supported by the lower layers and the current 
+     * network 
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy the rate policy
+     * @param aAutoRatePolicy the autorate policies
+     */
+    void FinalizeTxAutoratePolicy(
+        WlanContextImpl& aCtxImpl,
+        const TTxRatePolicy& aRatePolicy,
+        TTxAutoRatePolicy& aAutoRatePolicy ) const;
+    
+    /**
+     * Modifies the rate policy configuration by adding a new special policy,
+     * which can be used for the transmission of certain frames, whose 
+     * successful delivery is of special importance
+     *
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy the rate policy
+     * @param aAutoRatePolicy the autorate policies
+     * @param aHtMcsPolicy HT MCS policy
+     */
+    void SpecialTxAutoratePolicy(
+        WlanContextImpl& aCtxImpl,
+        TTxRatePolicy& aRatePolicy,
+        TTxAutoRatePolicy& aAutoRatePolicy,
+        THtMcsPolicy& aHtMcsPolicy ) const;
+    
+    /**
+     * Configures autorate policies to lower layers.
+     * Before that, finalizes the MCS policies so that they contain only 
+     * MCSs which are also supported by the lower layers and the current 
+     * network.
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy the rate policy
+     * @param aQueue2RateClass Tx queue to rate class mapping
+     * @param aHtMcsPolicy HT MCS policy
+     * @param aCompleteMgmtRequest If ETrue, a WLAN Mgmt client request needs 
+     *        to be completed
+     *        If EFalse, a request doesn't need to be completed
+     */
+    void ConfigureForTxAutoratePolicy(
+        WlanContextImpl& aCtxImpl,
+        const TTxRatePolicy& aRatePolicy,
+        const TQueue2RateClass& aQueue2RateClass,
+        THtMcsPolicy& aHtMcsPolicy,
+        TBool aCompleteMgmtRequest );
+    
+    /**
+     * Updates - if necessary - the provided HT MCS policy to contain only 
+     * MCSs which both the WHA layer and the nw support
+     *
+     * @param aCtxImpl statemachine context
+     * @param aHtMcsPolicy HT MCS policy
+     * @param aNbrOfMcsSets Number of MCS sets in the MCS policy
+     */
+    void HandleHtMcsPolicy(
+        WlanContextImpl& aCtxImpl,
+        THtMcsPolicy& aHtMcsPolicy,
+        TUint aNbrOfMcsSets ) const;
+
+    /**
+     * Takes non-autorate policy into use.
+     *
+     * @since S60 v3.1
+     * @param aCtxImpl statemachine context
+     * @param aRatePolicy the rate policy
+     * @param aRateMasks intersection of 802.11b/g rates which are:
+     *        - included in the rate class AND
+     *        - supported by the lower layers AND
+     *        - supported by the current network
+     * @param aQueue2RateClass Tx queue to rate class mapping
+     * @param aInitialMaxTxRate4RateClass initial max Tx rate for every
+     *        rate class 
+     * @param aCompleteMgmtRequest If ETrue, a WLAN Mgmt client request needs 
+     *        to be completed
+     *        If EFalse, a request doesn't need to be completed
+     */
+    TBool ConfigureForTxRatePolicy(
+        WlanContextImpl& aCtxImpl,
+        const TTxRatePolicy& aRatePolicy,
+        const TWhaRateMasks& aRateMasks,
+        const TQueue2RateClass& aQueue2RateClass,
+        const TInitialMaxTxRate4RateClass& initialMaxTxRate4RateClass,
+        TBool aCompleteMgmtRequest );
+
+    /**
+     * Locates and stores the HT Capabilities element data of the target nw  
+     *
+     * @param aCtxImpl Statemachine context
+     * @param aElementLocator Initialized Element locator which can
+     *        be used to locate information elements related to the
+     *        target network
+     * @return ETrue if connecting to the target network is possible
+     *         EFalse otherwise 
+     */
+    TBool HandleHtCapabilities( 
+        WlanContextImpl& aCtxImpl,
+        WlanElementLocator& aElementLocator ) const;
+
+    /**
+     * Locates and stores the HT Operation element data of the target nw  
+     *
+     * @param aCtxImpl Statemachine context
+     * @param aElementLocator Initialized Element locator which can
+     *        be used to locate information elements related to the
+     *        target network
+     * @return ETrue if connecting to the target network is possible
+     *         EFalse otherwise 
+     */
+    TBool HandleHtOperation( 
+        WlanContextImpl& aCtxImpl,
+        WlanElementLocator& aElementLocator ) const;
+
+    /**
+     * Locates the relevant HT related elements of the target nw and 
+     * stores their data 
+     *
+     * @param aCtxImpl Statemachine context
+     * @param aElementLocator Initialized Element locator which can
+     *        be used to locate information elements related to the
+     *        target network
+     * @return ETrue if connecting to the target network is possible
+     *         EFalse otherwise 
+     */
+    TBool HandleDot11n( 
+        WlanContextImpl& aCtxImpl,
+        WlanElementLocator& aElementLocator ) const;
+    
+    };
+
+#endif      // WLANDOT11STATE_H