bugfix for DCCH2/SRB2 in eNB_scheduler_dlsch.c, demultiplexing SIMD alignment issue in ulsch_decoding.c, IF5 fronthaul modification in lte-enb.c
This commit is contained in:
@@ -1440,7 +1440,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
|
|||||||
|
|
||||||
j2+=Q_m;
|
j2+=Q_m;
|
||||||
}
|
}
|
||||||
|
/* To be improved according to alignment of j2
|
||||||
#if defined(__x86_64__)||defined(__i386__)
|
#if defined(__x86_64__)||defined(__i386__)
|
||||||
#ifndef __AVX2__
|
#ifndef __AVX2__
|
||||||
for (iprime=0; iprime<G;iprime+=8,j2+=8)
|
for (iprime=0; iprime<G;iprime+=8,j2+=8)
|
||||||
@@ -1452,9 +1452,24 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
|
|||||||
#elif defined(__arm__)
|
#elif defined(__arm__)
|
||||||
for (iprime=0; iprime<G;iprime+=8,j2+=8)
|
for (iprime=0; iprime<G;iprime+=8,j2+=8)
|
||||||
*((int16x8_t *)&ulsch_harq->e[iprime]) = *((int16x8_t *)&y[j2]);
|
*((int16x8_t *)&ulsch_harq->e[iprime]) = *((int16x8_t *)&y[j2]);
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
|
int16_t *yp,*ep;
|
||||||
|
for (iprime=0,yp=&y[j2],ep=&ulsch_harq->e[0];
|
||||||
|
iprime<G;
|
||||||
|
iprime+=8,j2+=8,ep+=8,yp+=8) {
|
||||||
|
ep[0] = yp[0];
|
||||||
|
ep[1] = yp[1];
|
||||||
|
ep[2] = yp[2];
|
||||||
|
ep[3] = yp[3];
|
||||||
|
ep[4] = yp[4];
|
||||||
|
ep[5] = yp[5];
|
||||||
|
ep[6] = yp[6];
|
||||||
|
ep[7] = yp[7];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
stop_meas(&eNB->ulsch_demultiplexing_stats);
|
stop_meas(&eNB->ulsch_demultiplexing_stats);
|
||||||
|
|
||||||
// printf("after ACKNAK2 c[%d] = %p (iprime %d, G %d)\n",0,ulsch_harq->c[0],iprime,G);
|
// printf("after ACKNAK2 c[%d] = %p (iprime %d, G %d)\n",0,ulsch_harq->c[0],iprime,G);
|
||||||
|
|||||||
@@ -814,15 +814,15 @@ schedule_ue_spec(
|
|||||||
if (rlc_status.bytes_in_buffer > 0) { // There is DCCH to transmit
|
if (rlc_status.bytes_in_buffer > 0) { // There is DCCH to transmit
|
||||||
LOG_D(MAC,"[eNB %d] Frame %d, DL-DCCH->DLSCH CC_id %d, Requesting %d bytes from RLC (RRC message)\n",
|
LOG_D(MAC,"[eNB %d] Frame %d, DL-DCCH->DLSCH CC_id %d, Requesting %d bytes from RLC (RRC message)\n",
|
||||||
module_idP,frameP,CC_id,TBS-header_len_dcch);
|
module_idP,frameP,CC_id,TBS-header_len_dcch);
|
||||||
sdu_lengths[0] += mac_rlc_data_req(
|
sdu_lengths[0] = mac_rlc_data_req(
|
||||||
module_idP,
|
module_idP,
|
||||||
rnti,
|
rnti,
|
||||||
module_idP,
|
module_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
DCCH,
|
DCCH,
|
||||||
(char *)&dlsch_buffer[sdu_lengths[0]]);
|
(char *)&dlsch_buffer[0]);
|
||||||
|
|
||||||
T(T_ENB_MAC_UE_DL_SDU, T_INT(module_idP), T_INT(CC_id), T_INT(rnti), T_INT(frameP), T_INT(subframeP),
|
T(T_ENB_MAC_UE_DL_SDU, T_INT(module_idP), T_INT(CC_id), T_INT(rnti), T_INT(frameP), T_INT(subframeP),
|
||||||
T_INT(harq_pid), T_INT(DCCH), T_INT(sdu_lengths[0]));
|
T_INT(harq_pid), T_INT(DCCH), T_INT(sdu_lengths[0]));
|
||||||
@@ -847,7 +847,7 @@ schedule_ue_spec(
|
|||||||
sdu_length_total = 0;
|
sdu_length_total = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for DCCH1 and update header information (assume 2 byte sub-header)
|
// check for DCCH1 and update header information (assume 2 byte sub-header)
|
||||||
if (TBS-ta_len-header_len_dcch-sdu_length_total > 0 ) {
|
if (TBS-ta_len-header_len_dcch-sdu_length_total > 0 ) {
|
||||||
rlc_status = mac_rlc_status_ind(
|
rlc_status = mac_rlc_status_ind(
|
||||||
@@ -860,9 +860,10 @@ schedule_ue_spec(
|
|||||||
DCCH+1,
|
DCCH+1,
|
||||||
(TBS-ta_len-header_len_dcch-sdu_length_total)); // transport block set size less allocations for timing advance and
|
(TBS-ta_len-header_len_dcch-sdu_length_total)); // transport block set size less allocations for timing advance and
|
||||||
// DCCH SDU
|
// DCCH SDU
|
||||||
|
sdu_lengths[num_sdus] = 0;
|
||||||
|
|
||||||
if (rlc_status.bytes_in_buffer > 0) {
|
if (rlc_status.bytes_in_buffer > 0) {
|
||||||
LOG_D(MAC,"[eNB %d], Frame %d, DCCH1->DLSCH, CC_id %d, Requesting %d bytes from RLC (RRC message)\n",
|
LOG_I(MAC,"[eNB %d], Frame %d, DCCH1->DLSCH, CC_id %d, Requesting %d bytes from RLC (RRC message)\n",
|
||||||
module_idP,frameP,CC_id,TBS-header_len_dcch-sdu_length_total);
|
module_idP,frameP,CC_id,TBS-header_len_dcch-sdu_length_total);
|
||||||
sdu_lengths[num_sdus] += mac_rlc_data_req(
|
sdu_lengths[num_sdus] += mac_rlc_data_req(
|
||||||
module_idP,
|
module_idP,
|
||||||
@@ -872,7 +873,7 @@ schedule_ue_spec(
|
|||||||
ENB_FLAG_YES,
|
ENB_FLAG_YES,
|
||||||
MBMS_FLAG_NO,
|
MBMS_FLAG_NO,
|
||||||
DCCH+1,
|
DCCH+1,
|
||||||
(char *)&dlsch_buffer[sdu_lengths[num_sdus]]);
|
(char *)&dlsch_buffer[sdu_length_total]);
|
||||||
|
|
||||||
T(T_ENB_MAC_UE_DL_SDU, T_INT(module_idP), T_INT(CC_id), T_INT(rnti), T_INT(frameP), T_INT(subframeP),
|
T(T_ENB_MAC_UE_DL_SDU, T_INT(module_idP), T_INT(CC_id), T_INT(rnti), T_INT(frameP), T_INT(subframeP),
|
||||||
T_INT(harq_pid), T_INT(DCCH+1), T_INT(sdu_lengths[num_sdus]));
|
T_INT(harq_pid), T_INT(DCCH+1), T_INT(sdu_lengths[num_sdus]));
|
||||||
|
|||||||
@@ -966,8 +966,8 @@ void rx_fh_if5(PHY_VARS_eNB *eNB,int *frame, int *subframe) {
|
|||||||
|
|
||||||
recv_IF5(eNB, &proc->timestamp_rx, *subframe, IF5_RRH_GW_UL);
|
recv_IF5(eNB, &proc->timestamp_rx, *subframe, IF5_RRH_GW_UL);
|
||||||
|
|
||||||
proc->frame_rx = (proc->timestamp_rx-eNB / (fp->samples_per_tti*10))&1023;
|
proc->frame_rx = (proc->timestamp_rx / (fp->samples_per_tti*10))&1023;
|
||||||
proc->subframe_rx = (proc->timestamp_rx-eNB / fp->samples_per_tti)%10;
|
proc->subframe_rx = (proc->timestamp_rx / fp->samples_per_tti)%10;
|
||||||
|
|
||||||
if (proc->first_rx == 0) {
|
if (proc->first_rx == 0) {
|
||||||
if (proc->subframe_rx != *subframe){
|
if (proc->subframe_rx != *subframe){
|
||||||
|
|||||||
Reference in New Issue
Block a user