From f70d2f1312ff5d6fe6d81cf6810fd7411924926c Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Tue, 15 Apr 2025 16:16:29 +0200 Subject: [PATCH] add NR RLC parameter definitions To be used in a later commit to retrieve NR RLC configuration parameters. To use, add the following to the configuration file (outside of other configurations). Adapt the values to your setup. The names ("ms45", "size12", etc.) come from 3GPP TS 38.331. rlc = { srb = { t_poll_retransmit = "ms45" t_reassembly = "ms25" t_status_prohibit = "ms0" poll_pdu = "infinity" poll_byte = "infinity" max_retx_threshold = "t8" sn_field_length = "size12" } drb_am = { t_poll_retransmit = "ms45" t_reassembly = "ms15" t_status_prohibit = "ms15" poll_pdu = "p64" poll_byte = "kB500" max_retx_threshold = "t32" sn_field_length = "size18" } drb_um = { t_reassembly = "ms15" sn_field_length = "size12" } } Default values are applied if the configuration is absent. The default values are the ones given above. --- openair2/GNB_APP/gnb_paramdef.h | 169 +++++++++++++++++++++++++++++++- 1 file changed, 168 insertions(+), 1 deletion(-) diff --git a/openair2/GNB_APP/gnb_paramdef.h b/openair2/GNB_APP/gnb_paramdef.h index 99eb8847af..c8f6bc92fa 100644 --- a/openair2/GNB_APP/gnb_paramdef.h +++ b/openair2/GNB_APP/gnb_paramdef.h @@ -680,5 +680,172 @@ typedef enum { /*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ -#endif +#define CONFIG_NR_RLC_T_POLL_RETRANSMIT "t_poll_retransmit" +#define CONFIG_NR_RLC_T_REASSEMBLY "t_reassembly" +#define CONFIG_NR_RLC_T_STATUS_PROHIBIT "t_status_prohibit" +#define CONFIG_NR_RLC_POLL_PDU "poll_pdu" +#define CONFIG_NR_RLC_POLL_BYTE "poll_byte" +#define CONFIG_NR_RLC_MAX_RETX_THRESHOLD "max_retx_threshold" +#define CONFIG_NR_RLC_SN_FIELD_LENGTH "sn_field_length" +/*----------------------------------------------------------------------*/ +/* nr rlc srb configuration */ +/*----------------------------------------------------------------------*/ + +#define CONFIG_STRING_NR_RLC_SRB "rlc.srb" + +#define CONFIG_NR_RLC_SRB_T_POLL_RETRANSMIT_IDX 0 +#define CONFIG_NR_RLC_SRB_T_REASSEMBLY_IDX 1 +#define CONFIG_NR_RLC_SRB_T_STATUS_PROHIBIT_IDX 2 +#define CONFIG_NR_RLC_SRB_POLL_PDU_IDX 3 +#define CONFIG_NR_RLC_SRB_POLL_BYTE_IDX 4 +#define CONFIG_NR_RLC_SRB_MAX_RETX_THRESHOLD_IDX 5 +#define CONFIG_NR_RLC_SRB_SN_FIELD_LENGTH_IDX 6 + +#define NR_RLC_SRB_GLOBALPARAMS_DESC { \ + { .optname = CONFIG_NR_RLC_T_POLL_RETRANSMIT, \ + .defstrval = "ms45", \ + .helpstr = "poll retransmit timer", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_T_POLL_RETRANSMIT_STR }, \ + .setintval = { VALUES_NR_RLC_T_POLL_RETRANSMIT }, \ + .num_okstrval = SIZEOF_NR_RLC_T_POLL_RETRANSMIT }}}, \ + { .optname = CONFIG_NR_RLC_T_REASSEMBLY, \ + .defstrval = "ms35", \ + .helpstr = "reassembly timer", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_T_REASSEMBLY_STR }, \ + .setintval = { VALUES_NR_RLC_T_REASSEMBLY }, \ + .num_okstrval = SIZEOF_NR_RLC_T_REASSEMBLY }}}, \ + { .optname = CONFIG_NR_RLC_T_STATUS_PROHIBIT, \ + .defstrval = "ms0", \ + .helpstr = "status prohibit timer", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_T_STATUS_PROHIBIT_STR }, \ + .setintval = { VALUES_NR_RLC_T_STATUS_PROHIBIT }, \ + .num_okstrval = SIZEOF_NR_RLC_T_STATUS_PROHIBIT }}}, \ + { .optname = CONFIG_NR_RLC_POLL_PDU, \ + .defstrval = "infinity", \ + .helpstr = "pollPDU", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_POLL_PDU_STR }, \ + .setintval = { VALUES_NR_RLC_POLL_PDU }, \ + .num_okstrval = SIZEOF_NR_RLC_POLL_PDU }}}, \ + { .optname = CONFIG_NR_RLC_POLL_BYTE, \ + .defstrval = "infinity", \ + .helpstr = "pollByte", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_POLL_BYTE_STR }, \ + .setintval = { VALUES_NR_RLC_POLL_BYTE }, \ + .num_okstrval = SIZEOF_NR_RLC_POLL_BYTE }}}, \ + { .optname = CONFIG_NR_RLC_MAX_RETX_THRESHOLD, \ + .defstrval = "t8", \ + .helpstr = "max reTX threshold", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_MAX_RETX_THRESHOLD_STR }, \ + .setintval = { VALUES_NR_RLC_MAX_RETX_THRESHOLD }, \ + .num_okstrval = SIZEOF_NR_RLC_MAX_RETX_THRESHOLD }}}, \ + { .optname = CONFIG_NR_RLC_SN_FIELD_LENGTH, \ + .defstrval = "size12", \ + .helpstr = "SN size", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_SN_FIELD_LENGTH_AM_STR }, \ + .setintval = { VALUES_NR_RLC_SN_FIELD_LENGTH_AM }, \ + .num_okstrval = SIZEOF_NR_RLC_SN_FIELD_LENGTH_AM }}}, \ +} + +/*----------------------------------------------------------------------*/ +/* nr rlc drb am configuration */ +/*----------------------------------------------------------------------*/ + +#define CONFIG_STRING_NR_RLC_DRB_AM "rlc.drb_am" + +#define CONFIG_NR_RLC_DRB_AM_T_POLL_RETRANSMIT_IDX 0 +#define CONFIG_NR_RLC_DRB_AM_T_REASSEMBLY_IDX 1 +#define CONFIG_NR_RLC_DRB_AM_T_STATUS_PROHIBIT_IDX 2 +#define CONFIG_NR_RLC_DRB_AM_POLL_PDU_IDX 3 +#define CONFIG_NR_RLC_DRB_AM_POLL_BYTE_IDX 4 +#define CONFIG_NR_RLC_DRB_AM_MAX_RETX_THRESHOLD_IDX 5 +#define CONFIG_NR_RLC_DRB_AM_SN_FIELD_LENGTH_IDX 6 + +#define NR_RLC_DRB_AM_GLOBALPARAMS_DESC { \ + { .optname = CONFIG_NR_RLC_T_POLL_RETRANSMIT, \ + .defstrval = "ms45", \ + .helpstr = "poll retransmit timer", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_T_POLL_RETRANSMIT_STR }, \ + .setintval = { VALUES_NR_RLC_T_POLL_RETRANSMIT }, \ + .num_okstrval = SIZEOF_NR_RLC_T_POLL_RETRANSMIT }}}, \ + { .optname = CONFIG_NR_RLC_T_REASSEMBLY, \ + .defstrval = "ms15", \ + .helpstr = "reassembly timer", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_T_REASSEMBLY_STR }, \ + .setintval = { VALUES_NR_RLC_T_REASSEMBLY }, \ + .num_okstrval = SIZEOF_NR_RLC_T_REASSEMBLY }}}, \ + { .optname = CONFIG_NR_RLC_T_STATUS_PROHIBIT, \ + .defstrval = "ms15", \ + .helpstr = "status prohibit timer", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_T_STATUS_PROHIBIT_STR }, \ + .setintval = { VALUES_NR_RLC_T_STATUS_PROHIBIT }, \ + .num_okstrval = SIZEOF_NR_RLC_T_STATUS_PROHIBIT }}}, \ + { .optname = CONFIG_NR_RLC_POLL_PDU, \ + .defstrval = "p64", \ + .helpstr = "pollPDU", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_POLL_PDU_STR }, \ + .setintval = { VALUES_NR_RLC_POLL_PDU }, \ + .num_okstrval = SIZEOF_NR_RLC_POLL_PDU }}}, \ + { .optname = CONFIG_NR_RLC_POLL_BYTE, \ + .defstrval = "kB500", \ + .helpstr = "pollByte", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_POLL_BYTE_STR }, \ + .setintval = { VALUES_NR_RLC_POLL_BYTE }, \ + .num_okstrval = SIZEOF_NR_RLC_POLL_BYTE }}}, \ + { .optname = CONFIG_NR_RLC_MAX_RETX_THRESHOLD, \ + .defstrval = "t32", \ + .helpstr = "max reTX threshold", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_MAX_RETX_THRESHOLD_STR }, \ + .setintval = { VALUES_NR_RLC_MAX_RETX_THRESHOLD }, \ + .num_okstrval = SIZEOF_NR_RLC_MAX_RETX_THRESHOLD }}}, \ + { .optname = CONFIG_NR_RLC_SN_FIELD_LENGTH, \ + .defstrval = "size18", \ + .helpstr = "SN size", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_SN_FIELD_LENGTH_AM_STR }, \ + .setintval = { VALUES_NR_RLC_SN_FIELD_LENGTH_AM }, \ + .num_okstrval = SIZEOF_NR_RLC_SN_FIELD_LENGTH_AM }}}, \ +} + +/*----------------------------------------------------------------------*/ +/* nr rlc drb um configuration */ +/*----------------------------------------------------------------------*/ + +#define CONFIG_STRING_NR_RLC_DRB_UM "rlc.drb_um" + +#define CONFIG_NR_RLC_DRB_UM_T_REASSEMBLY_IDX 0 +#define CONFIG_NR_RLC_DRB_UM_SN_FIELD_LENGTH_IDX 1 + +#define NR_RLC_DRB_UM_GLOBALPARAMS_DESC { \ + { .optname = CONFIG_NR_RLC_T_REASSEMBLY, \ + .defstrval = "ms15", \ + .helpstr = "reassembly timer", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_T_REASSEMBLY_STR }, \ + .setintval = { VALUES_NR_RLC_T_REASSEMBLY }, \ + .num_okstrval = SIZEOF_NR_RLC_T_REASSEMBLY }}}, \ + { .optname = CONFIG_NR_RLC_SN_FIELD_LENGTH, \ + .defstrval = "size12", \ + .helpstr = "SN size", .paramflags = 0, .strptr = NULL, .type = TYPE_STRING, .numelt = 0, \ + .chkPptr = &(checkedparam_t){ .s3a = { .f3a = config_checkstr_assign_integer, \ + .okstrval = { VALUES_NR_RLC_SN_FIELD_LENGTH_UM_STR }, \ + .setintval = { VALUES_NR_RLC_SN_FIELD_LENGTH_UM }, \ + .num_okstrval = SIZEOF_NR_RLC_SN_FIELD_LENGTH_UM }}}, \ +} + +/*----------------------------------------------------------------------*/ + +#endif