wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacDot11MibDefaultConfigure.cpp
changeset 0 c40eb8fe8501
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacDot11MibDefaultConfigure.cpp	Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,1142 @@
+/*
+* 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:   Implementation of the WlanDot11MibDefaultConfigure class
+*
+*/
+
+/*
+* %version: 26 %
+*/
+
+#include "config.h"
+#include "UmacDot11MibDefaultConfigure.h"
+#include "wha_mibDefaultvalues.h"
+#include "umacwhatodot11typeconverter.h"
+#include "UmacWsaWriteMib.h"
+#include "UmacContextImpl.h"
+    
+const TUint KAllocLen = 512; 
+
+#ifndef NDEBUG
+const TInt8 WlanDot11MibDefaultConfigure::iName[] 
+    = "dot11-mibdefaultconfigure";
+
+const TUint8 WlanDot11MibDefaultConfigure::iStateName
+    [ESTATEMAX][KMaxStateStringLength] = 
+    {
+        {"EINIT"}, 
+        {"ESETDOT11MAXRECEIVELIFETIME"}, 
+        {"ESETDOT11SLOTTIME"},
+        {"ESETDOT11GROUPADDRSTABLE"},
+        {"ESETDOT11WEPDEFAULTKEY"},
+        {"ESETDOT11CURRENTTXPOWERLEVEL"},
+        {"ESETDOT11RTSTHRESHOLD"},
+        {"ESETCTSTOSELF"},
+        {"ESETARPIPADDRSTABLE"},
+        {"ESETPROBEREQUESTTEMPLATE"},
+        {"ESETRXFILTER"},
+        {"ESETBEACONFILTERIETABLE"},
+        {"ESETBEACONFILTERENABLE"},
+        {"ESETWLANWAKEUPINTERVAL"},
+        {"ESETBEACONLOSTCOUNT"},
+        {"ESETRCPITHRESHOLD"},
+        {"ESETTXRATEPOLICY"},
+        {"ESETHTCAPABILITIES"},
+        {"ESETHTBSSOPERATION"},
+        {"ESETHTSECONDARYBEACON"},
+        {"ESETHTBLOCKACKCONFIGURE"},
+        {"ECONTINUEDOT11TRAVERSE"}
+    };
+
+const TUint8 WlanDot11MibDefaultConfigure::iEventName
+    [EEVENTMAX][KMaxEventStringLength] = 
+    {
+        {"ESTATEENTRY"}, {"ETXCOMPLETE"}, {"EABORT"}
+    };
+#endif
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+WlanDot11MibDefaultConfigure::~WlanDot11MibDefaultConfigure()
+    {
+    iMemory = NULL;
+    }
+
+#ifndef NDEBUG 
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+const TInt8* WlanDot11MibDefaultConfigure::GetStateName( 
+    TUint8& aLength ) const
+    {
+    aLength = sizeof( iName );
+    return iName;
+    }
+#endif
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::Entry
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::Entry( 
+    WlanContextImpl& aCtxImpl )
+    {
+    if ( aCtxImpl.WsaCmdActive() )
+        {
+        // sanity checking code
+        OsAssert( (TUint8*)("UMAC * panic"), 
+            (TUint8*)(WLAN_FILE), __LINE__ );
+        }
+
+    // we don't want to do event dispatching here as we want to set the
+    // mib default values without interruptions 
+
+    if ( iState != EINIT )
+        {
+        // this is NOT the start of the the FSM actions
+        // note that we send the ETXCOMPLETE event as the states
+        // that wait for it are the only ones that can be interrupted
+        // as they are asynchronous operations by nature
+        // and wait for corresponding WHA completion method
+        Fsm( aCtxImpl, ETXCOMPLETE );
+        }
+    else
+        {
+        // this is the start of the the FSM actions
+        Fsm( aCtxImpl, ESTATEENTRY );
+        }
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::Exit
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::Exit( 
+    WlanContextImpl& /*aCtxImpl*/ )
+    {
+    // we are traversing to a new dot11 state 
+    // make sure we don't generate a memory leakage
+    os_free( iMemory );
+    iState = EINIT; 
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::ChangeInternalState
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::ChangeInternalState( 
+    WlanContextImpl& aCtxImpl, 
+    TState aNewState )
+    {
+    iState = aNewState;
+    Fsm( aCtxImpl, ESTATEENTRY );
+    }
+
+// -----------------------------------------------------------------------------
+// WlanDot11MibDefaultConfigure::Fsm
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::Fsm( 
+    WlanContextImpl& aCtxImpl, 
+    TEvent aEvent )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::Fsm(): FSM EVENT") );
+#ifndef NDEBUG
+    OsTracePrint( 
+        KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::Fsm(): event:"));
+    OsTracePrint( KUmacDetails, iEventName[aEvent] );
+    OsTracePrint( 
+        KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::Fsm(): state:"));
+    OsTracePrint( KUmacDetails, iStateName[iState] );
+#endif
+
+    switch ( aEvent )
+        {
+        case ESTATEENTRY:
+            OnStateEntryEvent( aCtxImpl );
+            break;
+        case ETXCOMPLETE:
+            OnTxCompleteEvent( aCtxImpl );
+            break;
+        case EABORT:
+            OnAbortEvent( aCtxImpl );
+            break;
+        default:
+            // catch internal FSM programming error
+            OsTracePrint( 
+                KErrorLevel, 
+                (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::Fsm(): event: %d"), aEvent);        
+            OsAssert( 
+                (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::Fsm(): panic"), 
+                (TUint8*)(WLAN_FILE), __LINE__ );
+            break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// WlanDot11MibDefaultConfigure::OnStateEntryEvent
+// Handler for state entry event.
+// It is guaranteed by the FSM framework that no WHA command is pending
+// when this method is entered
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::OnStateEntryEvent( 
+    WlanContextImpl& aCtxImpl )
+    {
+    switch ( iState )
+        {
+        case EINIT:
+            iMemory = os_alloc( KAllocLen );
+            if ( iMemory )
+                {
+                // start the FSM traversal
+                ChangeInternalState( aCtxImpl, 
+                    ESETDOT11MAXRECEIVELIFETIME );            
+                }
+            else
+                {
+                // allocation failure
+                Fsm( aCtxImpl, EABORT );
+                }
+            break;
+        case ESETDOT11MAXRECEIVELIFETIME:
+            SetDot11MaxReceiveLifeTime( aCtxImpl );
+            break;
+        case ESETDOT11SLOTTIME:
+            SetDot11SlotTime( aCtxImpl );
+            break;
+        case ESETDOT11GROUPADDRSTABLE:
+            SetDot11GroupAddrsTable( aCtxImpl );
+            break;
+        case ESETDOT11WEPDEFAULTKEY:
+            SetDot11WepDefaultKey( aCtxImpl );
+            break;
+        case ESETDOT11CURRENTTXPOWERLEVEL:
+            SetDot11CurrentTxPowerLevel( aCtxImpl );
+            break;
+        case ESETDOT11RTSTHRESHOLD:
+            SetDot11RtsThreshold( aCtxImpl );
+            break;
+        case ESETCTSTOSELF:
+            SetCtsToSelf( aCtxImpl );
+            break;
+        case ESETARPIPADDRSTABLE:
+            SetArpIpAddrsTable( aCtxImpl );
+            break;
+        case ESETPROBEREQUESTTEMPLATE:
+            SetProbeRequestTemplate( aCtxImpl );
+            break;
+        case ESETRXFILTER:
+            SetRxFilter( aCtxImpl );
+            break;
+        case ESETBEACONFILTERIETABLE:
+            SetBeaconFilterIeTable( aCtxImpl );
+            break;
+        case ESETBEACONFILTERENABLE:
+            SetBeaconFilterEnable( aCtxImpl );
+            break;
+        case ESETWLANWAKEUPINTERVAL:
+            SetWlanWakeupInterval( aCtxImpl );
+            break;
+        case ESETBEACONLOSTCOUNT:
+            SetBeaconLostCount( aCtxImpl );
+            break;
+        case ESETRCPITHRESHOLD:
+            SetRcpiThreshold( aCtxImpl );
+            break;
+        case ESETTXRATEPOLICY:
+            SetTxRatePolicy( aCtxImpl );
+            break;
+        case ESETHTCAPABILITIES:
+            SetHtCapabilities( aCtxImpl );
+            break;
+        case ESETHTBSSOPERATION:
+            SetHtBssOperation( aCtxImpl );
+            break;
+        case ESETHTSECONDARYBEACON:
+            SetHtSecondaryBeacon( aCtxImpl );
+            break;
+        case ESETHTBLOCKACKCONFIGURE:
+            SetHtBlockAckConfigure( aCtxImpl );
+            break;
+        case ECONTINUEDOT11TRAVERSE:
+            // our dot11 transition is fixed and we shall take it
+            // change global dot11 state: entry procedure triggers action
+            ChangeState( aCtxImpl,              
+                *this,                          // prev state
+                aCtxImpl.iStates.iIdleState     // next state
+                );
+            break;
+        default:
+            // catch internal FSM programming error
+            OsTracePrint( KErrorLevel, (TUint8*)
+                ("UMAC: WlanDot11MibDefaultConfigure::OnStateEntryEvent(): state: %d"), 
+                iState);        
+            OsAssert( (TUint8*)
+                ("UMAC: WlanDot11MibDefaultConfigure::OnStateEntryEvent(): panic"), 
+                (TUint8*)(WLAN_FILE), __LINE__ );
+            break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Handler for tx complete event.
+// It is guaranteed by the FSM framework that no WHA command is pending
+// when this method is entered
+// -----------------------------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::OnTxCompleteEvent( 
+    WlanContextImpl& aCtxImpl )
+    {
+    switch ( iState )
+        {
+        case ESETDOT11MAXRECEIVELIFETIME:
+            if ( aCtxImpl.WHASettings().iCapability 
+                & WHA::SSettings::KDot11SlotTime )
+                {
+                // supported
+                ChangeInternalState( 
+                    aCtxImpl, ESETDOT11SLOTTIME );
+                }
+            else
+                {
+                OsTracePrint( KWarningLevel, (TUint8*)
+                    ("UMAC * dot11-mibdefaultconfigure"));
+                OsTracePrint( KWarningLevel, (TUint8*)
+                    ("no support for dot11slottime mib skipping"));
+                ChangeInternalState( aCtxImpl, 
+                    ESETDOT11GROUPADDRSTABLE );
+                }
+            break;
+        case ESETDOT11SLOTTIME:
+            ChangeInternalState( aCtxImpl, 
+                ESETDOT11GROUPADDRSTABLE );
+            break;
+        case ESETDOT11GROUPADDRSTABLE:
+            ChangeInternalState( aCtxImpl, 
+                ESETDOT11WEPDEFAULTKEY );
+            break;
+        case ESETDOT11WEPDEFAULTKEY:
+            ChangeInternalState( aCtxImpl, 
+                ESETDOT11CURRENTTXPOWERLEVEL );
+            break;
+        case ESETDOT11CURRENTTXPOWERLEVEL:
+            ChangeInternalState( aCtxImpl, 
+                ESETDOT11RTSTHRESHOLD );
+            break;
+        case ESETDOT11RTSTHRESHOLD:
+            ChangeInternalState( aCtxImpl, 
+                ESETCTSTOSELF );
+            break;
+        case ESETCTSTOSELF:
+            ChangeInternalState( aCtxImpl, 
+                ESETARPIPADDRSTABLE );
+            break;
+        case ESETARPIPADDRSTABLE:
+            ChangeInternalState( aCtxImpl, 
+                ESETPROBEREQUESTTEMPLATE );
+            break;
+        case ESETPROBEREQUESTTEMPLATE:
+            ChangeInternalState( aCtxImpl, 
+                ESETRXFILTER );
+            break;
+        case ESETRXFILTER:
+            ChangeInternalState( aCtxImpl, 
+                ESETBEACONFILTERIETABLE );
+            break;
+        case ESETBEACONFILTERIETABLE:
+            ChangeInternalState( aCtxImpl, 
+                ESETBEACONFILTERENABLE );
+            break;
+        case ESETBEACONFILTERENABLE:
+            ChangeInternalState( aCtxImpl, 
+                ESETWLANWAKEUPINTERVAL );
+            break;
+        case ESETWLANWAKEUPINTERVAL:
+            ChangeInternalState( aCtxImpl, 
+                ESETBEACONLOSTCOUNT );
+            break;
+        case ESETBEACONLOSTCOUNT:
+            ChangeInternalState( aCtxImpl, 
+                ESETRCPITHRESHOLD );
+            break;
+        case ESETRCPITHRESHOLD:
+            ChangeInternalState( aCtxImpl, 
+                ESETTXRATEPOLICY );
+            break;
+        case ESETTXRATEPOLICY:
+            if ( aCtxImpl.WHASettings().iCapability 
+                & WHA::SSettings::KHtOperation )
+                {
+                // supported
+                ChangeInternalState( 
+                    aCtxImpl, ESETHTCAPABILITIES );
+                }
+            else
+                {
+                // HT not supported, so we will skip setting the HT related
+                // MIBs
+                OsTracePrint( KWarningLevel, (TUint8*)
+                    ("UMAC: WlanDot11MibDefaultConfigure::OnTxCompleteEvent: no HT support, skipping HT related mibs"));
+                ChangeInternalState( aCtxImpl, 
+                    ECONTINUEDOT11TRAVERSE );
+                }
+            break;
+        case ESETHTCAPABILITIES:
+            ChangeInternalState( aCtxImpl, 
+                ESETHTBSSOPERATION );
+            break;
+        case ESETHTBSSOPERATION:
+            ChangeInternalState( aCtxImpl, 
+                ESETHTSECONDARYBEACON );
+            break;
+        case ESETHTSECONDARYBEACON:
+            ChangeInternalState( aCtxImpl, 
+                ESETHTBLOCKACKCONFIGURE );            
+            break;
+        case ESETHTBLOCKACKCONFIGURE:
+            ChangeInternalState( aCtxImpl, 
+                ECONTINUEDOT11TRAVERSE );            
+            break;
+        default:
+            // catch internal FSM programming error
+            OsTracePrint( 
+                KErrorLevel, 
+                (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::OnTxCompleteEvent(): state: %d"), 
+                iState);        
+            OsAssert( 
+                (TUint8*)("UMAC: UMAC: WlanDot11MibDefaultConfigure::OnTxCompleteEvent(): panic"), 
+                (TUint8*)(WLAN_FILE), __LINE__ );
+            break;
+        }
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::OnAbortEvent
+// simulate macnotresponding error
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::OnAbortEvent( 
+    WlanContextImpl& aCtxImpl )
+    {
+    // memory is released by Exit() method
+    OsTracePrint( KWarningLevel, 
+        (TUint8*)("UMAC * dot11-mibdefaultconfigure * abort") );
+
+    DoErrorIndication( aCtxImpl, WHA::KErrorMacNotResponding );
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetDot11MaxReceiveLifeTime
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetDot11MaxReceiveLifeTime( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetDot11MaxReceiveLifeTime()") );
+
+    WHA::Sdot11MaxReceiveLifeTime* mib 
+        = static_cast<WHA::Sdot11MaxReceiveLifeTime*>(iMemory);
+    *mib = WHA::KDot11MaxReceiveLifeTimeMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibDot11MaxReceiveLifetime, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetDot11SlotTime
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetDot11SlotTime( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetDot11SlotTime()") );
+
+    WHA::Sdot11SlotTime* mib
+        = static_cast<WHA::Sdot11SlotTime*>(iMemory);
+    *mib = WHA::KDot11SlotTimeMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibDot11SlotTime, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetDot11GroupAddrsTable
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetDot11GroupAddrsTable( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetDot11GroupAddrsTable()") );
+
+    WHA::Sdot11GroupAddressesTable* mib
+        = static_cast<WHA::Sdot11GroupAddressesTable*>(iMemory);
+    *mib = WHA::KDot11GroupAddressesTableMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibDot11GroupAddressesTable, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetDot11WepDefaultKey
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetDot11WepDefaultKey( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetDot11WepDefaultKey()") );
+
+    WHA::Sdot11WepDefaultKeyId* mib
+        = static_cast<WHA::Sdot11WepDefaultKeyId*>(iMemory);
+    *mib = WHA::KDot11WepDefaultKeyIdMib;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibDot11WepDefaultKeyId, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetDot11CurrentTxPowerLevel
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetDot11CurrentTxPowerLevel( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetDot11CurrentTxPowerLevel()") );
+
+    WHA::Sdot11CurrentTxPowerLevel* mib 
+        = static_cast<WHA::Sdot11CurrentTxPowerLevel*>(iMemory);
+    *mib = WHA::KDot11CurrentTxPowerLevelMibDefault;
+
+    // store the new power level also to our soft mib
+    aCtxImpl.iWlanMib.dot11CurrentTxPowerLevel 
+        = mib->iDot11CurrentTxPowerLevel;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibDot11CurrentTxPowerLevel, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetDot11RtsThreshold
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetDot11RtsThreshold( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetDot11RtsThreshold()") );
+    
+    WHA::Sdot11RTSThreshold* mib 
+        = static_cast<WHA::Sdot11RTSThreshold*>(iMemory);
+    mib->iDot11RTSThreshold = aCtxImpl.iWlanMib.dot11RTSThreshold; 
+   
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibDot11RTSThreshold, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetCtsToSelf
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetCtsToSelf( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetCtsToSelf()") );
+
+    WHA::SctsToSelf* mib 
+        = static_cast<WHA::SctsToSelf*>(iMemory);
+    *mib = WHA::KCtsToSelfMibDefault; 
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibCtsToSelf, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetArpIpAddrsTable
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetArpIpAddrsTable( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetArpIpAddrsTable(): ") );
+
+    WHA::SarpIpAddressTable* mib 
+        = static_cast<WHA::SarpIpAddressTable*>(iMemory);
+    *mib = WHA::KArpIpAddressTableMibDefault; 
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibArpIpAddressTable, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetProbeRequestTemplate
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetProbeRequestTemplate( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, (TUint8*)
+        ("UMAC: WlanDot11MibDefaultConfigure::SetProbeRequestTemplate") );
+    
+    SSupportedRatesIE s_ie;
+    const TUint8 KHtCapabilitiesIeLength( 
+        aCtxImpl.GetOurHtCapabilitiesIe().GetIeLength() );
+    
+    // we don't want to create this IE to stack
+    // as it is a big one
+    SExtendedSupportedRatesIE* ext_s_ie(
+        static_cast<SExtendedSupportedRatesIE*>
+        (os_alloc( sizeof(SExtendedSupportedRatesIE) )));
+    if ( !ext_s_ie )
+        {
+        // alloc failue; just send abort to fsm. It takes care of the rest
+        Fsm( aCtxImpl, EABORT );
+        return;
+        }
+
+    new (ext_s_ie) SExtendedSupportedRatesIE;
+    
+    // construct rate IEs from WHA rates this device supports...
+    WlanWhaToDot11TypeConverter::Convert( 
+        aCtxImpl.WHASettings().iRates,
+        s_ie, 
+        *ext_s_ie );
+
+    // length of the dot11 probe request frame template to be written
+    const TUint32 frame_template_len(
+        // dot11 management header
+        sizeof(SManagementFrameHeader) +
+        // an empty SSID field holds just the IE header
+        sizeof(SInformationElementHeader) +
+        // standard supported rate IE length
+        s_ie.GetIeLength() +
+        // lenght of the HT capabilities element, which is only added if lower
+        // layers support HT
+        (aCtxImpl.WHASettings().iCapability & WHA::SSettings::KHtOperation ?
+            KHtCapabilitiesIeLength : 0 ) +
+        // if extended rate IE has any elements we shall append it
+        // otherwise not 
+        ((ext_s_ie->GetElementLength()) ? ext_s_ie->GetIeLength() : 0) +
+        // if lower layers support DS Parameter Set IE in probe request,
+        // we will append it; otherwise not
+        (aCtxImpl.WHASettings().iCapability & 
+            WHA::SSettings::KDsParamSetIeInProbe ? 
+                sizeof( SDsParameterSetIE ) : 0 ) );
+
+    // total length of the MIB to be written
+    TUint32 mib_len( 
+        // length of the dot11 probe request frame template to be written
+        frame_template_len 
+        // ...and the MIB header
+        + WHA::StemplateFrame::KHeaderSize );
+
+    // align length of MIB to 4-byte boundary
+    mib_len = Align4( mib_len );
+
+    if ( mib_len > KAllocLen )
+        {
+        // this is a programming error
+        OsTracePrint( KErrorLevel, 
+            (TUint8*)("UMAC: mib_len %d"), mib_len);        
+        OsAssert( (TUint8*)("UMAC: panic"), (TUint8*)(WLAN_FILE), __LINE__ );
+        }
+
+    // start of usable memory
+    WHA::StemplateFrame* mib_hdr( static_cast<WHA::StemplateFrame*>(iMemory) );
+
+    // --- begin: set MIB header 
+
+    mib_hdr->iFrameType = WHA::KProbeRequestTemplate;
+    // this field is a don't care for probe request
+    mib_hdr->iInitialTransmitRate = 0;  
+    mib_hdr->iLength = frame_template_len;
+
+    // --- end: set MIB header 
+
+    // --- begin: set dot11 frame header 
+
+    SManagementFrameHeader* frame_hdr( 
+        reinterpret_cast<SManagementFrameHeader*>(mib_hdr->iTemplateData) );
+    new (frame_hdr) SManagementFrameHeader( E802Dot11FrameTypeProbeReq ); 
+    frame_hdr->iDA = KBroadcastMacAddr;
+    frame_hdr->iSA = aCtxImpl.iWlanMib.dot11StationId;
+    frame_hdr->iBSSID = KBroadcastMacAddr; 
+
+    // --- end: set dot11 frame header 
+
+    // --- begin: set IEs 
+
+    TUint8* ptr( reinterpret_cast<TUint8*>(++frame_hdr) );
+
+    // set an empty SSID 
+    new (ptr) SSsIdIE;
+    // as we have an empty SSID its length only holds the 
+    // information element header length
+    ptr += sizeof( SInformationElementHeader );
+
+    // copy supported rates IE
+    os_memcpy( 
+        ptr, &s_ie, s_ie.GetIeLength() );
+    ptr += s_ie.GetIeLength();
+
+    // add DS Parameter Set IE, if possible
+    if ( aCtxImpl.WHASettings().iCapability & 
+         WHA::SSettings::KDsParamSetIeInProbe )
+        {
+        new (ptr) SDsParameterSetIE( 0 ); // initialize to ch zero
+        ptr += sizeof( SDsParameterSetIE );
+
+        OsTracePrint( KUmacDetails, (TUint8*)
+            ("UMAC: DS Param Set IE added") );
+        }
+
+    if ( aCtxImpl.WHASettings().iCapability & 
+         WHA::SSettings::KHtOperation )
+        {
+        // copy HT capabilities element
+        os_memcpy( 
+            ptr, 
+            &(aCtxImpl.GetOurHtCapabilitiesIe()), 
+            KHtCapabilitiesIeLength );
+    
+        ptr += KHtCapabilitiesIeLength;
+
+        OsTracePrint( KUmacDetails, (TUint8*)
+            ("UMAC: HT capabilities element added") );
+        }
+
+    // copy extended supported rates IE if present
+    if ( ext_s_ie->GetElementLength() )
+        {
+        os_memcpy( ptr, ext_s_ie, ext_s_ie->GetIeLength() );
+        }
+
+    // --- end: set IEs 
+
+    // and now execute
+
+    WlanWsaWriteMib& wsa_cmd( aCtxImpl.WsaWriteMib() );
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibTemplateFrame, mib_len, mib_hdr );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+
+    // as the parameters have been supplied we can now deallocate
+    os_free( ext_s_ie );
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetRxFilter
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetRxFilter( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetRxFilter()") );
+
+    WHA::SrxFilter* mib 
+        = static_cast<WHA::SrxFilter*>(iMemory);
+    *mib = WHA::KRxFilterMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibRxFilter, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetBeaconFilterIeTable
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetBeaconFilterIeTable( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetBeaconFilterIeTable()") );
+
+    WHA::SbeaconFilterIeTable* mib 
+        = static_cast<WHA::SbeaconFilterIeTable*>(iMemory);
+    *mib = WHA::KBeaconFilterIeTableMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibBeaconFilterIeTable, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetBeaconFilterEnable
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetBeaconFilterEnable( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetBeaconFilterEnable()") );
+
+    WHA::SbeaconFilterEnable* mib 
+        = static_cast<WHA::SbeaconFilterEnable*>(iMemory);
+    *mib = WHA::KBeaconFilterEnableMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibBeaconFilterEnable, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetWlanWakeupInterval
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetWlanWakeupInterval( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetWlanWakeupInterval()") );
+
+    WHA::SwlanWakeUpInterval* mib 
+        = static_cast<WHA::SwlanWakeUpInterval*>(iMemory);
+    *mib = WHA::KWlanWakeUpIntervalMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibWlanWakeUpInterval, sizeof(*mib), mib );
+        
+    // store the new setting also locally
+    aCtxImpl.iWlanMib.iWlanWakeupInterval = mib->iMode;
+    aCtxImpl.iWlanMib.iWlanListenInterval = mib->iListenInterval;
+
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetBeaconLostCount
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetBeaconLostCount( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetBeaconLostCount()") );
+
+    WHA::SbeaconLostCount* mib 
+        = static_cast<WHA::SbeaconLostCount*>(iMemory);
+
+    // if the beacon lost count has been set via the management interface,
+    // that value is used (instead of the original default)
+    mib->iLostCount = aCtxImpl.iWlanMib.iBeaconLostCount;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibBeaconLostCount, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetRcpiThreshold
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetRcpiThreshold( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetRcpiThreshold()") );
+
+    WHA::SrcpiThreshold* mib 
+        = static_cast<WHA::SrcpiThreshold*>(iMemory);
+    *mib = WHA::KRcpiThresholdMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibRcpiThreshold, sizeof(*mib), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// WlanDot11MibDefaultConfigure::SetTxRatePolicy
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetTxRatePolicy( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, 
+        (TUint8*)("UMAC: WlanDot11MibDefaultConfigure::SetTxRatePolicy()") );
+
+    // we define 1 global policy ...
+
+    WHA::StxRatePolicy* mib = static_cast<WHA::StxRatePolicy*>(iMemory);
+
+    // ... which is our default ...
+    *mib = WHA::KTxRatePolicyMibDefault;
+    
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+
+    wsa_cmd.Set( 
+        aCtxImpl, 
+        WHA::KMibTxRatePolicy, 
+        sizeof( *mib ), 
+        mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );   
+    }
+
+// ---------------------------------------------------------
+// 
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetHtCapabilities( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, (TUint8*)
+        ("UMAC: WlanDot11MibDefaultConfigure::SetHtCapabilities") );
+
+    WHA::ShtCapabilities* mib 
+        = static_cast<WHA::ShtCapabilities*>(iMemory);
+    *mib = WHA::KHtCapabilitiesMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibHtCapabilities, sizeof( *mib ), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );
+    }
+
+// ---------------------------------------------------------
+// 
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetHtBssOperation( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, (TUint8*)
+        ("UMAC: WlanDot11MibDefaultConfigure::SetHtBssOperation") );
+
+    WHA::ShtBssOperation* mib 
+        = static_cast<WHA::ShtBssOperation*>(iMemory);
+    *mib = WHA::KHtBssOperationMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibHtBssOperation, sizeof( *mib ), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );
+    }
+
+// ---------------------------------------------------------
+// 
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetHtSecondaryBeacon( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, (TUint8*)
+        ("UMAC: WlanDot11MibDefaultConfigure::SetHtSecondaryBeacon") );
+
+    WHA::ShtSecondaryBeacon* mib 
+        = static_cast<WHA::ShtSecondaryBeacon*>(iMemory);
+    *mib = WHA::KHtSecondaryBeaconMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibHtSecondaryBeacon, sizeof( *mib ), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );
+    }
+
+// ---------------------------------------------------------
+// 
+// ---------------------------------------------------------
+//
+void WlanDot11MibDefaultConfigure::SetHtBlockAckConfigure( 
+    WlanContextImpl& aCtxImpl )
+    {
+    OsTracePrint( KUmacDetails, (TUint8*)
+        ("UMAC: WlanDot11MibDefaultConfigure::SetHtBlockAckConfigure") );
+
+    WHA::ShtBlockAckConfigure* mib 
+        = static_cast<WHA::ShtBlockAckConfigure*>(iMemory);
+    *mib = WHA::KHtBlockAckConfigureMibDefault;
+        
+    WlanWsaWriteMib& wsa_cmd = aCtxImpl.WsaWriteMib();
+        
+    wsa_cmd.Set( 
+        aCtxImpl, WHA::KMibHtBlockAckConfigure, sizeof( *mib ), mib );
+        
+    // change global state: entry procedure triggers action
+    ChangeState( aCtxImpl, 
+        *this,              // prev state
+        wsa_cmd             // next state
+        );
+    }