Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
oai
openairinterface5G
Commits
0fccd994
Commit
0fccd994
authored
Sep 19, 2017
by
knopp
Browse files
patch for open-nfapi
parent
0b5be18c
Changes
21
Hide whitespace changes
Inline
Side-by-side
open-nfapi.oai.patch
0 → 100644
View file @
0fccd994
diff --git a/nfapi/public_inc/nfapi_interface.h b/nfapi/public_inc/nfapi_interface.h
index 2d58c2a..45af99a 100644
--- a/nfapi/public_inc/nfapi_interface.h
+++ b/nfapi/public_inc/nfapi_interface.h
@@ -34,7 +34,7 @@
#define NFAPI_MAX_NUM_ANTENNAS 8
#define NFAPI_MAX_NUM_SUBBANDS 13
#define NFAPI_MAX_BF_VECTORS 8
-#define NFAPI_MAX_CC 1
+#define NFAPI_MAX_CC 2
#define NFAPI_MAX_NUM_PHYSICAL_ANTENNAS 8
#define NFAPI_MAX_RSSI 8
#define NFAPI_MAX_PSC_LIST 32
@@ -1689,7 +1689,7 @@
typedef struct {
uint16_t number_pdu;
uint8_t number_pdsch_rnti;
uint16_t transmission_power_pcfich;
- nfapi_dl_config_request_pdu_t* dl_config_pdu_list;
+ nfapi_dl_config_request_pdu_t* dl_config_pdu_list;
} nfapi_dl_config_request_body_t;
#define NFAPI_DL_CONFIG_REQUEST_BODY_TAG 0x2000
@@ -1772,7 +1772,7 @@
typedef struct {
uint8_t number_of_cc;
struct {
uint8_t ri_size;
- uint8_t dl_cqi_pmi_size;
+ uint8_t dl_cqi_pmi_size[8];
} cc[NFAPI_MAX_CC];
} nfapi_ul_config_aperiodic_cqi_pmi_ri_report_t;
@@ -1962,7 +1962,7 @@
typedef struct {
} nfapi_ul_config_harq_information_rel8_fdd_t;
#define NFAPI_UL_CONFIG_REQUEST_HARQ_INFORMATION_REL8_FDD_TAG 0x2019
-typedef struct {
+typedef struct {
nfapi_tl_t tl;
uint8_t harq_size;
uint8_t ack_nack_mode;
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
0fccd994
...
...
@@ -2130,11 +2130,11 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
if
(
dci_alloc
[
i
].
L
==
(
uint8_t
)
L
)
{
//
#ifdef DEBUG_DCI_ENCODING
#ifdef DEBUG_DCI_ENCODING
LOG_I
(
PHY
,
"Generating DCI %d/%d (nCCE %d) of length %d, aggregation %d (%x)
\n
"
,
i
,
num_dci
,
dci_alloc
[
i
].
firstCCE
,
dci_alloc
[
i
].
dci_length
,
dci_alloc
[
i
].
L
,
*
(
unsigned
int
*
)
dci_alloc
[
i
].
dci_pdu
);
dump_dci
(
frame_parms
,
&
dci_alloc
[
i
]);
//
#endif
#endif
if
(
dci_alloc
[
i
].
firstCCE
>=
0
)
{
e_ptr
=
generate_dci0
(
dci_alloc
[
i
].
dci_pdu
,
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
0fccd994
...
...
@@ -882,7 +882,7 @@ int fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_
dci_alloc->ra_flag = 0;
LOG_
I
(
PHY
,
"NFAPI: DCI format %d, nCCE %d, L %d, rnti %x,harq_pid %d
\n
"
,
LOG_
D
(PHY,"NFAPI: DCI format %d, nCCE %d, L %d, rnti %x,harq_pid %d\n",
rel8->dci_format,rel8->cce_idx,rel8->aggregation_level,rel8->rnti,rel8->harq_process);
if ((rel8->rnti_type == 2 ) && (rel8->rnti != SI_RNTI) && (rel8->rnti != P_RNTI)) dci_alloc->ra_flag = 1;
...
...
@@ -1071,7 +1071,7 @@ int fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_
dlsch0->active = 1;
dlsch0->harq_mask |= (1<<rel8->harq_process);
LOG_
I
(
PHY
,
"Frame %d, Subframe %d: Programming DLSCH for Format 1 DCI, harq_pid %d
\n
"
,
proc
->
frame_tx
,
subframe
,
rel8
->
harq_process
);
LOG_
D
(PHY,"Frame %d, Subframe %d: Programming DLSCH for Format 1 DCI, harq_pid %d\n",proc->frame_tx,subframe,rel8->harq_process);
switch (fp->N_RB_DL) {
case 6:
...
...
@@ -1224,7 +1224,7 @@ int fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_
}
LOG_
I
(
PHY
,
"DCI: Set harq_ids[%d] to %d (%p)
\n
"
,
subframe
,
rel8
->
harq_process
,
dlsch0
);
LOG_
D
(PHY,"DCI: Set harq_ids[%d] to %d (%p)\n",subframe,rel8->harq_process,dlsch0);
dlsch0->harq_ids[subframe] = rel8->harq_process;
...
...
@@ -2256,6 +2256,8 @@ void fill_dci0(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_alloc,
void *dci_pdu = (void*)dci_alloc->dci_pdu;
LOG_I(PHY,"Filling DCI0 with cqi %d\n",cqi_req);
dci_alloc->format = format0;
dci_alloc->firstCCE = pdu->dci_pdu_rel8.cce_index;
dci_alloc->L = pdu->dci_pdu_rel8.aggregation_level;
...
...
@@ -2427,7 +2429,7 @@ void fill_ulsch(PHY_VARS_eNB *eNB,nfapi_ul_config_ulsch_pdu *ulsch_pdu,int frame
ulsch->harq_processes[harq_pid]->n_DMRS2 = 9;
LOG_
I
(
PHY
,
"[eNB %d][PUSCH %d] Programming PUSCH with n_DMRS2 %d (cshift %d) for Frame %d, Subframe %d
\n
"
,
LOG_
D
(PHY,"[eNB %d][PUSCH %d] Programming PUSCH with n_DMRS2 %d (cshift %d) for Frame %d, Subframe %d\n",
eNB->Mod_id,harq_pid,ulsch->harq_processes[harq_pid]->n_DMRS2,ulsch->harq_processes[harq_pid]->n_DMRS,
frame,subframe);
...
...
@@ -2436,16 +2438,22 @@ void fill_ulsch(PHY_VARS_eNB *eNB,nfapi_ul_config_ulsch_pdu *ulsch_pdu,int frame
ulsch->harq_processes[harq_pid]->Qm = ulsch_pdu->ulsch_pdu_rel8.modulation_type;
if
(
ulsch
->
harq_processes
[
harq_pid
]
->
round
==
0
)
{
if ((ulsch->harq_processes[harq_pid]->status == SCH_IDLE) ||
(ulsch->harq_processes[harq_pid]->ndi != ulsch_pdu->ulsch_pdu_rel8.new_data_indication)){
ulsch->harq_processes[harq_pid]->status = ACTIVE;
ulsch->harq_processes[harq_pid]->TBS = ulsch_pdu->ulsch_pdu_rel8.size<<3;
ulsch->harq_processes[harq_pid]->Msc_initial = ulsch_pdu->ulsch_pdu_rel8.number_of_resource_blocks;
ulsch->harq_processes[harq_pid]->Nsymb_initial = ulsch->harq_processes[harq_pid]->Nsymb_pusch;
ulsch
->
harq_processes
[
harq_pid
]
->
round
=
0
;
ulsch->harq_processes[harq_pid]->round = 0;
ulsch->harq_processes[harq_pid]->ndi = ulsch_pdu->ulsch_pdu_rel8.new_data_indication;
ulsch->harq_processes[harq_pid]->Or1 = 0;
ulsch->harq_processes[harq_pid]->Or2 = 0;
ulsch->harq_processes[harq_pid]->O_ACK = 0;
}
else ulsch->harq_processes[harq_pid]->round++;
ulsch->rnti = ulsch_pdu->ulsch_pdu_rel8.rnti;
LOG_I(PHY,"Filling ULSCH %x for Frame %d, Subframe %d : harq_pid %d, first_rb %d, nb_rb %d, rvidx %d, Qm %d, TBS %d, round %d \n",
ulsch->rnti,
...
...
@@ -4740,14 +4748,14 @@ int dump_dci(LTE_DL_FRAME_PARMS *frame_parms, DCI_ALLOC_t *dci)
break;
case 50:
LOG_
I
(
PHY
,
"DCI format1A(FDD, 10MHz), rnti %x (%x)
\n
"
,
dci
->
rnti
,((
uint32_t
*
)
&
dci
->
dci_pdu
[
0
])[
0
]);
LOG_
I
(
PHY
,
"VRB_TYPE %d
\n
"
,((
DCI1A_10MHz_FDD_t
*
)
&
dci
->
dci_pdu
[
0
])
->
vrb_type
);
LOG_
I
(
PHY
,
"RB_ALLOC %x (NB_RB %d)
\n
"
,((
DCI1A_10MHz_FDD_t
*
)
&
dci
->
dci_pdu
[
0
])
->
rballoc
,
RIV2nb_rb_LUT50
[((
DCI1A_10MHz_FDD_t
*
)
&
dci
->
dci_pdu
[
0
])
->
rballoc
]);
LOG_
I
(
PHY
,
"MCS %d
\n
"
,((
DCI1A_10MHz_FDD_t
*
)
&
dci
->
dci_pdu
[
0
])
->
mcs
);
LOG_
I
(
PHY
,
"HARQ_PID %d
\n
"
,((
DCI1A_10MHz_FDD_t
*
)
&
dci
->
dci_pdu
[
0
])
->
harq_pid
);
LOG_
I
(
PHY
,
"NDI %d
\n
"
,((
DCI1A_10MHz_FDD_t
*
)
&
dci
->
dci_pdu
[
0
])
->
ndi
);
LOG_
I
(
PHY
,
"RV %d
\n
"
,((
DCI1A_10MHz_FDD_t
*
)
&
dci
->
dci_pdu
[
0
])
->
rv
);
LOG_
I
(
PHY
,
"TPC %d
\n
"
,((
DCI1A_10MHz_FDD_t
*
)
&
dci
->
dci_pdu
[
0
])
->
TPC
);
LOG_
D
(PHY,"DCI format1A(FDD, 10MHz), rnti %x (%x)\n",dci->rnti,((uint32_t*)&dci->dci_pdu[0])[0]);
LOG_
D
(PHY,"VRB_TYPE %d\n",((DCI1A_10MHz_FDD_t *)&dci->dci_pdu[0])->vrb_type);
LOG_
D
(PHY,"RB_ALLOC %x (NB_RB %d)\n",((DCI1A_10MHz_FDD_t *)&dci->dci_pdu[0])->rballoc,RIV2nb_rb_LUT50[((DCI1A_10MHz_FDD_t *)&dci->dci_pdu[0])->rballoc]);
LOG_
D
(PHY,"MCS %d\n",((DCI1A_10MHz_FDD_t *)&dci->dci_pdu[0])->mcs);
LOG_
D
(PHY,"HARQ_PID %d\n",((DCI1A_10MHz_FDD_t *)&dci->dci_pdu[0])->harq_pid);
LOG_
D
(PHY,"NDI %d\n",((DCI1A_10MHz_FDD_t *)&dci->dci_pdu[0])->ndi);
LOG_
D
(PHY,"RV %d\n",((DCI1A_10MHz_FDD_t *)&dci->dci_pdu[0])->rv);
LOG_
D
(PHY,"TPC %d\n",((DCI1A_10MHz_FDD_t *)&dci->dci_pdu[0])->TPC);
break;
case 100:
...
...
@@ -9761,7 +9769,7 @@ int generate_eNB_ulsch_params_from_dci(PHY_VARS_eNB *eNB,
// hopping = ((DCI0_1_5MHz_FDD_t *)dci_pdu)->hopping;
// type = ((DCI0_1_5MHz_FDD_t *)dci_pdu)->type;
}
RIV_max = RIV_max6;
ulsch->harq_processes[harq_pid]->first_rb = RIV2first_rb_LUT6[rballoc];
ulsch->harq_processes[harq_pid]->nb_rb = RIV2nb_rb_LUT6[rballoc];
...
...
@@ -9853,6 +9861,7 @@ int generate_eNB_ulsch_params_from_dci(PHY_VARS_eNB *eNB,
break;
}
rb_alloc = rballoc;
AssertFatal(rb_alloc>RIV_max,
"Format 0: rb_alloc (%d) > RIV_max (%d)\n",rb_alloc,RIV_max);
...
...
openair1/PHY/LTE_TRANSPORT/defs.h
View file @
0fccd994
...
...
@@ -96,7 +96,7 @@ typedef enum { SEARCH_EXIST=0,
SEARCH_EXIST_OR_FREE
}
find_type_t
;
typedef
enum
{
SCH_IDLE
,
SCH_IDLE
=
0
,
ACTIVE
,
CBA_ACTIVE
,
DISABLED
...
...
@@ -464,6 +464,8 @@ typedef struct {
uint8_t
Nsymb_pusch
;
/// SRS active flag
uint8_t
srs_active
;
/// NDI
uint8_t
ndi
;
/// Index of current HARQ round for this ULSCH
uint8_t
round
;
/// Redundancy-version of the current sub-frame
...
...
openair1/PHY/LTE_TRANSPORT/if4_tools.c
View file @
0fccd994
...
...
@@ -353,7 +353,7 @@ void recv_IF4p5(RU_t *ru, int *frame, int *subframe, uint16_t *packet_type, uint
PRACH_BLOCK_SIZE_BYTES);
}
LOG_
I
(PHY,"PRACH_IF4p5: CC_id %d : frame %d, subframe %d => %d dB\n",ru->idx,*frame,*subframe,
LOG_
D
(PHY,"PRACH_IF4p5: CC_id %d : frame %d, subframe %d => %d dB\n",ru->idx,*frame,*subframe,
dB_fixed(signal_energy(&prach_rxsigF[0][0],839)));
for (idx=0;idx<ru->num_eNB;idx++) ru->wakeup_prach_eNB(ru->eNB_list[idx],ru,*frame,*subframe);
...
...
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
0fccd994
...
...
@@ -1379,7 +1379,7 @@ void rx_phich(PHY_VARS_UE *ue,
if
(
HI16
>
0
)
{
//NACK
if
(
ue
->
ulsch_Msg3_active
[
eNB_id
]
==
1
)
{
LOG_
D
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received NAK (%d) nseq %d, ngroup %d
\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received NAK (%d) nseq %d, ngroup %d
\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
,
...
...
@@ -1400,7 +1400,7 @@ void rx_phich(PHY_VARS_UE *ue,
}
}
else
{
//#ifdef DEBUG_PHICH
LOG_
D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received NAK (%d) nseq %d, ngroup %d round %d (Mlimit %d)
\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received NAK (%d) nseq %d, ngroup %d round %d (Mlimit %d)
\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
%
1024
,
subframe
,
...
...
@@ -1448,7 +1448,7 @@ void rx_phich(PHY_VARS_UE *ue,
}
else
{
//ACK
if
(
ue
->
ulsch_Msg3_active
[
eNB_id
]
==
1
)
{
LOG_
D
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
,
...
...
@@ -1456,7 +1456,7 @@ void rx_phich(PHY_VARS_UE *ue,
nseq_PHICH
,
ngroup_PHICH
);
}
else
{
//#ifdef PHICH_DEBUG
LOG_
D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
%
1024
,
subframe
,
HI16
,
...
...
openair1/PHY/LTE_TRANSPORT/prach.c
View file @
0fccd994
...
...
@@ -1687,7 +1687,7 @@ void rx_prach0(PHY_VARS_eNB *eNB,
*
max_preamble_delay
=
((
i
*
fft_size
)
>>
log2_ifft_size
)
*
update_TA
/
update_TA2
;
*
max_preamble
=
preamble_index
;
//#ifdef PRACH_DEBUG
if
((
en
>
60
)
&&
(
br_flag
==
1
))
LOG_
I
(
PHY
,
"frame %d, subframe %d : max_preamble_energy %d, max_preamble_delay %d, max_preamble %d (br_flag %d,ce_level %d, levdB %d, lev %d)
\n
"
,
frame
,
subframe
,
*
max_preamble_energy
,
*
max_preamble_delay
,
*
max_preamble
,
br_flag
,
ce_level
,
levdB
,
lev
);
if
((
en
>
60
)
&&
(
br_flag
==
1
))
LOG_
D
(
PHY
,
"frame %d, subframe %d : max_preamble_energy %d, max_preamble_delay %d, max_preamble %d (br_flag %d,ce_level %d, levdB %d, lev %d)
\n
"
,
frame
,
subframe
,
*
max_preamble_energy
,
*
max_preamble_delay
,
*
max_preamble
,
br_flag
,
ce_level
,
levdB
,
lev
);
//#endif
}
}
...
...
openair1/PHY/LTE_TRANSPORT/pucch.c
View file @
0fccd994
...
...
@@ -2397,7 +2397,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
T
(
T_ENB_PHY_PUCCH_1AB_IQ
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
UE_id
),
T_INT
(
-
1
),
T_INT
(
subframe
),
T_INT
(
stat_re
),
T_INT
(
stat_im
));
*
payload
=
(
stat_re
<
0
)
?
1
:
0
;
*
payload
=
(
stat_re
<
0
)
?
1
:
2
;
// 1 == ACK, 2 == NAK
if
(
fmt
==
pucch_format1b
)
*
(
1
+
payload
)
=
(
stat_im
<
0
)
?
1
:
0
;
...
...
openair1/PHY/LTE_TRANSPORT/rar_tools.c
View file @
0fccd994
...
...
@@ -269,7 +269,7 @@ int generate_ue_ulsch_params_from_rar(PHY_VARS_UE *ue,
ulsch
->
power_offset
=
ue_power_offsets
[
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
];
AssertFatal
(
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
>
6
,
"unlikely rb count for RAR grant : nb_rb > 6
\n
"
);
AssertFatal
(
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
<=
6
,
"unlikely rb count for RAR grant : nb_rb > 6
\n
"
);
// ulsch->harq_processes[harq_pid]->Ndi = 1;
if
(
ulsch
->
harq_processes
[
harq_pid
]
->
round
==
0
)
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
View file @
0fccd994
...
...
@@ -911,16 +911,19 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
G
=
nb_rb
*
(
12
*
Q_m
)
*
ulsch_harq
->
Nsymb_pusch
;
#ifdef DEBUG_ULSCH_DECODING
printf
(
"ulsch_decoding (Nid_cell %d, rnti %x, x2 %x): round %d, RV %d, O_RI %d, O_ACK %d, G %d, subframe %d
\n
"
,
frame_parms
->
Nid_cell
,
ulsch
->
rnti
,
x2
,
ulsch_harq
->
round
,
ulsch_harq
->
rvidx
,
ulsch_harq
->
O_RI
,
ulsch_harq
->
O_ACK
,
G
,
subframe
);
#endif
//#ifdef DEBUG_ULSCH_DECODING
LOG_I
(
PHY
,
"Frame %d, Subframe %d: ulsch_decoding (Nid_cell %d, rnti %x, x2 %x): A %d, round %d, RV %d, O_r1 %d, O_RI %d, O_ACK %d, G %d
\n
"
,
proc
->
frame_rx
,
subframe
,
frame_parms
->
Nid_cell
,
ulsch
->
rnti
,
x2
,
A
,
ulsch_harq
->
round
,
ulsch_harq
->
rvidx
,
ulsch_harq
->
Or1
,
ulsch_harq
->
O_RI
,
ulsch_harq
->
O_ACK
,
G
);
//#endif
if
(
ulsch_harq
->
round
==
0
)
{
// This is a new packet, so compute quantities regarding segmentation
...
...
openair1/SCHED/fapi_l1.c
View file @
0fccd994
...
...
@@ -163,7 +163,7 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
dlsch0_harq
->
pdsch_start
=
eNB
->
pdcch_vars
[
proc
->
subframe_tx
&
1
].
num_pdcch_symbols
;
if
(
dlsch0_harq
->
round
==
0
)
{
//get pointer to SDU if this a new SDU
LOG_
I
(
PHY
,
"NFAPI: frame %d, subframe %d: programming dlsch, rnti %x, UE_id %d, harq_pid %d
\n
"
,
LOG_
D
(
PHY
,
"NFAPI: frame %d, subframe %d: programming dlsch, rnti %x, UE_id %d, harq_pid %d
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
rel8
->
rnti
,
UE_id
,
harq_pid
);
if
(
codeword_index
==
0
)
dlsch0_harq
->
pdu
=
sdu
;
else
dlsch1_harq
->
pdu
=
sdu
;
...
...
@@ -263,6 +263,9 @@ void handle_ulsch_cqi_ri_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request
if
(
ulsch_harq
->
O_RI
>
1
)
ulsch_harq
->
Or2
=
rel9
->
aperiodic_cqi_pmi_ri_report
.
cc
[
0
].
dl_cqi_pmi_size
[
1
];
ulsch
->
beta_offset_ri_times8
=
to_beta_offset_ri
[
rel9
->
delta_offset_ri
];
ulsch
->
beta_offset_cqi_times8
=
to_beta_offset_cqi
[
rel9
->
delta_offset_cqi
];
LOG_I
(
PHY
,
"Filling ulsch_cqi_ri information for frame %d, subframe %d : O_RI %d, Or1 %d, beta_offset_cqi_times8 %d (%d)
\n
"
,
frame
,
subframe
,
ulsch_harq
->
O_RI
,
ulsch_harq
->
Or1
,
ulsch
->
beta_offset_cqi_times8
,
rel9
->
delta_offset_cqi
);
}
void
handle_ulsch_cqi_harq_ri_pdu
(
PHY_VARS_eNB
*
eNB
,
int
UE_id
,
nfapi_ul_config_request_pdu_t
*
ul_config_pdu
,
uint16_t
frame
,
uint8_t
subframe
)
{
...
...
@@ -294,7 +297,7 @@ void handle_uci_harq_information(PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci,nfapi_ul_co
if
(
eNB
->
frame_parms
.
frame_type
==
FDD
)
{
uci
->
num_pucch_resources
=
harq_information
->
harq_information_rel9_fdd
.
number_of_pucch_resources
;
LOG_
I
(
PHY
,
"Programming UCI HARQ mode %d : size %d in (%d,%d)
\n
"
,
LOG_
D
(
PHY
,
"Programming UCI HARQ mode %d : size %d in (%d,%d)
\n
"
,
harq_information
->
harq_information_rel9_fdd
.
ack_nack_mode
,
harq_information
->
harq_information_rel9_fdd
.
harq_size
,
uci
->
frame
,
uci
->
subframe
);
...
...
@@ -399,7 +402,7 @@ void handle_uci_sr_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request_pdu_t
uci
->
srs_active
=
srs_active
;
uci
->
active
=
1
;
LOG_
I
(
PHY
,
"Programming UCI SR rnti %x, pucch1_0 %d for (%d,%d)
\n
"
,
LOG_
D
(
PHY
,
"Programming UCI SR rnti %x, pucch1_0 %d for (%d,%d)
\n
"
,
uci
->
rnti
,
uci
->
n_pucch_1_0_sr
[
0
],
frame
,
subframe
);
...
...
@@ -478,11 +481,9 @@ void handle_nfapi_ul_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
// check if we have received a dci for this ue and ulsch descriptor is configured
if
(
ul_config_pdu
->
pdu_type
==
NFAPI_UL_CONFIG_ULSCH_PDU_TYPE
)
{
AssertFatal
((
UE_id
=
find_ulsch
(
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
,
eNB
,
SEARCH_EXIST
))
>=
0
,
AssertFatal
((
UE_id
=
find_ulsch
(
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
,
eNB
,
SEARCH_EXIST
_OR_FREE
))
>=
0
,
"No existing UE ULSCH for rnti %x
\n
"
,
rel8
->
rnti
);
AssertFatal
(
eNB
->
ulsch
[
UE_id
]
->
harq_mask
>
0
,
"ulsch for UE_id %d is not active
\n
"
,
UE_id
);
LOG_I
(
PHY
,
"Applying UL config for UE %d, rnti %x for frame %d, subframe %d
\n
"
,
LOG_D
(
PHY
,
"Applying UL config for UE %d, rnti %x for frame %d, subframe %d
\n
"
,
UE_id
,
rel8
->
rnti
,
frame
,
subframe
);
fill_ulsch
(
eNB
,
&
ul_config_pdu
->
ulsch_pdu
,
frame
,
subframe
);
...
...
@@ -492,8 +493,6 @@ void handle_nfapi_ul_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
else
if
(
ul_config_pdu
->
pdu_type
==
NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE
)
{
AssertFatal
((
UE_id
=
find_ulsch
(
ul_config_pdu
->
ulsch_harq_pdu
.
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
))
>=
0
,
"No available UE ULSCH for rnti %x
\n
"
,
ul_config_pdu
->
ulsch_harq_pdu
.
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
);
AssertFatal
(
eNB
->
ulsch
[
UE_id
]
->
harq_mask
>
0
,
"ulsch for UE_id %d is not active
\n
"
,
UE_id
);
fill_ulsch
(
eNB
,
&
ul_config_pdu
->
ulsch_harq_pdu
.
ulsch_pdu
,
frame
,
subframe
);
handle_ulsch_harq_pdu
(
eNB
,
UE_id
,
ul_config_pdu
,
frame
,
subframe
);
...
...
@@ -503,8 +502,6 @@ void handle_nfapi_ul_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
AssertFatal
((
UE_id
=
find_ulsch
(
ul_config_pdu
->
ulsch_cqi_ri_pdu
.
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
))
>=
0
,
"No available UE ULSCH for rnti %x
\n
"
,
ul_config_pdu
->
ulsch_cqi_ri_pdu
.
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
);
AssertFatal
(
eNB
->
ulsch
[
UE_id
]
->
harq_mask
>
0
,
"ulsch for UE_id %d is not active
\n
"
,
UE_id
);
fill_ulsch
(
eNB
,
&
ul_config_pdu
->
ulsch_cqi_ri_pdu
.
ulsch_pdu
,
frame
,
subframe
);
handle_ulsch_cqi_ri_pdu
(
eNB
,
UE_id
,
ul_config_pdu
,
frame
,
subframe
);
...
...
@@ -513,11 +510,9 @@ void handle_nfapi_ul_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
AssertFatal
((
UE_id
=
find_ulsch
(
ul_config_pdu
->
ulsch_cqi_harq_ri_pdu
.
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
))
>=
0
,
"No available UE ULSCH for rnti %x
\n
"
,
ul_config_pdu
->
ulsch_cqi_harq_ri_pdu
.
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
);
AssertFatal
(
eNB
->
ulsch
[
UE_id
]
->
harq_mask
>
0
,
"ulsch for UE_id %d is not active
\n
"
,
UE_id
);
fill_ulsch
(
eNB
,
&
ul_config_pdu
->
ulsch_cqi_harq_ri_pdu
.
ulsch_pdu
,
frame
,
subframe
);
handle_ulsch_cqi_harq_ri_pdu
(
eNB
,
UE_id
,
ul_config_pdu
,
frame
,
subframe
);
handle_ulsch_harq_pdu
(
eNB
,
UE_id
,
ul_config_pdu
,
frame
,
subframe
);
}
else
if
(
ul_config_pdu
->
pdu_type
==
NFAPI_UL_CONFIG_UCI_HARQ_PDU_TYPE
)
{
AssertFatal
((
UE_id
=
find_uci
(
ul_config_pdu
->
uci_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
,
...
...
@@ -599,7 +594,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
eNB
->
pdcch_vars
[
subframe
&
1
].
num_dci
=
0
;
eNB
->
phich_vars
[
subframe
&
1
].
num_hi
=
0
;
LOG_
I
(
PHY
,
"NFAPI: Frame %d, Subframe %d: received %d dl_pdu, %d tx_req, %d hi_dci0_config_req, %d UL_config
\n
"
,
LOG_
D
(
PHY
,
"NFAPI: Frame %d, Subframe %d: received %d dl_pdu, %d tx_req, %d hi_dci0_config_req, %d UL_config
\n
"
,
frame
,
subframe
,
number_dl_pdu
,
TX_req
->
tx_request_body
.
number_of_pdus
,
number_hi_dci0_pdu
,
number_ul_pdu
);
...
...
@@ -619,7 +614,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
}
for
(
i
=
0
;
i
<
number_dl_pdu
;
i
++
)
{
dl_config_pdu
=
&
DL_req
->
dl_config_request_body
.
dl_config_pdu_list
[
i
];
LOG_
I
(
PHY
,
"NFAPI: dl_pdu %d : type %d
\n
"
,
i
,
dl_config_pdu
->
pdu_type
);
LOG_
D
(
PHY
,
"NFAPI: dl_pdu %d : type %d
\n
"
,
i
,
dl_config_pdu
->
pdu_type
);
switch
(
dl_config_pdu
->
pdu_type
)
{
case
NFAPI_DL_CONFIG_DCI_DL_PDU_TYPE
:
handle_nfapi_dci_dl_pdu
(
eNB
,
proc
,
dl_config_pdu
);
...
...
@@ -649,14 +644,15 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
handle_nfapi_dlsch_pdu
(
eNB
,
proc
,
dl_config_pdu
,
dl_config_pdu
->
dlsch_pdu
.
dlsch_pdu_rel8
.
transport_blocks
-
1
,
TX_req
->
tx_request_body
.
tx_pdu_list
[
dl_config_pdu
->
dlsch_pdu
.
dlsch_pdu_rel8
.
pdu_index
].
segments
[
0
].
segment_data
);
/*
if (dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.rnti == eNB->preamble_list[0].preamble_rel8.rnti) {// is RAR pdu
LOG_
I
(
PHY
,
"Frame %d, Subframe %d: Received LTE RAR pdu, programming based on UL Grant
\n
"
,
frame
,
subframe
);
LOG_
D
(PHY,"Frame %d, Subframe %d: Received LTE RAR pdu, programming based on UL Grant\n",frame,subframe);
generate_eNB_ulsch_params_from_rar(eNB,
TX_req->tx_request_body.tx_pdu_list[dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index].segments[0].segment_data,
frame,
subframe);
}
}
*/
break
;
case
NFAPI_DL_CONFIG_PCH_PDU_TYPE
:
// handle_nfapi_pch_pdu(eNB,dl_config_pdu);
...
...
@@ -681,7 +677,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
hi_dci0_req_pdu
=
&
HI_DCI0_req
->
hi_dci0_request_body
.
hi_dci0_pdu_list
[
i
];
LOG_
I
(
PHY
,
"NFAPI: hi_dci0_pdu %d : type %d
\n
"
,
i
,
hi_dci0_req_pdu
->
pdu_type
);
LOG_
D
(
PHY
,
"NFAPI: hi_dci0_pdu %d : type %d
\n
"
,
i
,
hi_dci0_req_pdu
->
pdu_type
);
switch
(
hi_dci0_req_pdu
->
pdu_type
)
{
...
...
@@ -700,7 +696,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
for
(
i
=
0
;
i
<
number_ul_pdu
;
i
++
)
{
ul_config_pdu
=
&
UL_req
->
ul_config_request_body
.
ul_config_pdu_list
[
i
];
LOG_
I
(
PHY
,
"NFAPI: ul_pdu %d : type %d
\n
"
,
i
,
ul_config_pdu
->
pdu_type
);
LOG_
D
(
PHY
,
"NFAPI: ul_pdu %d : type %d
\n
"
,
i
,
ul_config_pdu
->
pdu_type
);
AssertFatal
(
ul_config_pdu
->
pdu_type
==
NFAPI_UL_CONFIG_ULSCH_PDU_TYPE
||
ul_config_pdu
->
pdu_type
==
NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE
||
ul_config_pdu
->
pdu_type
==
NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE
||
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
0fccd994
...
...
@@ -83,7 +83,7 @@ void pmch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,PHY_VARS_RN *rn,rel
switch
(
r_type
)
{
case
no_relay
:
if
((
mch_pduP
->
Pdu_size
>
0
)
&&
(
mch_pduP
->
sync_area
==
0
))
// TEST: only transmit mcch for sync area 0
LOG_
I
(
PHY
,
"[eNB%"
PRIu8
"] Frame %d subframe %d : Got MCH pdu for MBSFN (MCS %"
PRIu8
", TBS %d)
\n
"
,
LOG_
D
(
PHY
,
"[eNB%"
PRIu8
"] Frame %d subframe %d : Got MCH pdu for MBSFN (MCS %"
PRIu8
", TBS %d)
\n
"
,
eNB
->
Mod_id
,
proc
->
frame_tx
,
subframe
,
mch_pduP
->
mcs
,
eNB
->
dlsch_MCH
->
harq_processes
[
0
]
->
TBS
>>
3
);
else
{
...
...
@@ -97,7 +97,7 @@ void pmch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,PHY_VARS_RN *rn,rel
case
multicast_relay
:
if
((
mch_pduP
->
Pdu_size
>
0
)
&&
((
mch_pduP
->
mcch_active
==
1
)
||
mch_pduP
->
msi_active
==
1
))
{
LOG_
I
(
PHY
,
"[RN %"
PRIu8
"] Frame %d subframe %d: Got the MCH PDU for MBSFN sync area %"
PRIu8
" (MCS %"
PRIu8
", TBS %"
PRIu16
")
\n
"
,
LOG_
D
(
PHY
,
"[RN %"
PRIu8
"] Frame %d subframe %d: Got the MCH PDU for MBSFN sync area %"
PRIu8
" (MCS %"
PRIu8
", TBS %"
PRIu16
")
\n
"
,
rn
->
Mod_id
,
rn
->
frame
,
subframe
,
mch_pduP
->
sync_area
,
mch_pduP
->
mcs
,
mch_pduP
->
Pdu_size
);
}
else
if
(
rn
->
mch_avtive
[
subframe
%
5
]
==
1
)
{
// SF2 -> SF7, SF3 -> SF8
...
...
@@ -107,7 +107,7 @@ void pmch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,PHY_VARS_RN *rn,rel
rn
->
dlsch_rn_MCH
[
subframe
%
5
]
->
harq_processes
[
0
]
->
TBS
>>
3
);
mch_pduP
->
Pdu_size
=
(
uint16_t
)
(
rn
->
dlsch_rn_MCH
[
subframe
%
5
]
->
harq_processes
[
0
]
->
TBS
>>
3
);
mch_pduP
->
mcs
=
rn
->
dlsch_rn_MCH
[
subframe
%
5
]
->
harq_processes
[
0
]
->
mcs
;
LOG_
I
(
PHY
,
"[RN %"
PRIu8
"] Frame %d subframe %d: Forward the MCH PDU for MBSFN received on SF %d sync area %"
PRIu8
" (MCS %"
PRIu8
", TBS %"
PRIu16
")
\n
"
,
LOG_
D
(
PHY
,
"[RN %"
PRIu8
"] Frame %d subframe %d: Forward the MCH PDU for MBSFN received on SF %d sync area %"
PRIu8
" (MCS %"
PRIu8
", TBS %"
PRIu16
")
\n
"
,
rn
->
Mod_id
,
rn
->
frame
,
subframe
,
subframe
%
5
,
rn
->
sync_area
[
subframe
%
5
],
mch_pduP
->
mcs
,
mch_pduP
->
Pdu_size
);
}
else
{
...
...
@@ -270,7 +270,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
if
(
frame
<
200
)
{
LOG_
I
(
PHY
,
LOG_
D
(
PHY
,
"[eNB %"
PRIu8
"][PDSCH %"
PRIx16
"/%"
PRIu8
"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"
PRIu16
", pdsch_start %d, G %d, nb_rb %"
PRIu16
", rb0 %x, rb1 %x, TBS %"
PRIu16
", pmi_alloc %"
PRIx64
", rv %"
PRIu8
" (round %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
dlsch
->
rnti
,
harq_pid
,
frame
,
subframe
,
input_buffer_length
,
dlsch_harq
->
pdsch_start
,
...
...
@@ -481,7 +481,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO
,(
frame
*
10
)
+
subframe
);
if
(
num_dci
>
0
)
LOG_
I
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (num_dci %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
LOG_
D
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (num_dci %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
num_dci
);
generate_dci_top
(
num_pdcch_symbols
,
...
...
@@ -606,7 +606,7 @@ void prach_procedures(PHY_VARS_eNB *eNB,
);
//#ifdef DEBUG_PHY_PROC
LOG_
I
(
PHY
,
"[RAPROC] Frame %d, subframe %d : Most likely preamble %d, energy %d dB delay %d
\n
"
,
LOG_
D
(
PHY
,
"[RAPROC] Frame %d, subframe %d : Most likely preamble %d, energy %d dB delay %d
\n
"
,
frame
,
subframe
,
max_preamble
[
0
],
max_preamble_energy
[
0
]
/
10
,
...
...
@@ -642,7 +642,7 @@ void prach_procedures(PHY_VARS_eNB *eNB,
eNB
->
preamble_list_br
[
ind
].
preamble_rel8
.
rnti
=
1
+
subframe
+
(
eNB
->
prach_vars_br
.
first_frame
[
ce_level
]
%
40
);
eNB
->
preamble_list_br
[
ind
].
instance_length
=
0
;
//don't know exactly what this is
eNB
->
preamble_list_br
[
ind
].
preamble_rel13
.
rach_resource_type
=
1
+
ce_level
;
// CE Level
LOG_
I
(
PHY
,
"Filling NFAPI indication for RACH %d CELevel %d (mask %x) : TA %d, Preamble %d, rnti %x, rach_resource_type %d
\n
"
,
LOG_
D
(
PHY
,
"Filling NFAPI indication for RACH %d CELevel %d (mask %x) : TA %d, Preamble %d, rnti %x, rach_resource_type %d
\n
"
,
ind
,
ce_level
,
prach_mask
,
...
...
@@ -690,7 +690,7 @@ void prach_procedures(PHY_VARS_eNB *eNB,
eNB
->
preamble_list
[
0
].
preamble_rel13
.
rach_resource_type
=
0
;
eNB
->
preamble_list
[
0
].
instance_length
=
0
;
//don't know exactly what this is
LOG_
I
(
PHY
,
"Filling NFAPI indication for RACH : TA %d, Preamble %d, rnti %x, rach_resource_type %d
\n
"
,
LOG_
D
(
PHY
,
"Filling NFAPI indication for RACH : TA %d, Preamble %d, rnti %x, rach_resource_type %d
\n
"
,
eNB
->
preamble_list
[
0
].
preamble_rel8
.
timing_advance
,
eNB
->
preamble_list
[
0
].
preamble_rel8
.
preamble
,
eNB
->
preamble_list
[
0
].
preamble_rel8
.
rnti
,
...
...
@@ -757,7 +757,6 @@ void fill_sr_indication(PHY_VARS_eNB *eNB,uint16_t rnti,int frame,int subframe)
pdu
->
instance_length
=
0
;
// don't know what to do with this
// pdu->rx_ue_information.handle = handle;
pdu
->
rx_ue_information
.
rnti
=
rnti
;
pthread_mutex_unlock
(
&
eNB
->
UL_INFO_mutex
);
eNB
->
UL_INFO
.
sr_ind
.
number_of_srs
++
;
pthread_mutex_unlock
(
&
eNB
->
UL_INFO_mutex
);
...
...
@@ -828,7 +827,7 @@ void uci_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
frame
,
subframe
,
PUCCH1_THRES
);
LOG_
I
(
PHY
,
"[eNB %d][SR %x] Frame %d subframe %d Checking SR is %d (SR n1pucch is %d)
\n
"
,
LOG_
D
(
PHY
,
"[eNB %d][SR %x] Frame %d subframe %d Checking SR is %d (SR n1pucch is %d)
\n
"
,
eNB
->
Mod_id
,
uci
->
rnti
,
frame
,
...
...
@@ -846,7 +845,7 @@ void uci_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
}
case
HARQ
:
if
(
fp
->
frame_type
==
FDD
)
{
LOG_
I
(
PHY
,
"Frame %d Subframe %d Demodulating PUCCH (UCI %d) for ACK/NAK (uci->pucch_fmt %d,uci->type %d.uci->frame %d, uci->subframe %d): n1_pucch0 %d SR_payload %d
\n
"
,
LOG_
D
(
PHY
,
"Frame %d Subframe %d Demodulating PUCCH (UCI %d) for ACK/NAK (uci->pucch_fmt %d,uci->type %d.uci->frame %d, uci->subframe %d): n1_pucch0 %d SR_payload %d
\n
"
,
frame
,
subframe
,
i
,
uci
->
pucch_fmt
,
uci
->
type
,
uci
->
frame
,
uci
->
subframe
,
uci
->
n_pucch_1
[
0
][
0
],
...
...
@@ -1283,7 +1282,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
ulsch
=
eNB
->
ulsch
[
i
];
ulsch_harq
=
ulsch
->
harq_processes
[
harq_pid
];
if
(
ulsch
->
rnti
>
0
)
LOG_
I
(
PHY
,
"Frame %d, subframe %d: PUSCH procedures, harq_pid %d, UE %d/%x
\n
"
,
if
(
ulsch
->
rnti
>
0
)
LOG_
D
(
PHY
,
"Frame %d, subframe %d: PUSCH procedures, harq_pid %d, UE %d/%x
\n
"
,
frame
,
subframe
,
harq_pid
,
i
,
ulsch
->
rnti
);
if
((
ulsch
)
&&
...
...
@@ -1304,7 +1303,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
}
LOG_
I
(
PHY
,
"[eNB %d] frame %d, subframe %d: Scheduling ULSCH Reception for UE %d
\n
"
,
LOG_
D
(
PHY
,
"[eNB %d] frame %d, subframe %d: Scheduling ULSCH Reception for UE %d
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
...
...
@@ -1317,7 +1316,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
cyclicShift
+
nPRS
)
%
12
;
LOG_
I
(
PHY
,
LOG_
D
(
PHY
,
"[eNB %d][PUSCH %d] Frame %d Subframe %d Demodulating PUSCH: dci_alloc %d, rar_alloc %d, round %d, first_rb %d, nb_rb %d, Qm %d, TBS %d, rv %d, cyclic_shift %d (n_DMRS2 %d, cyclicShift_common %d, nprs %d), O_ACK %d
\n
"
,
eNB
->
Mod_id
,
harq_pid
,
frame
,
subframe
,
ulsch_harq
->
dci_alloc
,
...
...
@@ -1355,7 +1354,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
stop_meas
(
&
eNB
->
ulsch_decoding_stats
);
LOG_
I
(
PHY
,
"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d
\n
"
,
LOG_
D
(
PHY
,
"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d
\n
"
,
eNB
->
Mod_id
,
harq_pid
,
frame
,
subframe
,
ulsch
->
rnti
,
...
...
@@ -1369,8 +1368,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
//compute the expected ULSCH RX power (for the stats)
eNB
->
ulsch
[(
uint32_t
)
i
]
->
harq_processes
[
harq_pid
]
->
delta_TF
=
get_hundred_times_delta_IF_eNB
(
eNB
,
i
,
harq_pid
,
0
);
// 0 means bw_factor is not considered
ulsch_harq
->
delta_TF
=
get_hundred_times_delta_IF_eNB
(
eNB
,
i
,
harq_pid
,
0
);
// 0 means bw_factor is not considered
if
(
ulsch_harq
->
cqi_crc_status
==
1
)
{
...
...
@@ -1379,22 +1377,19 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
print_CQI
(
ulsch_harq
->
o
,
ulsch_harq
->
uci_format
,
0
,
fp
->
N_RB_DL
);
#endif
fill_ulsch_cqi_indication
(
eNB
,
frame
,
subframe
,
ulsch_harq
,
ulsch
->
rnti
);
}
fill_ulsch_cqi_indication
(
eNB
,
frame
,
subframe
,
ulsch_harq
,
ulsch
->
rnti
);
if
(
ret
==
(
1
+
MAX_TURBO_ITERATIONS
))
{
T
(
T_ENB_PHY_ULSCH_UE_NACK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
i
),
T_INT
(
ulsch
->
rnti
),
T_INT
(
harq_pid
));
ulsch_harq
->
round
++
;
fill_crc_indication
(
eNB
,
i
,
frame
,
subframe
,
1
);
// indicate NAK to MAC
LOG_I
(
PHY
,
"[eNB][PUSCH %d] Increasing to round %d
\n
"
,
harq_pid
,
ulsch_harq
->
round
);
LOG_I
(
PHY
,
"[eNB %d][PUSCH %d] frame %d subframe %d UE %d Error receiving ULSCH, round %d/%d (ACK %d,%d)
\n
"
,
LOG_D
(
PHY
,
"[eNB %d][PUSCH %d] frame %d subframe %d UE %d Error receiving ULSCH, round %d/%d (ACK %d,%d)
\n
"
,
eNB
->
Mod_id
,
harq_pid
,
frame
,
subframe
,
i
,
ulsch_harq
->
round
-
1
,
...
...
@@ -1412,7 +1407,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
ulsch_harq
->
round
-
1
);
#endif
}
// ulsch in error
else
{
...
...
@@ -1421,6 +1416,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
fill_rx_indication
(
eNB
,
i
,
frame
,
subframe
);
// indicate SDU to MAC
T
(
T_ENB_PHY_ULSCH_UE_ACK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
i
),
T_INT
(
ulsch
->
rnti
),
T_INT
(
harq_pid
));
ulsch_harq
->
status
=
SCH_IDLE
;
#if defined(MESSAGE_CHART_GENERATOR_PHY)
MSC_LOG_RX_MESSAGE
(
...
...
@@ -1450,8 +1446,8 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {