Skip to content

Commit

Permalink
[trel] add config for peer table size and packet pool size (#9750)
Browse files Browse the repository at this point in the history
  • Loading branch information
yangliu1333 authored Jan 5, 2024
1 parent d02c4be commit 5197402
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 7 deletions.
1 change: 1 addition & 0 deletions src/core/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -825,6 +825,7 @@ source_set("libopenthread_core_config") {
"config/srp_server.h",
"config/time_sync.h",
"config/tmf.h",
"config/trel.h",
"openthread-core-config.h",
]
public_configs = [
Expand Down
66 changes: 66 additions & 0 deletions src/core/config/trel.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
* Copyright (c) 2024, The OpenThread Authors.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

/**
* @file
* This file includes compile-time configurations for TREL.
*
*/

#ifndef CONFIG_TREL_H_
#define CONFIG_TREL_H_

/**
* @addtogroup config-trel
*
* @brief
* This module includes configuration variables for TREL.
*
* @{
*
*/

/**
* @def OPENTHREAD_CONFIG_TREL_PEER_TABLE_SIZE
*
* Specifies the capacity of TREL peer table. Only non-zero value
* will be directly used for setting the TREL peer table capacity.
* Zero value lets the size to be determined by the OT stack itself
* which is derived based on other configurations such as a child
* table size, neighbor table size, etc.
*/
#ifndef OPENTHREAD_CONFIG_TREL_PEER_TABLE_SIZE
#define OPENTHREAD_CONFIG_TREL_PEER_TABLE_SIZE (0)
#endif

/**
* @}
*
*/

#endif // CONFIG_TREL_H_
1 change: 1 addition & 0 deletions src/core/openthread-core-config.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@
#include "config/srp_server.h"
#include "config/time_sync.h"
#include "config/tmf.h"
#include "config/trel.h"

#undef OPENTHREAD_CORE_CONFIG_H_IN

Expand Down
5 changes: 4 additions & 1 deletion src/core/radio/trel_interface.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,9 +229,12 @@ class Interface : public InstanceLocator
bool IsFilterEnabled(void) const { return mFiltered; }

private:
#if OPENTHREAD_COFNIG_TREL_PEER_TABLE_SIZE != 0
static constexpr uint16_t kPeerTableSize = OPENTHREAD_COFNIG_TREL_PEER_TABLE_SIZE;
#else
static constexpr uint16_t kPeerTableExtraEntries = 32;
static constexpr uint16_t kPeerTableSize = Mle::kMaxRouters + Mle::kMaxChildren + kPeerTableExtraEntries;

#endif
static const char kTxtRecordExtAddressKey[];
static const char kTxtRecordExtPanIdKey[];

Expand Down
10 changes: 10 additions & 0 deletions src/posix/platform/openthread-posix-config.h
Original file line number Diff line number Diff line change
Expand Up @@ -419,4 +419,14 @@
#define OPENTHREAD_POSIX_CONFIG_EXIT_ON_INFRA_NETIF_LOST_ENABLE 1
#endif

/**
* @def OPENTHREAD_POSIX_CONFIG_TREL_TX_PACKET_POOL_SIZE
*
* This setting configures the capacity of TREL packet pool for transmission.
*
*/
#ifndef OPENTHREAD_POSIX_CONFIG_TREL_TX_PACKET_POOL_SIZE
#define OPENTHREAD_POSIX_CONFIG_TREL_TX_PACKET_POOL_SIZE 5
#endif

#endif // OPENTHREAD_PLATFORM_CONFIG_H_
11 changes: 5 additions & 6 deletions src/posix/platform/trel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,19 @@

#if OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE

#define TREL_MAX_PACKET_SIZE 1400
#define TREL_PACKET_POOL_SIZE 5
static constexpr uint16_t kMaxPacketSize = 1400; // The max size of a TREL packet.

typedef struct TxPacket
{
struct TxPacket *mNext;
uint8_t mBuffer[TREL_MAX_PACKET_SIZE];
uint8_t mBuffer[kMaxPacketSize];
uint16_t mLength;
otSockAddr mDestSockAddr;
} TxPacket;

static uint8_t sRxPacketBuffer[TREL_MAX_PACKET_SIZE];
static uint8_t sRxPacketBuffer[kMaxPacketSize];
static uint16_t sRxPacketLength;
static TxPacket sTxPacketPool[TREL_PACKET_POOL_SIZE];
static TxPacket sTxPacketPool[OPENTHREAD_POSIX_CONFIG_TREL_TX_PACKET_POOL_SIZE];
static TxPacket *sFreeTxPacketHead; // A singly linked list of free/available `TxPacket` from pool.
static TxPacket *sTxPacketQueueTail; // A circular linked list for queued tx packets.

Expand Down Expand Up @@ -456,7 +455,7 @@ void otPlatTrelSend(otInstance *aInstance,

VerifyOrExit(sEnabled);

assert(aUdpPayloadLen <= TREL_MAX_PACKET_SIZE);
assert(aUdpPayloadLen <= kMaxPacketSize);

// We try to send the packet immediately. If it fails (e.g.,
// network is down) `SendPacket()` returns `OT_ERROR_ABORT`. If
Expand Down

0 comments on commit 5197402

Please sign in to comment.