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
spbro
OpenXG-RAN
Commits
e772bc95
Commit
e772bc95
authored
Feb 28, 2024
by
Teodora
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
KPM ran func def cleanup
parent
cb99496a
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
180 additions
and
245 deletions
+180
-245
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm.c
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm.c
+153
-180
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm_subs.c
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm_subs.c
+21
-43
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm_subs.h
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm_subs.h
+6
-22
No files found.
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm.c
View file @
e772bc95
This diff is collapsed.
Click to expand it.
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm_subs.c
View file @
e772bc95
...
...
@@ -20,11 +20,6 @@
*/
#include "ran_func_kpm_subs.h"
#include "common/utils/assertions.h"
#include <string.h>
#include <assert.h>
#include <pthread.h>
typedef
struct
uldlcounter
{
uint32_t
dl
;
...
...
@@ -47,12 +42,12 @@ static nr_pdcp_statistics_t get_pdcp_stats_per_drb(const uint32_t rrc_ue_id)
}
// 3GPP TS 28.522 - section 5.1.2.1.1.1
static
meas_record_lst_t
fill_DRB_PdcpSduVolumeDL
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
)
static
meas_record_lst_t
fill_DRB_PdcpSduVolumeDL
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
)
{
meas_record_lst_t
meas_record
=
{
0
};
// Get PDCP stats per DRB
nr_pdcp_statistics_t
pdcp
=
get_pdcp_stats_per_drb
(
ue_i
d
.
rrc_ue_id
);
nr_pdcp_statistics_t
pdcp
=
get_pdcp_stats_per_drb
(
ue_i
nfo
.
rrc_ue_id
);
meas_record
.
value
=
INTEGER_MEAS_VALUE
;
...
...
@@ -65,12 +60,12 @@ static meas_record_lst_t fill_DRB_PdcpSduVolumeDL(__attribute__((unused))uint32_
}
// 3GPP TS 28.522 - section 5.1.2.1.2.1
static
meas_record_lst_t
fill_DRB_PdcpSduVolumeUL
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
)
static
meas_record_lst_t
fill_DRB_PdcpSduVolumeUL
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
)
{
meas_record_lst_t
meas_record
=
{
0
};
// Get PDCP stats per DRB
nr_pdcp_statistics_t
pdcp
=
get_pdcp_stats_per_drb
(
ue_i
d
.
rrc_ue_id
);
nr_pdcp_statistics_t
pdcp
=
get_pdcp_stats_per_drb
(
ue_i
nfo
.
rrc_ue_id
);
meas_record
.
value
=
INTEGER_MEAS_VALUE
;
...
...
@@ -86,34 +81,29 @@ static meas_record_lst_t fill_DRB_PdcpSduVolumeUL(__attribute__((unused))uint32_
static
uldlcounter_t
last_rlc_pdu_total_bytes
[
MAX_MOBILES_PER_GNB
]
=
{
0
};
static
uldlcounter_t
last_total_prbs
[
MAX_MOBILES_PER_GNB
]
=
{
0
};
static
nr_rlc_statistics_t
get_rlc_stats_per_drb
(
NR_UE_info_t
const
*
UE
)
static
nr_rlc_statistics_t
get_rlc_stats_per_drb
(
const
rnti_t
rnti
)
{
assert
(
UE
!=
NULL
);
nr_rlc_statistics_t
rlc
=
{
0
};
const
int
srb_flag
=
0
;
const
int
rb_id
=
1
;
// at the moment, only 1 DRB is supported
// Get RLC stats for specific DRB
const
bool
rc
=
nr_rlc_get_statistics
(
UE
->
rnti
,
srb_flag
,
rb_id
,
&
rlc
);
const
bool
rc
=
nr_rlc_get_statistics
(
rnti
,
srb_flag
,
rb_id
,
&
rlc
);
assert
(
rc
==
true
&&
"Cannot get RLC stats
\n
"
);
// Activate average sojourn time at the RLC buffer for specific DRB
nr_rlc_activate_avg_time_to_tx
(
UE
->
rnti
,
rb_id
+
3
,
1
);
nr_rlc_activate_avg_time_to_tx
(
rnti
,
rb_id
+
3
,
1
);
return
rlc
;
}
// 3GPP TS 28.522 - section 5.1.3.3.3
static
meas_record_lst_t
fill_DRB_RlcSduDelayDl
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
__attribute__
((
unused
))
const
size_t
ue_idx
)
static
meas_record_lst_t
fill_DRB_RlcSduDelayDl
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
__attribute__
((
unused
))
const
size_t
ue_idx
)
{
meas_record_lst_t
meas_record
=
{
0
};
// f1_ue_data_t f1_ue_data = cu_get_f1_ue_data(rrc_ue_id);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
ue_id
.
rnti
);
// Get RLC stats per DRB
nr_rlc_statistics_t
rlc
=
get_rlc_stats_per_drb
(
UE
);
nr_rlc_statistics_t
rlc
=
get_rlc_stats_per_drb
(
ue_info
.
ue
->
rnti
);
meas_record
.
value
=
REAL_MEAS_VALUE
;
...
...
@@ -125,15 +115,12 @@ static meas_record_lst_t fill_DRB_RlcSduDelayDl(__attribute__((unused))uint32_t
}
// 3GPP TS 28.522 - section 5.1.1.3.1
static
meas_record_lst_t
fill_DRB_UEThpDl
(
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
)
static
meas_record_lst_t
fill_DRB_UEThpDl
(
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
)
{
meas_record_lst_t
meas_record
=
{
0
};
// f1_ue_data_t f1_ue_data = cu_get_f1_ue_data(rrc_ue_id);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
ue_id
.
rnti
);
// Get RLC stats per DRB
nr_rlc_statistics_t
rlc
=
get_rlc_stats_per_drb
(
UE
);
nr_rlc_statistics_t
rlc
=
get_rlc_stats_per_drb
(
ue_info
.
ue
->
rnti
);
meas_record
.
value
=
REAL_MEAS_VALUE
;
// Calculate DL Thp
...
...
@@ -146,15 +133,12 @@ static meas_record_lst_t fill_DRB_UEThpDl(uint32_t gran_period_ms, cudu_ue_id_pa
}
// 3GPP TS 28.522 - section 5.1.1.3.3
static
meas_record_lst_t
fill_DRB_UEThpUl
(
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
)
static
meas_record_lst_t
fill_DRB_UEThpUl
(
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
)
{
meas_record_lst_t
meas_record
=
{
0
};
// f1_ue_data_t f1_ue_data = cu_get_f1_ue_data(rrc_ue_id);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
ue_id
.
rnti
);
// Get RLC stats per DRB
nr_rlc_statistics_t
rlc
=
get_rlc_stats_per_drb
(
UE
);
nr_rlc_statistics_t
rlc
=
get_rlc_stats_per_drb
(
ue_info
.
ue
->
rnti
);
meas_record
.
value
=
REAL_MEAS_VALUE
;
...
...
@@ -168,18 +152,15 @@ static meas_record_lst_t fill_DRB_UEThpUl(uint32_t gran_period_ms, cudu_ue_id_pa
}
// 3GPP TS 28.522 - section 5.1.1.2.1
static
meas_record_lst_t
fill_RRU_PrbTotDl
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
)
static
meas_record_lst_t
fill_RRU_PrbTotDl
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
)
{
meas_record_lst_t
meas_record
=
{
0
};
// f1_ue_data_t f1_ue_data = cu_get_f1_ue_data(rrc_ue_id);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
ue_id
.
rnti
);
meas_record
.
value
=
INTEGER_MEAS_VALUE
;
// Get the number of DL PRBs
meas_record
.
int_val
=
UE
->
mac_stats
.
dl
.
total_rbs
-
last_total_prbs
[
ue_idx
].
dl
;
// [PRBs]
last_total_prbs
[
ue_idx
].
dl
=
UE
->
mac_stats
.
dl
.
total_rbs
;
meas_record
.
int_val
=
ue_info
.
ue
->
mac_stats
.
dl
.
total_rbs
-
last_total_prbs
[
ue_idx
].
dl
;
// [PRBs]
last_total_prbs
[
ue_idx
].
dl
=
ue_info
.
ue
->
mac_stats
.
dl
.
total_rbs
;
/* note: per spec, DL PRB usage [%] = (total used PRBs for DL traffic / total available PRBs for DL traffic) * 100
here calculated as: aggregated DL PRBs (t) - aggregated DL PRBs (t-gran_period) */
...
...
@@ -187,18 +168,15 @@ static meas_record_lst_t fill_RRU_PrbTotDl(__attribute__((unused))uint32_t gran_
}
// 3GPP TS 28.522 - section 5.1.1.2.2
static
meas_record_lst_t
fill_RRU_PrbTotUl
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
)
static
meas_record_lst_t
fill_RRU_PrbTotUl
(
__attribute__
((
unused
))
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
)
{
meas_record_lst_t
meas_record
=
{
0
};
// f1_ue_data_t f1_ue_data = cu_get_f1_ue_data(rrc_ue_id);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
0
]
->
UE_info
,
ue_id
.
rnti
);
meas_record
.
value
=
INTEGER_MEAS_VALUE
;
// Get the number of UL PRBs
meas_record
.
int_val
=
UE
->
mac_stats
.
ul
.
total_rbs
-
last_total_prbs
[
ue_idx
].
ul
;
// [PRBs]
last_total_prbs
[
ue_idx
].
ul
=
UE
->
mac_stats
.
ul
.
total_rbs
;
meas_record
.
int_val
=
ue_info
.
ue
->
mac_stats
.
ul
.
total_rbs
-
last_total_prbs
[
ue_idx
].
ul
;
// [PRBs]
last_total_prbs
[
ue_idx
].
ul
=
ue_info
.
ue
->
mac_stats
.
ul
.
total_rbs
;
/* note: per spec, UL PRB usage [%] = (total used PRBs for UL traffic / total available PRBs for UL traffic) * 100
here calculated as: aggregated UL PRBs (t) - aggregated UL PRBs (t-gran_period) */
...
...
@@ -218,7 +196,7 @@ static const kv_measure_t lst_measure[] = {
#endif
};
meas_record_lst_t
get_kpm_meas_value
(
char
*
kpm_meas_name
,
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
)
meas_record_lst_t
get_kpm_meas_value
(
char
*
kpm_meas_name
,
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
)
{
assert
(
kpm_meas_name
!=
NULL
);
...
...
@@ -226,7 +204,7 @@ meas_record_lst_t get_kpm_meas_value(char* kpm_meas_name, uint32_t gran_period_m
for
(
size_t
i
=
0
;
i
<
sizeof
(
lst_measure
)
/
sizeof
(
lst_measure
[
0
]);
i
++
)
{
if
(
strcmp
(
kpm_meas_name
,
lst_measure
[
i
].
key
)
==
0
)
{
meas_record
=
lst_measure
[
i
].
value
(
gran_period_ms
,
ue_i
d
,
ue_idx
);
meas_record
=
lst_measure
[
i
].
value
(
gran_period_ms
,
ue_i
nfo
,
ue_idx
);
break
;
}
}
...
...
openair2/E2AP/RAN_FUNCTION/O-RAN/ran_func_kpm_subs.h
View file @
e772bc95
...
...
@@ -22,41 +22,25 @@
#ifndef RAN_FUNC_SM_KPM_SUBSCRIPTION_AGENT_H
#define RAN_FUNC_SM_KPM_SUBSCRIPTION_AGENT_H
#include "openair2/E2AP/flexric/src/
agent/../sm/sm_io
.h"
#include "openair2/E2AP/flexric/src/
sm/kpm_sm/kpm_data_ie_wrapper
.h"
#include "openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h"
#include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h"
#include "openair2/LAYER2/nr_rlc/nr_rlc_entity.h"
#include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h"
#include "openair2/RRC/NR/rrc_gNB_UE_context.h"
#include "openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h"
#include "openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.h"
#include "openair2/E1AP/e1ap_common.h"
#include "openair2/F1AP/f1ap_ids.h"
#include <assert.h>
#include <stdio.h>
#include "common/utils/hashtable/hashtable.h"
#include "common/utils/assertions.h"
#include "openair3/NGAP/ngap_gNB_ue_context.h"
#include "common/openairinterface5g_limits.h"
#include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h"
typedef
struct
{
uint32_t
rrc_ue_id
;
rnti_t
rnti
;
NR_UE_info_t
*
ue
;
}
cudu_ue_i
d
_pair_t
;
}
cudu_ue_i
nfo
_pair_t
;
typedef
meas_record_lst_t
(
*
kpm_meas_fp
)(
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
);
typedef
meas_record_lst_t
(
*
kpm_meas_fp
)(
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
);
typedef
struct
{
const
char
*
key
;
kpm_meas_fp
value
;
}
kv_measure_t
;
meas_record_lst_t
get_kpm_meas_value
(
char
*
kpm_meas_name
,
uint32_t
gran_period_ms
,
cudu_ue_i
d_pair_t
ue_id
,
const
size_t
ue_idx
);
meas_record_lst_t
get_kpm_meas_value
(
char
*
kpm_meas_name
,
uint32_t
gran_period_ms
,
cudu_ue_i
nfo_pair_t
ue_info
,
const
size_t
ue_idx
);
#endif
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