|
|
@ -253,14 +253,14 @@ private:
|
|
|
|
n_retx = 0;
|
|
|
|
n_retx = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Save grant
|
|
|
|
|
|
|
|
grant.last_ndi[tid] = cur_grant.ndi[tid];
|
|
|
|
|
|
|
|
grant.last_tti = cur_grant.tti;
|
|
|
|
|
|
|
|
memcpy(&cur_grant, &grant, sizeof(Tgrant));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// If data has not yet been successfully decoded
|
|
|
|
// If data has not yet been successfully decoded
|
|
|
|
if (!ack) {
|
|
|
|
if (!ack) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Save grant
|
|
|
|
|
|
|
|
grant.last_ndi[tid] = cur_grant.ndi[tid];
|
|
|
|
|
|
|
|
grant.last_tti = cur_grant.tti;
|
|
|
|
|
|
|
|
memcpy(&cur_grant, &grant, sizeof(Tgrant));
|
|
|
|
|
|
|
|
|
|
|
|
// Instruct the PHY To combine the received data and attempt to decode it
|
|
|
|
// Instruct the PHY To combine the received data and attempt to decode it
|
|
|
|
if (pid == HARQ_BCCH_PID) {
|
|
|
|
if (pid == HARQ_BCCH_PID) {
|
|
|
|
payload_buffer_ptr = harq_entity->demux_unit->request_buffer_bcch(cur_grant.n_bytes[tid]);
|
|
|
|
payload_buffer_ptr = harq_entity->demux_unit->request_buffer_bcch(cur_grant.n_bytes[tid]);
|
|
|
@ -281,7 +281,8 @@ private:
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
action->default_ack[tid] = true;
|
|
|
|
action->default_ack[tid] = true;
|
|
|
|
Warning("DL PID %d: Received duplicate TB. Discarting and retransmitting ACK\n", pid);
|
|
|
|
Warning("DL PID %d: Received duplicate TB. Discarting and retransmitting ACK (grant_tti=%d, ndi=%d, sz=%d)\n",
|
|
|
|
|
|
|
|
pid, cur_grant.tti, cur_grant.ndi[tid], cur_grant.n_bytes[tid]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pid == HARQ_BCCH_PID || harq_entity->timer_aligment_timer->is_expired()) {
|
|
|
|
if (pid == HARQ_BCCH_PID || harq_entity->timer_aligment_timer->is_expired()) {
|
|
|
|