[trel] add config for peer table size and packet pool size (#9750)

This commit is contained in:
Yang Liu
2024-01-04 22:10:24 -08:00
committed by GitHub
parent d02c4be821
commit 5197402363
6 changed files with 87 additions and 7 deletions
+1
View File
@@ -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 = [
+66
View File
@@ -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
View File
@@ -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
+4 -1
View File
@@ -229,9 +229,12 @@ public:
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[];
@@ -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_
+5 -6
View File
@@ -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.
@@ -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