Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG
OpenXG UE
Commits
68e7c2b4
Commit
68e7c2b4
authored
Mar 16, 2021
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/ptrs_rrc_config' into integration_2021_wk11
parents
9f97bc46
f32e5944
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
787 additions
and
79 deletions
+787
-79
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+13
-6
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
+1
-0
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+8
-0
openair2/COMMON/rrc_messages_types.h
openair2/COMMON/rrc_messages_types.h
+2
-0
openair2/GNB_APP/RRC_nr_paramsvalues.h
openair2/GNB_APP/RRC_nr_paramsvalues.h
+38
-0
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+190
-0
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+82
-1
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+5
-0
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+1
-1
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+15
-22
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+9
-11
openair2/RRC/NR/nr_rrc_proto.h
openair2/RRC/NR/nr_rrc_proto.h
+11
-9
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+2
-0
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+11
-1
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+68
-28
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf
...RIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf
+331
-0
No files found.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
68e7c2b4
...
...
@@ -204,6 +204,7 @@ int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req){ return(0); }
openair0_config_t
openair0_cfg
[
MAX_CARDS
];
void
update_ptrs_config
(
NR_CellGroupConfig_t
*
secondaryCellGroup
,
uint16_t
*
rbSize
,
uint8_t
*
mcsIndex
,
int8_t
*
ptrs_arg
);
void
update_dmrs_config
(
NR_CellGroupConfig_t
*
scg
,
PHY_VARS_NR_UE
*
ue
,
int8_t
*
dmrs_arg
);
extern
void
fix_scd
(
NR_ServingCellConfig_t
*
scd
);
// forward declaration
/* specific dlsim DL preprocessor: uses rbStart/rbSize/mcs from command line of
dlsim, does not search for CCE/PUCCH occasion but simply sets to 0 */
...
...
@@ -673,6 +674,7 @@ int main(int argc, char **argv)
rrc
.
carrier
.
servingcellconfigcommon
=
calloc
(
1
,
sizeof
(
*
rrc
.
carrier
.
servingcellconfigcommon
));
NR_ServingCellConfigCommon_t
*
scc
=
rrc
.
carrier
.
servingcellconfigcommon
;
NR_ServingCellConfig_t
*
scd
=
calloc
(
1
,
sizeof
(
NR_ServingCellConfig_t
));
NR_CellGroupConfig_t
*
secondaryCellGroup
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
));
prepare_scc
(
rrc
.
carrier
.
servingcellconfigcommon
);
uint64_t
ssb_bitmap
;
...
...
@@ -680,13 +682,18 @@ int main(int argc, char **argv)
fix_scc
(
scc
,
ssb_bitmap
);
fill_default_secondaryCellGroup
(
scc
,
secondaryCellGroup
,
0
,
1
,
n_tx
,
0
);
prepare_scd
(
scd
);
fill_default_secondaryCellGroup
(
scc
,
scd
,
secondaryCellGroup
,
0
,
1
,
n_tx
,
0
);
/* RRC parameter validation for secondaryCellGroup */
fix_scd
(
scd
);
/* -U option modify DMRS */
if
(
modify_dmrs
)
{
update_dmrs_config
(
secondaryCellGroup
,
NULL
,
dmrs_arg
);
...
...
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
View file @
68e7c2b4
...
...
@@ -222,6 +222,7 @@ void fill_scc(NR_ServingCellConfigCommon_t *scc,uint64_t *ssb_bitmap,int N_RB_DL
void
fix_scc
(
NR_ServingCellConfigCommon_t
*
scc
,
uint64_t
ssbmap
);
void
prepare_scc
(
NR_ServingCellConfigCommon_t
*
scc
);
void
prepare_scd
(
NR_ServingCellConfig_t
*
scd
);
ngap_gNB_config_t
ngap_config
;
uint32_t
ngap_generate_gNB_id
(
void
)
{
return
0
;}
void
configure_nfapi_pnf
(
char
*
vnf_ip_addr
,
int
vnf_p5_port
,
char
*
pnf_ip_addr
,
int
pnf_p7_port
,
int
vnf_p7_port
)
{
return
;}
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
68e7c2b4
...
...
@@ -82,6 +82,7 @@ double cpuf;
//uint8_t nfapi_mode = 0;
uint64_t
downlink_frequency
[
MAX_NUM_CCs
][
4
];
extern
void
fix_scd
(
NR_ServingCellConfig_t
*
scd
);
// forward declaration
int8_t
nr_mac_rrc_data_ind_ue
(
const
module_id_t
module_id
,
const
int
CC_id
,
const
uint8_t
gNB_index
,
const
int8_t
channel
,
const
uint8_t
*
pduP
,
const
sdu_size_t
pdu_len
)
{
return
0
;
}
...
...
@@ -638,6 +639,7 @@ int main(int argc, char **argv)
rrc
.
carrier
.
servingcellconfigcommon
=
calloc
(
1
,
sizeof
(
*
rrc
.
carrier
.
servingcellconfigcommon
));
NR_ServingCellConfigCommon_t
*
scc
=
rrc
.
carrier
.
servingcellconfigcommon
;
NR_ServingCellConfig_t
*
scd
=
calloc
(
1
,
sizeof
(
NR_ServingCellConfig_t
));
NR_CellGroupConfig_t
*
secondaryCellGroup
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
));
prepare_scc
(
rrc
.
carrier
.
servingcellconfigcommon
);
uint64_t
ssb_bitmap
;
...
...
@@ -645,7 +647,10 @@ int main(int argc, char **argv)
fix_scc
(
scc
,
ssb_bitmap
);
prepare_scd
(
scd
);
fill_default_secondaryCellGroup
(
scc
,
scd
,
secondaryCellGroup
,
0
,
1
,
...
...
@@ -654,6 +659,9 @@ int main(int argc, char **argv)
// xer_fprint(stdout, &asn_DEF_NR_CellGroupConfig, (const void*)secondaryCellGroup);
/* RRC parameter validation for secondaryCellGroup */
fix_scd
(
scd
);
AssertFatal
((
gNB
->
if_inst
=
NR_IF_Module_init
(
0
))
!=
NULL
,
"Cannot register interface"
);
gNB
->
if_inst
->
NR_PHY_config_req
=
nr_phy_config_request
;
...
...
openair2/COMMON/rrc_messages_types.h
View file @
68e7c2b4
...
...
@@ -42,6 +42,7 @@
#include "LTE_SL-DiscResourcePool-r12.h"
#include "NR_RACH-ConfigCommon.h"
#include "NR_ServingCellConfigCommon.h"
#include "NR_ServingCellConfig.h"
//-------------------------------------------------------------------------------------------//
// Messages for RRC logging
#if defined(DISABLE_ITTI_XER_PRINT)
...
...
@@ -405,6 +406,7 @@ typedef struct NRRrcConfigurationReq_s {
uint16_t
mnc
[
PLMN_LIST_MAX_SIZE
];
uint8_t
mnc_digit_length
[
PLMN_LIST_MAX_SIZE
];
NR_ServingCellConfigCommon_t
*
scc
;
NR_ServingCellConfig_t
*
scd
;
int
ssb_SubcarrierOffset
;
int
pdsch_AntennaPorts
;
int
pusch_TargetSNRx10
;
...
...
openair2/GNB_APP/RRC_nr_paramsvalues.h
View file @
68e7c2b4
...
...
@@ -211,6 +211,24 @@
#define CARRIERBANDWIDTH_OKVALUES {11,18,24,25,31,32,38,51,52,65,66,78,79,93,106,107,121,132,133,135,160,162,189,216,217,245,264,270,273}
/* Serving Cell Config Dedicated */
#define GNB_CONFIG_STRING_SERVINGCELLCONFIGDEDICATED "servingCellConfigDedicated"
#define GNB_CONFIG_STRING_DLPTRSFREQDENSITY0_0 "dl_ptrsFreqDensity0_0"
#define GNB_CONFIG_STRING_DLPTRSFREQDENSITY1_0 "dl_ptrsFreqDensity1_0"
#define GNB_CONFIG_STRING_DLPTRSTIMEDENSITY0_0 "dl_ptrsTimeDensity0_0"
#define GNB_CONFIG_STRING_DLPTRSTIMEDENSITY1_0 "dl_ptrsTimeDensity1_0"
#define GNB_CONFIG_STRING_DLPTRSTIMEDENSITY2_0 "dl_ptrsTimeDensity2_0"
#define GNB_CONFIG_STRING_DLPTRSEPRERATIO_0 "dl_ptrsEpreRatio_0"
#define GNB_CONFIG_STRING_DLPTRSREOFFSET_0 "dl_ptrsReOffset_0"
#define GNB_CONFIG_STRING_ULPTRSFREQDENSITY0_0 "ul_ptrsFreqDensity0_0"
#define GNB_CONFIG_STRING_ULPTRSFREQDENSITY1_0 "ul_ptrsFreqDensity1_0"
#define GNB_CONFIG_STRING_ULPTRSTIMEDENSITY0_0 "ul_ptrsTimeDensity0_0"
#define GNB_CONFIG_STRING_ULPTRSTIMEDENSITY1_0 "ul_ptrsTimeDensity1_0"
#define GNB_CONFIG_STRING_ULPTRSTIMEDENSITY2_0 "ul_ptrsTimeDensity2_0"
#define GNB_CONFIG_STRING_ULPTRSREOFFSET_0 "ul_ptrsReOffset_0"
#define GNB_CONFIG_STRING_ULPTRSMAXPORTS_0 "ul_ptrsMaxPorts_0"
#define GNB_CONFIG_STRING_ULPTRSPOWER_0 "ul_ptrsPower_0"
/*--------------------------------------------------------------------------------------------------------------------*/
/* pdcch_ConfigSIB1 parameters */
/*--------------------------------------------------------------------------------------------------------------------*/
...
...
@@ -395,6 +413,26 @@
{GNB_CONFIG_STRING_SSPBCHBLOCKPOWER,NULL,0,i64ptr:&scc->ss_PBCH_BlockPower,defint64val:20,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_MSG1SUBCARRIERSPACING,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg1_SubcarrierSpacing,defintval:-1,TYPE_INT64,0}}
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Serving Cell Config Dedicated configuration parameters */
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define SCDPARAMS_DESC(scd) { \
{GNB_CONFIG_STRING_DLPTRSFREQDENSITY0_0,NULL,0,i64ptr:scd->downlinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->frequencyDensity->list.array[0],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_DLPTRSFREQDENSITY1_0,NULL,0,i64ptr:scd->downlinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->frequencyDensity->list.array[1],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_DLPTRSTIMEDENSITY0_0,NULL,0,i64ptr:scd->downlinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->timeDensity->list.array[0],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_DLPTRSTIMEDENSITY1_0,NULL,0,i64ptr:scd->downlinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->timeDensity->list.array[1],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_DLPTRSTIMEDENSITY2_0,NULL,0,i64ptr:scd->downlinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->timeDensity->list.array[2],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_DLPTRSEPRERATIO_0,NULL,0,i64ptr:scd->downlinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->epre_Ratio,defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_DLPTRSREOFFSET_0,NULL,0,i64ptr:scd->downlinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->resourceElementOffset,defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_ULPTRSFREQDENSITY0_0,NULL,0,i64ptr:scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->phaseTrackingRS->choice.setup->transformPrecoderDisabled->frequencyDensity->list.array[0],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_ULPTRSFREQDENSITY1_0,NULL,0,i64ptr:scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->phaseTrackingRS->choice.setup->transformPrecoderDisabled->frequencyDensity->list.array[1],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_ULPTRSTIMEDENSITY0_0,NULL,0,i64ptr:scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->phaseTrackingRS->choice.setup->transformPrecoderDisabled->timeDensity->list.array[0],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_ULPTRSTIMEDENSITY1_0,NULL,0,i64ptr:scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->phaseTrackingRS->choice.setup->transformPrecoderDisabled->timeDensity->list.array[1],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_ULPTRSTIMEDENSITY2_0,NULL,0,i64ptr:scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->phaseTrackingRS->choice.setup->transformPrecoderDisabled->timeDensity->list.array[2],defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_ULPTRSREOFFSET_0,NULL,0,i64ptr:scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->phaseTrackingRS->choice.setup->transformPrecoderDisabled->resourceElementOffset,defint64val:-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_ULPTRSMAXPORTS_0,NULL,0,i64ptr:&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->phaseTrackingRS->choice.setup->transformPrecoderDisabled->maxNrofPorts,defint64val:0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_ULPTRSPOWER_0,NULL,0,i64ptr:&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->phaseTrackingRS->choice.setup->transformPrecoderDisabled->ptrs_Power,defint64val:0,TYPE_INT64,0}}
...
...
openair2/GNB_APP/gnb_config.c
View file @
68e7c2b4
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
68e7c2b4
...
...
@@ -2999,7 +2999,12 @@ bool set_dl_ptrs_values(NR_PTRS_DownlinkConfig_t *ptrs_config,
valid
=
false
;
return
valid
;
}
//printf("[MAC] PTRS is set K= %u L= %u\n", *K_ptrs,1<<*L_ptrs);
/* Moved below check from scheduler function to here */
if
(
*
L_ptrs
>=
NrOfSymbols
)
{
valid
=
false
;
return
valid
;
}
return
valid
;
}
...
...
@@ -3373,3 +3378,79 @@ int get_type0_PDCCH_CSS_config_parameters(NR_Type0_PDCCH_CSS_config_t *type0_PDC
return
0
;
}
/* extract UL PTRS values from RRC and validate it based upon 38.214 6.2.3 */
bool
set_ul_ptrs_values
(
NR_PTRS_UplinkConfig_t
*
ul_ptrs_config
,
uint16_t
rbSize
,
uint8_t
mcsIndex
,
uint8_t
mcsTable
,
uint8_t
*
K_ptrs
,
uint8_t
*
L_ptrs
,
uint8_t
*
reOffset
,
uint8_t
*
maxNumPorts
,
uint8_t
*
ulPower
,
uint8_t
NrOfSymbols
)
{
bool
valid
=
true
;
/* as defined in T 38.214 6.2.3 */
if
(
rbSize
<
3
)
{
valid
=
false
;
return
valid
;
}
/* Check for Frequency Density values */
if
(
ul_ptrs_config
->
transformPrecoderDisabled
->
frequencyDensity
->
list
.
count
<
2
)
{
/* Default value for K_PTRS = 2 as defined in T 38.214 6.2.3 */
*
K_ptrs
=
2
;
}
else
{
*
K_ptrs
=
get_K_ptrs
(
*
ul_ptrs_config
->
transformPrecoderDisabled
->
frequencyDensity
->
list
.
array
[
0
],
*
ul_ptrs_config
->
transformPrecoderDisabled
->
frequencyDensity
->
list
.
array
[
1
],
rbSize
);
}
/* Check for time Density values */
if
(
ul_ptrs_config
->
transformPrecoderDisabled
->
timeDensity
->
list
.
count
<
3
)
{
*
L_ptrs
=
0
;
}
else
{
*
L_ptrs
=
get_L_ptrs
(
*
ul_ptrs_config
->
transformPrecoderDisabled
->
timeDensity
->
list
.
array
[
0
],
*
ul_ptrs_config
->
transformPrecoderDisabled
->
timeDensity
->
list
.
array
[
1
],
*
ul_ptrs_config
->
transformPrecoderDisabled
->
timeDensity
->
list
.
array
[
2
],
mcsIndex
,
mcsTable
);
}
*
reOffset
=
*
ul_ptrs_config
->
transformPrecoderDisabled
->
resourceElementOffset
;
*
maxNumPorts
=
ul_ptrs_config
->
transformPrecoderDisabled
->
maxNrofPorts
;
*
ulPower
=
ul_ptrs_config
->
transformPrecoderDisabled
->
ptrs_Power
;
/* If either or both of the parameters PT-RS time density (LPT-RS) and PT-RS frequency density (KPT-RS), shown in Table
* 6.2.3.1-1 and Table 6.2.3.1-2, indicates that 'PT-RS not present', the UE shall assume that PT-RS is not present
*/
if
(
*
K_ptrs
==
2
||
*
K_ptrs
==
4
)
{
valid
=
true
;
}
else
{
valid
=
false
;
return
valid
;
}
if
(
*
L_ptrs
==
0
||
*
L_ptrs
==
1
||
*
L_ptrs
==
2
)
{
valid
=
true
;
}
else
{
valid
=
false
;
return
valid
;
}
/* PTRS is not present also :
* When the UE is receiving a PUSCH with allocation duration of 4 symbols and if LPT-RS is set to 4, the UE shall assume
* PT-RS is not transmitted
* When the UE is receiving a PUSCH with allocation duration of 2 symbols as defined in Clause 6.4.1.2.2 of [4, TS
* 38.211] and if LPT-RS is set to 2 or 4, the UE shall assume PT-RS is not transmitted.
*/
if
((
NrOfSymbols
==
4
&&
*
L_ptrs
==
2
)
||
((
NrOfSymbols
==
2
&&
*
L_ptrs
>
0
)))
{
valid
=
false
;
return
valid
;
}
/* Moved below check from nr_ue_scheduler function to here */
if
(
*
L_ptrs
>=
NrOfSymbols
)
{
valid
=
false
;
return
valid
;
}
return
valid
;
}
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
68e7c2b4
...
...
@@ -141,6 +141,11 @@ bool set_dl_ptrs_values(NR_PTRS_DownlinkConfig_t *ptrs_config,
uint8_t
*
nERatio
,
uint8_t
*
reOffset
,
uint8_t
NrOfSymbols
);
bool
set_ul_ptrs_values
(
NR_PTRS_UplinkConfig_t
*
ul_ptrs_config
,
uint16_t
rbSize
,
uint8_t
mcsIndex
,
uint8_t
mcsTable
,
uint8_t
*
K_ptrs
,
uint8_t
*
L_ptrs
,
uint8_t
*
reOffset
,
uint8_t
*
maxNumPorts
,
uint8_t
*
ulPower
,
uint8_t
NrOfSymbols
);
uint8_t
get_num_dmrs_symbols
(
NR_PDSCH_Config_t
*
pdsch_Config
,
int
dmrs_TypeA_Position
,
int
NrOfSymbols
);
/* \brief Set the transform precoding according to 6.1.3 of 3GPP TS 38.214 version 16.3.0 Release 16
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
68e7c2b4
...
...
@@ -583,7 +583,6 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
}
}
break
;
}
...
...
@@ -1020,6 +1019,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
&
dlsch_config_pdu_1_1
->
PTRSReOffset
,
dlsch_config_pdu_1_1
->
number_symbols
);
if
(
valid_ptrs_setup
==
true
)
{
dlsch_config_pdu_1_1
->
pduBitmap
|=
0x1
;
LOG_D
(
MAC
,
"DL PTRS values: PTRS time den: %d, PTRS freq den: %d
\n
"
,
dlsch_config_pdu_1_1
->
PTRSTimeDensity
,
dlsch_config_pdu_1_1
->
PTRSFreqDensity
);
}
}
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
68e7c2b4
...
...
@@ -561,20 +561,11 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
}
else
if
(
dci
)
{
int
target_ss
;
uint8_t
ptrs_time_density
;
uint8_t
ptrs_freq_density
;
nfapi_nr_ue_ptrs_ports_t
ptrs_ports_list
;
bool
valid_ptrs_setup
=
0
;
uint16_t
n_RB_ULBWP
=
NRRIV2BW
(
mac
->
ULbwp
[
0
]
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
fapi_nr_pusch_config_dedicated_t
*
pusch_config_dedicated
=
&
mac
->
phy_config
.
config_req
.
ul_bwp_dedicated
.
pusch_config_dedicated
;
NR_PUSCH_Config_t
*
pusch_Config
=
mac
->
ULbwp
[
0
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
;
// These should come from RRC config!!!
uint8_t
ptrs_mcs1
=
2
;
uint8_t
ptrs_mcs2
=
4
;
uint8_t
ptrs_mcs3
=
10
;
uint16_t
n_rb0
=
25
;
uint16_t
n_rb1
=
75
;
// Basic sanity check for MCS value to check for a false or erroneous DCI
if
(
dci
->
mcs
>
28
)
{
LOG_W
(
MAC
,
"MCS value %d out of bounds! Possibly due to false DCI. Ignoring DCI!
\n
"
,
dci
->
mcs
);
...
...
@@ -690,12 +681,6 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
pusch_config_pdu
->
absolute_delta_PUSCH
=
4
;
}
ptrs_time_density
=
get_L_ptrs
(
ptrs_mcs1
,
ptrs_mcs2
,
ptrs_mcs3
,
pusch_config_pdu
->
mcs_index
,
pusch_config_pdu
->
mcs_table
);
ptrs_freq_density
=
get_K_ptrs
(
n_rb0
,
n_rb1
,
pusch_config_pdu
->
rb_size
);
// PTRS ports configuration
// TbD: ptrs_dmrs_port and ptrs_port_index are not initialised!
ptrs_ports_list
.
ptrs_re_offset
=
0
;
/* DMRS */
l_prime_mask
=
get_l_prime
(
pusch_config_pdu
->
nr_of_symbols
,
typeB
,
pusch_dmrs_pos0
,
pusch_len1
);
if
(
pusch_config_pdu
->
transform_precoding
==
transform_precoder_disabled
)
...
...
@@ -709,12 +694,20 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
}
/* PTRS */
pusch_config_pdu
->
pusch_ptrs
.
ptrs_time_density
=
ptrs_time_density
;
pusch_config_pdu
->
pusch_ptrs
.
ptrs_freq_density
=
ptrs_freq_density
;
pusch_config_pdu
->
pusch_ptrs
.
ptrs_ports_list
=
&
ptrs_ports_list
;
if
(
1
<<
pusch_config_pdu
->
pusch_ptrs
.
ptrs_time_density
>=
pusch_config_pdu
->
nr_of_symbols
)
{
pusch_config_pdu
->
pdu_bit_map
&=
~
PUSCH_PDU_BITMAP_PUSCH_PTRS
;
// disable PUSCH PTRS
if
(
mac
->
ULbwp
[
0
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
->
dmrs_UplinkForPUSCH_MappingTypeB
->
choice
.
setup
->
phaseTrackingRS
!=
NULL
)
{
if
(
pusch_config_pdu
->
transform_precoding
==
transform_precoder_disabled
)
{
nfapi_nr_ue_ptrs_ports_t
ptrs_ports_list
;
pusch_config_pdu
->
pusch_ptrs
.
ptrs_ports_list
=
&
ptrs_ports_list
;
valid_ptrs_setup
=
set_ul_ptrs_values
(
mac
->
ULbwp
[
0
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
->
dmrs_UplinkForPUSCH_MappingTypeB
->
choice
.
setup
->
phaseTrackingRS
->
choice
.
setup
,
pusch_config_pdu
->
rb_size
,
pusch_config_pdu
->
mcs_index
,
pusch_config_pdu
->
mcs_table
,
&
pusch_config_pdu
->
pusch_ptrs
.
ptrs_freq_density
,
&
pusch_config_pdu
->
pusch_ptrs
.
ptrs_time_density
,
&
pusch_config_pdu
->
pusch_ptrs
.
ptrs_ports_list
->
ptrs_re_offset
,
&
pusch_config_pdu
->
pusch_ptrs
.
num_ptrs_ports
,
&
pusch_config_pdu
->
pusch_ptrs
.
ul_ptrs_power
,
pusch_config_pdu
->
nr_of_symbols
);
if
(
valid_ptrs_setup
==
true
)
{
pusch_config_pdu
->
pdu_bit_map
|=
PUSCH_PDU_BITMAP_PUSCH_PTRS
;
}
LOG_D
(
MAC
,
"UL PTRS values: PTRS time den: %d, PTRS freq den: %d
\n
"
,
pusch_config_pdu
->
pusch_ptrs
.
ptrs_time_density
,
pusch_config_pdu
->
pusch_ptrs
.
ptrs_freq_density
);
}
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
68e7c2b4
...
...
@@ -1064,18 +1064,16 @@ void nr_schedule_ulsch(module_id_t module_id,
/* PUSCH PTRS */
if
(
ps
->
NR_DMRS_UplinkConfig
->
phaseTrackingRS
!=
NULL
)
{
// TODO to be fixed from RRC config
uint8_t
ptrs_mcs1
=
2
;
// higher layer parameter in PTRS-UplinkConfig
uint8_t
ptrs_mcs2
=
4
;
// higher layer parameter in PTRS-UplinkConfig
uint8_t
ptrs_mcs3
=
10
;
// higher layer parameter in PTRS-UplinkConfig
uint16_t
n_rb0
=
25
;
// higher layer parameter in PTRS-UplinkConfig
uint16_t
n_rb1
=
75
;
// higher layer parameter in PTRS-UplinkConfig
pusch_pdu
->
pusch_ptrs
.
ptrs_time_density
=
get_L_ptrs
(
ptrs_mcs1
,
ptrs_mcs2
,
ptrs_mcs3
,
pusch_pdu
->
mcs_index
,
pusch_pdu
->
mcs_table
);
pusch_pdu
->
pusch_ptrs
.
ptrs_freq_density
=
get_K_ptrs
(
n_rb0
,
n_rb1
,
pusch_pdu
->
rb_size
);
bool
valid_ptrs_setup
=
false
;
pusch_pdu
->
pusch_ptrs
.
ptrs_ports_list
=
(
nfapi_nr_ptrs_ports_t
*
)
malloc
(
2
*
sizeof
(
nfapi_nr_ptrs_ports_t
));
pusch_pdu
->
pusch_ptrs
.
ptrs_ports_list
[
0
].
ptrs_re_offset
=
0
;
pusch_pdu
->
pdu_bit_map
|=
PUSCH_PDU_BITMAP_PUSCH_PTRS
;
// enable PUSCH PTRS
valid_ptrs_setup
=
set_ul_ptrs_values
(
ps
->
NR_DMRS_UplinkConfig
->
phaseTrackingRS
->
choice
.
setup
,
pusch_pdu
->
rb_size
,
pusch_pdu
->
mcs_index
,
pusch_pdu
->
mcs_table
,
&
pusch_pdu
->
pusch_ptrs
.
ptrs_freq_density
,
&
pusch_pdu
->
pusch_ptrs
.
ptrs_time_density
,
&
pusch_pdu
->
pusch_ptrs
.
ptrs_ports_list
->
ptrs_re_offset
,
&
pusch_pdu
->
pusch_ptrs
.
num_ptrs_ports
,
&
pusch_pdu
->
pusch_ptrs
.
ul_ptrs_power
,
pusch_pdu
->
nr_of_symbols
);
if
(
valid_ptrs_setup
==
true
)
{
pusch_pdu
->
pdu_bit_map
|=
PUSCH_PDU_BITMAP_PUSCH_PTRS
;
// enable PUSCH PTRS
}
}
else
{
pusch_pdu
->
pdu_bit_map
&=
~
PUSCH_PDU_BITMAP_PUSCH_PTRS
;
// disable PUSCH PTRS
...
...
openair2/RRC/NR/nr_rrc_proto.h
View file @
68e7c2b4
...
...
@@ -79,17 +79,19 @@ void fill_default_coresetZero(NR_ControlResourceSet_t *coreset0, NR_ServingCellC
void
fill_default_searchSpaceZero
(
NR_SearchSpace_t
*
ss0
);
void
fill_default_secondaryCellGroup
(
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
,
NR_CellGroupConfig_t
*
secondaryCellGroup
,
int
scg_id
,
int
servCellIndex
,
int
n_physical_antenna_ports
,
int
initial_csi_index
);
NR_ServingCellConfig_t
*
servingcellconfigdedicated
,
NR_CellGroupConfig_t
*
secondaryCellGroup
,
int
scg_id
,
int
servCellIndex
,
int
n_physical_antenna_ports
,
int
initial_csi_index
);
void
fill_default_reconfig
(
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
,
NR_RRCReconfiguration_IEs_t
*
reconfig
,
NR_CellGroupConfig_t
*
secondaryCellGroup
,
int
n_physical_antenna_ports
,
int
initial_csi_index
);
NR_ServingCellConfig_t
*
servingcellconfigdedicated
,
NR_RRCReconfiguration_IEs_t
*
reconfig
,
NR_CellGroupConfig_t
*
secondaryCellGroup
,
int
n_physical_antenna_ports
,
int
initial_csi_index
);
void
fill_default_rbconfig
(
NR_RadioBearerConfig_t
*
rbconfig
,
int
eps_bearer_id
,
int
rb_id
,
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
68e7c2b4
...
...
@@ -277,6 +277,8 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
parse_CG_ConfigInfo
(
rrc
,
CG_ConfigInfo
,
NULL
);
}
else
{
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
rrc_gNB_allocate_new_UE_context
(
rrc
);
ue_context_p
->
ue_context
.
spCellConfig
=
calloc
(
1
,
sizeof
(
struct
NR_SpCellConfig
));
ue_context_p
->
ue_context
.
spCellConfig
->
spCellConfigDedicated
=
configuration
->
scd
;
LOG_I
(
NR_RRC
,
"Adding new user (%p)
\n
"
,
ue_context_p
);
rrc_add_nsa_user
(
rrc
,
ue_context_p
,
NULL
);
}
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
68e7c2b4
...
...
@@ -238,11 +238,21 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
cipher_algo
,
NR_SecurityConfig__keyToUse_secondary
);
}
fill_default_reconfig
(
carrier
->
servingcellconfigcommon
,
if
(
ue_context_p
->
ue_context
.
spCellConfig
)
{
fill_default_reconfig
(
carrier
->
servingcellconfigcommon
,
ue_context_p
->
ue_context
.
spCellConfig
->
spCellConfigDedicated
,
reconfig_ies
,
ue_context_p
->
ue_context
.
secondaryCellGroup
,
carrier
->
pdsch_AntennaPorts
,
carrier
->
initial_csi_index
[
rrc
->
Nb_ue
]);
}
else
{
fill_default_reconfig
(
carrier
->
servingcellconfigcommon
,
NULL
,
reconfig_ies
,
ue_context_p
->
ue_context
.
secondaryCellGroup
,
carrier
->
pdsch_AntennaPorts
,
carrier
->
initial_csi_index
[
rrc
->
Nb_ue
]);
}
ue_context_p
->
ue_id_rnti
=
ue_context_p
->
ue_context
.
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
;
NR_CG_Config_t
*
CG_Config
=
calloc
(
1
,
sizeof
(
*
CG_Config
));
memset
((
void
*
)
CG_Config
,
0
,
sizeof
(
*
CG_Config
));
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
68e7c2b4
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf
0 → 100644
View file @
68e7c2b4
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