From 1393bd11fa701a0e05e55bb31185d8a91741dee0 Mon Sep 17 00:00:00 2001 From: Francisco Paisana Date: Tue, 9 Jun 2020 16:38:59 +0100 Subject: [PATCH] avoid using PUCCH for SCell DL allocations --- srsenb/src/stack/mac/scheduler_grid.cc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/srsenb/src/stack/mac/scheduler_grid.cc b/srsenb/src/stack/mac/scheduler_grid.cc index 4a45b0992..1d7123105 100644 --- a/srsenb/src/stack/mac/scheduler_grid.cc +++ b/srsenb/src/stack/mac/scheduler_grid.cc @@ -758,19 +758,23 @@ alloc_outcome_t sf_sched::alloc_dl_user(sched_ue* user, const rbgmask_t& user_ma const srslte_cqi_report_cfg_t& cqi_report = ue_cfg.dl_cfg.cqi_report; if (has_scells and srslte_cqi_periodic_send(&cqi_report, get_tti_tx_ul(), SRSLTE_FDD)) { bool has_pusch_grant = is_ul_alloc(user) or cc_results->is_ul_alloc(user->get_rnti()); - bool has_dl_allocs = cc_results->is_dl_alloc(user->get_rnti()); - if (not has_pusch_grant and has_dl_allocs) { - // Try to allocate small PUSCH grant, if there are no pending UL retxs - ul_harq_proc* hul = user->get_ul_harq(get_tti_tx_ul(), ue_cc_idx); - bool has_retx = hul->has_pending_retx(); + if (not has_pusch_grant) { + // Try to allocate small PUSCH grant, if there are no pending UL retxs for this TTI + alloc_outcome_t pusch_alloc_outcome = alloc_outcome_t::PUCCH_COLLISION; + ul_harq_proc* hul = user->get_ul_harq(get_tti_tx_ul(), ue_cc_idx); + bool has_retx = hul->has_pending_retx(); if (not has_retx) { ul_harq_proc::ul_alloc_t alloc = {}; uint32_t L = user->get_required_prb_ul(ue_cc_idx, srslte::ceil_div(SRSLTE_UCI_CQI_CODED_PUCCH_B + 2, 8)); tti_alloc.find_ul_alloc(L, &alloc); - if (alloc.L == 0 or not alloc_ul_user(user, alloc)) { - return alloc_outcome_t::PUCCH_COLLISION; + if (alloc.L > 0 and alloc_ul_user(user, alloc)) { + pusch_alloc_outcome = alloc_outcome_t::SUCCESS; } } + // For SCells, if we can't allocate small PUSCH grant, abort DL allocation + if (ue_cc_idx != 0 and pusch_alloc_outcome != alloc_outcome_t::SUCCESS) { + return pusch_alloc_outcome; + } } }