diff --git a/srsgnb/src/stack/mac/sched_nr_signalling.cc b/srsgnb/src/stack/mac/sched_nr_signalling.cc index 5ca008215..2019f5a70 100644 --- a/srsgnb/src/stack/mac/sched_nr_signalling.cc +++ b/srsgnb/src/stack/mac/sched_nr_signalling.cc @@ -193,15 +193,10 @@ void si_sched::run_slot(bwp_slot_allocator& bwp_alloc) } // Attempt grants with increasing number of PRBs (if the number of PRBs is too low, the coderate is invalid) - si.result = alloc_result::invalid_coderate; - uint32_t prb_start_idx = 0; - for (uint32_t nprbs = 4; nprbs < bwp_cfg->cfg.rb_width and si.result == alloc_result::invalid_coderate; ++nprbs) { - prb_interval grant = find_empty_interval_of_length(prbs, nprbs, prb_start_idx); - prb_start_idx = grant.start(); - if (grant.length() != nprbs) { - si.result = alloc_result::no_sch_space; - break; - } + si.result = alloc_result::invalid_coderate; + uint32_t nprbs = 8; + prb_interval grant = find_empty_interval_of_length(prbs, nprbs, 0); + if (grant.length() >= nprbs) { si.result = bwp_alloc.alloc_si(si_aggr_level, si.n, si.n_tx, grant, *si.si_softbuffer.get()); if (si.result == alloc_result::success) { // SIB scheduled successfully @@ -214,6 +209,9 @@ void si_sched::run_slot(bwp_slot_allocator& bwp_alloc) } } } + if (si.result != alloc_result::success) { + logger.warning("SCHED: Failed to allocate SI%s%d ntx=%d", si.n == 0 ? "B" : " message idx=", si.n + 1, si.n_tx); + } } }