Skip to content

Commit db51b73

Browse files
author
Arto Kinnunen
authored
Configure Thread neighbour and destination cache (ARMmbed#2057)
Adjust Thread devices neighbour and destination cache parameters.
1 parent 7d8dab4 commit db51b73

File tree

3 files changed

+56
-5
lines changed

3 files changed

+56
-5
lines changed

source/6LoWPAN/Thread/thread_bbr_api.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,8 +1144,11 @@ int thread_bbr_start(int8_t interface_id, int8_t backbone_interface_id)
11441144
// By default multicast forwarding is not enabled as it causes multicast loops
11451145
multicast_fwd_set_forwarding(this->interface_id, false);
11461146

1147-
// Adjust BBR neighbor and destination cache size
1148-
arm_nwk_ipv6_max_cache_entries(THREAD_BBR_IPV6_DESTINATION_CACHE_SIZE);
1147+
// Configure BBR neighbour cache parameters
1148+
arm_nwk_ipv6_neighbour_cache_configure(THREAD_BBR_IPV6_NEIGHBOUR_CACHE_SIZE,
1149+
THREAD_BBR_IPV6_NEIGHBOUR_CACHE_SHORT_TERM,
1150+
THREAD_BBR_IPV6_NEIGHBOUR_CACHE_LONG_TERM,
1151+
THREAD_BBR_IPV6_NEIGHBOUR_CACHE_LIFETIME);
11491152

11501153
thread_extension_bbr_init(interface_id, backbone_interface_id);
11511154

source/6LoWPAN/Thread/thread_bootstrap.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,6 +945,31 @@ static void thread_interface_bootsrap_mode_init(protocol_interface_info_entry_t
945945
tr_debug("Set End node Mode");
946946
cur->thread_info->thread_device_mode = THREAD_DEVICE_MODE_END_DEVICE;
947947
}
948+
949+
if (cur->thread_info->thread_device_mode == THREAD_DEVICE_MODE_ROUTER) {
950+
// set router neighbour cache
951+
ipv6_neighbour_cache_configure(THREAD_ROUTER_IPV6_NEIGHBOUR_CACHE_SIZE,
952+
THREAD_ROUTER_IPV6_NEIGHBOUR_CACHE_SHORT_TERM,
953+
THREAD_ROUTER_IPV6_NEIGHBOUR_CACHE_LONG_TERM,
954+
THREAD_ROUTER_IPV6_NEIGHBOUR_CACHE_LIFETIME);
955+
// set router destination cache
956+
ipv6_destination_cache_configure(THREAD_ROUTER_IPV6_DESTINATION_CACHE_SIZE,
957+
THREAD_ROUTER_IPV6_DESTINATION_CACHE_SHORT_TERM,
958+
THREAD_ROUTER_IPV6_DESTINATION_CACHE_LONG_TERM,
959+
THREAD_ROUTER_IPV6_DESTINATION_CACHE_LIFETIME);
960+
} else {
961+
// device is some sort of end device
962+
ipv6_neighbour_cache_configure(THREAD_END_DEVICE_IPV6_NEIGHBOUR_CACHE_SIZE,
963+
THREAD_END_DEVICE_IPV6_NEIGHBOUR_CACHE_SHORT_TERM,
964+
THREAD_END_DEVICE_IPV6_NEIGHBOUR_CACHE_LONG_TERM,
965+
THREAD_END_DEVICE_IPV6_NEIGHBOUR_CACHE_LIFETIME);
966+
967+
ipv6_destination_cache_configure(THREAD_END_DEVICE_IPV6_DESTINATION_CACHE_SIZE,
968+
THREAD_END_DEVICE_IPV6_DESTINATION_CACHE_SHORT_TERM,
969+
THREAD_END_DEVICE_IPV6_DESTINATION_CACHE_LONG_TERM,
970+
THREAD_END_DEVICE_IPV6_DESTINATION_CACHE_LIFETIME);
971+
}
972+
948973
cur->thread_info->thread_attached_state = THREAD_STATE_NETWORK_DISCOVER;
949974
}
950975

source/6LoWPAN/Thread/thread_config.h

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -326,11 +326,34 @@
326326
*/
327327
#define THREAD_BBR_ROUTER_ID_REQUEST_STATUS THREAD_COAP_STATUS_TLV_HAVE_CHILD_ID_REQUEST
328328

329-
/*
330-
* Number of destination and neighbor cache entries assuming 250 thread devices (worst case) connecting to cloud service.
329+
/* Border Router IPv6 neighbour and destination cache configuration
330+
* Number of neighbor cache entries assuming 250 thread devices (worst case) connecting to cloud service.
331331
* Six entries reserved for backbone devices.
332332
*/
333-
#define THREAD_BBR_IPV6_DESTINATION_CACHE_SIZE 256
333+
#define THREAD_BBR_IPV6_NEIGHBOUR_CACHE_SIZE 256
334+
#define THREAD_BBR_IPV6_NEIGHBOUR_CACHE_SHORT_TERM 128
335+
#define THREAD_BBR_IPV6_NEIGHBOUR_CACHE_LONG_TERM 32
336+
#define THREAD_BBR_IPV6_NEIGHBOUR_CACHE_LIFETIME 600
337+
338+
/* Router IPv6 neighbour and destination cache configuration */
339+
#define THREAD_ROUTER_IPV6_NEIGHBOUR_CACHE_SIZE 128
340+
#define THREAD_ROUTER_IPV6_NEIGHBOUR_CACHE_SHORT_TERM 64
341+
#define THREAD_ROUTER_IPV6_NEIGHBOUR_CACHE_LONG_TERM 8
342+
#define THREAD_ROUTER_IPV6_NEIGHBOUR_CACHE_LIFETIME 600
343+
#define THREAD_ROUTER_IPV6_DESTINATION_CACHE_SIZE 32
344+
#define THREAD_ROUTER_IPV6_DESTINATION_CACHE_SHORT_TERM 16
345+
#define THREAD_ROUTER_IPV6_DESTINATION_CACHE_LONG_TERM 4
346+
#define THREAD_ROUTER_IPV6_DESTINATION_CACHE_LIFETIME 600
347+
348+
/* End device IPv6 neighbour and destination cache configuration */
349+
#define THREAD_END_DEVICE_IPV6_NEIGHBOUR_CACHE_SIZE 32
350+
#define THREAD_END_DEVICE_IPV6_NEIGHBOUR_CACHE_SHORT_TERM 16
351+
#define THREAD_END_DEVICE_IPV6_NEIGHBOUR_CACHE_LONG_TERM 4
352+
#define THREAD_END_DEVICE_IPV6_NEIGHBOUR_CACHE_LIFETIME 600
353+
#define THREAD_END_DEVICE_IPV6_DESTINATION_CACHE_SIZE 16
354+
#define THREAD_END_DEVICE_IPV6_DESTINATION_CACHE_SHORT_TERM 8
355+
#define THREAD_END_DEVICE_IPV6_DESTINATION_CACHE_LONG_TERM 4
356+
#define THREAD_END_DEVICE_IPV6_DESTINATION_CACHE_LIFETIME 600
334357

335358
/*
336359
* Timeout to solicit address from DHCP if previous request fails.

0 commit comments

Comments
 (0)