Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
littleBu
OpenXG-RAN
Commits
017fd225
Commit
017fd225
authored
2 years ago
by
laurent
Committed by
Robert Schmidt
2 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix ubsan detected errors
parent
db7f39ba
Branches unavailable
2025.w08
2025.w07
2025.w06
2025.w05
2025.w04
2025.w03
2025.w02
2024.w51
2024.w50
2024.w49
2024.w48
2024.w47
2024.w46
2024.w45
2024.w44
2024.w43
2024.w42
2024.w41
2024.w40
2024.w39
2024.w38
2024.w36
2024.w35
2024.w34
2024.w33
2024.w32
2024.w31
2024.w30
2024.w29
2024.w28
2024.w27
2024.w26
2024.w25
2024.w24
2024.w23
2024.w22
2024.w21
2024.w18
2024.w17
2024.w16
2024.w15
2024.w14
2024.w13
2024.w12
2024.w11
2024.w10
2024.w09
2024.w08
2024.w06
2024.w05
2024.w04
2024.w03
2024.w02
2024.w01
2023.w51
2023.w50
2023.w49
2023.w48
2023.w47
2023.w45
2023.w43
2023.w42
2023.w41
2023.w40
2023.w39
2023.w38
2023.w37
2023.w36
2023.w34
2023.w33
2023.w32
2023.w31
2023.w30
2023.w29
2023.w28
2023.w27
2023.w26
2023.w25
2023.w24
2023.w23
2023.w22
2023.w21
2023.w20
2023.w19
2023.w18
2023.w18b
2023.w16
2023.w15
2023.w14
2023.w13
2023.w12
2023.w11
2023.w11b
2023.w10
2023.w10b
2023.w09
2023.w08
2023.w08b
2023.w07
2023.w06
2023.w05
2023.w03
2023.w02
2022.42
2022.41
2022.w51
2022.w50
2022.w49
2022.w48
2022.w47
2022.w46
2022.w45
2022.w43
2022.w42
2022.w42b
2022.w41
2022.w40
2022.w39
2022.w38
2022.w37
2022.w37b
2022.w36
2022.w35
2022.w33
2022.w32
2022.w31
2022.w31b
2022.w30
v2.2.0
v2.1.0
v2.0.0
flexran-eol
ARC_1.3
No related merge requests found
Changes
26
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
191 additions
and
183 deletions
+191
-183
common/utils/time_meas.h
common/utils/time_meas.h
+2
-2
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+1
-1
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
+1
-1
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
+3
-3
openair1/PHY/CODING/crc_byte.c
openair1/PHY/CODING/crc_byte.c
+2
-2
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
+30
-15
openair1/PHY/LTE_TRANSPORT/dci_tools_common.c
openair1/PHY/LTE_TRANSPORT/dci_tools_common.c
+58
-58
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+1
-1
openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
+0
-8
openair1/PHY/LTE_UE_TRANSPORT/transport_ue.h
openair1/PHY/LTE_UE_TRANSPORT/transport_ue.h
+1
-1
openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
+18
-29
openair1/PHY/MODULATION/nr_modulation.c
openair1/PHY/MODULATION/nr_modulation.c
+4
-3
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
+1
-1
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+3
-2
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+1
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+1
-2
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+10
-6
openair1/SIMULATION/LTE_PHY/ulsim.c
openair1/SIMULATION/LTE_PHY/ulsim.c
+7
-7
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+1
-1
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+2
-2
openair2/LAYER2/NR_MAC_UE/mac_proto.h
openair2/LAYER2/NR_MAC_UE/mac_proto.h
+0
-7
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+14
-8
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+25
-19
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+2
-0
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+2
-2
No files found.
common/utils/time_meas.h
View file @
017fd225
...
...
@@ -62,7 +62,7 @@ typedef struct time_stats {
oai_cputime_t
in
;
/*!< \brief time at measure starting point */
oai_cputime_t
diff
;
/*!< \brief average difference between time at starting point and time at endpoint*/
oai_cputime_t
p_time
;
/*!< \brief absolute process duration */
oai_cputime_t
diff_square
;
/*!< \brief process duration square */
double
diff_square
;
/*!< \brief process duration square */
oai_cputime_t
max
;
/*!< \brief maximum difference between time at starting point and time at endpoint*/
int
trials
;
/*!< \brief number of start point - end point iterations */
int
meas_flag
;
/*!< \brief 1: stop_meas not called (consecutive calls of start_meas) */
...
...
@@ -156,7 +156,7 @@ static inline void stop_meas(time_stats_t *ts) {
ts
->
diff
+=
(
out
-
ts
->
in
);
/// process duration is the difference between two clock points
ts
->
p_time
=
(
out
-
ts
->
in
);
ts
->
diff_square
+=
(
out
-
ts
->
in
)
*
(
out
-
ts
->
in
);
ts
->
diff_square
+=
(
(
double
)
out
-
ts
->
in
)
*
((
double
)
out
-
ts
->
in
);
if
((
out
-
ts
->
in
)
>
ts
->
max
)
ts
->
max
=
out
-
ts
->
in
;
...
...
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
017fd225
...
...
@@ -87,7 +87,7 @@ typedef struct {
// N_CCE is L, or number of CCEs for DCI
int
N_CCE
;
uint8_t
payloadSize
;
uint8_t
payloadBits
[
16
]
;
uint8_t
payloadBits
[
16
]
__attribute__
((
aligned
(
16
)));
// will be cast as uint64
//fapi_nr_dci_pdu_rel15_t dci;
}
fapi_nr_dci_indication_pdu_t
;
...
...
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
View file @
017fd225
...
...
@@ -738,7 +738,7 @@ typedef struct {
// The total DCI length (in bits) including padding bits [TS38.212 sec 7.3.1] Range 0->DCI_PAYLOAD_BYTE_LEN*8
uint16_t
PayloadSizeBits
;
// DCI payload, where the actual size is defined by PayloadSizeBits. The bit order is as following bit0-bit7 are mapped to first byte of MSB - LSB
uint8_t
Payload
[
DCI_PAYLOAD_BYTE_LEN
];
uint8_t
Payload
[
DCI_PAYLOAD_BYTE_LEN
]
__attribute__
((
aligned
(
32
)))
;
}
nfapi_nr_dl_dci_pdu_t
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
View file @
017fd225
...
...
@@ -814,7 +814,7 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
llr_t
*
s1
,
*
s2
,
*
yp1
,
*
yp2
,
*
yp
;
unsigned
int
i
,
j
,
iind
;
//,pi;
unsigned
char
iteration_cnt
=
0
;
unsigned
int
crc
,
oldcrc
,
crc_len
;
unsigned
int
crc
,
crc_len
;
uint8_t
temp
;
#if defined(__x86_64__) || defined(__i386__)
__m128i
*
yp128
;
...
...
@@ -1233,8 +1233,8 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
}
// check the CRC
oldcrc
=
*
((
unsigned
int
*
)(
&
decoded_bytes
[(
n
>>
3
)
-
crc_len
]))
;
uint32_t
oldcrc
;
memcpy
(
&
oldcrc
,
&
decoded_bytes
[(
n
>>
3
)
-
crc_len
],
crc_len
);
switch
(
crc_type
)
{
case
CRC24_A
:
oldcrc
&=
0x00ffffff
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/crc_byte.c
View file @
017fd225
...
...
@@ -244,11 +244,11 @@ crc16 (unsigned char * inptr, int bitlen)
while
(
octetlen
--
>
0
)
{
crc
=
(
crc
<<
8
)
^
(
crc16Table
[(
*
inptr
++
)
^
(
crc
>>
24
)]
<<
16
);
crc
=
(
crc
<<
8
)
^
(
((
uint32_t
)
crc16Table
[(
*
inptr
++
)
^
(
crc
>>
24
)])
<<
16
);
}
if
(
resbit
>
0
)
crc
=
(
crc
<<
resbit
)
^
(
crc16Table
[((
*
inptr
)
>>
(
8
-
resbit
))
^
(
crc
>>
(
32
-
resbit
))]
<<
16
);
crc
=
(
crc
<<
resbit
)
^
(
((
uint32_t
)
crc16Table
[(
*
inptr
)
>>
(
8
-
resbit
)
^
(
crc
>>
(
32
-
resbit
))])
<<
16
);
return
crc
;
}
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
View file @
017fd225
...
...
@@ -961,6 +961,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1028,6 +1029,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1096,6 +1098,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1163,6 +1166,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1230,6 +1234,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1297,6 +1302,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1364,6 +1370,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1431,6 +1438,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1498,6 +1506,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1593,6 +1602,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1660,6 +1670,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1727,6 +1738,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1794,6 +1806,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1861,6 +1874,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
@@ -1928,6 +1942,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBu
// If no error pcRes should be 0
// Only use valid CNs
if
(
Mrem
)
pcResSum
|=
(
pcRes
&
(
0xFFFFFFFF
>>
(
32
-
Mrem
)));
// If PC failed we can stop here
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dci_tools_common.c
View file @
017fd225
...
...
@@ -573,6 +573,8 @@ uint32_t get_prb(int N_RB_DL,int odd_slot,int vrb,int Ngap) {
return
14
;
break
;
// Formula in TS 36.211, chap 6.2.3.2
// Fix me: returns a PRB number > 24 when vrb is 24
case
25
:
return
(((
12
*
odd_slot
)
+
6
*
(
vrb
&
3
)
+
(
vrb
>>
2
))
%
24
)
+
24
*
(
vrb
/
24
);
break
;
...
...
@@ -617,7 +619,8 @@ uint32_t get_prb(int N_RB_DL,int odd_slot,int vrb,int Ngap) {
return
offset
+
((
9
*
odd_slot
)
+
6
*
(
vrb
&
3
)
+
(
vrb
>>
2
))
%
18
;
}
else
{
return
offset
+
((
9
*
odd_slot
)
+
12
*
(
vrb
&
1
)
+
(
vrb
>>
1
)
)
%
18
+
18
*
(
vrb
/
18
);
// Same issue as for 25 PRB: returns larger than 0..49
return
((
9
*
odd_slot
)
+
12
*
(
vrb
&
1
)
+
(
vrb
>>
1
))
%
18
+
18
*
(
vrb
/
18
);
}
}
break
;
...
...
@@ -693,15 +696,14 @@ void generate_RIV_tables(void)
nVRB
=
Lcrbs
-
1
+
RBstart
;
//printf("RBstart %d, len %d --> ",RBstart,Lcrbs);
alloc0
|=
(
1
<<
nVRB
);
allocdist0_0_even
|=
(
1
<<
get_prb
(
25
,
0
,
nVRB
,
0
)
);
allocdist0_0_odd
|=
(
1
<<
get_prb
(
25
,
1
,
nVRB
,
0
)
);
allocdist0_0_even
|=
1U
<<
get_prb
(
25
,
0
,
nVRB
,
0
);
allocdist0_0_odd
|=
1U
<<
get_prb
(
25
,
1
,
nVRB
,
0
);
//printf("alloc 0 %x, allocdist0_even %x, allocdist0_odd %x\n",alloc0,allocdist0_0_even,allocdist0_0_odd);
RIV
=
computeRIV
(
25
,
RBstart
,
Lcrbs
);
if
(
RIV
>
RIV_max25
)
RIV_max25
=
RIV
;;
RIV_max25
=
RIV
;
localRIV2alloc_LUT25
[
RIV
]
=
alloc0
;
distRIV2alloc_even_LUT25
[
RIV
]
=
allocdist0_0_even
;
...
...
@@ -730,37 +732,37 @@ void generate_RIV_tables(void)
if
(
nVRB
<
32
)
alloc0
|=
(
1
<<
nVRB
)
;
alloc0
|=
1U
<<
nVRB
;
else
alloc1
|=
(
1
<<
(
nVRB
-
32
)
);
alloc1
|=
1U
<<
(
nVRB
-
32
);
// Distributed Gap1, even slot
nVRB_even_dist
=
get_prb
(
50
,
0
,
nVRB
,
0
);
if
(
nVRB_even_dist
<
32
)
allocdist0_0_even
|=
(
1
<<
nVRB_even_dist
)
;
allocdist0_0_even
|=
1U
<<
nVRB_even_dist
;
else
allocdist1_0_even
|=
(
1
<<
(
nVRB_even_dist
-
32
)
);
allocdist1_0_even
|=
1U
<<
(
nVRB_even_dist
-
32
);
// Distributed Gap1, odd slot
nVRB_odd_dist
=
get_prb
(
50
,
1
,
nVRB
,
0
);
if
(
nVRB_odd_dist
<
32
)
allocdist0_0_odd
|=
(
1
<<
nVRB_odd_dist
);
allocdist0_0_odd
|=
(
1
U
<<
nVRB_odd_dist
);
else
allocdist1_0_odd
|=
(
1
<<
(
nVRB_odd_dist
-
32
));
allocdist1_0_odd
|=
(
1
U
<<
(
nVRB_odd_dist
-
32
));
// Distributed Gap2, even slot
nVRB_even_dist
=
get_prb
(
50
,
0
,
nVRB
,
1
);
if
(
nVRB_even_dist
<
32
)
allocdist0_1_even
|=
(
1
<<
nVRB_even_dist
)
;
allocdist0_1_even
|=
1U
<<
nVRB_even_dist
;
else
allocdist1_1_even
|=
(
1
<<
(
nVRB_even_dist
-
32
)
);
allocdist1_1_even
|=
1U
<<
(
nVRB_even_dist
-
32
);
// Distributed Gap2, odd slot
nVRB_odd_dist
=
get_prb
(
50
,
1
,
nVRB
,
1
);
if
(
nVRB_odd_dist
<
32
)
allocdist0_1_odd
|=
(
1
<<
nVRB_odd_dist
)
;
allocdist0_1_odd
|=
1U
<<
nVRB_odd_dist
;
else
allocdist1_1_odd
|=
(
1
<<
(
nVRB_odd_dist
-
32
)
);
allocdist1_1_odd
|=
1U
<<
(
nVRB_odd_dist
-
32
);
RIV
=
computeRIV
(
50
,
RBstart
,
Lcrbs
);
...
...
@@ -811,13 +813,13 @@ void generate_RIV_tables(void)
nVRB
=
Lcrbs
-
1
+
RBstart
;
if
(
nVRB
<
32
)
alloc0
|=
(
1
<<
nVRB
)
;
alloc0
|=
1U
<<
nVRB
;
else
if
(
nVRB
<
64
)
alloc1
|=
(
1
<<
(
nVRB
-
32
)
);
alloc1
|=
1U
<<
(
nVRB
-
32
);
else
if
(
nVRB
<
96
)
alloc2
|=
(
1
<<
(
nVRB
-
64
)
);
alloc2
|=
1U
<<
(
nVRB
-
64
);
else
alloc3
|=
(
1
<<
(
nVRB
-
96
)
);
alloc3
|=
1U
<<
(
nVRB
-
96
);
// Distributed Gap1, even slot
nVRB_even_dist
=
get_prb
(
100
,
0
,
nVRB
,
0
);
...
...
@@ -825,15 +827,14 @@ void generate_RIV_tables(void)
// if ((RBstart==0) && (Lcrbs<=8))
// printf("nVRB %d => nVRB_even_dist %d\n",nVRB,nVRB_even_dist);
if
(
nVRB_even_dist
<
32
)
allocdist0_0_even
|=
(
1
<<
nVRB_even_dist
)
;
allocdist0_0_even
|=
1U
<<
nVRB_even_dist
;
else
if
(
nVRB_even_dist
<
64
)
allocdist1_0_even
|=
(
1
<<
(
nVRB_even_dist
-
32
)
);
allocdist1_0_even
|=
1U
<<
(
nVRB_even_dist
-
32
);
else
if
(
nVRB_even_dist
<
96
)
allocdist2_0_even
|=
(
1
<<
(
nVRB_even_dist
-
64
)
);
allocdist2_0_even
|=
1U
<<
(
nVRB_even_dist
-
64
);
else
allocdist3_0_even
|=
(
1
<<
(
nVRB_even_dist
-
96
)
);
allocdist3_0_even
|=
1U
<<
(
nVRB_even_dist
-
96
);
/* if ((RBstart==0) && (Lcrbs<=8))
printf("rballoc =>(%08x.%08x.%08x.%08x)\n",
allocdist0_0_even,
...
...
@@ -845,38 +846,37 @@ void generate_RIV_tables(void)
// Distributed Gap1, odd slot
nVRB_odd_dist
=
get_prb
(
100
,
1
,
nVRB
,
0
);
if
(
nVRB_odd_dist
<
32
)
allocdist0_0_odd
|=
(
1
<<
nVRB_odd_dist
)
;
allocdist0_0_odd
|=
1U
<<
nVRB_odd_dist
;
else
if
(
nVRB_odd_dist
<
64
)
allocdist1_0_odd
|=
(
1
<<
(
nVRB_odd_dist
-
32
)
);
allocdist1_0_odd
|=
1U
<<
(
nVRB_odd_dist
-
32
);
else
if
(
nVRB_odd_dist
<
96
)
allocdist2_0_odd
|=
(
1
<<
(
nVRB_odd_dist
-
64
)
);
allocdist2_0_odd
|=
1U
<<
(
nVRB_odd_dist
-
64
);
else
allocdist3_0_odd
|=
(
1
<<
(
nVRB_odd_dist
-
96
)
);
allocdist3_0_odd
|=
1U
<<
(
nVRB_odd_dist
-
96
);
// Distributed Gap2, even slot
nVRB_even_dist
=
get_prb
(
100
,
0
,
nVRB
,
1
);
if
(
nVRB_even_dist
<
32
)
allocdist0_1_even
|=
(
1
<<
nVRB_even_dist
)
;
allocdist0_1_even
|=
1U
<<
nVRB_even_dist
;
else
if
(
nVRB_even_dist
<
64
)
allocdist1_1_even
|=
(
1
<<
(
nVRB_even_dist
-
32
)
);
allocdist1_1_even
|=
1U
<<
(
nVRB_even_dist
-
32
);
else
if
(
nVRB_even_dist
<
96
)
allocdist2_1_even
|=
(
1
<<
(
nVRB_even_dist
-
64
)
);
allocdist2_1_even
|=
1U
<<
(
nVRB_even_dist
-
64
);
else
allocdist3_1_even
|=
(
1
<<
(
nVRB_even_dist
-
96
)
);
allocdist3_1_even
|=
1U
<<
(
nVRB_even_dist
-
96
);
// Distributed Gap2, odd slot
nVRB_odd_dist
=
get_prb
(
100
,
1
,
nVRB
,
1
);
if
(
nVRB_odd_dist
<
32
)
allocdist0_1_odd
|=
(
1
<<
nVRB_odd_dist
)
;
allocdist0_1_odd
|=
1U
<<
nVRB_odd_dist
;
else
if
(
nVRB_odd_dist
<
64
)
allocdist1_1_odd
|=
(
1
<<
(
nVRB_odd_dist
-
32
)
);
allocdist1_1_odd
|=
1U
<<
(
nVRB_odd_dist
-
32
);
else
if
(
nVRB_odd_dist
<
96
)
allocdist2_1_odd
|=
(
1
<<
(
nVRB_odd_dist
-
64
)
);
allocdist2_1_odd
|=
1U
<<
(
nVRB_odd_dist
-
64
);
else
allocdist3_1_odd
|=
(
1
<<
(
nVRB_odd_dist
-
96
));
allocdist3_1_odd
|=
1U
<<
(
nVRB_odd_dist
-
96
);
RIV
=
computeRIV
(
100
,
RBstart
,
Lcrbs
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
017fd225
...
...
@@ -288,7 +288,7 @@ static void TPencode(void * arg) {
LTE_DL_eNB_HARQ_t
*
hadlsch
=
rdata
->
dlsch
->
harq_processes
[
harq_pid
];
if
(
rdata
->
round
==
0
)
{
uint8_t
tmp
[
96
+
12
+
3
+
3
*
6144
];
uint8_t
tmp
[
96
+
12
+
3
+
3
*
6144
]
__attribute__
((
aligned
(
32
)))
;
memset
(
tmp
,
LTE_NULL
,
TURBO_SIMD_SOFTBITS
);
start_meas
(
rdata
->
te_stats
);
encoder
(
rdata
->
input
,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
View file @
017fd225
...
...
@@ -1272,14 +1272,6 @@ uint32_t get_TBS_DL(uint8_t mcs, uint16_t nb_rb);
@return Transport block size */
uint32_t
get_TBS_UL
(
uint8_t
mcs
,
uint16_t
nb_rb
);
/* \brief Return bit-map of resource allocation for a given DCI rballoc (RIV format) and vrb type
@param N_RB_DL number of PRB on DL
@param indicator for even/odd slot
@param vrb vrb index
@param Ngap Gap indicator
*/
uint32_t
get_prb
(
int
N_RB_DL
,
int
odd_slot
,
int
vrb
,
int
Ngap
);
/* \brief Return prb for a given vrb index
@param vrb_type VRB type (0=localized,1=distributed)
@param rb_alloc_dci rballoc field from DCI
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_UE_TRANSPORT/transport_ue.h
View file @
017fd225
...
...
@@ -90,7 +90,7 @@ typedef struct {
/// Redundancy-version of the current sub-frame
uint8_t
rvidx
;
/// Turbo-code outputs (36-212 V8.6 2009-03, p.12
uint8_t
d
[
MAX_NUM_ULSCH_SEGMENTS
][(
96
+
3
+
(
3
*
6144
))
];
uint8_t
*
d
[
MAX_NUM_ULSCH_SEGMENTS
];
/// Sub-block interleaver outputs (36-212 V8.6 2009-03, p.16-17)
uint8_t
w
[
MAX_NUM_ULSCH_SEGMENTS
][
3
*
6144
];
/// Number of code segments (for definition see 36-212 V8.6 2009-03, p.9)
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
View file @
017fd225
...
...
@@ -71,6 +71,7 @@ void free_ue_ulsch(LTE_UE_ULSCH_t *ulsch) {
for
(
r
=
0
;
r
<
MAX_NUM_ULSCH_SEGMENTS
;
r
++
)
{
if
(
ulsch
->
harq_processes
[
i
]
->
c
[
r
])
{
free16
(
ulsch
->
harq_processes
[
i
]
->
c
[
r
],((
r
==
0
)
?
8
:
0
)
+
3
+
768
);
free16
(
ulsch
->
harq_processes
[
i
]
->
d
[
r
],
0
);
ulsch
->
harq_processes
[
i
]
->
c
[
r
]
=
NULL
;
}
}
...
...
@@ -86,7 +87,7 @@ void free_ue_ulsch(LTE_UE_ULSCH_t *ulsch) {
LTE_UE_ULSCH_t
*
new_ue_ulsch
(
unsigned
char
N_RB_UL
,
uint8_t
abstraction_flag
)
{
LTE_UE_ULSCH_t
*
ulsch
;
unsigned
char
exit_flag
=
0
,
i
,
j
,
r
;
unsigned
char
exit_flag
=
0
;
unsigned
char
bw_scaling
=
1
;
switch
(
N_RB_UL
)
{
...
...
@@ -113,7 +114,7 @@ LTE_UE_ULSCH_t *new_ue_ulsch(unsigned char N_RB_UL, uint8_t abstraction_flag) {
memset
(
ulsch
,
0
,
sizeof
(
LTE_UE_ULSCH_t
));
ulsch
->
Mlimit
=
4
;
for
(
i
=
0
;
i
<
8
;
i
++
)
{
for
(
i
nt
i
=
0
;
i
<
8
;
i
++
)
{
ulsch
->
harq_processes
[
i
]
=
(
LTE_UL_UE_HARQ_t
*
)
malloc16
(
sizeof
(
LTE_UL_UE_HARQ_t
));
// printf("ulsch->harq_processes[%d] %p\n",i,ulsch->harq_processes[i]);
...
...
@@ -129,15 +130,11 @@ LTE_UE_ULSCH_t *new_ue_ulsch(unsigned char N_RB_UL, uint8_t abstraction_flag) {
}
if
(
abstraction_flag
==
0
)
{
for
(
r
=
0
;
r
<
MAX_NUM_ULSCH_SEGMENTS
;
r
++
)
{
ulsch
->
harq_processes
[
i
]
->
c
[
r
]
=
(
unsigned
char
*
)
malloc16
(((
r
==
0
)
?
8
:
0
)
+
3
+
768
);
// account for filler in first segment and CRCs for multiple segment case
if
(
ulsch
->
harq_processes
[
i
]
->
c
[
r
])
memset
(
ulsch
->
harq_processes
[
i
]
->
c
[
r
],
0
,((
r
==
0
)
?
8
:
0
)
+
3
+
768
);
else
{
LOG_E
(
PHY
,
"Can't get c
\n
"
);
exit_flag
=
2
;
}
for
(
int
r
=
0
;
r
<
MAX_NUM_ULSCH_SEGMENTS
;
r
++
)
{
ulsch
->
harq_processes
[
i
]
->
c
[
r
]
=
malloc16_clear
(((
r
==
0
)
?
8
:
0
)
+
3
+
768
);
// account for filler in first segment and CRCs for multiple segment case
AssertFatal
(
ulsch
->
harq_processes
[
i
]
->
c
[
r
],
""
);
ulsch
->
harq_processes
[
i
]
->
d
[
r
]
=
malloc16_clear
(
96
+
3
+
(
3
*
6144
));
AssertFatal
(
ulsch
->
harq_processes
[
i
]
->
d
[
r
],
""
);
}
}
...
...
@@ -148,15 +145,7 @@ LTE_UE_ULSCH_t *new_ue_ulsch(unsigned char N_RB_UL, uint8_t abstraction_flag) {
exit_flag
=
3
;
}
}
if
((
abstraction_flag
==
0
)
&&
(
exit_flag
==
0
))
{
for
(
i
=
0
;
i
<
8
;
i
++
)
for
(
j
=
0
;
j
<
96
;
j
++
)
for
(
r
=
0
;
r
<
MAX_NUM_ULSCH_SEGMENTS
;
r
++
)
ulsch
->
harq_processes
[
i
]
->
d
[
r
][
j
]
=
LTE_NULL
;
return
(
ulsch
);
}
else
if
(
abstraction_flag
==
1
)
if
(
!
exit_flag
)
return
(
ulsch
);
}
...
...
@@ -191,7 +180,7 @@ uint32_t ulsch_encoding(uint8_t *a,
uint32_t
Qprime_ACK
=
0
,
Qprime_CQI
=
0
,
Qprime_RI
=
0
,
len_ACK
=
0
,
len_RI
=
0
;
// uint32_t E;
uint8_t
ack_parity
;
uint32_t
i
,
q
,
j
,
iprime
,
j2
;
uint32_t
q
,
j
,
iprime
,
j2
;
uint16_t
o_RCC
;
uint8_t
o_flip
[
8
];
uint32_t
wACK_idx
;
...
...
@@ -327,6 +316,8 @@ uint32_t ulsch_encoding(uint8_t *a,
#endif
// offset=0;
start_meas
(
te_stats
);
for
(
int
z
=
0
;
z
<
96
;
z
++
)
ulsch
->
harq_processes
[
harq_pid
]
->
d
[
r
][
z
]
=
LTE_NULL
;
encoder
(
ulsch
->
harq_processes
[
harq_pid
]
->
c
[
r
],
Kr
>>
3
,
&
ulsch
->
harq_processes
[
harq_pid
]
->
d
[
r
][
96
],
...
...
@@ -539,8 +530,6 @@ uint32_t ulsch_encoding(uint8_t *a,
ulsch
->
q
);
}
i
=
0
;
// Do RI coding
if
(
ulsch
->
O_RI
==
1
)
{
switch
(
Q_m
)
{
...
...
@@ -691,7 +680,7 @@ uint32_t ulsch_encoding(uint8_t *a,
j
=
0
;
for
(
i
=
0
;
i
<
Qprime_RI
;
i
++
)
{
for
(
i
nt
i
=
0
;
i
<
Qprime_RI
;
i
++
)
{
r
=
Rmux_prime
-
1
-
(
i
>>
2
);
for
(
q
=
0
;
q
<
Q_m
;
q
++
)
{
...
...
@@ -725,7 +714,7 @@ uint32_t ulsch_encoding(uint8_t *a,
}
*/
for
(
i
=
0
;
i
<
Qprime_CQI
;
i
++
)
{
for
(
i
nt
i
=
0
;
i
<
Qprime_CQI
;
i
++
)
{
while
(
y
[
Q_m
*
j
]
!=
LTE_NULL
)
j
++
;
for
(
q
=
0
;
q
<
Q_m
;
q
++
)
{
...
...
@@ -788,7 +777,7 @@ uint32_t ulsch_encoding(uint8_t *a,
j
=
0
;
for
(
i
=
0
;
i
<
Qprime_ACK
;
i
++
)
{
for
(
i
nt
i
=
0
;
i
<
Qprime_ACK
;
i
++
)
{
r
=
Rmux_prime
-
1
-
(
i
>>
2
);
for
(
q
=
0
;
q
<
Q_m
;
q
++
)
{
...
...
@@ -808,7 +797,7 @@ uint32_t ulsch_encoding(uint8_t *a,
switch
(
Q_m
)
{
case
2
:
for
(
i
=
0
;
i
<
Cmux
;
i
++
)
for
(
i
nt
i
=
0
;
i
<
Cmux
;
i
++
)
for
(
r
=
0
;
r
<
Rmux_prime
;
r
++
)
{
yptr
=&
y
[((
r
*
Cmux
)
+
i
)
<<
1
];
ulsch
->
h
[
j
++
]
=
*
yptr
++
;
...
...
@@ -818,7 +807,7 @@ uint32_t ulsch_encoding(uint8_t *a,
break
;
case
4
:
for
(
i
=
0
;
i
<
Cmux
;
i
++
)
for
(
i
nt
i
=
0
;
i
<
Cmux
;
i
++
)
for
(
r
=
0
;
r
<
Rmux_prime
;
r
++
)
{
yptr
=
&
y
[((
r
*
Cmux
)
+
i
)
<<
2
];
ulsch
->
h
[
j
++
]
=
*
yptr
++
;
...
...
@@ -830,7 +819,7 @@ uint32_t ulsch_encoding(uint8_t *a,
break
;
case
6
:
for
(
i
=
0
;
i
<
Cmux
;
i
++
)
for
(
i
nt
i
=
0
;
i
<
Cmux
;
i
++
)
for
(
r
=
0
;
r
<
Rmux_prime
;
r
++
)
{
yptr
=
&
y
[((
r
*
Cmux
)
+
i
)
*
6
];
ulsch
->
h
[
j
++
]
=
*
yptr
++
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/nr_modulation.c
View file @
017fd225
...
...
@@ -226,10 +226,11 @@ void nr_modulation(uint32_t *in,
i
*=
24
;
bit_cnt
=
i
*
8
;
while
(
bit_cnt
<
length
)
{
x
=
*
((
uint32_t
*
)(
in_bytes
+
i
));
x1
=
x
&
4095
;
uint32_t
xx
;
memcpy
(
&
xx
,
in_bytes
+
i
,
sizeof
(
xx
));
x1
=
xx
&
4095
;
out64
[
j
++
]
=
nr_64qam_mod_table
[
x1
];
x1
=
(
x
>>
12
)
&
4095
;
x1
=
(
x
x
>>
12
)
&
4095
;
out64
[
j
++
]
=
nr_64qam_mod_table
[
x1
];
i
+=
3
;
bit_cnt
+=
24
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
View file @
017fd225
...
...
@@ -119,7 +119,7 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB,int slot, int first_symb,int num_symb
measurements
->
n0_subband_power
[
aarx
][
rb
]
=
0
;
}
int
offset0
=
(
slot
&
3
)
*
(
frame_parms
->
symbols_per_slot
*
frame_parms
->
ofdm_symbol_size
)
+
(
frame_parms
->
first_carrier_offset
+
(
rb
*
12
))
%
frame_parms
->
ofdm_symbol_size
;
if
((
gNB
->
rb_mask_ul
[
s
][
rb
>>
5
]
&
(
1
<<
(
rb
&
31
)))
==
0
)
{
// check that rb was not used in this subframe
if
((
gNB
->
rb_mask_ul
[
s
][
rb
>>
5
]
&
(
1U
<<
(
rb
&
31
)))
==
0
)
{
// check that rb was not used in this subframe
nb_symb
[
rb
]
++
;
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
int
offset
=
offset0
+
(
s
*
frame_parms
->
ofdm_symbol_size
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
017fd225
...
...
@@ -123,7 +123,6 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx,
rel15
->
dlDmrsSymbPos
);
n_ptrs
=
(
rel15
->
rbSize
+
rel15
->
PTRSFreqDensity
-
1
)
/
rel15
->
PTRSFreqDensity
;
}
int16_t
mod_ptrs
[
n_ptrs
<<
1
]
__attribute__
((
aligned
(
16
)));
/// CRC, coding, interleaving and rate matching
AssertFatal
(
harq
->
pdu
!=
NULL
,
"harq->pdu is null
\n
"
);
...
...
@@ -302,12 +301,14 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx,
/* calculate if current symbol is PTRS symbols */
ptrs_idx
=
0
;
int16_t
*
mod_ptrs
=
NULL
;
if
(
rel15
->
pduBitmap
&
0x1
)
{
ptrs_symbol
=
is_ptrs_symbol
(
l
,
dlPtrsSymPos
);
if
(
ptrs_symbol
)
{
/* PTRS QPSK Modulation for each OFDM symbol in a slot */
LOG_D
(
PHY
,
"Doing ptrs modulation for symbol %d, n_ptrs %d
\n
"
,
l
,
n_ptrs
);
int16_t
mod_ptrsBuf
[
n_ptrs
<<
1
]
__attribute__
((
aligned
(
16
)));
mod_ptrs
=
mod_ptrsBuf
;
nr_modulation
(
pdsch_dmrs
[
l
][
rel15
->
SCID
],
(
n_ptrs
<<
1
),
DMRS_MOD_ORDER
,
mod_ptrs
);
}
}
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
017fd225
...
...
@@ -569,7 +569,7 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
LOG_D
(
PHY
,
"symbol %d Filling rb_mask_ul rb_size %d
\n
"
,
symbol
,
ulsch_harq
->
ulsch_pdu
.
rb_size
);
for
(
rb
=
0
;
rb
<
ulsch_harq
->
ulsch_pdu
.
rb_size
;
rb
++
)
{
rb2
=
rb
+
ulsch_harq
->
ulsch_pdu
.
rb_start
+
ulsch_harq
->
ulsch_pdu
.
bwp_start
;
gNB
->
rb_mask_ul
[
symbol
][
rb2
>>
5
]
|=
(
1
<<
(
rb2
&
31
)
);
gNB
->
rb_mask_ul
[
symbol
][
rb2
>>
5
]
|=
1U
<<
(
rb2
&
31
);
}
}
}
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
017fd225
...
...
@@ -1321,8 +1321,7 @@ int is_ssb_in_slot(fapi_nr_config_request_t *config, int frame, int slot, NR_DL_
//uint8_t half_frame_index = fp->half_frame_bit;
//uint8_t i_ssb = fp->ssb_index;
uint8_t
Lmax
=
fp
->
Lmax
;
if
(
!
(
frame
%
(
1
<<
(
config
->
ssb_table
.
ssb_period
-
1
)))){
if
((
config
->
ssb_table
.
ssb_period
>
0
)
&&
!
(
frame
%
(
1
<<
(
config
->
ssb_table
.
ssb_period
-
1
))))
{
if
(
Lmax
<=
8
)
{
if
(
slot
<=
3
&&
(((
config
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
<<
2
*
slot
)
&
0x80000000
)
==
0x80000000
||
((
config
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
<<
(
2
*
slot
+
1
))
&
0x80000000
)
==
0x80000000
))
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
017fd225
...
...
@@ -512,12 +512,16 @@ int main(int argc, char **argv) {
int
re
;
int
s
,
Kr
,
Kr_bytes
;
LTE_DL_FRAME_PARMS
*
frame_parms
;
double
s_re0
[
30720
*
NB_ANTENNAS_TX
],
s_im0
[
30720
*
NB_ANTENNAS_TX
],
r_re0
[
30720
*
NB_ANTENNAS_RX
],
r_im0
[
30720
*
NB_ANTENNAS_RX
];
double
s_re1
[
30720
*
NB_ANTENNAS_TX
],
s_im1
[
30720
*
NB_ANTENNAS_TX
],
r_re1
[
30720
*
NB_ANTENNAS_RX
],
r_im1
[
30720
*
NB_ANTENNAS_RX
];
double
*
s_re
[
NB_ANTENNAS_TX
]
=
{
s_re0
,
s_re1
};
double
*
s_im
[
NB_ANTENNAS_TX
]
=
{
s_im0
,
s_im1
};
double
*
r_re
[
NB_ANTENNAS_RX
]
=
{
r_re0
,
r_re1
};
double
*
r_im
[
NB_ANTENNAS_RX
]
=
{
r_im0
,
r_im1
};
double
*
tmpTX
[
4
],
*
tmpRX
[
4
]
;
for
(
int
i
=
0
;
i
<
4
;
i
++
)
{
tmpTX
[
i
]
=
malloc
(
30720
*
NB_ANTENNAS_TX
*
sizeof
(
*
tmpTX
));
tmpRX
[
i
]
=
malloc
(
30720
*
NB_ANTENNAS_RX
*
sizeof
(
*
tmpRX
));
}
double
*
s_re
[
NB_ANTENNAS_TX
]
=
{
tmpTX
[
0
],
tmpTX
[
1
]};
double
*
s_im
[
NB_ANTENNAS_TX
]
=
{
tmpTX
[
2
],
tmpTX
[
3
]};
double
*
r_re
[
NB_ANTENNAS_RX
]
=
{
tmpRX
[
0
],
tmpRX
[
1
]};
double
*
r_im
[
NB_ANTENNAS_RX
]
=
{
tmpRX
[
2
],
tmpRX
[
3
]};
uint8_t
transmission_mode
=
1
,
n_tx_port
=
1
,
n_tx_phy
=
1
,
n_rx
=
2
;
int
eNB_id
=
0
;
unsigned
char
round
;
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/ulsim.c
View file @
017fd225
...
...
@@ -358,7 +358,7 @@ int main(int argc, char **argv) {
unsigned
short
input_buffer_length
;
unsigned
int
ret
;
unsigned
int
coded_bits_per_codeword
,
nsymb
;
unsigned
int
tx_lev
=
0
,
tx_lev_dB
=
0
,
trials
,
errs
[
5
]
=
{
0
,
0
,
0
,
0
,
0
},
round_trials
[
4
]
=
{
0
,
0
,
0
,
0
};
unsigned
int
tx_lev
=
0
,
tx_lev_dB
=
0
,
trials
,
errs
[
6
]
=
{
0
},
round_trials
[
4
]
=
{
0
};
FILE
*
bler_fd
=
NULL
;
char
bler_fname
[
512
];
FILE
*
time_meas_fd
=
NULL
;
...
...
@@ -387,7 +387,6 @@ int main(int argc, char **argv) {
double
cpu_freq_GHz
;
int
iter_trials
;
uint32_t
UL_alloc_pdu
;
int
s
,
Kr
,
Kr_bytes
;
int
dump_perf
=
0
;
static
int
dump_table
=
0
;
double
effective_rate
=
0
.
0
;
...
...
@@ -1233,20 +1232,21 @@ int main(int argc, char **argv) {
if
(
n_frames
==
1
)
{
printf
(
"ULSCH errors found o_ACK[0]= %d
\n
"
,
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
o_ACK
[
0
]);
#ifdef DUMP_EACH_VALUE
int
Kr_bytes
;
for
(
s
=
0
;
s
<
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
C
;
s
++
)
{
if
(
s
<
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
Cminus
)
Kr
=
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
Kminus
;
Kr
_bytes
=
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
Kminus
;
else
Kr
=
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
Kplus
;
Kr_bytes
=
Kr
>>
3
;
Kr_bytes
=
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
Kplus
;
Kr_bytes
=
Kr_bytes
>>
3
;
printf
(
"Decoded_output (Segment %d):
\n
"
,
s
);
for
(
i
=
0
;
i
<
Kr_bytes
;
i
++
)
printf
(
"%d : %x (%x)
\n
"
,
i
,
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
c
[
s
][
i
],
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
c
[
s
][
i
]
^
UE
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
c
[
s
][
i
]);
}
#endif
dump_ulsch
(
eNB
,
eNB
->
proc
.
frame_rx
,
subframe
,
0
,
round
);
round
=
5
;
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
017fd225
...
...
@@ -1142,7 +1142,7 @@ int main(int argc, char **argv)
Sched_INFO
.
frame
=
frame
;
Sched_INFO
.
slot
=
slot
;
Sched_INFO
.
DL_req
=
&
gNB_mac
->
DL_req
[
0
];
Sched_INFO
.
UL_tti_req
=
gNB_mac
->
UL_tti_req_ahead
[
slot
];
Sched_INFO
.
UL_tti_req
=
gNB_mac
->
UL_tti_req_ahead
[
0
];
Sched_INFO
.
UL_dci_req
=
NULL
;
Sched_INFO
.
TX_req
=
&
gNB_mac
->
TX_req
[
0
];
pushNotifiedFIFO
(
gNB
->
L1_tx_free
,
msgL1Tx
);
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
017fd225
...
...
@@ -190,7 +190,7 @@ void config_common_ue_sa(NR_UE_MAC_INST_t *mac,
cfg
->
ssb_table
.
ssb_subcarrier_offset
=
mac
->
ssb_subcarrier_offset
;
if
(
mac
->
frequency_range
==
FR1
){
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
=
scc
->
ssb_PositionsInBurst
.
inOneGroup
.
buf
[
0
]
<<
24
;
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
=
((
uint32_t
)
scc
->
ssb_PositionsInBurst
.
inOneGroup
.
buf
[
0
])
<<
24
;
cfg
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
=
0
;
}
else
{
...
...
@@ -353,7 +353,7 @@ void config_common_ue(NR_UE_MAC_INST_t *mac,
cfg
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
=
0
;
break
;
case
2
:
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
=
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
]
<<
24
;
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
=
((
uint32_t
)
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
])
<<
24
;
cfg
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
=
0
;
break
;
case
3
:
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/mac_proto.h
View file @
017fd225
...
...
@@ -257,13 +257,6 @@ void get_bwp_info(NR_UE_MAC_INST_t *mac,
NR_BWP_DownlinkCommon_t
*
get_bwp_downlink_common
(
NR_UE_MAC_INST_t
*
mac
,
NR_BWP_Id_t
dl_bwp_id
);
uint8_t
nr_extract_dci_info
(
NR_UE_MAC_INST_t
*
mac
,
uint8_t
dci_format
,
uint8_t
dci_length
,
uint16_t
rnti
,
uint64_t
*
dci_pdu
,
dci_pdu_rel15_t
*
nr_pdci_info_extracted
);
NR_PUSCH_TimeDomainResourceAllocationList_t
*
choose_ul_tda_list
(
const
NR_PUSCH_Config_t
*
pusch_Config
,
NR_PUSCH_ConfigCommon_t
*
pusch_ConfigCommon
);
NR_PDSCH_TimeDomainResourceAllocationList_t
*
choose_dl_tda_list
(
NR_PDSCH_Config_t
*
pdsch_Config
,
NR_PDSCH_ConfigCommon_t
*
pdsch_ConfigCommon
);
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
017fd225
...
...
@@ -134,6 +134,13 @@ const initial_pucch_resource_t initial_pucch_resource[16] = {
};
static
uint8_t
nr_extract_dci_info
(
NR_UE_MAC_INST_t
*
mac
,
uint8_t
dci_format
,
uint8_t
dci_length
,
uint16_t
rnti
,
uint64_t
*
dci_pdu
,
dci_pdu_rel15_t
*
nr_pdci_info_extracted
);
void
nr_ue_init_mac
(
module_id_t
module_idP
)
{
int
i
;
...
...
@@ -985,7 +992,8 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
if
(
dci
->
tpc
==
3
)
dlsch_config_pdu_1_0
->
accumulated_delta_PUCCH
=
3
;
// Sanity check for pucch_resource_indicator value received to check for false DCI.
valid
=
0
;
if
(
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
if
(
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
&&
...
...
@@ -1512,13 +1520,12 @@ void nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac,
NR_BWP_UplinkCommon_t
*
initialUplinkBWP
;
if
(
mac
->
scc
)
initialUplinkBWP
=
mac
->
scc
->
uplinkConfigCommon
->
initialUplinkBWP
;
else
initialUplinkBWP
=
&
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
;
NR_BWP_Uplink_t
*
ubwp
=
mac
->
ULbwp
[
bwp_id
-
1
];
if
(
mac
->
cg
&&
ubwp
&&
if
(
mac
->
cg
&&
bwp_id
>
1
&&
mac
->
ULbwp
[
bwp_id
-
1
]
&&
mac
->
cg
->
spCellConfig
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
)
{
scs
=
ubwp
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
;
scs
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
;
}
else
scs
=
initialUplinkBWP
->
genericParameters
.
subcarrierSpacing
;
...
...
@@ -2340,17 +2347,16 @@ bool trigger_periodic_scheduling_request(NR_UE_MAC_INST_t *mac,
NR_BWP_Id_t
bwp_id
=
mac
->
UL_BWP_Id
;
NR_PUCCH_Config_t
*
pucch_Config
=
NULL
;
int
scs
;
NR_BWP_Uplink_t
*
ubwp
=
mac
->
ULbwp
[
bwp_id
-
1
];
NR_BWP_UplinkCommon_t
*
initialUplinkBWP
;
if
(
mac
->
scc
)
initialUplinkBWP
=
mac
->
scc
->
uplinkConfigCommon
->
initialUplinkBWP
;
else
initialUplinkBWP
=
&
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
;
if
(
mac
->
cg
&&
ubwp
&&
if
(
mac
->
cg
&&
bwp_id
&&
mac
->
ULbwp
[
bwp_id
-
1
]
&&
mac
->
cg
->
spCellConfig
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
&&
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
)
{
scs
=
ubwp
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
;
scs
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
;
}
else
scs
=
initialUplinkBWP
->
genericParameters
.
subcarrierSpacing
;
...
...
@@ -2732,7 +2738,7 @@ int get_n_rb(NR_UE_MAC_INST_t *mac, int rnti_type){
}
uint8_t
nr_extract_dci_info
(
NR_UE_MAC_INST_t
*
mac
,
static
uint8_t
nr_extract_dci_info
(
NR_UE_MAC_INST_t
*
mac
,
uint8_t
dci_format
,
uint8_t
dci_size
,
uint16_t
rnti
,
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
017fd225
...
...
@@ -118,12 +118,13 @@ long get_k2(NR_UE_MAC_INST_t *mac, uint8_t time_domain_ind) {
NR_BWP_Id_t
ul_bwp_id
=
mac
->
UL_BWP_Id
;
// Get K2 from RRC configuration
NR_PUSCH_Config_t
*
pusch_config
=
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
:
NULL
;
NR_PUSCH_Config_t
*
pusch_config
=
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
:
NULL
;
NR_PUSCH_TimeDomainResourceAllocationList_t
*
pusch_TimeDomainAllocationList
=
NULL
;
if
(
pusch_config
&&
pusch_config
->
pusch_TimeDomainAllocationList
)
{
pusch_TimeDomainAllocationList
=
pusch_config
->
pusch_TimeDomainAllocationList
->
choice
.
setup
;
}
else
if
(
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
else
if
(
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Common
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Common
->
pusch_ConfigCommon
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Common
->
pusch_ConfigCommon
->
choice
.
setup
&&
...
...
@@ -169,7 +170,7 @@ fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int sl
// Calculate the index of the UL slot in mac->ul_config_request list. This is
// based on the TDD pattern (slot configuration period) and number of UL+mixed
// slots in the period. TS 38.213 Sec 11.1
int
mu
=
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
int
mu
=
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
:
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
genericParameters
.
subcarrierSpacing
;
const
int
n
=
nr_slots_per_frame
[
mu
];
...
...
@@ -205,7 +206,7 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
srs_config
=
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
->
choice
.
setup
;
}
NR_PUSCH_Config_t
*
pusch_Config
=
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
NR_PUSCH_Config_t
*
pusch_Config
=
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
:
(
ubwpd
?
ubwpd
->
pusch_Config
->
choice
.
setup
:
...
...
@@ -361,7 +362,7 @@ void ul_ports_config(NR_UE_MAC_INST_t *mac, int *n_front_load_symb, nfapi_nr_ue_
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
)
ubwpd
=
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
;
NR_PUSCH_Config_t
*
pusch_Config
=
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
:
(
ubwpd
?
ubwpd
->
pusch_Config
->
choice
.
setup
:
NULL
);
NR_PUSCH_Config_t
*
pusch_Config
=
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
:
(
ubwpd
?
ubwpd
->
pusch_Config
->
choice
.
setup
:
NULL
);
AssertFatal
(
pusch_Config
!=
NULL
,
"pusch_Config shouldn't be null
\n
"
);
long
transformPrecoder
;
...
...
@@ -581,7 +582,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
if
(
rar_grant
)
{
// Note: for Msg3 or MsgA PUSCH transmission the N_PRB_oh is always set to 0
NR_BWP_Uplink_t
*
ubwp
=
mac
->
ULbwp
[
ul_bwp_id
-
1
]
;
NR_BWP_Uplink_t
*
ubwp
=
ul_bwp_id
>
0
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
:
NULL
;
NR_BWP_UplinkDedicated_t
*
ibwp
;
int
scs
,
abwp_start
,
abwp_size
,
startSymbolAndLength
,
mappingtype
;
NR_PUSCH_Config_t
*
pusch_Config
=
NULL
;
...
...
@@ -839,11 +840,15 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
mappingtype
,
add_pos
,
dmrslength
,
pusch_config_pdu
->
start_symbol_index
,
mac
->
scc
?
mac
->
scc
->
dmrs_TypeA_Position
:
mac
->
mib
->
dmrs_TypeA_Position
);
if
(
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
pusch_config_pdu
->
transform_precoding
==
NR_PUSCH_Config__transformPrecoder_disabled
)
{
if
(
*
dci_format
!=
NR_UL_DCI_FORMAT_0_1
)
{
if
(
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
pusch_config_pdu
->
transform_precoding
==
NR_PUSCH_Config__transformPrecoder_disabled
&&
*
dci_format
!=
NR_UL_DCI_FORMAT_0_1
)
{
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
1
;
}
}
else
if
(
*
dci_format
==
NR_UL_DCI_FORMAT_0_0
||
(
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
pusch_config_pdu
->
transform_precoding
==
NR_PUSCH_Config__transformPrecoder_enabled
))
{
}
else
if
(
*
dci_format
==
NR_UL_DCI_FORMAT_0_0
||
(
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
pusch_config_pdu
->
transform_precoding
==
NR_PUSCH_Config__transformPrecoder_enabled
))
{
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
2
;
}
...
...
@@ -859,7 +864,8 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
else
N_PRB_oh
=
0
;
/* PTRS */
if
(
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
if
(
ul_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pusch_Config
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
&&
...
...
@@ -1086,10 +1092,11 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
dcireq
.
dl_config_req
=
mac
->
dl_config_request
;
fill_scheduled_response
(
&
scheduled_response
,
&
dcireq
.
dl_config_req
,
NULL
,
NULL
,
mod_id
,
cc_id
,
rx_frame
,
rx_slot
,
dl_info
->
thread_id
,
dl_info
->
phy_data
);
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
)
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
)
{
LOG_D
(
NR_MAC
,
"1# scheduled_response transmitted, %d, %d
\n
"
,
rx_frame
,
rx_slot
);
mac
->
if_module
->
scheduled_response
(
&
scheduled_response
);
}
}
else
{
// this is for Msg2/Msg4
if
(
mac
->
ra
.
ra_state
>=
WAIT_RAR
)
{
...
...
@@ -1557,15 +1564,14 @@ int nr_ue_pusch_scheduler(NR_UE_MAC_INST_t *mac,
int
delta
=
0
;
NR_BWP_Id_t
ul_bwp_id
=
mac
->
UL_BWP_Id
;
NR_BWP_Uplink_t
*
ubwp
=
mac
->
ULbwp
[
ul_bwp_id
-
1
];
// Get the numerology to calculate the Tx frame and slot
int
mu
=
u
bwp
?
ubwp
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
:
int
mu
=
u
l_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
:
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
genericParameters
.
subcarrierSpacing
;
NR_PUSCH_TimeDomainResourceAllocationList_t
*
pusch_TimeDomainAllocationList
=
u
bwp
?
ubwp
->
bwp_Common
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
:
NR_PUSCH_TimeDomainResourceAllocationList_t
*
pusch_TimeDomainAllocationList
=
u
l_bwp_id
>
0
&&
mac
->
ULbwp
[
ul_bwp_id
-
1
]
?
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Common
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
:
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
;
// k2 as per 3GPP TS 38.214 version 15.9.0 Release 15 ch 6.1.2.1.1
// PUSCH time domain resource allocation is higher layer configured from uschTimeDomainAllocationList in either pusch-ConfigCommon
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
017fd225
...
...
@@ -366,7 +366,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts,
cfg
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
.
value
=
0
;
break
;
case
2
:
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
.
value
=
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
]
<<
24
;
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
.
value
=
((
uint32_t
)
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
])
<<
24
;
cfg
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
.
value
=
0
;
break
;
case
3
:
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
017fd225
...
...
@@ -1349,6 +1349,8 @@ void nr_schedule_ue_spec(module_id_t module_id,
header
->
L
=
htons
(
bufEnd
-
buf
);
dlsch_total_bytes
+=
bufEnd
-
buf
;
for
(;
((
intptr_t
)
buf
)
%
4
;
buf
++
)
*
buf
=
lrand48
()
&
0xff
;
for
(;
buf
<
bufEnd
-
3
;
buf
+=
4
)
{
uint32_t
*
buf32
=
(
uint32_t
*
)
buf
;
*
buf32
=
lrand48
();
...
...
This diff is collapsed.
Click to expand it.
openair2/RRC/NR_UE/rrc_UE.c
View file @
017fd225
...
...
@@ -1320,11 +1320,11 @@ nr_rrc_ue_process_masterCellGroup(
//TODO (perform SCell addition/modification as specified in 5.3.5.5.9)
}
if
(
cellGroupConfig
->
ext2
->
bh_RLC_ChannelToReleaseList_r16
!=
NULL
){
if
(
cellGroupConfig
->
ext2
!=
NULL
&&
cellGroupConfig
->
ext2
->
bh_RLC_ChannelToReleaseList_r16
!=
NULL
){
//TODO (perform the BH RLC channel addition/modification as specified in 5.3.5.5.11)
}
if
(
cellGroupConfig
->
ext2
->
bh_RLC_ChannelToAddModList_r16
!=
NULL
){
if
(
cellGroupConfig
->
ext2
!=
NULL
&&
cellGroupConfig
->
ext2
->
bh_RLC_ChannelToAddModList_r16
!=
NULL
){
//TODO (perform the BH RLC channel addition/modification as specified in 5.3.5.5.11)
}
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment