From 563df7dd56fb044071bba8dbb6759938d7e6e427 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Wed, 20 Nov 2024 10:08:31 -0800 Subject: [PATCH] [secure-transport] reorder member variables to avoid alignment gaps (#10946) This commit reorders the member variables in `SecureTransport`, grouping booleans and variables of the same size closer to each other to avoid alignment gaps and allow for better code optimization. --- src/core/meshcop/secure_transport.cpp | 17 +++--- src/core/meshcop/secure_transport.hpp | 74 +++++++++++---------------- 2 files changed, 38 insertions(+), 53 deletions(-) diff --git a/src/core/meshcop/secure_transport.cpp b/src/core/meshcop/secure_transport.cpp index 307804e3b..aa2c69c6f 100644 --- a/src/core/meshcop/secure_transport.cpp +++ b/src/core/meshcop/secure_transport.cpp @@ -74,20 +74,21 @@ const int SecureTransport::kCipherSuites[][2] = { SecureTransport::SecureTransport(Instance &aInstance, LinkSecurityMode aLayerTwoSecurity, bool aDatagramTransport) : InstanceLocator(aInstance) - , mState(kStateClosed) - , mCipherSuite(kUnspecifiedCipherSuite) - , mPskLength(0) - , mVerifyPeerCertificate(true) - , mTimer(aInstance, SecureTransport::HandleTimer, this) - , mTimerIntermediate(0) - , mTimerSet(false) , mLayerTwoSecurity(aLayerTwoSecurity) , mDatagramTransport(aDatagramTransport) + , mTimerSet(false) + , mVerifyPeerCertificate(true) + , mState(kStateClosed) + , mCipherSuite(kUnspecifiedCipherSuite) + , mMessageSubType(Message::kSubTypeNone) + , mConnectEvent(kDisconnectedError) + , mPskLength(0) , mMaxConnectionAttempts(0) , mRemainingConnectionAttempts(0) , mReceiveMessage(nullptr) , mSocket(aInstance, *this) - , mMessageSubType(Message::kSubTypeNone) + , mTimer(aInstance, SecureTransport::HandleTimer, this) + , mTimerIntermediate(0) { ClearAllBytes(mPsk); ClearAllBytes(mSsl); diff --git a/src/core/meshcop/secure_transport.hpp b/src/core/meshcop/secure_transport.hpp index d31ae7655..ad1be46bc 100644 --- a/src/core/meshcop/secure_transport.hpp +++ b/src/core/meshcop/secure_transport.hpp @@ -605,54 +605,38 @@ private: static const int kCipherSuites[][2]; - State mState; - CipherSuite mCipherSuite; - - uint8_t mPsk[kPskMaxLength]; - uint8_t mPskLength; - -#if OPENTHREAD_CONFIG_TLS_API_ENABLE && defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) - EcdheEcdsaInfo mEcdheEcdsaInfo; -#endif - -#if OPENTHREAD_CONFIG_TLS_API_ENABLE && defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) - PskInfo mPskInfo; -#endif - - bool mVerifyPeerCertificate; - - mbedtls_ssl_context mSsl; - mbedtls_ssl_config mConf; - + bool mLayerTwoSecurity : 1; + bool mDatagramTransport : 1; + bool mTimerSet : 1; + bool mVerifyPeerCertificate : 1; + State mState; + CipherSuite mCipherSuite; + Message::SubType mMessageSubType; + ConnectEvent mConnectEvent; + uint8_t mPskLength; + uint16_t mMaxConnectionAttempts; + uint16_t mRemainingConnectionAttempts; + Message *mReceiveMessage; + Ip6::MessageInfo mMessageInfo; + TransportSocket mSocket; + uint8_t mPsk[kPskMaxLength]; + TimerMilliContext mTimer; + TimeMilli mTimerIntermediate; + Callback mAutoCloseCallback; + Callback mConnectedCallback; + Callback mReceiveCallback; + Callback mTransportCallback; + mbedtls_ssl_context mSsl; + mbedtls_ssl_config mConf; #if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_COOKIE_C) mbedtls_ssl_cookie_ctx mCookieCtx; #endif - - TimerMilliContext mTimer; - - TimeMilli mTimerIntermediate; - bool mTimerSet : 1; - - bool mLayerTwoSecurity : 1; - bool mDatagramTransport : 1; - - uint16_t mMaxConnectionAttempts; - uint16_t mRemainingConnectionAttempts; - Callback mAutoCloseCallback; - - Message *mReceiveMessage; - - Callback mConnectedCallback; - Callback mReceiveCallback; - - Ip6::MessageInfo mMessageInfo; - TransportSocket mSocket; - - Callback mTransportCallback; - - Message::SubType mMessageSubType; - - ConnectEvent mConnectEvent; +#if OPENTHREAD_CONFIG_TLS_API_ENABLE && defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) + EcdheEcdsaInfo mEcdheEcdsaInfo; +#endif +#if OPENTHREAD_CONFIG_TLS_API_ENABLE && defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) + PskInfo mPskInfo; +#endif }; } // namespace MeshCoP