--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_driverif.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_driverif.h Thu Apr 01 00:29:25 2010 +0300
@@ -17,7 +17,7 @@
*/
/*
-* %version: 35 %
+* %version: 36 %
*/
#ifndef ABS_CORE_DRIVERIF_H
@@ -373,6 +373,7 @@
* (in microseconds).
* @param sp_min_indication_interval Defines the minimum time interval for consecutive roam
* indications from the signal predictor algorithm (in microseconds).
+ * @param enabled_features Bitmask of enabled features. @see core_feature_e.
*/
virtual void load_drivers(
u32_t request_id,
@@ -385,7 +386,8 @@
u32_t keep_alive_interval,
u32_t sp_rcpi_target,
u32_t sp_time_target,
- u32_t sp_min_indication_interval ) = 0;
+ u32_t sp_min_indication_interval,
+ u32_t enabled_features ) = 0;
/**
* Send a frame.
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_server.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/abs_core_server.h Thu Apr 01 00:29:25 2010 +0300
@@ -17,7 +17,7 @@
*/
/*
-* %version: 30 %
+* %version: 31 %
*/
#ifndef ABS_CORE_SERVER_H
@@ -463,6 +463,16 @@
core_ac_traffic_information_s& info ) = 0;
/**
+ * Set the currently enabled feature set.
+ *
+ * @since S60 v5.2
+ * @param features Bitmask of enabled features.
+ * @return core_error_ok if success, an error code otherwise.
+ */
+ virtual core_error_e set_enabled_features(
+ u32_t features ) = 0;
+
+ /**
* Schedule an immediate driver unload.
*
* @since S60 v3.1
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_server.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_server.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 54 %
+* %version: 55 %
*/
#ifndef CORE_SERVER_H
@@ -862,6 +862,16 @@
core_ac_traffic_information_s& info );
/**
+ * Set the currently enabled feature set.
+ *
+ * @since S60 v5.2
+ * @param features Bitmask of enabled features.
+ * @return core_error_ok if success, an error code otherwise.
+ */
+ core_error_e set_enabled_features(
+ u32_t features );
+
+ /**
* An asynchronous request from the core server has been completed.
*
* @since S60 v3.1
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_settings.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_settings.h Thu Apr 01 00:29:25 2010 +0300
@@ -469,7 +469,25 @@
* @param iap_id IAP ID to be removed.
*/
void remove_iap_id_from_weak_list( u32_t iap_id );
-
+
+ /**
+ * Set the currently enabled feature set.
+ *
+ * @since S60 v5.2
+ * @param features Bitmask of enabled features.
+ * @return core_error_ok if success, an error code otherwise.
+ */
+ void set_enabled_features(
+ u32_t features );
+
+ /**
+ * Get the currently enabled feature set.
+ *
+ * @since S60 v5.2
+ * @return Bitmask of enabled features.
+ */
+ u32_t enabled_features() const;
+
/**
* Check whether the given feature is enabled.
*
@@ -484,10 +502,10 @@
/** Defines whether wlan functionality is enabled or disabled */
bool_t is_wlan_enabled_m;
-
+
/** Defines whether the drivers have been loaded. */
bool_t is_driver_loaded_m;
-
+
/** Specifies the current connection state */
core_connection_state_e connection_state_m;
@@ -511,7 +529,7 @@
/** Defines the currently used regional domain. */
core_wlan_region_e region_m;
-
+
/** Defines whether the mobile country code is known or not. */
bool_t mcc_known_m;
@@ -532,14 +550,12 @@
/** Power save settings for access classes. */
core_power_save_settings_s power_save_settings_m;
-
+
/** Block ACK usage per traffic stream. */
core_block_ack_usage_s block_ack_usage_m;
-
-
+
/** List of IAP Ids whose rcpi values are weak */
core_type_list_c<u32_t> weak_iap_list_m;
-
/** Bitmask of enabled features. */
u32_t features_m;
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_types.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_types.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 95.1.2 %
+* %version: 97 %
*/
#ifndef CORE_TYPES_H
@@ -1133,7 +1133,9 @@
/** Power save test enabled. */
core_feature_power_save_test = 1,
/** 802.11k support enabled. */
- core_feature_802dot11k = 2
+ core_feature_802dot11k = 2,
+ /** 802.11n support enabled. */
+ core_feature_802dot11n = 4
} core_feature_e;
/**
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_check_rcpi.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_check_rcpi.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 21 %
+* %version: 22 %
*/
#include "core_operation_check_rcpi.h"
@@ -299,24 +299,6 @@
DEBUG( "core_operation_check_rcpi_c::next_state() - roamed successfully" );
- /**
- * If moving from weak level to normal, notify client.
- */
- if ( server_m->get_connection_data()->last_rcp_class() != core_rcp_normal )
- {
- DEBUG( "core_operation_check_rcpi_c::next_state() - sending a notification about the normal signal level" );
-
- u8_t buf[5];
- buf[0] = static_cast<u8_t>( core_rcp_normal );
- buf[1] = server_m->get_connection_data()->current_ap_data()->rcpi();
-
- adaptation_m->notify(
- core_notification_rcp_changed,
- sizeof( buf ),
- buf );
- server_m->get_connection_data()->set_last_rcp_class( core_rcp_normal );
- }
-
/**
* Send an indication to adaptation to indicate that this
* roam attempt has been completed.
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_roam.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_roam.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 76 %
+* %version: 76.1.1 %
*/
#include "core_operation_roam.h"
@@ -513,6 +513,21 @@
}
}
+ if ( server_m->get_connection_data()->last_rcp_class() != core_rcp_normal )
+ {
+ DEBUG( "core_operation_roam_c::next_state() - sending a notification about the normal signal level" );
+
+ u8_t buf[5];
+ buf[0] = static_cast<u8_t>( core_rcp_normal );
+ buf[1] = current_ap_m->rcpi();
+
+ adaptation_m->notify(
+ core_notification_rcp_changed,
+ sizeof( buf ),
+ buf );
+ server_m->get_connection_data()->set_last_rcp_class( core_rcp_normal );
+ }
+
if ( current_ap_m->is_wpx() )
{
server_m->get_wpx_adaptation_instance().handle_wpx_roam_success(
@@ -1209,7 +1224,7 @@
is_security_association_available( *server_m->get_connection_data()->current_ap_data() ) )
{
DEBUG( "core_operation_roam_c::process_frame() - WPX fast-roam supported" );
-
+
entry->is_cached_sa_available = true_t;
entry_score += CORE_ROAMING_LIST_BONUS_WPX_FAST_ROAM;
}
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_server.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_server.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 89 %
+* %version: 90 %
*/
#include "core_server.h"
@@ -1617,6 +1617,19 @@
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
+core_error_e core_server_c::set_enabled_features(
+ u32_t features )
+ {
+ DEBUG( "core_server_c::set_enabled_features()" );
+
+ core_settings_m.set_enabled_features( features );
+
+ return core_error_ok;
+ }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
void core_server_c::get_roam_metrics(
core_roam_metrics_s& roam_metrics )
{
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_settings.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_settings.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -48,7 +48,8 @@
weak_iap_list_m( ),
features_m( features )
{
- DEBUG( "core_settings_c::core_settings_c()" );
+ DEBUG1( "core_settings_c::core_settings_c() - features: 0x%08X",
+ features );
clear_connection_statistics();
@@ -744,6 +745,38 @@
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
+//
+void core_settings_c::set_enabled_features(
+ u32_t features )
+ {
+ DEBUG1( "core_settings_c::set_enabled_features() - features: 0x%08X",
+ features );
+ if( features & core_feature_power_save_test )
+ {
+ DEBUG( "core_settings_c::set_enabled_features() - core_feature_power_save_test" );
+ }
+ if( features & core_feature_802dot11k )
+ {
+ DEBUG( "core_settings_c::set_enabled_features() - core_feature_802dot11k" );
+ }
+ if( features & core_feature_802dot11n )
+ {
+ DEBUG( "core_settings_c::set_enabled_features() - core_feature_802dot11n" );
+ }
+
+ features_m = features;
+ }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+u32_t core_settings_c::enabled_features() const
+ {
+ return features_m;
+ }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
bool_t core_settings_c::is_feature_enabled(
core_feature_e feature ) const
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_sub_operation_load_drivers.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_sub_operation_load_drivers.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -92,7 +92,7 @@
DEBUG( "core_sub_operation_load_drivers_c::next_state() - loading drivers" );
operation_state_m = core_state_req_load_drivers;
-
+
drivers_m->load_drivers(
request_id_m,
server_m->get_device_settings().rts,
@@ -104,7 +104,8 @@
server_m->get_device_settings().keep_alive_interval,
server_m->get_device_settings().sp_rcpi_target,
server_m->get_device_settings().sp_time_target,
- server_m->get_device_settings().sp_min_indication_interval );
+ server_m->get_device_settings().sp_min_indication_interval,
+ server_m->get_core_settings().enabled_features() );
break;
}
Binary file wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/cenrep/keys_wlanengine.xls has changed
Binary file wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/conf/wlanengine.confml has changed
Binary file wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/conf/wlanengine_101f8e44.crml has changed
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlancbwaiter.h Mon Mar 15 12:46:48 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: This class implements an active object with callback functionality.
-*
-*/
-
-
-#ifndef WLANCBWAITER_H
-#define WLANCBWAITER_H
-
-#include <e32base.h>
-
-/**
- * This class implements an active object with callback functionality.
- *
- * @since S60 v3.2
- */
-NONSHARABLE_CLASS( CWlanCbWaiter ) : public CActive
- {
-
-public:
-
- /**
- * Factory for creating an instance of CWlanTestWaiter.
- *
- * @param aCallback Callback to call when active object completes.
- * @return NULL if unable create an instance, a pointer to the instance otherwise.
- */
- static CWlanCbWaiter* NewL(
- const TCallBack& aCallback );
-
- /**
- * Destructor.
- */
- virtual ~CWlanCbWaiter();
-
- /**
- * Issue an asynchronous request.
- *
- * @since S60 v3.2
- */
- void IssueRequest();
-
- /**
- * Return the status of the request.
- *
- * @return Reference to status of the request.
- */
- TRequestStatus& RequestStatus();
-
-// from base class CActive
-
- /**
- * From CActive.
- * Called by the active object framework when the request has been completed.
- */
- void RunL();
-
- /**
- * From CActive.
- * Called by the framework if RunL leaves.
- *
- * @param aError The error code RunL leaved with.
- * @return KErrNone if leave was handled, one of the system-wide error codes otherwise.
- */
- TInt RunError(
- TInt aError );
-
- /**
- * From CActive.
- * Called by the framework when Cancel() has been called.
- */
- void DoCancel();
-
-private:
-
- /**
- * Constructor.
- *
- * @param aCallback Callback to call when active object completes.
- */
- CWlanCbWaiter(
- const TCallBack& aCallback );
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
-private: // data
-
- /** Function to call once request has been completed. */
- TCallBack iCallback;
-
- };
-
-#endif // WLANCBWAITER_H
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlanconversionutil.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlanconversionutil.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 33 %
+* %version: 34 %
*/
#ifndef WLANCONVERSIONUTIL_H
@@ -562,16 +562,28 @@
static void ConvertPowerSaveMode(
core_power_save_mode_s& aCoreMode,
TWlanPowerSaveMode aAmMode );
-
+
/**
* Convert feature flags.
*
* @since S60 v5.1
- * @param aFeatures
+ * @param aStaticFeatures Bitmask of statically enabled features.
+ * @param aDynamicFeatures Bitmask of dynamically enabled features.
* @return Corresponding core features.
*/
static u32_t ConvertFeatureFlags(
- TUint aFeatures );
+ TUint aStaticFeatures,
+ TUint aDynamicFeatures );
+
+ /**
+ * Convert feature flags.
+ *
+ * @since S60 v5.1
+ * @param aCoreFlags Bitmask enabled features.
+ * @return Corresponding UMAC features.
+ */
+ static TUint ConvertFeatureFlags(
+ u32_t aCoreFlags );
/**
* Convert access class.
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlandevicesettings.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlandevicesettings.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 22 %
+* %version: 23 %
*/
#ifndef WLANDEVICESETTINGS_H
@@ -103,6 +103,18 @@
const TUint32 KWlanDefaultBgScanIntervalOffPeakPeriod = 1200; // Background scan interval for off-peak hours is 1200 s
const TUint32 KWlanDefaultMinActiveBroadcastChannelTime = 10;
const TUint32 KWlanDefaultMaxActiveBroadcastChannelTime = 110;
+const TUint32 KWlanDefaultEnabledFeatures = 0xFFFFFFFF;
+
+/**
+ * Bit definitions for run-time WLAN features.
+ */
+enum TWlanRunTimeFeature
+ {
+ /** Initialisation value. */
+ EWlanRunTimeFeatureNone = 0x00000000,
+ /** Whether 802.11n is enabled. */
+ EWlanRunTimeFeature802dot11n = 0x00000001,
+ };
// The value of backgroundScanInterval to deny periodic scanning
const TUint KScanIntervalNever = 0;
@@ -196,6 +208,7 @@
TBool automaticTrafficStreamMgmt; ///< Whether admission control traffic stream management is done automatically.
TUint32 minActiveBroadcastChannelTime; ///< Min time (TUs) to listen a channel in active broadcast scanning when not connected.
TUint32 maxActiveBroadcastChannelTime; ///< Max time (TUs) to listen a channel in active broadcast scanning when not connected.
+ TUint32 enabledFeatures; ///< Bitmask of enabled WLAN features.
TUint32 region; ///< Last known WLAN region that is valid for 5 hours. This value is selected based on the information received from the APs or from cellular network (MCC).
TInt32 regionTimestamp; ///< Timestamp for storing the latest WLAN region (region) to CenRep (minutes from 0AD nominal Gregorian).
};
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlanmgmtcommandhandler.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlanmgmtcommandhandler.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 31 %
+* %version: 32 %
*/
#ifndef WLANMGMTCOMMANDHANDLER_H
@@ -170,6 +170,7 @@
* (in microseconds).
* @param aSpMinIndicationInterval Defines the minimum time interval for consecutive roam
* indications from the signal predictor algorithm (in microseconds).
+ * @param aEnabledFeatures Bitmask of enabled features.
*/
void Configure(
TUint16 aRTSThreshold,
@@ -181,7 +182,8 @@
TUint32 aKeepAliveInterval,
TUint32 aSpRcpiTarget,
TUint32 aSpTimeTarget,
- TUint32 aSpMinIndicationInterval );
+ TUint32 aSpMinIndicationInterval,
+ TUint32 aEnabledFeatures );
/**
* GetLastRCPI
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlanscanproviderinterface.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlanscanproviderinterface.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 7 %
+* %version: 8 %
*/
@@ -120,6 +120,11 @@
};
/**
+ * Destructor.
+ */
+ virtual ~MWlanBgScanProvider() {};
+
+ /**
* Called when Scan is complete.
*
* @since S60 v5.2
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlmdriverif.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlmdriverif.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 38 %
+* %version: 39 %
*/
#ifndef WLMDRIVERIF_H
@@ -392,6 +392,7 @@
* (in microseconds).
* @param sp_min_indication_interval Defines the minimum time interval for consecutive roam
* indications from the signal predictor algorithm (in microseconds).
+ * @param enabled_features Bitmask of enabled features. @see core_feature_e.
*/
void load_drivers(
u32_t request_id,
@@ -404,7 +405,8 @@
u32_t keep_alive_interval,
u32_t sp_rcpi_target,
u32_t sp_time_target,
- u32_t sp_min_indication_interval );
+ u32_t sp_min_indication_interval,
+ u32_t enabled_features );
/**
* Send a frame.
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlmserver.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/wlmserver.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 54 %
+* %version: 55 %
*/
#ifndef WLMSERVER_H
@@ -105,18 +105,20 @@
};
/**
- * Bit definitions for WLAN features.
+ * Bit definitions for static WLAN features.
*/
- enum TWlanFeature
+ enum TWlanStaticFeature
{
/** Initialisation value. */
- EWlanFeatureNone = 0x00000000,
+ EWlanStaticFeatureNone = 0x00000000,
/** Whether WAPI is enabled. */
- EWlanFeatureWapi = 0x00000001,
+ EWlanStaticFeatureWapi = 0x00000001,
/** Whether power save test is enabled. */
- EWlanFeaturePowerSaveTest = 0x00000002,
+ EWlanStaticFeaturePowerSaveTest = 0x00000002,
/** Whether 802.11k is enabled. */
- EWlanFeature802dot11k = 0x00000004
+ EWlanStaticFeature802dot11k = 0x00000004,
+ /** Whether 802.11n is enabled. */
+ EWlanStaticFeature802dot11n = 0x00000008,
};
/**
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlancbwaiter.cpp Mon Mar 15 12:46:48 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
-* Copyright (c) 2008-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: This class implements an active object with callback functionality.
-*
-*/
-
-
-#include "wlancbwaiter.h"
-#include "am_debug.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CWlanCbWaiter::CWlanCbWaiter(
- const TCallBack& aCallback ) :
- CActive( CActive::EPriorityStandard ),
- iCallback( aCallback )
- {
- DEBUG( "CWlanCbWaiter::CWlanCbWaiter()" );
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CWlanCbWaiter::ConstructL()
- {
- DEBUG( "CWlanCbWaiter::ConstructL()" );
- CActiveScheduler::Add( this );
- DEBUG( "CWlanCbWaiter::ConstructL() - done" );
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CWlanCbWaiter* CWlanCbWaiter::NewL(
- const TCallBack& aCallback )
- {
- DEBUG( "CWlanCbWaiter::NewL()" );
- CWlanCbWaiter* self = new (ELeave) CWlanCbWaiter( aCallback );
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CWlanCbWaiter::~CWlanCbWaiter()
- {
- DEBUG( "CWlanCbWaiter::~CWlanCbWaiter()" );
- Cancel();
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CWlanCbWaiter::IssueRequest()
- {
- DEBUG( "CWlanCbWaiter::IssueRequest()" );
- SetActive();
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-TRequestStatus& CWlanCbWaiter::RequestStatus()
- {
- DEBUG1( "CWlanCbWaiter::RequestStatus() - iStatus = %d", iStatus.Int() );
- return iStatus;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CWlanCbWaiter::RunL()
- {
- DEBUG1( "CWlanCbWaiter::RunL() - iStatus = %d", iStatus.Int() );
-
- iCallback.CallBack();
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-TInt CWlanCbWaiter::RunError(
- TInt /* aError */ )
- {
- DEBUG( "CWlanCbWaiter::RunError()" );
-
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CWlanCbWaiter::DoCancel()
- {
- DEBUG( "CWlanCbWaiter::DoCancel()" );
- }
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlanconversionutil.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlanconversionutil.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 84.1.2 %
+* %version: 86 %
*/
#include <in_sock.h>
@@ -1794,22 +1794,45 @@
// ---------------------------------------------------------
//
u32_t TWlanConversionUtil::ConvertFeatureFlags(
- TUint aFeatures )
+ TUint aStaticFeatures,
+ TUint aDynamicFeatures )
{
u32_t coreFeatures( core_feature_none );
- if( aFeatures & CWlmServer::EWlanFeaturePowerSaveTest )
+ if( aStaticFeatures & CWlmServer::EWlanStaticFeaturePowerSaveTest )
{
coreFeatures |= core_feature_power_save_test;
}
- if( aFeatures & CWlmServer::EWlanFeature802dot11k )
+ if( aStaticFeatures & CWlmServer::EWlanStaticFeature802dot11k )
{
coreFeatures |= core_feature_802dot11k;
}
+ if( ( aStaticFeatures & CWlmServer::EWlanStaticFeature802dot11n ) &&
+ ( aDynamicFeatures & EWlanRunTimeFeature802dot11n ) )
+ {
+ coreFeatures |= core_feature_802dot11n;
+ }
return coreFeatures;
}
// ---------------------------------------------------------
+// TWlanConversionUtil::ConvertFeatureFlags()
+// ---------------------------------------------------------
+//
+TUint TWlanConversionUtil::ConvertFeatureFlags(
+ u32_t aCoreFlags )
+ {
+ TUint ret( 0 );
+
+ if( aCoreFlags & core_feature_802dot11n )
+ {
+ ret |= KWlanHtOperation;
+ }
+
+ return ret;
+ }
+
+// ---------------------------------------------------------
// TWlanConversionUtil::ConvertAccessClass()
// ---------------------------------------------------------
//
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlandevicesettings.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlandevicesettings.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 20 %
+* %version: 21 %
*/
// INCLUDE FILES
@@ -206,6 +206,7 @@
aSettings.automaticTrafficStreamMgmt = ETrue;
aSettings.minActiveBroadcastChannelTime = KWlanDefaultMinActiveBroadcastChannelTime;
aSettings.maxActiveBroadcastChannelTime = KWlanDefaultMaxActiveBroadcastChannelTime;
+ aSettings.enabledFeatures = KWlanDefaultEnabledFeatures;
aSettings.region = KWlanDefaultRegion;
aSettings.regionTimestamp = KWlanDefaultRegionTimestamp;
}
@@ -804,6 +805,13 @@
aSettings.maxActiveBroadcastChannelTime = temp;
}
+ // Read KWlanEnabledFeatures
+ err = repository->Get( KWlanEnabledFeatures, temp );
+ if( err == KErrNone )
+ {
+ aSettings.enabledFeatures = temp;
+ }
+
// Read KWlanRegion
err = repository->Get( KWlanRegion, temp );
if( err == KErrNone )
@@ -1440,6 +1448,15 @@
DEBUG1( "CWlanDeviceSettings::WritePrivateData() - could not set key 0x%X", KWlanMaxActiveBroadcastChannelTime );
}
+ // Write KWlanEnabledFeatures
+ err = repository->Set(
+ KWlanEnabledFeatures,
+ static_cast<TInt>( aSettings.enabledFeatures ) );
+ if( err )
+ {
+ DEBUG1( "CWlanDeviceSettings::WritePrivateData() - could not set key 0x%X", KWlanEnabledFeatures );
+ }
+
// Write KWlanRegion
err = repository->Set(
KWlanRegion,
@@ -1717,6 +1734,8 @@
aSettings.minActiveBroadcastChannelTime );
DEBUG1( "CWlanDeviceSettings::LogSettings() - maxActiveBroadcastChannelTime == %d",
aSettings.maxActiveBroadcastChannelTime );
+ DEBUG1( "CWlanDeviceSettings::LogSettings() - enabledFeatures == %d",
+ aSettings.enabledFeatures );
DEBUG1( "CWlanDeviceSettings::LogSettings() - region == %u",
aSettings.region );
DEBUG1( "CWlanDeviceSettings::LogSettings() - regionTimestamp == %d",
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlangenericplugin.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlangenericplugin.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 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"
@@ -15,6 +15,9 @@
*
*/
+/*
+* %version: 4 %
+*/
#include <wlanpluginclient.h>
#include "wlangenericplugin.h"
@@ -165,6 +168,7 @@
__UHEAP_MARKEND;
delete cleanup;
+ REComSession::FinalClose();
return KErrNone;
}
@@ -207,5 +211,4 @@
CleanupStack::PopAndDestroy(scheduler);
DEBUG("CGenericWlanPlugin::LoadGenericWlanPluginL() - exit");
- User::Exit( KErrNone );
}
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlanmgmtcommandhandler.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlanmgmtcommandhandler.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 38 %
+* %version: 39 %
*/
// INCLUDES
@@ -335,7 +335,8 @@
TUint32 aKeepAliveInterval,
TUint32 aSpRcpiTarget,
TUint32 aSpTimeTarget,
- TUint32 aSpMinIndicationInterval )
+ TUint32 aSpMinIndicationInterval,
+ TUint32 aEnabledFeatures )
{
DEBUG( "CWlanMgmtCommandHandler::Configure()" );
@@ -359,9 +360,12 @@
aSpTimeTarget );
DEBUG1( "CWlanMgmtCommandHandler::Configure() - aSpMinIndicationInterval = %u",
aSpMinIndicationInterval );
+ DEBUG1( "CWlanMgmtCommandHandler::Configure() - aEnabledFeatures = 0x%08X",
+ aEnabledFeatures );
TConfigureMsg msg;
msg.hdr.oid_id = E802_11_CONFIGURE;
+ msg.allowedWlanFeatures = aEnabledFeatures;
msg.RTSThreshold = aRTSThreshold;
msg.maxTxMSDULifetime = aMaxTxMSDULifetime;
msg.voiceCallEntryTimeout = aQoSNullFrameEntryTimeout;
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlmdriverif.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlmdriverif.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 51 %
+* %version: 52 %
*/
#include <wlanhwinit.h>
@@ -131,7 +131,8 @@
u32_t keep_alive_interval,
u32_t sp_rcpi_target,
u32_t sp_time_target,
- u32_t sp_min_indication_interval )
+ u32_t sp_min_indication_interval,
+ u32_t enabled_features )
{
DEBUG( "CWlmDriverIf::load_drivers()" );
@@ -227,7 +228,8 @@
keep_alive_interval,
sp_rcpi_target,
sp_time_target,
- sp_min_indication_interval );
+ sp_min_indication_interval,
+ TWlanConversionUtil::ConvertFeatureFlags( enabled_features ) );
}
// -----------------------------------------------------------------------------
--- a/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlmserver.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlmserver.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 102 %
+* %version: 105 %
*/
#include <e32def.h>
@@ -86,8 +86,8 @@
/** Bitmask of WLAN features enabled at compile-time. */
const TUint KWlanStaticFeatures =
- CWlmServer::EWlanFeaturePowerSaveTest |
- CWlmServer::EWlanFeature802dot11k;
+ CWlmServer::EWlanStaticFeature802dot11k |
+ CWlmServer::EWlanStaticFeature802dot11n;
/** Multiplier for converting seconds into microseconds */
const TUint KWlanSecsToMicrosecsMultiplier( 1000000 );
@@ -175,7 +175,7 @@
if( FeatureManager::FeatureSupported( KFeatureIdFfWlanWapi ) )
{
- iSupportedFeatures |= EWlanFeatureWapi;
+ iSupportedFeatures |= EWlanStaticFeatureWapi;
}
DEBUG1( "CWlmServer::ConstructL() - supported WLAN features: 0x%08X",
@@ -206,14 +206,16 @@
SetCachedRegion(deviceSettings.region, deviceSettings.regionTimestamp);
core_device_settings_s coreSettings; // core needs the settings here
TWlanConversionUtil::ConvertDeviceSettings( coreSettings, deviceSettings );
-
+
// Create core server
User::LeaveIfNull( iCoreServer = core_server_factory_c::instance(
*this,
*iDriverIf,
coreSettings,
core_mac,
- TWlanConversionUtil::ConvertFeatureFlags( iSupportedFeatures ) ) );
+ TWlanConversionUtil::ConvertFeatureFlags(
+ iSupportedFeatures,
+ deviceSettings.enabledFeatures ) ) );
iCoreServer->disable_wlan( KWlanIntCmdDisableWlan );
// Create scan timer
@@ -278,8 +280,9 @@
delete session;
}
+ // Stop all plugins
iGenericWlanPlugin.StopPlugins();
-
+
delete iCoreServer;
delete iDriverIf;
iNotificationArray.Close();
@@ -289,12 +292,11 @@
delete iCoreAsynchCb;
delete iScanSchedulingTimer;
delete iSsidListDb;
- if ( iEapolClient )
- {
- delete iEapolClient;
- iEapolClient = NULL;
- }
+ delete iBgScanProvider;
+ delete iTimerServices;
+ delete iEapolClient;
iEapolHandler = NULL;
+ REComSession::FinalClose();
}
// -----------------------------------------------------------------------------
@@ -484,7 +486,7 @@
// Check whether WAPI is supported
if( iapData.SecurityMode == Wapi &&
- !( iSupportedFeatures & EWlanFeatureWapi ) )
+ !( iSupportedFeatures & EWlanStaticFeatureWapi ) )
{
DEBUG( "CWlmServer::Connect() - WAPI is not supported" );
@@ -1517,6 +1519,19 @@
return TWlanConversionUtil::ConvertErrorCode( ret );
}
+
+ u32_t coreFeatures = TWlanConversionUtil::ConvertFeatureFlags(
+ iSupportedFeatures,
+ settings.enabledFeatures );
+ ret = iCoreServer->set_enabled_features( coreFeatures );
+ if( ret != core_error_ok )
+ {
+ DEBUG1( "CWlmServer::UpdateWlanSettings() - set_enabled_features() failed with %u",
+ ret );
+
+ return TWlanConversionUtil::ConvertErrorCode( ret );
+ }
+
DEBUG( "CWlmServer::UpdateWlanSettings() - returning" );
return KErrNone;
@@ -2569,7 +2584,6 @@
core_error_e aStatus,
TBool aCompletedWasTriggering )
{
-
TInt idx = FindRequestIndex( aRequest.iRequestId );
if( idx >= iRequestMap.Count() )
@@ -2579,8 +2593,6 @@
}
DEBUG1( "CWlmServer::CompleteInternalRequest() - index (%d)", idx );
-
- iRequestMap.Remove( idx );
switch( aRequest.iRequestId )
{
@@ -2630,9 +2642,12 @@
}
case KWlanIntCmdNull: // Fall through on purpose
default:
+ DEBUG1( "CWlmServer::CompleteInternalRequest() - request ID %u not handled", aRequest.iRequestId );
break;
// not interested in rest of the internal request completions
}
+
+ iRequestMap.Remove( idx );
}
// ---------------------------------------------------------
@@ -3436,7 +3451,9 @@
// create mapping
SRequestMapEntry mapEntry;
+ mapEntry.iFunction = EGetAvailableIaps;
mapEntry.iRequestId = KWlanIntCmdBackgroundScan;
+ mapEntry.iSessionId = 0;
mapEntry.iParam0 = iapDataList;
mapEntry.iParam1 = iapIdList;
mapEntry.iParam2 = scanList;
@@ -4050,8 +4067,14 @@
DEBUG( "CWlmServer::CancelScan() - cancel timer" );
iScanSchedulingTimer->Cancel();
-
+
DEBUG( "CWlmServer::CancelScan() - remove entry from request map" );
+ SRequestMapEntry entry = iRequestMap[index];
+ delete reinterpret_cast<core_type_list_c<core_iap_data_s>*>( entry.iParam0 );
+ delete reinterpret_cast<core_type_list_c<u32_t>*>( entry.iParam1 );
+ delete reinterpret_cast<ScanList*>( entry.iParam2);
+ delete reinterpret_cast<core_type_list_c<core_ssid_entry_s>*>( entry.iParam3 );
+ delete reinterpret_cast<TTime*>( entry.iTime );
iRequestMap.Remove( index );
DEBUG( "CWlmServer::CancelScan() - find next possible timed scan scheduling request" );
@@ -4083,6 +4106,12 @@
DEBUG( "CWlmServer::CancelScan() - just remove the entry from the request map" );
DEBUG( "CWlmServer::CancelScan() - remove entry from request map" );
+ SRequestMapEntry entry = iRequestMap[index];
+ delete reinterpret_cast<core_type_list_c<core_iap_data_s>*>( entry.iParam0 );
+ delete reinterpret_cast<core_type_list_c<u32_t>*>( entry.iParam1 );
+ delete reinterpret_cast<ScanList*>( entry.iParam2);
+ delete reinterpret_cast<core_type_list_c<core_ssid_entry_s>*>( entry.iParam3 );
+ delete reinterpret_cast<TTime*>( entry.iTime );
iRequestMap.Remove( index );
}
}
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/inc/802dot11.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/802dot11.h Thu Apr 01 00:29:25 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 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"
@@ -17,7 +17,7 @@
*/
/*
-* %version: 44 %
+* %version: 45 %
*/
#ifndef WLAN802DOT11_H
@@ -1659,7 +1659,6 @@
EStbcRxMask = 0x0300,
EDelayedBlockAckMask = 0x0400,
EDsssCckIn40MhzMask = 0x1000,
- EPsmpMask = 0x2000,
ELsigTxopProtectionMask = 0x8000
};
@@ -1862,18 +1861,6 @@
inline void SetDsssCckIn40Mhz( TBool aValue );
/**
- * Evaluates if PSMP operation is supported
- * @return ETrue if supported, EFalse otherwise
- */
- inline TBool Psmp() const;
-
- /**
- * Sets support for PSMP operation
- * @param aValue ETrue if supported, EFalse otherwise
- */
- inline void SetPsmp( TBool aValue );
-
- /**
* Evaluates if L-SIG TXOP protection is supported
* @return ETrue if supported, EFalse otherwise
*/
@@ -2315,37 +2302,6 @@
//
// ---------------------------------------------------------------------------
//
-inline TBool SHtCapabilitiesIeData::Psmp() const
- {
- return ( ( ReadUint16Toh( &iCapabilitiesInfo ) & EPsmpMask )
- ? ETrue : EFalse );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-inline void SHtCapabilitiesIeData::SetPsmp( TBool aValue )
- {
- if ( aValue )
- {
- WriteHtoUint16( &iCapabilitiesInfo,
- ReadUint16Toh( &iCapabilitiesInfo ) |
- EPsmpMask );
- }
- else
- {
- const TUint16 temp ( ReadUint16Toh( &iCapabilitiesInfo ) );
- WriteHtoUint16(
- &iCapabilitiesInfo,
- temp & ( ~EPsmpMask ) );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
inline TBool SHtCapabilitiesIeData::LsigTxopProtection() const
{
return ( ( ReadUint16Toh( &iCapabilitiesInfo ) & ELsigTxopProtectionMask )
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacContextImpl.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacContextImpl.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 103 %
+* %version: 104 %
*/
#ifndef WLANCONTEXTIMPL_H
@@ -608,6 +608,26 @@
*/
inline TMacAddress& GetBssId();
+ /**
+ * Regarding the features which we allow to be be configured on or off,
+ * sets the allowed features per WLAN Mgmt client request
+ *
+ * @param aFeaturesAllowed Feature bit mask where 1 means that the use of
+ * the corresponding feature is allowed and 0 means that its not
+ * allowed
+ */
+ inline void FeaturesAllowed( TWlanFeatures aFeaturesAllowed );
+
+ /**
+ * Regarding the features which we allow to be be configured on or off,
+ * returns the allowed features
+ *
+ * @return Feature bit mask where 1 means that the use of
+ * the corresponding feature is allowed and 0 means that its not
+ * allowed
+ */
+ inline TWlanFeatures FeaturesAllowed() const;
+
inline void Aid( const TUint32 aAid );
inline TUint32 Aid() const;
@@ -2000,6 +2020,14 @@
typedef TUint8 TWlanFeatureArray[KMaxNumOfWlanFeatures];
private: // data
+
+ /**
+ * If a bit in this mask is set, use of the corresponding WLAN
+ * feature is allowed; otherwise it is not allowed.
+ * Note that this mask doesn't contain all supported WLAN features
+ * but only the ones which we allow to be be configured on or off.
+ */
+ TWlanFeatures iAllowedWlanFeatures;
/**
* ETrue if the Tx data buffer for frames created internally in this
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacContextImpl.inl Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/UmacContextImpl.inl Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 76 %
+* %version: 77 %
*/
#include "umacconnectcontext.h"
@@ -256,6 +256,24 @@
//
// ---------------------------------------------------------------------------
//
+inline void WlanContextImpl::FeaturesAllowed( TWlanFeatures aFeaturesAllowed )
+ {
+ iAllowedWlanFeatures = aFeaturesAllowed;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+inline TWlanFeatures WlanContextImpl::FeaturesAllowed() const
+ {
+ return iAllowedWlanFeatures;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
inline void WlanContextImpl::Aid( const TUint32 aAid )
{
iConnectContext.iAid = aAid;
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/inc/umac_types.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/umac_types.h Thu Apr 01 00:29:25 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -16,7 +16,7 @@
*/
/*
-* %version: 28 %
+* %version: 29 %
*/
#ifndef UMACTYPES_H
@@ -26,7 +26,15 @@
#include "pack.h"
#include <wlanosaplatform.h>
-/// Indication data type
+
+/** WLAN feature bit mask */
+typedef TUint32 TWlanFeatures;
+
+/** HT operation (per 802.11n) */
+const TWlanFeatures KWlanHtOperation = ( 1 << 0 );
+
+
+/** Indication data type */
typedef enum _TIndication
{
EMediaDisconnect,
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacoidmsg.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/inc/umacoidmsg.h Thu Apr 01 00:29:25 2010 +0300
@@ -17,7 +17,7 @@
*/
/*
-* %version: 43 %
+* %version: 44 %
*/
#ifndef WLAN_OID_MSG_H
@@ -555,6 +555,13 @@
{
/** Common message header */
TOIDHeader hdr;
+ /**
+ * If a bit in this mask is set, use of the corresponding WLAN
+ * feature is allowed; otherwise it is not allowed.
+ * Note that this mask doesn't contain all supported WLAN features
+ * but only the ones which we allow to be be configured on or off.
+ */
+ TWlanFeatures allowedWlanFeatures;
/** Limit for packet size when to use RTS/CTS protocol. */
TUint16 RTSThreshold;
/** Max. time to (re-)send whole MSDU packet (in TUs) */
@@ -607,7 +614,6 @@
* loss prediction indications.
*/
TUint32 spMinIndicationInterval;
-
} TConfigureMsg;
// -------------------------------------------------------------------------
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/src/Umac.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/src/Umac.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 55 %
+* %version: 56 %
*/
#include "config.h"
@@ -690,6 +690,10 @@
const TConfigureMsg* msg = static_cast<const TConfigureMsg*>(aInputBuffer);
+#ifndef NDEBUG
+ OsTracePrint( KWlmCmdDetails, (TUint8*)
+ ("UMAC: Umac::HandleConfigure: allowedWlanFeatures: 0x%08x"),
+ msg->allowedWlanFeatures );
OsTracePrint( KWlmCmdDetails, (TUint8*)
("UMAC: Umac::HandleConfigure: RTSThreshold: %d"),
msg->RTSThreshold );
@@ -720,7 +724,10 @@
OsTracePrint( KWlmCmdDetails, (TUint8*)
("UMAC: Umac::HandleConfigure: spMinIndicationInterval: %d"),
msg->spMinIndicationInterval );
-
+#endif
+
+ iPimpl->FeaturesAllowed( msg->allowedWlanFeatures );
+
return iPimpl->CurrentState().Configure(
*iPimpl,
msg->RTSThreshold,
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacContextImpl.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacContextImpl.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -16,7 +16,7 @@
*/
/*
-* %version: 70 %
+* %version: 71 %
*/
#include "config.h"
@@ -74,6 +74,7 @@
iUmac( aUmac ),
iEnableUserData( EFalse ),
iCurrentRxBuffer( NULL ),
+ iAllowedWlanFeatures( 0 ),
iInternalTxBufFree ( ETrue ),
iInternalTxBufBeingWaited ( EFalse ),
iAlignNullData( 0 ),
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacDot11InitPhase1.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacDot11InitPhase1.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -16,7 +16,7 @@
*/
/*
-* %version: 34 %
+* %version: 35 %
*/
#include "config.h"
@@ -542,9 +542,6 @@
aCtxImpl.GetOurHtCapabilitiesIe().iData.SetDsssCckIn40Mhz(
aCtxImpl.WHASettings().iHtCapabilities.iHTCapabilitiesBitMask &
WHA::KDsssCckIn40Mhz );
- aCtxImpl.GetOurHtCapabilitiesIe().iData.SetPsmp(
- aCtxImpl.WHASettings().iHtCapabilities.iHTCapabilitiesBitMask &
- WHA::KPsmp );
aCtxImpl.GetOurHtCapabilitiesIe().iData.SetLsigTxopProtection(
aCtxImpl.WHASettings().iHtCapabilities.iHTCapabilitiesBitMask &
WHA::KLsigTxopProtection );
--- a/wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacDot11State.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_common/umac_common/src/UmacDot11State.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -16,7 +16,7 @@
*/
/*
-* %version: 85 %
+* %version: 86 %
*/
#include "config.h"
@@ -139,6 +139,9 @@
aCtxImpl.StopPowerModeManagement();
}
+ // it is now also our desired dot11 power management mode
+ aCtxImpl.DesiredDot11PwrMgmtMode( aCtxImpl.ClientDot11PwrMgmtMode() );
+
aCtxImpl.SetClientLightPsModeConfig(
aWakeupModeInLightPs,
aListenIntervalInLightPs );
@@ -158,10 +161,6 @@
// there is a difference in current dot11 power management mode and
// WLAN Mgmt Client's desired dot11 power management mode
- // So, WLAN Mgmt Client's desired dot11 power management mode becomes
- // our new desired mode
- aCtxImpl.DesiredDot11PwrMgmtMode( aCtxImpl.ClientDot11PwrMgmtMode() );
-
// callee will complete the mgmt command
ret = OnDot11PwrMgmtTransitRequired( aCtxImpl );
}
@@ -2306,10 +2305,6 @@
{
mib->iPeerFeatures |= WHA::KDsssCckIn40Mhz;
}
- if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.Psmp() )
- {
- mib->iPeerFeatures |= WHA::KPsmp;
- }
if ( aCtxImpl.GetNwHtCapabilitiesIe().iData.LsigTxopProtection() )
{
mib->iPeerFeatures |= WHA::KLsigTxopProtection;
@@ -4726,13 +4721,15 @@
TBool status ( ETrue );
if ( ( aCtxImpl.PairwiseCipher() == EWlanCipherSuiteTkip ) ||
- !( aCtxImpl.QosEnabled() ) )
+ !( aCtxImpl.QosEnabled() ) ||
+ !( aCtxImpl.FeaturesAllowed() & KWlanHtOperation ) )
{
// as the control is here it means that
// - the WLAN vendor implementation
// supports HT AND EITHER
// - TKIP will be used as the pairwise cipher OR
- // - the target nw doesn't support WMM
+ // - the target nw doesn't support WMM OR
+ // - HT use has been denied by WLAN Mgmt client
// In these cases we must not use HT functionality, even if the target
// nw supported it. We achieve that by handling the target nw as
// a non-HT nw
@@ -4740,7 +4737,7 @@
OsTracePrint( KInfoLevel, (TUint8*)
("UMAC: WlanDot11State::HandleDot11n: TKIP as pairwise cipher "
- "or WMM not supported => HT disabled") );
+ "OR WMM not supported OR HT use denied => HT disabled") );
}
else
{
--- a/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/RWlanLogicalChannel.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/RWlanLogicalChannel.h Thu Apr 01 00:29:25 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -16,7 +16,7 @@
*/
/*
-* %version: 17 %
+* %version: 18 %
*/
#ifndef RWLAN_LOGICAL_CHANNEL_H_
@@ -224,6 +224,9 @@
*/
SOutputBuffer iAsyncOidCommandOutput;
+ /** Used to store the channel open parameters */
+ TOpenParam iOpenParam;
+
#ifndef __KERNEL_MODE__
/** handle to kernel side shared memory chunk */
RChunk iSharedMemoryChunk;
--- a/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/RWlanLogicalChannel.inl Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/RWlanLogicalChannel.inl Thu Apr 01 00:29:25 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -16,7 +16,7 @@
*/
/*
-* %version: 16 %
+* %version: 17 %
*/
// -----------------------------------------------------------------------------
@@ -97,8 +97,9 @@
inline TInt RWlanLogicalChannel::InitWlanSystem(
TOpenParam& aOpenParam )
{
+ iOpenParam = aOpenParam;
TRequestStatus status;
- DoRequest( EWlanInitSystem, status, &aOpenParam );
+ DoRequest( EWlanInitSystem, status, &iOpenParam );
User::WaitForRequest(status);
return status.Int();
}
--- a/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/src/WlanLogicalChannel.cpp Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/src/WlanLogicalChannel.cpp Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 57 %
+* %version: 59 %
*/
#include "WlLddWlanLddConfig.h"
@@ -24,7 +24,6 @@
#include "WlanLogicalChannel.h"
#include "EthernetFrameMemMngr.h"
#include "EtherCardIoc.h"
-#include "RWlanLogicalChannel.h"
#include "Umac.h"
#include "wllddoidmsgstorage.h"
#include "WlanLogicalDevice.h"
@@ -186,11 +185,6 @@
else if ( iUnit == KUnitEthernet )
{
iTxTriggerDfc.Cancel();
-
- // detach protocol stack side callback
- TraceDump(INIT_LEVEL,
- ("WLANLDD: detach protocol stack side callback from UMAC"));
- iUmac.DetachProtocolStackSideUmacCb();
}
if ( iEthernetFrameMemMngr )
@@ -443,8 +437,7 @@
}
else if ( iUnit == KUnitEthernet )
{
- // attach protocol stack side callbac
- iUmac.AttachProtocolStackSideUmacCb( *this );
+ // nothing for now
}
else
{
@@ -632,11 +625,15 @@
// in supervisor mode
// acquire mutex
+ // Enter critical section before requesting the mutex as
+ // we are executing in the context of a user mode thread
+ NKern::ThreadEnterCS();
#ifndef RD_WLAN_DDK
Kern::MutexWait( iMutex );
#else
iOsa->MutexAcquire();
#endif
+ NKern::ThreadLeaveCS();
TraceDump(MUTEX,
(("WLANLDD: DWlanLogicalChannel::DoControlFast: mutex acquired")));
@@ -708,11 +705,15 @@
}
// release mutex
+ // Enter critical section before releasing the mutex as
+ // we are executing in the context of a user mode thread
+ NKern::ThreadEnterCS();
#ifndef RD_WLAN_DDK
Kern::MutexSignal( iMutex );
#else
iOsa->MutexRelease();
#endif
+ NKern::ThreadLeaveCS();
TraceDump(MUTEX,
("WLANLDD: DWlanLogicalChannel::DoControlFast: mutex released"));
@@ -1010,7 +1011,7 @@
TBool morePackets ( EFalse );
iTxActive = ETrue;
- while ( iUmac.TxPermitted( txQueueState ) && iEthernetFrameMemMngr )
+ while ( iEthernetFrameMemMngr && iUmac.TxPermitted( txQueueState ) )
{
TDataBuffer* metaHeader =
iEthernetFrameMemMngr->GetTxFrame( txQueueState, morePackets );
@@ -1599,6 +1600,18 @@
aSharedChunkInfo,
vendorTxHdrLen,
vendorTxTrailerLen );
+
+ if ( ( iUnit == KUnitEthernet ) &&
+ ( ret == KErrNone ) )
+ {
+ // attach protocol stack side callback
+ TraceDump(INIT_LEVEL,
+ ("WLANLDD: attach protocol stack side callback to UMAC"));
+ iUmac.AttachProtocolStackSideUmacCb( *this );
+
+ // set frame Tx offset for protocol stack side
+ iUmac.SetTxOffset();
+ }
}
return ret;
@@ -1614,6 +1627,14 @@
{
iEthernetFrameMemMngr->OnReleaseMemory( *iClient );
}
+
+ if ( iUnit == KUnitEthernet )
+ {
+ // detach protocol stack side callback
+ TraceDump(INIT_LEVEL,
+ ("WLANLDD: detach protocol stack side callback from UMAC"));
+ iUmac.DetachProtocolStackSideUmacCb();
+ }
}
// ---------------------------------------------------------------------------
@@ -1671,9 +1692,6 @@
a1));
ret = OnInitialiseEthernetFrameBuffers(
static_cast<TSharedChunkInfo*>(a1) );
-
- // set frame Tx offset for protocol stack side
- iUmac.SetTxOffset();
}
else
{
--- a/wlan_bearer/wlannwif/inc/NifWLMServerIf.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_bearer/wlannwif/inc/NifWLMServerIf.h Thu Apr 01 00:29:25 2010 +0300
@@ -17,7 +17,7 @@
*/
/*
-* %version: 8 %
+* %version: 9 %
*/
#ifndef __NIFWLMSERVERIF_H__
@@ -222,7 +222,9 @@
* This class implements the callback interface for
* asynchronous notifications from WLAN engine.
*/
-NONSHARABLE_CLASS ( CLANNifWLMServerCommon ) : public MWLMNotify
+NONSHARABLE_CLASS ( CLANNifWLMServerCommon ) :
+ public CBase,
+ public MWLMNotify
{
public:
--- a/wlan_plat/wlan_device_settings_api/inc/wlandevicesettingsinternalcrkeys.h Mon Mar 15 12:46:48 2010 +0200
+++ b/wlan_plat/wlan_device_settings_api/inc/wlandevicesettingsinternalcrkeys.h Thu Apr 01 00:29:25 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 11.1.2 %
+* %version: 11.1.3 %
*/
#ifndef WLANDEVICESETTINGSINTERNALCRKEYS_H
@@ -407,6 +407,11 @@
const TUint32 KWlanMaxActiveBroadcastChannelTime = 0x00000046;
/**
+ * Bitmask of enabled WLAN features.
+ */
+const TUint32 KWlanEnabledFeatures = 0x00000047;
+
+/**
* Cached WLAN region where possible values are:
* 0 = Region is unknown
* 1 = Region is ETSI