wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacDot11State.cpp
branchRCL_3
changeset 10 0abc8c98be24
parent 0 c40eb8fe8501
child 21 af3fb27c7511
child 22 c6a1762761b8
child 25 a0fdcd0e4c56
equal deleted inserted replaced
8:e0f767079796 10:0abc8c98be24
     1 /*
     1 /*
     2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of the License "Eclipse Public License v1.0"
     5 * under the terms of the License "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    14 * Description:   Implementation of the WlanDot11State class.
    14 * Description:   Implementation of the WlanDot11State class.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 /*
    18 /*
    19 * %version: 85 %
    19 * %version: 86 %
    20 */
    20 */
    21 
    21 
    22 #include "config.h"
    22 #include "config.h"
    23 #include "UmacDot11State.h"
    23 #include "UmacDot11State.h"
    24 #include "UmacWsaAddKey.h"
    24 #include "UmacWsaAddKey.h"
   137     if ( aDisableDynamicPowerModeManagement )
   137     if ( aDisableDynamicPowerModeManagement )
   138         {
   138         {
   139         aCtxImpl.StopPowerModeManagement();
   139         aCtxImpl.StopPowerModeManagement();
   140         }
   140         }
   141     
   141     
       
   142     // it is now also our desired dot11 power management mode
       
   143     aCtxImpl.DesiredDot11PwrMgmtMode( aCtxImpl.ClientDot11PwrMgmtMode() );
       
   144 
   142     aCtxImpl.SetClientLightPsModeConfig( 
   145     aCtxImpl.SetClientLightPsModeConfig( 
   143         aWakeupModeInLightPs, 
   146         aWakeupModeInLightPs, 
   144         aListenIntervalInLightPs );
   147         aListenIntervalInLightPs );
   145 
   148 
   146     aCtxImpl.SetClientDeepPsModeConfig( 
   149     aCtxImpl.SetClientDeepPsModeConfig( 
   156          aCtxImpl.ClientDot11PwrMgmtMode() )
   159          aCtxImpl.ClientDot11PwrMgmtMode() )
   157         {
   160         {
   158         // there is a difference in current dot11 power management mode and 
   161         // there is a difference in current dot11 power management mode and 
   159         // WLAN Mgmt Client's desired dot11 power management mode
   162         // WLAN Mgmt Client's desired dot11 power management mode
   160         
   163         
   161         // So, WLAN Mgmt Client's desired dot11 power management mode becomes
       
   162         // our new desired mode
       
   163         aCtxImpl.DesiredDot11PwrMgmtMode( aCtxImpl.ClientDot11PwrMgmtMode() );
       
   164 
       
   165         // callee will complete the mgmt command
   164         // callee will complete the mgmt command
   166         ret = OnDot11PwrMgmtTransitRequired( aCtxImpl );
   165         ret = OnDot11PwrMgmtTransitRequired( aCtxImpl );
   167         }
   166         }
   168     else
   167     else
   169         {
   168         {
  2304         }
  2303         }
  2305     if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.DsssCckIn40Mhz() )
  2304     if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.DsssCckIn40Mhz() )
  2306         {
  2305         {
  2307         mib->iPeerFeatures |= WHA::KDsssCckIn40Mhz;
  2306         mib->iPeerFeatures |= WHA::KDsssCckIn40Mhz;
  2308         }
  2307         }
  2309     if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.Psmp() )
       
  2310         {
       
  2311         mib->iPeerFeatures |= WHA::KPsmp;
       
  2312         }
       
  2313     if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.LsigTxopProtection() )
  2308     if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.LsigTxopProtection() )
  2314         {
  2309         {
  2315         mib->iPeerFeatures |= WHA::KLsigTxopProtection;
  2310         mib->iPeerFeatures |= WHA::KLsigTxopProtection;
  2316         }
  2311         }
  2317     if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.Pco() )
  2312     if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.Pco() )
  4724     WlanElementLocator& aElementLocator ) const
  4719     WlanElementLocator& aElementLocator ) const
  4725     {
  4720     {
  4726     TBool status ( ETrue ); 
  4721     TBool status ( ETrue ); 
  4727     
  4722     
  4728     if ( ( aCtxImpl.PairwiseCipher() == EWlanCipherSuiteTkip ) || 
  4723     if ( ( aCtxImpl.PairwiseCipher() == EWlanCipherSuiteTkip ) || 
  4729          !( aCtxImpl.QosEnabled() ) )
  4724          !( aCtxImpl.QosEnabled() ) ||
       
  4725          !( aCtxImpl.FeaturesAllowed() & KWlanHtOperation ) )
  4730         {
  4726         {
  4731         // as the control is here it means that 
  4727         // as the control is here it means that 
  4732         // - the WLAN vendor implementation
  4728         // - the WLAN vendor implementation
  4733         // supports HT AND EITHER
  4729         // supports HT AND EITHER
  4734         // - TKIP will be used as the pairwise cipher OR
  4730         // - TKIP will be used as the pairwise cipher OR
  4735         // - the target nw doesn't support WMM
  4731         // - the target nw doesn't support WMM OR
       
  4732         // - HT use has been denied by WLAN Mgmt client
  4736         // In these cases we must not use HT functionality, even if the target 
  4733         // In these cases we must not use HT functionality, even if the target 
  4737         // nw supported it. We achieve that by handling the target nw as
  4734         // nw supported it. We achieve that by handling the target nw as
  4738         // a non-HT nw
  4735         // a non-HT nw
  4739         aCtxImpl.HtSupportedByNw( EFalse );
  4736         aCtxImpl.HtSupportedByNw( EFalse );
  4740         
  4737         
  4741         OsTracePrint( KInfoLevel, (TUint8*)
  4738         OsTracePrint( KInfoLevel, (TUint8*)
  4742             ("UMAC: WlanDot11State::HandleDot11n: TKIP as pairwise cipher "
  4739             ("UMAC: WlanDot11State::HandleDot11n: TKIP as pairwise cipher "
  4743              "or WMM not supported => HT disabled") );
  4740              "OR WMM not supported OR HT use denied => HT disabled") );
  4744         }
  4741         }
  4745     else
  4742     else
  4746         {
  4743         {
  4747         status = HandleHtCapabilities( aCtxImpl, aElementLocator ) ;
  4744         status = HandleHtCapabilities( aCtxImpl, aElementLocator ) ;
  4748         
  4745