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
alex037yang
OpenXG-RAN
Commits
03b52216
Commit
03b52216
authored
Jan 19, 2019
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
FlexRAN: Access PDCP stats through RNTI
parent
767eaf5b
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
116 additions
and
94 deletions
+116
-94
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
+20
-20
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.h
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.h
+1
-1
openair2/ENB_APP/flexran_agent_ran_api.c
openair2/ENB_APP/flexran_agent_ran_api.c
+76
-56
openair2/ENB_APP/flexran_agent_ran_api.h
openair2/ENB_APP/flexran_agent_ran_api.h
+19
-17
No files found.
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
View file @
03b52216
...
...
@@ -34,30 +34,30 @@ AGENT_PDCP_xface *agent_pdcp_xface[NUM_MAX_ENB];
// MAX_MOBILES_PER_ENB
void
flexran_agent_pdcp_aggregate_stats
(
const
mid_t
mod_id
,
const
mid_t
ue_
id
,
uint16_t
u
id
,
Protocol__FlexPdcpStats
*
pdcp_aggr_stats
){
int
lcid
=
0
;
/* only calculate the DRBs */
//LOG_I(FLEXRAN_AGENT, "enb %d ue %d \n", mod_id, u
e_
id);
//LOG_I(FLEXRAN_AGENT, "enb %d ue %d \n", mod_id, uid);
for
(
lcid
=
NUM_MAX_SRB
;
lcid
<
NUM_MAX_SRB
+
NUM_MAX_DRB
;
lcid
++
){
pdcp_aggr_stats
->
pkt_tx
+=
flexran_get_pdcp_tx
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_bytes
+=
flexran_get_pdcp_tx_bytes
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_w
+=
flexran_get_pdcp_tx_w
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_bytes_w
+=
flexran_get_pdcp_tx_bytes_w
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_aiat
+=
flexran_get_pdcp_tx_aiat
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_aiat_w
+=
flexran_get_pdcp_tx_aiat_w
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_tx
+=
flexran_get_pdcp_tx
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_bytes
+=
flexran_get_pdcp_tx_bytes
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_w
+=
flexran_get_pdcp_tx_w
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_bytes_w
+=
flexran_get_pdcp_tx_bytes_w
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_aiat
+=
flexran_get_pdcp_tx_aiat
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_aiat_w
+=
flexran_get_pdcp_tx_aiat_w
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_rx
+=
flexran_get_pdcp_rx
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_bytes
+=
flexran_get_pdcp_rx_bytes
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_w
+=
flexran_get_pdcp_rx_w
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_bytes_w
+=
flexran_get_pdcp_rx_bytes_w
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_aiat
+=
flexran_get_pdcp_rx_aiat
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_aiat_w
+=
flexran_get_pdcp_rx_aiat_w
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_oo
+=
flexran_get_pdcp_rx_oo
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx
+=
flexran_get_pdcp_rx
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_bytes
+=
flexran_get_pdcp_rx_bytes
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_w
+=
flexran_get_pdcp_rx_w
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_bytes_w
+=
flexran_get_pdcp_rx_bytes_w
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_aiat
+=
flexran_get_pdcp_rx_aiat
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_aiat_w
+=
flexran_get_pdcp_rx_aiat_w
(
mod_id
,
uid
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_oo
+=
flexran_get_pdcp_rx_oo
(
mod_id
,
uid
,
lcid
);
}
...
...
@@ -72,7 +72,6 @@ int flexran_agent_pdcp_stats_reply(mid_t mod_id,
// Protocol__FlexHeader *header;
int
i
;
int
UE_id
;
// int cc_id = 0;
...
...
@@ -80,7 +79,8 @@ int flexran_agent_pdcp_stats_reply(mid_t mod_id,
if
(
report_config
->
nr_ue
>
0
)
{
for
(
i
=
0
;
i
<
report_config
->
nr_ue
;
i
++
)
{
UE_id
=
flexran_get_mac_ue_id
(
mod_id
,
i
);
const
rnti_t
rnti
=
report_config
->
ue_report_type
[
i
].
ue_rnti
;
const
uint16_t
uid
=
flexran_get_pdcp_uid_from_rnti
(
mod_id
,
rnti
);
/* Check flag for creation of buffer status report */
if
(
report_config
->
ue_report_type
[
i
].
ue_report_flags
&
PROTOCOL__FLEX_UE_STATS_TYPE__FLUST_PDCP_STATS
)
{
...
...
@@ -91,7 +91,7 @@ int flexran_agent_pdcp_stats_reply(mid_t mod_id,
goto
error
;
protocol__flex_pdcp_stats__init
(
pdcp_aggr_stats
);
flexran_agent_pdcp_aggregate_stats
(
mod_id
,
UE_
id
,
pdcp_aggr_stats
);
flexran_agent_pdcp_aggregate_stats
(
mod_id
,
u
id
,
pdcp_aggr_stats
);
pdcp_aggr_stats
->
has_pkt_tx
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_bytes
=
1
;
...
...
@@ -100,7 +100,7 @@ int flexran_agent_pdcp_stats_reply(mid_t mod_id,
pdcp_aggr_stats
->
has_pkt_tx_aiat
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_aiat_w
=
1
;
pdcp_aggr_stats
->
pkt_tx_sn
=
flexran_get_pdcp_tx_sn
(
mod_id
,
UE_
id
,
DEFAULT_DRB
);
pdcp_aggr_stats
->
pkt_tx_sn
=
flexran_get_pdcp_tx_sn
(
mod_id
,
u
id
,
DEFAULT_DRB
);
pdcp_aggr_stats
->
has_pkt_tx_sn
=
1
;
pdcp_aggr_stats
->
has_pkt_rx
=
1
;
...
...
@@ -111,7 +111,7 @@ int flexran_agent_pdcp_stats_reply(mid_t mod_id,
pdcp_aggr_stats
->
has_pkt_rx_aiat_w
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_oo
=
1
;
pdcp_aggr_stats
->
pkt_rx_sn
=
flexran_get_pdcp_rx_sn
(
mod_id
,
UE_
id
,
DEFAULT_DRB
);
pdcp_aggr_stats
->
pkt_rx_sn
=
flexran_get_pdcp_rx_sn
(
mod_id
,
u
id
,
DEFAULT_DRB
);
pdcp_aggr_stats
->
has_pkt_rx_sn
=
1
;
pdcp_aggr_stats
->
sfn
=
flexran_get_pdcp_sfn
(
mod_id
);
...
...
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.h
View file @
03b52216
...
...
@@ -55,7 +55,7 @@ int flexran_agent_pdcp_destroy_stats_reply(Protocol__FlexStatsReply *reply);
/* Get the stats from RAN API and aggregate them per USER*/
void
flexran_agent_pdcp_aggregate_stats
(
const
mid_t
mod_id
,
const
mid_t
ue_
id
,
uint16_t
u
id
,
Protocol__FlexPdcpStats
*
pdcp_aggr_stats
);
/*Register technology specific interface callbacks*/
...
...
openair2/ENB_APP/flexran_agent_ran_api.c
View file @
03b52216
...
...
@@ -1250,16 +1250,12 @@ void flexran_agent_set_operating_frame_type(mid_t mod_id, uint8_t cc_id, lte_fra
}
/*********** PDCP *************/
/*PDCP super frame counter flexRAN*/
/* TODO the following is a hack. all the functions below should instead already
* receive the PDCP's uid and operate on it and the caller has the obligation
* to get the ID for this layer.
*/
static
inline
uint16_t
flexran_get_pdcp_uid
(
mid_t
mod_id
,
mid_t
ue_id
)
uint16_t
flexran_get_pdcp_uid_from_rnti
(
mid_t
mod_id
,
rnti_t
rnti
)
{
rnti_t
rnti
=
flexran_get_mac_ue_crnti
(
mod_id
,
ue_id
);
if
(
rnti
==
NOT_A_RNTI
)
return
0
;
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
)
return
0
;
for
(
uint16_t
pdcp_uid
=
0
;
pdcp_uid
<
MAX_MOBILES_PER_ENB
;
++
pdcp_uid
)
{
if
(
pdcp_enb
[
mod_id
].
rnti
[
pdcp_uid
]
==
rnti
)
...
...
@@ -1268,140 +1264,164 @@ static inline uint16_t flexran_get_pdcp_uid(mid_t mod_id, mid_t ue_id)
return
0
;
}
/*PDCP super frame counter flexRAN*/
uint32_t
flexran_get_pdcp_sfn
(
mid_t
mod_id
)
{
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
)
return
0
;
return
pdcp_enb
[
mod_id
].
sfn
;
}
/*PDCP super frame counter flexRAN*/
void
flexran_set_pdcp_tx_stat_window
(
mid_t
mod_id
,
mid_t
ue_
id
,
uint16_t
obs_window
)
void
flexran_set_pdcp_tx_stat_window
(
mid_t
mod_id
,
uint16_t
u
id
,
uint16_t
obs_window
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
obs_window
>
0
){
Pdcp_stats_tx_window_ms
[
mod_id
][
uid
]
=
obs_window
;
}
else
{
Pdcp_stats_tx_window_ms
[
mod_id
][
uid
]
=
1000
;
}
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
)
return
;
Pdcp_stats_tx_window_ms
[
mod_id
][
uid
]
=
obs_window
>
0
?
obs_window
:
1000
;
}
/*PDCP super frame counter flexRAN*/
void
flexran_set_pdcp_rx_stat_window
(
mid_t
mod_id
,
mid_t
ue_
id
,
uint16_t
obs_window
)
void
flexran_set_pdcp_rx_stat_window
(
mid_t
mod_id
,
uint16_t
u
id
,
uint16_t
obs_window
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
obs_window
>
0
){
Pdcp_stats_rx_window_ms
[
mod_id
][
uid
]
=
obs_window
;
}
else
{
Pdcp_stats_rx_window_ms
[
mod_id
][
uid
]
=
1000
;
}
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
)
return
;
Pdcp_stats_rx_window_ms
[
mod_id
][
uid
]
=
obs_window
>
0
?
obs_window
:
1000
;
}
/*PDCP num tx pdu status flexRAN*/
uint32_t
flexran_get_pdcp_tx
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_tx
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
if
(
mod_id
<
0
||
mod_id
>
MAX_NUM_CCs
||
ue_id
<
0
||
ue_id
>
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>
NB_RB_MAX
)
return
-
1
;
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_tx
[
mod_id
][
uid
][
lcid
];
}
/*PDCP num tx bytes status flexRAN*/
uint32_t
flexran_get_pdcp_tx_bytes
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_tx_bytes
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_tx_bytes
[
mod_id
][
uid
][
lcid
];
}
/*PDCP number of transmit packet / second status flexRAN*/
uint32_t
flexran_get_pdcp_tx_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_tx_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_tx_w
[
mod_id
][
uid
][
lcid
];
}
/*PDCP throughput (bit/s) status flexRAN*/
uint32_t
flexran_get_pdcp_tx_bytes_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_tx_bytes_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_tx_bytes_w
[
mod_id
][
uid
][
lcid
];
}
/*PDCP tx sequence number flexRAN*/
uint32_t
flexran_get_pdcp_tx_sn
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_tx_sn
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_tx_sn
[
mod_id
][
uid
][
lcid
];
}
/*PDCP tx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_tx_aiat
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_tx_aiat
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_tx_aiat
[
mod_id
][
uid
][
lcid
];
}
/*PDCP tx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_tx_aiat_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_tx_aiat_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_tx_aiat_w
[
mod_id
][
uid
][
lcid
];
}
/*PDCP num rx pdu status flexRAN*/
uint32_t
flexran_get_pdcp_rx
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_rx
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_rx
[
mod_id
][
uid
][
lcid
];
}
/*PDCP num rx bytes status flexRAN*/
uint32_t
flexran_get_pdcp_rx_bytes
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_rx_bytes
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_rx_bytes
[
mod_id
][
uid
][
lcid
];
}
/*PDCP number of received packet / second flexRAN*/
uint32_t
flexran_get_pdcp_rx_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_rx_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_rx_w
[
mod_id
][
uid
][
lcid
];
}
/*PDCP gootput (bit/s) status flexRAN*/
uint32_t
flexran_get_pdcp_rx_bytes_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_rx_bytes_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_rx_bytes_w
[
mod_id
][
uid
][
lcid
];
}
/*PDCP rx sequence number flexRAN*/
uint32_t
flexran_get_pdcp_rx_sn
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_rx_sn
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_rx_sn
[
mod_id
][
uid
][
lcid
];
}
/*PDCP rx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_rx_aiat
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_rx_aiat
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_rx_aiat
[
mod_id
][
uid
][
lcid
];
}
/*PDCP rx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_rx_aiat_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_rx_aiat_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_rx_aiat_w
[
mod_id
][
uid
][
lcid
];
}
/*PDCP num of received outoforder pdu status flexRAN*/
uint32_t
flexran_get_pdcp_rx_oo
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
)
uint32_t
flexran_get_pdcp_rx_oo
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
)
{
uint16_t
uid
=
flexran_get_pdcp_uid
(
mod_id
,
ue_id
);
if
(
mod_id
<
0
||
mod_id
>=
RC
.
nb_inst
||
uid
<
0
||
uid
>=
MAX_MOBILES_PER_ENB
||
lcid
<
0
||
lcid
>=
NB_RB_MAX
)
return
0
;
return
Pdcp_stats_rx_outoforder
[
mod_id
][
uid
][
lcid
];
}
...
...
openair2/ENB_APP/flexran_agent_ran_api.h
View file @
03b52216
...
...
@@ -439,61 +439,63 @@ uint8_t flexran_get_rrc_status(mid_t mod_id, rnti_t rnti);
/***************************** PDCP ***********************/
/* PDCP uid obtained through the RNTI */
uint16_t
flexran_get_pdcp_uid_from_rnti
(
mid_t
mod_id
,
rnti_t
rnti
);
/*PDCP superframe numberflexRAN*/
uint32_t
flexran_get_pdcp_sfn
(
mid_t
mod_id
);
/*PDCP pdcp tx stats window*/
void
flexran_set_pdcp_tx_stat_window
(
mid_t
mod_id
,
mid_t
ue_
id
,
uint16_t
obs_window
);
void
flexran_set_pdcp_tx_stat_window
(
mid_t
mod_id
,
uint16_t
u
id
,
uint16_t
obs_window
);
/*PDCP pdcp rx stats window*/
void
flexran_set_pdcp_rx_stat_window
(
mid_t
mod_id
,
mid_t
ue_
id
,
uint16_t
obs_window
);
void
flexran_set_pdcp_rx_stat_window
(
mid_t
mod_id
,
uint16_t
u
id
,
uint16_t
obs_window
);
/*PDCP num tx pdu status flexRAN*/
uint32_t
flexran_get_pdcp_tx
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_tx
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP num tx bytes status flexRAN*/
uint32_t
flexran_get_pdcp_tx_bytes
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_tx_bytes
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP number of transmit packet / second status flexRAN*/
uint32_t
flexran_get_pdcp_tx_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_tx_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP pdcp tx bytes in a given window flexRAN*/
uint32_t
flexran_get_pdcp_tx_bytes_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_tx_bytes_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP tx sequence number flexRAN*/
uint32_t
flexran_get_pdcp_tx_sn
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_tx_sn
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP tx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_tx_aiat
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_tx_aiat
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP tx aggregated packet arrival per second flexRAN*/
uint32_t
flexran_get_pdcp_tx_aiat_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_tx_aiat_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP num rx pdu status flexRAN*/
uint32_t
flexran_get_pdcp_rx
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_rx
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP num rx bytes status flexRAN*/
uint32_t
flexran_get_pdcp_rx_bytes
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_rx_bytes
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP number of received packet / second flexRAN*/
uint32_t
flexran_get_pdcp_rx_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_rx_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP gootput (bit/s) status flexRAN*/
uint32_t
flexran_get_pdcp_rx_bytes_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_rx_bytes_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP rx sequence number flexRAN*/
uint32_t
flexran_get_pdcp_rx_sn
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_rx_sn
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP rx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_rx_aiat
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_rx_aiat
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP rx aggregated packet arrival per second flexRAN*/
uint32_t
flexran_get_pdcp_rx_aiat_w
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_rx_aiat_w
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*PDCP num of received outoforder pdu status flexRAN*/
uint32_t
flexran_get_pdcp_rx_oo
(
mid_t
mod_id
,
mid_t
ue_
id
,
lcid_t
lcid
);
uint32_t
flexran_get_pdcp_rx_oo
(
mid_t
mod_id
,
uint16_t
u
id
,
lcid_t
lcid
);
/*********************RRC**********************/
/*Get primary cell measuremeant id flexRAN*/
...
...
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