Skip to content

Commit 110eb53

Browse files
fg-cfhnashif
authored andcommitted
net: l2: ieee802154: move vars to top of block
Found a few variable declarations that were not yet moved to the top of the function/block. Doing this before actually fixing #78490 so that the fix becomes more readable. Signed-off-by: Florian Grandel <fgrandel@code-for-humans.de> (cherry picked from commit 766fda0)
1 parent 3c3d2a2 commit 110eb53

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

subsys/net/l2/ieee802154/ieee802154_frame.c

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -461,16 +461,19 @@ void ieee802154_compute_header_and_authtag_len(struct net_if *iface, struct net_
461461
hdr_len += src->addr ? src->len : dst->len;
462462

463463
#ifdef CONFIG_NET_L2_IEEE802154_SECURITY
464+
struct ieee802154_security_ctx *sec_ctx;
465+
struct ieee802154_context *ctx;
466+
464467
if (broadcast) {
465468
NET_DBG("Broadcast packets are not being encrypted.");
466469
goto done;
467470
}
468471

469-
struct ieee802154_context *ctx = (struct ieee802154_context *)net_if_l2_data(iface);
472+
ctx = (struct ieee802154_context *)net_if_l2_data(iface);
470473

471474
k_sem_take(&ctx->ctx_lock, K_FOREVER);
472475

473-
struct ieee802154_security_ctx *sec_ctx = &ctx->sec_ctx;
476+
sec_ctx = &ctx->sec_ctx;
474477
if (sec_ctx->level == IEEE802154_SECURITY_LEVEL_NONE) {
475478
goto release;
476479
}
@@ -594,6 +597,7 @@ static uint8_t *generate_addressing_fields(struct ieee802154_context *ctx,
594597
struct ieee802154_frame_params *params, uint8_t *p_buf)
595598
{
596599
struct ieee802154_address_field *address_field;
600+
struct ieee802154_address *src_addr;
597601

598602
/* destination address */
599603
if (fs->fc.dst_addr_mode != IEEE802154_ADDR_MODE_NONE) {
@@ -619,7 +623,6 @@ static uint8_t *generate_addressing_fields(struct ieee802154_context *ctx,
619623
}
620624

621625
address_field = (struct ieee802154_address_field *)p_buf;
622-
struct ieee802154_address *src_addr;
623626

624627
if (fs->fc.pan_id_comp) {
625628
src_addr = &address_field->comp.addr;
@@ -691,12 +694,12 @@ bool ieee802154_create_data_frame(struct ieee802154_context *ctx, struct net_lin
691694
goto out;
692695
}
693696
} else {
697+
uint8_t ext_addr_le[IEEE802154_EXT_ADDR_LENGTH];
698+
694699
if (src->len != IEEE802154_EXT_ADDR_LENGTH) {
695700
goto out;
696701
}
697702

698-
uint8_t ext_addr_le[IEEE802154_EXT_ADDR_LENGTH];
699-
700703
sys_memcpy_swap(ext_addr_le, src->addr, IEEE802154_EXT_ADDR_LENGTH);
701704
if (memcmp(ctx->ext_addr, ext_addr_le, src->len)) {
702705
goto out;
@@ -708,6 +711,8 @@ bool ieee802154_create_data_frame(struct ieee802154_context *ctx, struct net_lin
708711
p_buf = generate_addressing_fields(ctx, fs, &params, p_buf);
709712

710713
#ifdef CONFIG_NET_L2_IEEE802154_SECURITY
714+
uint8_t level, authtag_len, payload_len;
715+
711716
if (broadcast) {
712717
/* TODO: This may not always be correct. */
713718
NET_DBG("No security hdr needed: broadcasting");
@@ -727,16 +732,14 @@ bool ieee802154_create_data_frame(struct ieee802154_context *ctx, struct net_lin
727732
goto out;
728733
}
729734

730-
uint8_t level = ctx->sec_ctx.level;
731-
735+
level = ctx->sec_ctx.level;
732736
if (level >= IEEE802154_SECURITY_LEVEL_ENC) {
733737
level -= 4U;
734738
}
735739

736-
uint8_t authtag_len = level_2_authtag_len[level];
737-
uint8_t payload_len = buf->len - ll_hdr_len - authtag_len;
738-
739740
/* Let's encrypt/auth only in the end, if needed */
741+
authtag_len = level_2_authtag_len[level];
742+
payload_len = buf->len - ll_hdr_len - authtag_len;
740743
if (!ieee802154_encrypt_auth(&ctx->sec_ctx, buf_start, ll_hdr_len,
741744
payload_len, authtag_len, ctx->ext_addr)) {
742745
goto out;
@@ -930,36 +933,38 @@ bool ieee802154_decipher_data_frame(struct net_if *iface, struct net_pkt *pkt,
930933
struct ieee802154_mpdu *mpdu)
931934
{
932935
struct ieee802154_context *ctx = net_if_l2_data(iface);
936+
uint8_t level, authtag_len, ll_hdr_len, payload_len;
937+
int8_t ext_addr_le[IEEE802154_EXT_ADDR_LENGTH];
938+
struct ieee802154_mhr *mhr = &mpdu->mhr;
933939
bool ret = false;
934940

935941
k_sem_take(&ctx->ctx_lock, K_FOREVER);
936942

937-
uint8_t level = ctx->sec_ctx.level;
938-
939-
if (!mpdu->mhr.fs->fc.security_enabled) {
943+
if (!mhr->fs->fc.security_enabled) {
940944
ret = true;
941945
goto out;
942946
}
943947

948+
level = ctx->sec_ctx.level;
949+
944950
/* Section 9.2.4: Incoming frame security procedure, Security Enabled field is set to one
945951
*
946952
* [...]
947953
*
948954
* a) Legacy security. If the Frame Version field of the frame to be unsecured is set to
949955
* zero, the procedure shall return with a Status of UNSUPPORTED_LEGACY.
950956
*/
951-
if (mpdu->mhr.aux_sec->control.security_level != level) {
957+
if (mhr->aux_sec->control.security_level != level) {
952958
goto out;
953959
}
954960

955961
if (level >= IEEE802154_SECURITY_LEVEL_ENC) {
956962
level -= 4U;
957963
}
958964

959-
uint8_t authtag_len = level_2_authtag_len[level];
960-
uint8_t ll_hdr_len = (uint8_t *)mpdu->payload - net_pkt_data(pkt);
961-
uint8_t payload_len = net_pkt_get_len(pkt) - ll_hdr_len - authtag_len;
962-
uint8_t ext_addr_le[IEEE802154_EXT_ADDR_LENGTH];
965+
authtag_len = level_2_authtag_len[level];
966+
ll_hdr_len = (uint8_t *)mpdu->payload - net_pkt_data(pkt);
967+
payload_len = net_pkt_get_len(pkt) - ll_hdr_len - authtag_len;
963968

964969
/* TODO: Handle src short address.
965970
* This will require to look up in nbr cache with short addr
@@ -973,7 +978,7 @@ bool ieee802154_decipher_data_frame(struct net_if *iface, struct net_pkt *pkt,
973978
sys_memcpy_swap(ext_addr_le, net_pkt_lladdr_src(pkt)->addr, net_pkt_lladdr_src(pkt)->len);
974979
if (!ieee802154_decrypt_auth(&ctx->sec_ctx, net_pkt_data(pkt), ll_hdr_len, payload_len,
975980
authtag_len, ext_addr_le,
976-
sys_le32_to_cpu(mpdu->mhr.aux_sec->frame_counter))) {
981+
sys_le32_to_cpu(mhr->aux_sec->frame_counter))) {
977982
NET_ERR("Could not decipher the frame");
978983
goto out;
979984
}

0 commit comments

Comments
 (0)