mirror of https://github.com/PentHertz/srsLTE.git
eNB: retransmissions in Diversity mode
This commit is contained in:
parent
69682d488b
commit
42626a1120
|
@ -458,6 +458,7 @@ int sched_ue::generate_format2a(dl_harq_proc *h,
|
|||
uint32_t tti,
|
||||
uint32_t cfi)
|
||||
{
|
||||
bool tb_en[SRSLTE_MAX_TB] = {false};
|
||||
srslte_ra_dl_dci_t *dci = &data->dci;
|
||||
bzero(dci, sizeof(srslte_ra_dl_dci_t));
|
||||
|
||||
|
@ -473,22 +474,35 @@ int sched_ue::generate_format2a(dl_harq_proc *h,
|
|||
uint32_t nof_re = srslte_ra_dl_grant_nof_re(&grant, cell, sf_idx, nof_ctrl_symbols);
|
||||
uint32_t req_bytes = get_pending_dl_new_data(tti);
|
||||
|
||||
if (dl_ri == 0) {
|
||||
if (h->is_empty(1)) {
|
||||
/* One layer, tb1 buffer is empty, send tb0 only */
|
||||
tb_en[0] = true;
|
||||
} else {
|
||||
/* One layer, tb1 buffer is not empty, send tb1 only */
|
||||
tb_en[1] = true;
|
||||
}
|
||||
} else {
|
||||
/* Two layers, retransmit what TBs that have not been Acknowledged */
|
||||
bool no_retx = true;
|
||||
for (uint32_t tb = 0; tb < SRSLTE_MAX_TB; tb++) {
|
||||
if (!h->is_empty(tb)) {
|
||||
tb_en[tb] = true;
|
||||
no_retx = false;
|
||||
}
|
||||
}
|
||||
/* Two layers, no retransmissions... */
|
||||
if (no_retx) {
|
||||
tb_en[0] = true;
|
||||
tb_en[1] = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (uint32_t tb = 0; tb < SRSLTE_MAX_TB; tb++) {
|
||||
int mcs = 0;
|
||||
int tbs = 0;
|
||||
|
||||
/*
|
||||
* If one layer (RI = 0) Then
|
||||
* If TB1 has pending harq
|
||||
* Send TB1 only
|
||||
* Else
|
||||
* Send TB0 Only
|
||||
* End If
|
||||
* Else (RI != 0)
|
||||
* Send TB0 and TB1
|
||||
* End If
|
||||
*/
|
||||
if (dl_ri == 1 || (dl_ri == 0 && ((tb == 0 && h->is_empty(1)) || (tb == 1 && !h->is_empty(1))))) {
|
||||
if (tb_en[tb]) {
|
||||
if (h->is_empty(tb)) {
|
||||
if (fixed_mcs_dl < 0) {
|
||||
tbs = alloc_tbs_dl(nof_prb, nof_re, req_bytes, &mcs);
|
||||
|
|
Loading…
Reference in New Issue