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
promise
OpenXG-RAN
Commits
dc9cada6
Commit
dc9cada6
authored
Dec 08, 2017
by
Navid Nikaein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add PDCP stats and update agent and RAN APIs
parent
e996f5d0
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
880 additions
and
297 deletions
+880
-297
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+2
-0
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
+1
-1
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
+168
-0
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.h
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.h
+64
-0
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp_defs.h
...r2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp_defs.h
+63
-0
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
+129
-185
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
+24
-28
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc_defs.h
...air2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc_defs.h
+35
-29
openair2/ENB_APP/MESSAGES/V2/flexran.proto
openair2/ENB_APP/MESSAGES/V2/flexran.proto
+1
-0
openair2/ENB_APP/MESSAGES/V2/stats_common.proto
openair2/ENB_APP/MESSAGES/V2/stats_common.proto
+21
-0
openair2/ENB_APP/MESSAGES/V2/stats_messages.proto
openair2/ENB_APP/MESSAGES/V2/stats_messages.proto
+5
-1
openair2/ENB_APP/MESSAGES/V2/time_common.proto
openair2/ENB_APP/MESSAGES/V2/time_common.proto
+1
-0
openair2/ENB_APP/flexran_agent.c
openair2/ENB_APP/flexran_agent.c
+3
-0
openair2/ENB_APP/flexran_agent.h
openair2/ENB_APP/flexran_agent.h
+1
-0
openair2/ENB_APP/flexran_agent_defs.h
openair2/ENB_APP/flexran_agent_defs.h
+5
-0
openair2/ENB_APP/flexran_agent_extern.h
openair2/ENB_APP/flexran_agent_extern.h
+7
-0
openair2/ENB_APP/flexran_agent_handler.c
openair2/ENB_APP/flexran_agent_handler.c
+22
-3
openair2/ENB_APP/flexran_agent_ran_api.c
openair2/ENB_APP/flexran_agent_ran_api.c
+90
-0
openair2/ENB_APP/flexran_agent_ran_api.h
openair2/ENB_APP/flexran_agent_ran_api.h
+55
-0
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+145
-42
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+38
-8
No files found.
cmake_targets/CMakeLists.txt
View file @
dc9cada6
...
...
@@ -762,6 +762,7 @@ include_directories("${OPENAIR_DIR}/targets/ARCH/EXMIMO/DEFS")
include_directories
(
"
${
OPENAIR2_DIR
}
/ENB_APP"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/ENB_APP/CONTROL_MODULES/MAC"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/ENB_APP/CONTROL_MODULES/RRC"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/ENB_APP/CONTROL_MODULES/PDCP"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/OSA"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/LFDS/liblfds6.1.1/liblfds611/inc"
)
include_directories
(
"
${
OPENAIR2_DIR
}
/UTIL/LFDS/liblfds7.0.0/liblfds700/inc"
)
...
...
@@ -852,6 +853,7 @@ if (FLEXRAN_AGENT_SB_IF)
${
OPENAIR2_DIR
}
/ENB_APP/flexran_agent_common_internal.c
${
OPENAIR2_DIR
}
/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
${
OPENAIR2_DIR
}
/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
${
OPENAIR2_DIR
}
/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
${
OPENAIR2_DIR
}
/ENB_APP/flexran_agent.c
${
OPENAIR2_DIR
}
/ENB_APP/flexran_agent_task_manager.c
${
OPENAIR2_DIR
}
/ENB_APP/flexran_agent_net_comm.c
...
...
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
View file @
dc9cada6
...
...
@@ -128,7 +128,7 @@ int flexran_agent_mac_stats_reply(mid_t mod_id,
rlc_reports
[
j
]
->
retransmission_queue_hol_delay
=
100
;
rlc_reports
[
j
]
->
has_retransmission_queue_hol_delay
=
0
;
//TODO DONE:Set current size of the pending message in bytes
rlc_reports
[
j
]
->
status_pdu_size
=
flexran_get_
tx_queue_size
(
enb_id
,
i
,
j
+
1
);
rlc_reports
[
j
]
->
status_pdu_size
=
flexran_get_
num_pdus_buffer
(
enb_id
,
i
,
j
+
1
);
rlc_reports
[
j
]
->
has_status_pdu_size
=
1
;
}
...
...
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
0 → 100644
View file @
dc9cada6
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file flexran_agent_pdcp.c
* \brief FlexRAN agent Control Module PDCP
* \author shahab SHARIAT BAGHERI
* \date 2017
* \version 0.1
*/
#include "flexran_agent_pdcp.h"
/*Trigger boolean for PDCP measurement*/
bool
triggered_pdcp
=
false
;
/*Flags showing if a pdcp agent has already been registered*/
unsigned
int
pdcp_agent_registered
[
NUM_MAX_ENB
];
/*Array containing the Agent-PDCP interfaces*/
AGENT_PDCP_xface
*
agent_pdcp_xface
[
NUM_MAX_ENB
];
// NUMBER_OF_UE_MAX
void
flexran_agent_pdcp_aggregate_stats
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
Protocol__FlexPdcpStats
*
pdcp_aggr_stats
){
int
lcid
=
0
;
/* only calculate the DRBs */
//LOG_I(FLEXRAN_AGENT, "enb %d ue %d \n", mod_id, ue_id);
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_rate_s
+=
flexran_get_pdcp_tx_rate_s
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_tx_throughput_s
+=
flexran_get_pdcp_tx_throughput_s
(
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_s
+=
flexran_get_pdcp_tx_aiat_s
(
mod_id
,
ue_id
,
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_rate_s
+=
flexran_get_pdcp_rx_rate_s
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_goodput_s
+=
flexran_get_pdcp_rx_goodput_s
(
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_s
+=
flexran_get_pdcp_rx_aiat_s
(
mod_id
,
ue_id
,
lcid
);
pdcp_aggr_stats
->
pkt_rx_oo
+=
flexran_get_pdcp_rx_oo
(
mod_id
,
ue_id
,
lcid
);
}
}
int
flexran_agent_pdcp_stats_reply
(
mid_t
mod_id
,
const
report_config_t
*
report_config
,
Protocol__FlexUeStatsReport
**
ue_report
,
Protocol__FlexCellStatsReport
**
cell_report
)
{
// Protocol__FlexHeader *header;
int
i
,
j
,
k
;
// int cc_id = 0;
/* Allocate memory for list of UE reports */
if
(
report_config
->
nr_ue
>
0
)
{
for
(
i
=
0
;
i
<
report_config
->
nr_ue
;
i
++
)
{
/* 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
)
{
Protocol__FlexPdcpStats
*
pdcp_aggr_stats
;
pdcp_aggr_stats
=
malloc
(
sizeof
(
Protocol__FlexPdcpStats
));
if
(
pdcp_aggr_stats
==
NULL
)
goto
error
;
protocol__flex_pdcp_stats__init
(
pdcp_aggr_stats
);
flexran_agent_pdcp_aggregate_stats
(
mod_id
,
i
,
pdcp_aggr_stats
);
pdcp_aggr_stats
->
has_pkt_tx
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_bytes
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_rate_s
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_throughput_s
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_aiat
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_aiat_s
=
1
;
pdcp_aggr_stats
->
pkt_tx_sn
=
flexran_get_pdcp_tx_sn
(
mod_id
,
i
,
DEFAULT_DRB
);
pdcp_aggr_stats
->
has_pkt_tx_sn
=
1
;
pdcp_aggr_stats
->
has_pkt_rx
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_bytes
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_rate_s
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_goodput_s
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_aiat
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_aiat_s
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_oo
=
1
;
pdcp_aggr_stats
->
pkt_rx_sn
=
flexran_get_pdcp_rx_sn
(
mod_id
,
i
,
DEFAULT_DRB
);
pdcp_aggr_stats
->
has_pkt_rx_sn
=
1
;
ue_report
[
i
]
->
pdcp_stats
=
pdcp_aggr_stats
;
}
}
}
else
{
LOG_D
(
FLEXRAN_AGENT
,
"no UE
\n
"
);
}
return
0
;
error:
LOG_W
(
FLEXRAN_AGENT
,
"Can't allocate PDCP stats
\n
"
);
/* if (cell_report != NULL)
free(cell_report);
if (ue_report != NULL)
free(ue_report);
*/
return
-
1
;
}
int
flexran_agent_register_pdcp_xface
(
mid_t
mod_id
,
AGENT_PDCP_xface
*
xface
)
{
if
(
pdcp_agent_registered
[
mod_id
])
{
LOG_E
(
PDCP
,
"PDCP agent for eNB %d is already registered
\n
"
,
mod_id
);
return
-
1
;
}
//xface->flexran_pdcp_stats_measurement = NULL;
pdcp_agent_registered
[
mod_id
]
=
1
;
agent_pdcp_xface
[
mod_id
]
=
xface
;
return
0
;
}
int
flexran_agent_unregister_pdcp_xface
(
mid_t
mod_id
,
AGENT_PDCP_xface
*
xface
)
{
//xface->agent_ctxt = NULL;
//xface->flexran_pdcp_stats_measurement = NULL;
pdcp_agent_registered
[
mod_id
]
=
0
;
agent_pdcp_xface
[
mod_id
]
=
NULL
;
return
0
;
}
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.h
0 → 100644
View file @
dc9cada6
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file flexran_agent_pdcp.h
* \brief FlexRAN agent Control Module PDCP header
* \author shahab SHARIAT BAGHERI
* \date 2017
* \version 0.1
*/
#ifndef FLEXRAN_AGENT_PDCP_H_
#define FLEXRAN_AGENT_PDCP_H_
#include "header.pb-c.h"
#include "flexran.pb-c.h"
#include "stats_messages.pb-c.h"
#include "stats_common.pb-c.h"
#include "flexran_agent_common.h"
#include "flexran_agent_defs.h"
#include "flexran_agent_pdcp_defs.h"
#include "flexran_agent_ran_api.h"
/**********************************
* FlexRAN agent - technology PDCP API
**********************************/
/* Send to the controller all the pdcp stat updates that occured during this subframe*/
int
flexran_agent_pdcp_stats_reply
(
mid_t
mod_id
,
const
report_config_t
*
report_config
,
Protocol__FlexUeStatsReport
**
ue_report
,
Protocol__FlexCellStatsReport
**
cell_report
);
/* 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
,
Protocol__FlexPdcpStats
*
pdcp_aggr_stats
);
/*Register technology specific interface callbacks*/
int
flexran_agent_register_pdcp_xface
(
mid_t
mod_id
,
AGENT_PDCP_xface
*
xface
);
/*Unregister technology specific callbacks*/
int
flexran_agent_unregister_pdcp_xface
(
mid_t
mod_id
,
AGENT_PDCP_xface
*
xface
);
#endif
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp_defs.h
0 → 100644
View file @
dc9cada6
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef __FLEXRAN_AGENT_PDCP_PRIMITIVES_H__
#define __FLEXRAN_AGENT_PDCP_PRIMITIVES_H__
#include "flexran_agent_defs.h"
#include "flexran.pb-c.h"
#include "header.pb-c.h"
/*PDCP aggregated Packet stats */
/*
typedef struct pdcp_aggr_stats_s {
int32_t rnti;
int32_t pkt_tx;
int32_t pkt_tx_bytes;
int32_t pkt_tx_sn;
int32_t pkt_tx_rate_s;
int32_t pkt_tx_throughput_s;
int32_t pkt_tx_aiat;
int32_t pkt_tx_aiat_s;
int32_t pkt_rx;
int32_t pkt_rx_bytes;
int32_t pkt_rx_sn;
int32_t pkt_rx_rate_s;
int32_t pkt_rx_goodput_s;
int32_t pkt_rx_aiat;
int32_t pkt_rx_aiat_s;
int32_t pkt_rx_oo;
} pdcp_aggr_stats_t;
*/
/* FLEXRAN AGENT-PDCP Interface */
typedef
struct
{
// PDCP statistics
void
(
*
flexran_pdcp_stats_measurement
)(
mid_t
mod_id
,
uint16_t
rnti
,
uint16_t
seq_num
,
uint32_t
size
);
}
AGENT_PDCP_xface
;
#endif
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
View file @
dc9cada6
This diff is collapsed.
Click to expand it.
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
View file @
dc9cada6
/*******************************************************************************
OpenAirInterface
Copyright(c) 1999 - 2014 Eurecom
OpenAirInterface is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenAirInterface is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenAirInterface.The full GNU General Public License is
included in this distribution in the file called "COPYING". If not,
see <http://www.gnu.org/licenses/>.
Contact Information
OpenAirInterface Admin: openair_admin@eurecom.fr
OpenAirInterface Tech : openair_tech@eurecom.fr
OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France.
*******************************************************************************/
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file flexran_agent_rrc.h
* \brief FlexRAN agent Control Module RRC header
...
...
@@ -65,6 +57,10 @@ int flexran_agent_destroy_ue_state_change(Protocol__FlexranMessage *msg);
/* this is called by RRC as a part of rrc xface . The controller previously requested this*/
void
flexran_trigger_rrc_measurements
(
mid_t
mod_id
,
MeasResults_t
*
);
/* Statistics reply protocol message constructor and destructor */
int
flexran_agent_rrc_stats_reply
(
mid_t
mod_id
,
const
report_config_t
*
report_config
,
Protocol__FlexUeStatsReport
**
ue_report
,
Protocol__FlexCellStatsReport
**
cell_report
);
int
flexran_agent_rrc_destroy_stats_reply
(
Protocol__FlexranMessage
*
msg
);
/*Register technology specific interface callbacks*/
int
flexran_agent_register_rrc_xface
(
mid_t
mod_id
,
AGENT_RRC_xface
*
xface
);
...
...
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc_defs.h
View file @
dc9cada6
/*******************************************************************************
OpenAirInterface
Copyright(c) 1999 - 2016 Eurecom
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
OpenAirInterface is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenAirInterface is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenAirInterface.The full GNU General Public License is
included in this distribution in the file called "COPYING". If not,
see <http://www.gnu.org/licenses/>.
Contact Information
OpenAirInterface Admin: openair_admin@eurecom.fr
OpenAirInterface Tech : openair_tech@eurecom.fr
OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
Address : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France.
*******************************************************************************/
/*! \file flexran_agent_rrc_defs.h
* \brief FlexRAN agent - RRC interface primitives
...
...
@@ -46,11 +39,24 @@
#define RINGBUFFER_SIZE 100
typedef
struct
{
int32_t
rnti
;
int32_t
meas_id
;
int32_t
rsrp
;
int32_t
rsrq
;
/*To Be Extended*/
}
rrc_meas_stats
;
/* RRC CMI statistics */
rrc_meas_stats
*
meas_stats
;
/* FLEXRAN AGENT-RRC Interface */
typedef
struct
{
/// Inform the controller about the scheduling requests received during the subframe
//void (*flexran_agent_send_update_rrc_stats)(mid_t mod_id);
/// Notify the controller for a state change of a particular UE, by sending the proper
/// UE state change message (ACTIVATION, DEACTIVATION, HANDOVER)
...
...
openair2/ENB_APP/MESSAGES/V2/flexran.proto
View file @
dc9cada6
...
...
@@ -132,6 +132,7 @@ message flex_enb_config_reply {
optional
flex_header
header
=
1
;
optional
uint32
eNB_id
=
2
;
// Unique id to distinguish the eNB
repeated
flex_cell_config
cell_config
=
3
;
optional
uint32
device_spec
=
4
;
}
message
flex_ue_config_request
{
...
...
openair2/ENB_APP/MESSAGES/V2/stats_common.proto
View file @
dc9cada6
...
...
@@ -242,3 +242,24 @@ message flex_eutra_ref_signal_meas {
optional
int32
rsrq
=
2
;
}
message
flex_pdcp_stats
{
optional
uint32
pkt_tx
=
1
;
optional
uint32
pkt_tx_bytes
=
2
;
optional
uint32
pkt_tx_sn
=
3
;
optional
uint32
pkt_tx_rate_s
=
4
;
optional
uint32
pkt_tx_throughput_s
=
5
;
optional
uint32
pkt_tx_aiat
=
7
;
optional
uint32
pkt_tx_aiat_s
=
8
;
optional
uint32
pkt_rx
=
9
;
optional
uint32
pkt_rx_bytes
=
10
;
optional
uint32
pkt_rx_sn
=
11
;
optional
uint32
pkt_rx_rate_s
=
12
;
optional
uint32
pkt_rx_goodput_s
=
13
;
optional
uint32
pkt_rx_aiat
=
14
;
optional
uint32
pkt_rx_aiat_s
=
15
;
optional
uint32
pkt_rx_oo
=
16
;
}
openair2/ENB_APP/MESSAGES/V2/stats_messages.proto
View file @
dc9cada6
...
...
@@ -47,7 +47,8 @@ message flex_ue_stats_report {
optional
flex_dl_cqi_report
dl_cqi_report
=
7
;
optional
flex_paging_buffer_report
pbr
=
8
;
optional
flex_ul_cqi_report
ul_cqi_report
=
9
;
optional
flex_rrc_measurements
rrc_measurements
=
10
;
optional
flex_rrc_measurements
rrc_measurements
=
10
;
optional
flex_pdcp_stats
pdcp_stats
=
11
;
}
//
...
...
@@ -84,6 +85,9 @@ enum flex_ue_stats_type {
FLUST_DL_CQI
=
16
;
FLUST_PBS
=
32
;
FLUST_UL_CQI
=
64
;
FLUST_PDCP_STATS
=
1024
;
// To be changed
// To be extended with more types of stats
FLUST_RRC_MEASUREMENTS
=
65536
;
}
openair2/ENB_APP/MESSAGES/V2/time_common.proto
View file @
dc9cada6
...
...
@@ -26,5 +26,6 @@ message flex_ul_info {
optional
uint32
reception_status
=
3
;
optional
uint32
tpc
=
4
;
optional
uint32
serv_cell_index
=
5
;
optional
uint32
rssi
=
6
;
}
openair2/ENB_APP/flexran_agent.c
View file @
dc9cada6
...
...
@@ -267,6 +267,9 @@ int flexran_agent_start(mid_t mod_id, const Enb_properties_array_t* enb_properti
AGENT_RRC_xface
*
rrc_agent_xface
=
(
AGENT_RRC_xface
*
)
malloc
(
sizeof
(
AGENT_RRC_xface
));
flexran_agent_register_rrc_xface
(
mod_id
,
rrc_agent_xface
);
AGENT_PDCP_xface
*
pdcp_agent_xface
=
(
AGENT_PDCP_xface
*
)
malloc
(
sizeof
(
AGENT_PDCP_xface
));
flexran_agent_register_pdcp_xface
(
mod_id
,
pdcp_agent_xface
);
/*
* initilize a timer
*/
...
...
openair2/ENB_APP/flexran_agent.h
View file @
dc9cada6
...
...
@@ -38,6 +38,7 @@
#include "flexran_agent_ran_api.h"
#include "flexran_agent_mac.h"
#include "flexran_agent_rrc.h"
#include "flexran_agent_pdcp.h"
#include "log.h"
#include "assertions.h"
...
...
openair2/ENB_APP/flexran_agent_defs.h
View file @
dc9cada6
...
...
@@ -32,11 +32,16 @@
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
#include <stdbool.h>
#include <time.h>
#include "link_manager.h"
#define NUM_MAX_ENB 2
#define NUM_MAX_DRB 8
#define NUM_MAX_SRB 3
#define NUM_MAX_UE 2048
#define DEFAULT_DRB 3
#define DEFAULT_FLEXRAN_AGENT_IPv4_ADDRESS "127.0.0.1"
#define DEFAULT_FLEXRAN_AGENT_PORT 2210
#define DEFAULT_FLEXRAN_AGENT_CACHE "/mnt/oai_agent_cache"
...
...
openair2/ENB_APP/flexran_agent_extern.h
View file @
dc9cada6
...
...
@@ -33,6 +33,7 @@
// #include "flexran_agent_defs.h"
#include "flexran_agent_mac_defs.h"
#include "flexran_agent_rrc_defs.h"
#include "flexran_agent_pdcp_defs.h"
//extern msg_context_t shared_ctxt[NUM_MAX_ENB][FLEXRAN_AGENT_MAX];
...
...
@@ -51,6 +52,12 @@ extern AGENT_RRC_xface *agent_rrc_xface[NUM_MAX_ENB];
/* Flag indicating whether the VSFs for the RRC control module have been registered */
extern
unsigned
int
rrc_agent_registered
[
NUM_MAX_ENB
];
/* Control module interface for the communication of the RRC Control Module with the agent */
extern
AGENT_PDCP_xface
*
agent_pdcp_xface
[
NUM_MAX_ENB
];
/* Flag indicating whether the VSFs for the RRC control module have been registered */
extern
unsigned
int
pdcp_agent_registered
[
NUM_MAX_ENB
];
/* Requried to know which UEs had a harq updated over some subframe */
extern
int
harq_pid_updated
[
NUMBER_OF_UE_MAX
][
8
];
extern
int
harq_pid_round
[
NUMBER_OF_UE_MAX
][
8
];
...
...
openair2/ENB_APP/flexran_agent_handler.c
View file @
dc9cada6
...
...
@@ -143,7 +143,7 @@ void * flexran_agent_pack_message(Protocol__FlexranMessage *msg,
DevAssert
(
buffer
!=
NULL
);
LOG_D
(
FLEXRAN_AGENT
,
"Serilized the e
nb mac
stats reply (size %d)
\n
"
,
*
size
);
LOG_D
(
FLEXRAN_AGENT
,
"Serilized the e
NB-UE
stats reply (size %d)
\n
"
,
*
size
);
return
buffer
;
...
...
@@ -457,7 +457,7 @@ int flexran_agent_stats_reply(mid_t enb_id, xid_t xid, const report_config_t *re
}
/*
/*
MAC reply split
*/
...
...
@@ -467,7 +467,26 @@ int flexran_agent_stats_reply(mid_t enb_id, xid_t xid, const report_config_t *re
goto
error
;
}
/*
RRC reply split
*/
if
(
flexran_agent_rrc_stats_reply
(
enb_id
,
report_config
,
ue_report
,
cell_report
)
<
0
)
{
err_code
=
PROTOCOL__FLEXRAN_ERR__MSG_BUILD
;
goto
error
;
}
/*
PDCP reply split
*/
if
(
flexran_agent_pdcp_stats_reply
(
enb_id
,
report_config
,
ue_report
,
cell_report
)
<
0
)
{
err_code
=
PROTOCOL__FLEXRAN_ERR__MSG_BUILD
;
goto
error
;
}
stats_reply_msg
->
cell_report
=
cell_report
;
stats_reply_msg
->
ue_report
=
ue_report
;
...
...
openair2/ENB_APP/flexran_agent_ran_api.c
View file @
dc9cada6
...
...
@@ -179,6 +179,17 @@ int flexran_get_tx_queue_size(mid_t mod_id, mid_t ue_id, logical_chan_id_t chann
return
rlc_status
.
bytes_in_buffer
;
}
int
flexran_get_num_pdus_buffer
(
mid_t
mod_id
,
mid_t
ue_id
,
logical_chan_id_t
channel_id
)
{
rnti_t
rnti
=
flexran_get_ue_crnti
(
mod_id
,
ue_id
);
uint16_t
frame
=
(
uint16_t
)
flexran_get_current_frame
(
mod_id
);
uint16_t
subframe
=
(
uint16_t
)
flexran_get_current_subframe
(
mod_id
);
mac_rlc_status_resp_t
rlc_status
=
mac_rlc_status_ind
(
mod_id
,
rnti
,
mod_id
,
frame
,
subframe
,
ENB_FLAG_YES
,
MBMS_FLAG_NO
,
channel_id
,
0
);
return
rlc_status
.
pdus_in_buffer
;
}
int
flexran_get_hol_delay
(
mid_t
mod_id
,
mid_t
ue_id
,
logical_chan_id_t
channel_id
)
{
rnti_t
rnti
=
flexran_get_ue_crnti
(
mod_id
,
ue_id
);
uint16_t
frame
=
(
uint16_t
)
flexran_get_current_frame
(
mod_id
);
...
...
@@ -1077,6 +1088,85 @@ void flexran_agent_set_operating_frame_type (mid_t mod_id, int cc_id, int frame_
enb_properties
->
properties
[
mod_id
]
->
frame_type
[
cc_id
]
=
frame_type
;
}
/*********** PDCP *************/
/*PDCP num tx pdu status flexRAN*/
uint32_t
flexran_get_pdcp_tx
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
if
(
mod_id
<
0
||
mod_id
>
MAX_NUM_CCs
||
ue_id
<
0
||
ue_id
>
NUMBER_OF_UE_MAX
||
lcid
<
0
||
lcid
>
NB_RB_MAX
)
return
-
1
;
return
Pdcp_stats_tx
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP num tx bytes status flexRAN*/
uint32_t
flexran_get_pdcp_tx_bytes
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_bytes
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP number of transmit packet / second status flexRAN*/
uint32_t
flexran_get_pdcp_tx_rate_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_rate_s
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP throughput (bit/s) status flexRAN*/
uint32_t
flexran_get_pdcp_tx_throughput_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_throughput_s
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP tx sequence number flexRAN*/
uint32_t
flexran_get_pdcp_tx_sn
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_sn
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP tx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_tx_aiat
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_aiat
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP tx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_tx_aiat_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_aiat_s
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP num rx pdu status flexRAN*/
uint32_t
flexran_get_pdcp_rx
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP num rx bytes status flexRAN*/
uint32_t
flexran_get_pdcp_rx_bytes
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_bytes
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP number of received packet / second flexRAN*/
uint32_t
flexran_get_pdcp_rx_rate_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_rate_s
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP gootput (bit/s) status flexRAN*/
uint32_t
flexran_get_pdcp_rx_goodput_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_goodput_s
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP rx sequence number flexRAN*/
uint32_t
flexran_get_pdcp_rx_sn
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_sn
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP rx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_rx_aiat
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_aiat
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP rx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_rx_aiat_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_aiat_s
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP num of received outoforder pdu status flexRAN*/
uint32_t
flexran_get_pdcp_rx_oo
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_outoforder
[
mod_id
][
ue_id
][
lcid
];
}
openair2/ENB_APP/flexran_agent_ran_api.h
View file @
dc9cada6
...
...
@@ -39,6 +39,7 @@
#include "LAYER2/MAC/extern.h"
#include "LAYER2/RLC/rlc.h"
#include "SCHED/defs.h"
#include "pdcp.h"
#include "RRC/LITE/extern.h"
#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
#include "RRC/LITE/rrc_eNB_UE_context.h"
...
...
@@ -91,6 +92,9 @@ int flexran_get_ue_wcqi (mid_t mod_id, mid_t ue_id);
/* Get the transmission queue size for a UE with a channel_id logical channel id */
int
flexran_get_tx_queue_size
(
mid_t
mod_id
,
mid_t
ue_id
,
logical_chan_id_t
channel_id
);
/*Get number of pdus in RLC buffer*/
int
flexran_get_num_pdus_buffer
(
mid_t
mod_id
,
mid_t
ue_id
,
logical_chan_id_t
channel_id
);
/* Get the head of line delay for a UE with a channel_id logical channel id */
int
flexran_get_hol_delay
(
mid_t
mod_id
,
mid_t
ue_id
,
logical_chan_id_t
channel_id
);
...
...
@@ -334,3 +338,54 @@ void flexran_agent_set_operating_frame_type (mid_t mod_id, int cc_id, int frame_
/*RRC status flexRAN*/
int
flexran_get_rrc_status
(
const
mid_t
mod_id
,
const
rnti_t
rntiP
);
/***************************** PDCP ***********************/
/*PDCP num tx pdu status flexRAN*/
uint32_t
flexran_get_pdcp_tx
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP num tx bytes status flexRAN*/
uint32_t
flexran_get_pdcp_tx_bytes
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP number of transmit packet / second status flexRAN*/
uint32_t
flexran_get_pdcp_tx_rate_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP throughput (bit/s) status flexRAN*/
uint32_t
flexran_get_pdcp_tx_throughput_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP tx sequence number flexRAN*/
uint32_t
flexran_get_pdcp_tx_sn
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP tx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_tx_aiat
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP tx aggregated packet arrival per second flexRAN*/
uint32_t
flexran_get_pdcp_tx_aiat_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP num rx pdu status flexRAN*/
uint32_t
flexran_get_pdcp_rx
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP num rx bytes status flexRAN*/
uint32_t
flexran_get_pdcp_rx_bytes
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP number of received packet / second flexRAN*/
uint32_t
flexran_get_pdcp_rx_rate_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP gootput (bit/s) status flexRAN*/
uint32_t
flexran_get_pdcp_rx_goodput_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP rx sequence number flexRAN*/
uint32_t
flexran_get_pdcp_rx_sn
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP rx aggregated packet arrival flexRAN*/
uint32_t
flexran_get_pdcp_rx_aiat
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP rx aggregated packet arrival per second flexRAN*/
uint32_t
flexran_get_pdcp_rx_aiat_s
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP num of received outoforder pdu status flexRAN*/
uint32_t
flexran_get_pdcp_rx_oo
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
View file @
dc9cada6
This diff is collapsed.
Click to expand it.
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
View file @
dc9cada6
...
...
@@ -94,15 +94,41 @@ extern int pdcp_instance_cnt;
int
init_pdcp_thread
(
void
);
void
cleanup_pdcp_thread
(
void
);
public_pdcp
(
frame_t
pdcp_frame
);
public_pdcp
(
sub_frame_t
pdcp_subframe
);
public_pdcp
(
uint16_t
pdcp_num_ues
);
public_pdcp
(
uint32_t
Pdcp_stats_tx_bytes
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_bytes_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_sn
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_rate_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_throughput_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_aiat
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_aiat_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_aiat_tmp_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_iat
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_bytes
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_bytes_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_sn
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_rate_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_goodput_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_aiat
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_aiat_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_aiat_tmp_s
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_iat
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_outoforder
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
/*Packet Probing for agent PDCP*/
//public_pdcp(uint64_t *pdcp_packet_counter);
//public_pdcp(uint64_t *pdcp_size_packet);
public_pdcp
(
unsigned
int
Pdcp_stats_tx
[
NB_MODULES_MAX
][
NB_CNX_CH
][
NB_RAB_MAX
]);
public_pdcp
(
unsigned
int
Pdcp_stats_tx_bytes
[
NB_MODULES_MAX
][
NB_CNX_CH
][
NB_RAB_MAX
]);
public_pdcp
(
unsigned
int
Pdcp_stats_tx_bytes_last
[
NB_MODULES_MAX
][
NB_CNX_CH
][
NB_RAB_MAX
]);
public_pdcp
(
unsigned
int
Pdcp_stats_tx_rate
[
NB_MODULES_MAX
][
NB_CNX_CH
][
NB_RAB_MAX
]);
public_pdcp
(
unsigned
int
Pdcp_stats_rx
[
NB_MODULES_MAX
][
NB_CNX_CH
][
NB_RAB_MAX
]);
public_pdcp
(
unsigned
int
Pdcp_stats_rx_bytes
[
NB_MODULES_MAX
][
NB_CNX_CH
][
NB_RAB_MAX
]);
public_pdcp
(
unsigned
int
Pdcp_stats_rx_bytes_last
[
NB_MODULES_MAX
][
NB_CNX_CH
][
NB_RAB_MAX
]);
public_pdcp
(
unsigned
int
Pdcp_stats_rx_rate
[
NB_MODULES_MAX
][
NB_CNX_CH
][
NB_RAB_MAX
]);
typedef
struct
pdcp_stats_s
{
time_stats_t
pdcp_run
;
...
...
@@ -125,6 +151,10 @@ typedef struct pdcp_s {
boolean_t
is_ue
;
boolean_t
is_srb
;
// used for eNB stats generation
uint16_t
uid
[
NUMBER_OF_UE_MAX
];
// local to pdcp
rnti_t
rnti
[
NUMBER_OF_UE_MAX
];
/* Configured security algorithms */
uint8_t
cipheringAlgorithm
;
uint8_t
integrityProtAlgorithm
;
...
...
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