From 48086040b75d2d652f18e61993456395a74784b7 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Sat, 9 May 2020 15:18:11 -0700 Subject: [PATCH] [mesh-forwarder] allow last 6LoWPAN fragment to use longer length (#4945) This commit relaxes the length check for the last 6LoWPAN fragment of a message. The length of a 6LoWPAN fragment is truncated to be a multiple of eight bytes (since fragment offset can be only expressed as multiples of eight). However this requirement does not apply to the last fragment. This change helps avoid an unnecessary extra fragment for messages of certain length. --- src/core/thread/mesh_forwarder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index ee749fe92..9574bbd54 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -770,11 +770,11 @@ start: payload += fragmentHeaderLength; headerLength += fragmentHeaderLength; - fragmentLength = (aFrame.GetMaxPayloadLength() - headerLength) & ~0x7; + fragmentLength = aFrame.GetMaxPayloadLength() - headerLength; if (payloadLength > fragmentLength) { - payloadLength = fragmentLength; + payloadLength = (fragmentLength & ~0x7); } // Copy IPv6 Payload