NR specific rlc_module_init function

This commit is contained in:
francescomani
2025-04-01 11:46:58 +02:00
parent 87b8d112f7
commit 83ab5831c5
7 changed files with 26 additions and 27 deletions
+2 -2
View File
@@ -75,7 +75,7 @@ unsigned short config_frames[4] = {2,9,11,13};
#include <openair2/LAYER2/NR_MAC_UE/mac_proto.h>
#include <openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h>
#include <openair1/SCHED_NR_UE/fapi_nr_ue_l1.h>
#include "nr_rlc/nr_rlc_oai_api.h"
/* Callbacks, globals and object handlers */
//#include "stats.h"
@@ -313,7 +313,7 @@ static void init_pdcp(int ue_id)
// was always set. further refactoring could take it out
pdcp_initmask = pdcp_initmask | UE_NAS_USE_TUN_BIT;
if (get_softmodem_params()->nsa && rlc_module_init(0) != 0) {
if (get_softmodem_params()->nsa && nr_rlc_module_init(0) != 0) {
LOG_I(RLC, "Problem at RLC initiation \n");
}
nr_pdcp_layer_init();
+1 -2
View File
@@ -38,7 +38,6 @@
#include "nr_rlc/nr_rlc_oai_api.h"
#include "RRC/NR_UE/rrc_proto.h"
#include <pthread.h>
#include "openair2/LAYER2/RLC/rlc.h"
static NR_UE_MAC_INST_t *nr_ue_mac_inst;
void send_srb0_rrc(int ue_id, const uint8_t *sdu, sdu_size_t sdu_len, void *data)
@@ -141,7 +140,7 @@ NR_UE_MAC_INST_t *nr_l2_init_ue(int nb_inst)
ue_init_config_request(mac, get_slots_per_frame_from_scs(get_softmodem_params()->numerology));
}
int rc = rlc_module_init(0);
int rc = nr_rlc_module_init(0);
AssertFatal(rc == 0, "Could not initialize RLC layer\n");
for (int j = 0; j < nb_inst; j++) {
+1 -2
View File
@@ -66,7 +66,6 @@
#include "nr_pdcp/nr_pdcp_oai_api.h"
#include "nr_rlc/nr_rlc_oai_api.h"
#include "openair2/F1AP/f1ap_ids.h"
#include "rlc.h"
#include "seq_arr.h"
#include "system.h"
#include "time_meas.h"
@@ -304,7 +303,7 @@ void mac_top_init_gNB(ngran_node_t node_type,
mac_rrc_init(RC.nrmac[i], node_type);
}//END for (i = 0; i < RC.nb_nr_macrlc_inst; i++)
AssertFatal(rlc_module_init(1) == 0,"Could not initialize RLC layer\n");
AssertFatal(nr_rlc_module_init(1) == 0,"Could not initialize RLC layer\n");
// These should be out of here later
if (get_softmodem_params()->usim_test == 0 ) nr_pdcp_layer_init();
+14 -14
View File
@@ -322,7 +322,7 @@ int nr_rlc_get_available_tx_space(const int ue_id, const logical_chan_id_t chann
return ret;
}
int rlc_module_init(int enb_flag)
int nr_rlc_module_init(int gnb_flag)
{
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
static int inited = 0;
@@ -330,20 +330,22 @@ int rlc_module_init(int enb_flag)
if (pthread_mutex_lock(&lock)) abort();
if (enb_flag == 1 && inited) {
if (gnb_flag == 1 && inited) {
LOG_E(RLC, "%s:%d:%s: fatal, inited already 1\n", __FILE__, __LINE__, __FUNCTION__);
exit(1);
}
if (enb_flag == 0 && inited_ue) {
if (gnb_flag == 0 && inited_ue) {
LOG_E(RLC, "%s:%d:%s: fatal, inited_ue already 1\n", __FILE__, __LINE__, __FUNCTION__);
exit(1);
}
if (enb_flag == 1) inited = 1;
if (enb_flag == 0) inited_ue = 1;
if (gnb_flag == 1)
inited = 1;
if (gnb_flag == 0)
inited_ue = 1;
nr_rlc_ue_manager = new_nr_rlc_ue_manager(enb_flag);
nr_rlc_ue_manager = new_nr_rlc_ue_manager(gnb_flag);
if (pthread_mutex_unlock(&lock)) abort();
@@ -358,7 +360,6 @@ static void deliver_sdu(void *_ue, nr_rlc_entity_t *entity, char *buf, int size)
protocol_ctxt_t ctx;
uint8_t *memblock;
int i;
int is_enb;
/* is it SRB? */
for (i = 0; i < sizeofArray(ue->srb); i++) {
@@ -391,21 +392,21 @@ rb_found:
ctx.eNB_index = 0;
ctx.brOption = 0;
is_enb = nr_rlc_manager_get_enb_flag(nr_rlc_ue_manager);
int is_gnb = nr_rlc_manager_get_gnb_flag(nr_rlc_ue_manager);
/* used fields? */
ctx.module_id = 0;
/* CU (PDCP, RRC, SDAP) use a different ID than RNTI, so below set the CU UE
* ID if in gNB, else use RNTI normally */
ctx.rntiMaybeUEid = ue->ue_id;
if (is_enb) {
if (is_gnb) {
f1_ue_data_t ue_data = du_get_f1_ue_data(ue->ue_id);
ctx.rntiMaybeUEid = ue_data.secondary_ue;
}
ctx.enb_flag = is_enb;
ctx.enb_flag = is_gnb;
if (is_enb) {
if (is_gnb) {
T(T_ENB_RLC_UL,
T_INT(0 /*ctxt_pP->module_id*/),
T_INT(ue->ue_id), T_INT(rb_id), T_INT(size));
@@ -465,7 +466,6 @@ static void successful_delivery(void *_ue, nr_rlc_entity_t *entity, int sdu_id)
#if 0
MessageDef *msg;
#endif
int is_enb;
/* is it SRB? */
for (i = 0; i < 2; i++) {
@@ -498,8 +498,8 @@ rb_found:
if (is_srb == 0)
return;
is_enb = nr_rlc_manager_get_enb_flag(nr_rlc_ue_manager);
if (!is_enb)
int is_gnb = nr_rlc_manager_get_gnb_flag(nr_rlc_ue_manager);
if (!is_gnb)
return;
#if 0
+1
View File
@@ -41,6 +41,7 @@
struct NR_RLC_Config;
struct NR_LogicalChannelConfig;
int nr_rlc_module_init(int gnb_flag);
void nr_mac_rlc_data_ind(const module_id_t module_idP,
const uint16_t ue_id,
const bool gnb_flagP,
+5 -5
View File
@@ -31,10 +31,10 @@ typedef struct {
pthread_mutex_t lock;
nr_rlc_ue_t **ue_list;
int ue_count;
int enb_flag;
int gnb_flag;
} nr_rlc_ue_manager_internal_t;
nr_rlc_ue_manager_t *new_nr_rlc_ue_manager(int enb_flag)
nr_rlc_ue_manager_t *new_nr_rlc_ue_manager(int gnb_flag)
{
nr_rlc_ue_manager_internal_t *ret;
@@ -45,15 +45,15 @@ nr_rlc_ue_manager_t *new_nr_rlc_ue_manager(int enb_flag)
}
if (pthread_mutex_init(&ret->lock, NULL)) abort();
ret->enb_flag = enb_flag;
ret->gnb_flag = gnb_flag;
return ret;
}
int nr_rlc_manager_get_enb_flag(nr_rlc_ue_manager_t *_m)
int nr_rlc_manager_get_gnb_flag(nr_rlc_ue_manager_t *_m)
{
nr_rlc_ue_manager_internal_t *m = _m;
return m->enb_flag;
return m->gnb_flag;
}
void nr_rlc_manager_lock(nr_rlc_ue_manager_t *_m)
+2 -2
View File
@@ -52,9 +52,9 @@ typedef struct nr_rlc_ue_t {
/* manager functions */
/***********************************************************************/
nr_rlc_ue_manager_t *new_nr_rlc_ue_manager(int enb_flag);
nr_rlc_ue_manager_t *new_nr_rlc_ue_manager(int gnb_flag);
int nr_rlc_manager_get_enb_flag(nr_rlc_ue_manager_t *m);
int nr_rlc_manager_get_gnb_flag(nr_rlc_ue_manager_t *m);
void nr_rlc_manager_lock(nr_rlc_ue_manager_t *m);
void nr_rlc_manager_unlock(nr_rlc_ue_manager_t *m);