[mac] always set Key Identifier for Transmit Security (#6678)

For multi-layer application, the radio requires from the upper layer
to provide information for security processing like Key Identifier,
in the Auxiliary Security Header according to IEEE802.15.4-2015.

This change matters for handling security processing by radio only.
This commit is contained in:
Łukasz Maciejończyk
2021-05-26 14:03:48 -07:00
committed by GitHub
parent a2247da59d
commit b3b50f6da8
+7 -2
View File
@@ -328,10 +328,16 @@ void SubMac::ProcessTransmitSecurity(void)
const ExtAddress *extAddress = nullptr;
uint8_t keyIdMode;
VerifyOrExit(ShouldHandleTransmitSecurity());
VerifyOrExit(mTransmitFrame.GetSecurityEnabled());
VerifyOrExit(!mTransmitFrame.IsSecurityProcessed());
if (!mTransmitFrame.IsARetransmission())
{
mTransmitFrame.SetKeyId(mKeyId);
}
VerifyOrExit(ShouldHandleTransmitSecurity());
SuccessOrExit(mTransmitFrame.GetKeyIdMode(keyIdMode));
VerifyOrExit(keyIdMode == Frame::kKeyIdMode1);
@@ -341,7 +347,6 @@ void SubMac::ProcessTransmitSecurity(void)
{
uint32_t frameCounter = GetFrameCounter();
mTransmitFrame.SetKeyId(mKeyId);
mTransmitFrame.SetFrameCounter(frameCounter);
UpdateFrameCounter(frameCounter + 1);
}