From 5e6d9dbbc6d36f62b0a64073fb24b9d773be4884 Mon Sep 17 00:00:00 2001 From: francescomani Date: Tue, 2 Dec 2025 09:40:20 +0100 Subject: [PATCH] fix for SSB larger than 7 at UE --- openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c | 5 +---- openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index 3ba221386f..b94a8758c8 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -195,10 +195,7 @@ void nr_ue_decode_mib(NR_UE_MAC_INST_t *mac, int cc_id) frame = frame << 4; mac->mib_frame = frame | frame_number_4lsb; - if (mac->frequency_range == FR2) { - for (int i = 0; i < 3; i++) - mac->mib_ssb += (((extra_bits >> (7 - i)) & 0x01) << (3 + i)); - } else{ + if (mac->frequency_range == FR1) { if(ssb_subcarrier_offset_msb) ssb_subcarrier_offset = ssb_subcarrier_offset | 0x10; } diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 09f3218f1e..42030133af 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -108,18 +108,23 @@ static int handle_bcch_bch(NR_UE_MAC_INST_t *mac, void *phy_data, uint8_t *pduP, unsigned int additional_bits, - uint32_t ssb_index, + uint32_t ssb_index_mod8, uint32_t ssb_length, uint16_t ssb_start_subcarrier, long ssb_arfcn, uint16_t cell_id) { - mac->mib_ssb = ssb_index; + mac->mib_ssb = ssb_index_mod8; mac->physCellId = cell_id; mac->mib_additional_bits = additional_bits; mac->ssb_start_subcarrier = ssb_start_subcarrier; - if(ssb_length == 64) + if(ssb_length == 64) { mac->frequency_range = FR2; + uint8_t ab = additional_bits & 0xff; + uint8_t out; + reverse_bits_u8(&ab, 1, &out); + mac->mib_ssb += (out & 0x7) << 3; + } else mac->frequency_range = FR1; // fixed 3 bytes MIB PDU