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
d35f52a2
Commit
d35f52a2
authored
7 years ago
by
Navid Nikaein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add observation window to the PDCP stats
parent
359e1528
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
133 additions
and
93 deletions
+133
-93
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
+12
-12
openair2/ENB_APP/MESSAGES/V2/stats_common.proto
openair2/ENB_APP/MESSAGES/V2/stats_common.proto
+6
-6
openair2/ENB_APP/flexran_agent_ran_api.c
openair2/ENB_APP/flexran_agent_ran_api.c
+28
-12
openair2/ENB_APP/flexran_agent_ran_api.h
openair2/ENB_APP/flexran_agent_ran_api.h
+13
-7
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+58
-37
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+16
-19
No files found.
openair2/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
View file @
d35f52a2
...
...
@@ -51,18 +51,18 @@ void flexran_agent_pdcp_aggregate_stats(const mid_t mod_id,
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_
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_
s
+=
flexran_get_pdcp_tx_aiat_s
(
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_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_
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_
s
+=
flexran_get_pdcp_rx_aiat_s
(
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
);
}
...
...
@@ -99,20 +99,20 @@ int flexran_agent_pdcp_stats_reply(mid_t mod_id,
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_
w
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_
bytes_w
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_aiat
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_aiat_
s
=
1
;
pdcp_aggr_stats
->
has_pkt_tx_aiat_
w
=
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_
w
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_
bytes_w
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_aiat
=
1
;
pdcp_aggr_stats
->
has_pkt_rx_aiat_
s
=
1
;
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
,
i
,
DEFAULT_DRB
);
...
...
This diff is collapsed.
Click to expand it.
openair2/ENB_APP/MESSAGES/V2/stats_common.proto
View file @
d35f52a2
...
...
@@ -253,18 +253,18 @@ 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_
w
=
4
;
optional
uint32
pkt_tx_
bytes_w
=
5
;
optional
uint32
pkt_tx_aiat
=
7
;
optional
uint32
pkt_tx_aiat_
s
=
8
;
optional
uint32
pkt_tx_aiat_
w
=
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_
w
=
12
;
optional
uint32
pkt_rx_
bytes_w
=
13
;
optional
uint32
pkt_rx_aiat
=
14
;
optional
uint32
pkt_rx_aiat_
s
=
15
;
optional
uint32
pkt_rx_aiat_
w
=
15
;
optional
uint32
pkt_rx_oo
=
16
;
optional
uint64
sfn
=
17
;
...
...
This diff is collapsed.
Click to expand it.
openair2/ENB_APP/flexran_agent_ran_api.c
View file @
d35f52a2
...
...
@@ -1134,6 +1134,22 @@ uint32_t flexran_get_pdcp_sfn(const mid_t mod_id){
return
pdcp_enb
[
mod_id
].
sfn
;
}
/*PDCP super frame counter flexRAN*/
uint32_t
flexran_set_pdcp_tx_stat_window
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
uint16_t
obs_window
){
if
(
obs_window
>
0
)
Pdcp_stats_tx_window_ms
[
mod_id
][
ue_id
]
=
obs_window
;
else
Pdcp_stats_tx_window_ms
[
mod_id
][
ue_id
]
=
1000
;
}
/*PDCP super frame counter flexRAN*/
uint32_t
flexran_set_pdcp_rx_stat_window
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
uint16_t
obs_window
){
if
(
obs_window
>
0
)
Pdcp_stats_rx_window_ms
[
mod_id
][
ue_id
]
=
obs_window
;
else
Pdcp_stats_rx_window_ms
[
mod_id
][
ue_id
]
=
1000
;
}
/*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
)
...
...
@@ -1147,13 +1163,13 @@ uint32_t flexran_get_pdcp_tx_bytes(const mid_t mod_id, const mid_t ue_id, const
}
/*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
];
uint32_t
flexran_get_pdcp_tx_
w
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_
w
[
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
];
uint32_t
flexran_get_pdcp_tx_
bytes_w
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_
bytes_w
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP tx sequence number flexRAN*/
...
...
@@ -1167,8 +1183,8 @@ uint32_t flexran_get_pdcp_tx_aiat(const mid_t mod_id, const mid_t ue_id, const
}
/*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
];
uint32_t
flexran_get_pdcp_tx_aiat_
w
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_tx_aiat_
w
[
mod_id
][
ue_id
][
lcid
];
}
...
...
@@ -1183,13 +1199,13 @@ uint32_t flexran_get_pdcp_rx_bytes(const mid_t mod_id, const mid_t ue_id, const
}
/*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
];
uint32_t
flexran_get_pdcp_rx_
w
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_
w
[
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
];
uint32_t
flexran_get_pdcp_rx_
bytes_w
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_
bytes_w
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP rx sequence number flexRAN*/
...
...
@@ -1203,8 +1219,8 @@ uint32_t flexran_get_pdcp_rx_aiat(const mid_t mod_id, const mid_t ue_id, const
}
/*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
];
uint32_t
flexran_get_pdcp_rx_aiat_
w
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
){
return
Pdcp_stats_rx_aiat_
w
[
mod_id
][
ue_id
][
lcid
];
}
/*PDCP num of received outoforder pdu status flexRAN*/
...
...
This diff is collapsed.
Click to expand it.
openair2/ENB_APP/flexran_agent_ran_api.h
View file @
d35f52a2
...
...
@@ -345,6 +345,12 @@ int flexran_get_rrc_status(const mid_t mod_id, const rnti_t rntiP);
/*PDCP superframe numberflexRAN*/
uint32_t
flexran_get_pdcp_sfn
(
const
mid_t
mod_id
);
/*PDCP pdcp tx stats window*/
uint32_t
flexran_set_pdcp_tx_stat_window
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
uint16_t
obs_window
);
/*PDCP pdcp rx stats window*/
uint32_t
flexran_set_pdcp_rx_stat_window
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
uint16_t
obs_window
);
/*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
);
...
...
@@ -352,10 +358,10 @@ uint32_t flexran_get_pdcp_tx(const mid_t mod_id, const mid_t ue_id, const lcid_
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
);
uint32_t
flexran_get_pdcp_tx_
w
(
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
pdcp tx bytes in a given window
flexRAN*/
uint32_t
flexran_get_pdcp_tx_
bytes_w
(
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
);
...
...
@@ -364,7 +370,7 @@ uint32_t flexran_get_pdcp_tx_sn(const mid_t mod_id, const mid_t ue_id, const lc
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
);
uint32_t
flexran_get_pdcp_tx_aiat_
w
(
const
mid_t
mod_id
,
const
mid_t
ue_id
,
const
lcid_t
lcid
);
/*PDCP num rx pdu status flexRAN*/
...
...
@@ -374,10 +380,10 @@ uint32_t flexran_get_pdcp_rx(const mid_t mod_id, const mid_t ue_id, const lcid_
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
);
uint32_t
flexran_get_pdcp_rx_
w
(
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
);
uint32_t
flexran_get_pdcp_rx_
bytes_w
(
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
);
...
...
@@ -386,7 +392,7 @@ uint32_t flexran_get_pdcp_rx_sn(const mid_t mod_id, const mid_t ue_id, const lc
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
);
uint32_t
flexran_get_pdcp_rx_aiat_
w
(
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
);
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
View file @
d35f52a2
...
...
@@ -408,13 +408,13 @@ boolean_t pdcp_data_req(
//LOG_I(PDCP,"ueid %d lcid %d tx seq num %d\n", pdcp_uid, rb_idP+rb_offset, current_sn);
Pdcp_stats_tx
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
Pdcp_stats_tx_
s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
Pdcp_stats_tx_
tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
Pdcp_stats_tx_bytes
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
sdu_buffer_sizeP
;
Pdcp_stats_tx_bytes_
s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
sdu_buffer_sizeP
;
Pdcp_stats_tx_bytes_
tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
sdu_buffer_sizeP
;
Pdcp_stats_tx_sn
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
=
current_sn
;
Pdcp_stats_tx_aiat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
Pdcp_stats_tx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]);
Pdcp_stats_tx_aiat_tmp_
s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
Pdcp_stats_tx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]);
Pdcp_stats_tx_aiat_tmp_
w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
Pdcp_stats_tx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]);
Pdcp_stats_tx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
=
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_REQ
,
VCD_FUNCTION_OUT
);
...
...
@@ -880,9 +880,9 @@ pdcp_data_ind(
}
Pdcp_stats_rx
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
Pdcp_stats_rx_
s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
Pdcp_stats_rx_
tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
Pdcp_stats_rx_bytes
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
sdu_buffer_sizeP
-
payload_offset
);
Pdcp_stats_rx_bytes_
s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
sdu_buffer_sizeP
-
payload_offset
);
Pdcp_stats_rx_bytes_
tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
sdu_buffer_sizeP
-
payload_offset
);
Pdcp_stats_rx_sn
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
=
sequence_number
;
...
...
@@ -890,7 +890,7 @@ pdcp_data_ind(
Pdcp_stats_rx_outoforder
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
Pdcp_stats_rx_aiat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
Pdcp_stats_rx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]);
Pdcp_stats_rx_aiat_tmp_
s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
Pdcp_stats_rx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]);
Pdcp_stats_rx_aiat_tmp_
w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
Pdcp_stats_rx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]);
Pdcp_stats_rx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
=
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
;
...
...
@@ -920,36 +920,45 @@ void pdcp_update_stats(const protocol_ctxt_t* const ctxt_pP){
uint8_t
rb_id
=
0
;
// these stats are measured for both eNB and UE on per seond basis
if
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
%
1000
==
0
){
for
(
rb_id
=
0
;
rb_id
<
NB_RB_MAX
;
rb_id
++
){
for
(
pdcp_uid
=
0
;
pdcp_uid
<
NUMBER_OF_UE_MAX
;
pdcp_uid
++
){
//printf("frame %d and subframe %d \n", pdcp_enb[ctxt_pP->module_id].frame, pdcp_enb[ctxt_pP->module_id].subframe);
// tx stats
Pdcp_stats_tx_rate_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_tx_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
];
if
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
%
Pdcp_stats_tx_window_ms
[
ctxt_pP
->
module_id
][
pdcp_uid
]
==
0
){
// unit: bit/s
Pdcp_stats_tx_throughput_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_tx_bytes_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
*
8
;
if
(
Pdcp_stats_tx_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
>
0
){
Pdcp_stats_tx_aiat_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
(
Pdcp_stats_tx_aiat_tmp_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
/
Pdcp_stats_tx_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]);
Pdcp_stats_tx_throughput_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_tx_bytes_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
*
8
;
Pdcp_stats_tx_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_tx_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
];
Pdcp_stats_tx_bytes_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_tx_bytes_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
];
if
(
Pdcp_stats_tx_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
>
0
){
Pdcp_stats_tx_aiat_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
(
Pdcp_stats_tx_aiat_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
/
Pdcp_stats_tx_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]);
}
else
{
Pdcp_stats_tx_aiat_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
}
// reset the tmp vars
Pdcp_stats_tx_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_tx_bytes_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_tx_aiat_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_tx_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_tx_bytes_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_tx_aiat_tmp_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
}
if
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
%
Pdcp_stats_rx_window_ms
[
ctxt_pP
->
module_id
][
pdcp_uid
]
==
0
){
// rx stats
Pdcp_stats_rx_rate_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_rx_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
];
Pdcp_stats_rx_goodput_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_rx_bytes_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
*
8
;
Pdcp_stats_rx_goodput_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_rx_bytes_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
*
8
;
Pdcp_stats_rx_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_rx_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
];
Pdcp_stats_rx_bytes_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
Pdcp_stats_rx_bytes_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
];
if
(
Pdcp_stats_rx_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
>
0
){
Pdcp_stats_rx_aiat_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
(
Pdcp_stats_rx_aiat_tmp_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
/
Pdcp_stats_rx_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]);
if
(
Pdcp_stats_rx_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
>
0
){
Pdcp_stats_rx_aiat_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
(
Pdcp_stats_rx_aiat_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
/
Pdcp_stats_rx_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]);
}
else
{
Pdcp_stats_rx_aiat_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
}
Pdcp_stats_rx_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_rx_
bytes_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_rx_
aiat_tmp_s
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
// reset the tmp vars
Pdcp_stats_rx_
tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_rx_
bytes_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
Pdcp_stats_rx_aiat_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_id
]
=
0
;
}
}
}
}
//-----------------------------------------------------------------------------
...
...
@@ -2024,6 +2033,7 @@ void pdcp_layer_init(void)
{
module_id_t
instance
;
int
i
,
j
;
#if defined(Rel10) || defined(Rel14)
mbms_session_id_t
session_id
;
mbms_service_id_t
service_id
;
...
...
@@ -2070,24 +2080,35 @@ void pdcp_layer_init(void)
memset
(
pdcp_enb
,
0
,
sizeof
(
pdcp_enb_t
));
memset
(
Pdcp_stats_tx_window_ms
,
0
,
sizeof
(
Pdcp_stats_tx_window_ms
));
memset
(
Pdcp_stats_rx_window_ms
,
0
,
sizeof
(
Pdcp_stats_rx_window_ms
));
for
(
i
=
0
;
i
<
MAX_NUM_CCs
;
i
++
){
for
(
j
=
0
;
j
<
NUMBER_OF_UE_MAX
;
j
++
){
Pdcp_stats_tx_window_ms
[
i
][
j
]
=
100
;
Pdcp_stats_rx_window_ms
[
i
][
j
]
=
100
;
}
}
memset
(
Pdcp_stats_tx
,
0
,
sizeof
(
Pdcp_stats_tx
));
memset
(
Pdcp_stats_tx_s
,
0
,
sizeof
(
Pdcp_stats_tx_s
));
memset
(
Pdcp_stats_tx_w
,
0
,
sizeof
(
Pdcp_stats_tx_w
));
memset
(
Pdcp_stats_tx_tmp_w
,
0
,
sizeof
(
Pdcp_stats_tx_tmp_w
));
memset
(
Pdcp_stats_tx_bytes
,
0
,
sizeof
(
Pdcp_stats_tx_bytes
));
memset
(
Pdcp_stats_tx_bytes_
s
,
0
,
sizeof
(
Pdcp_stats_tx_bytes_s
));
memset
(
Pdcp_stats_tx_
rate_s
,
0
,
sizeof
(
Pdcp_stats_tx_rate_s
));
memset
(
Pdcp_stats_tx_bytes_
w
,
0
,
sizeof
(
Pdcp_stats_tx_bytes_w
));
memset
(
Pdcp_stats_tx_
bytes_tmp_w
,
0
,
sizeof
(
Pdcp_stats_tx_bytes_tmp_w
));
memset
(
Pdcp_stats_tx_sn
,
0
,
sizeof
(
Pdcp_stats_tx_sn
));
memset
(
Pdcp_stats_tx_throughput_
s
,
0
,
sizeof
(
Pdcp_stats_tx_throughput_s
));
memset
(
Pdcp_stats_tx_throughput_
w
,
0
,
sizeof
(
Pdcp_stats_tx_throughput_w
));
memset
(
Pdcp_stats_tx_aiat
,
0
,
sizeof
(
Pdcp_stats_tx_aiat
));
memset
(
Pdcp_stats_tx_iat
,
0
,
sizeof
(
Pdcp_stats_tx_iat
));
memset
(
Pdcp_stats_rx
,
0
,
sizeof
(
Pdcp_stats_rx
));
memset
(
Pdcp_stats_rx_s
,
0
,
sizeof
(
Pdcp_stats_rx_s
));
memset
(
Pdcp_stats_rx_w
,
0
,
sizeof
(
Pdcp_stats_rx_w
));
memset
(
Pdcp_stats_rx_tmp_w
,
0
,
sizeof
(
Pdcp_stats_rx_tmp_w
));
memset
(
Pdcp_stats_rx_bytes
,
0
,
sizeof
(
Pdcp_stats_rx_bytes
));
memset
(
Pdcp_stats_rx_bytes_
s
,
0
,
sizeof
(
Pdcp_stats_rx_bytes_s
));
memset
(
Pdcp_stats_rx_
rate_s
,
0
,
sizeof
(
Pdcp_stats_rx_rate_s
));
memset
(
Pdcp_stats_rx_bytes_
w
,
0
,
sizeof
(
Pdcp_stats_rx_bytes_w
));
memset
(
Pdcp_stats_rx_
bytes_tmp_w
,
0
,
sizeof
(
Pdcp_stats_rx_bytes_tmp_w
));
memset
(
Pdcp_stats_rx_sn
,
0
,
sizeof
(
Pdcp_stats_rx_sn
));
memset
(
Pdcp_stats_rx_goodput_
s
,
0
,
sizeof
(
Pdcp_stats_rx_goodput_s
));
memset
(
Pdcp_stats_rx_goodput_
w
,
0
,
sizeof
(
Pdcp_stats_rx_goodput_w
));
memset
(
Pdcp_stats_rx_aiat
,
0
,
sizeof
(
Pdcp_stats_rx_aiat
));
memset
(
Pdcp_stats_rx_iat
,
0
,
sizeof
(
Pdcp_stats_rx_iat
));
memset
(
Pdcp_stats_rx_outoforder
,
0
,
sizeof
(
Pdcp_stats_rx_outoforder
));
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
View file @
d35f52a2
...
...
@@ -94,35 +94,32 @@ extern int pdcp_instance_cnt;
int
init_pdcp_thread
(
void
);
void
cleanup_pdcp_thread
(
void
);
/*
public_pdcp(uint64_t Pdcp_sfn[MAX_NUM_CCs]);
public_pdcp(frame_t Pdcp_frame[MAX_NUM_CCs]);
public_pdcp(sub_frame_t Pdcp_subframe[MAX_NUM_CCs]);
public_pdcp(uint16_t Pdcp_num_ues[MAX_NUM_CCs]);
*/
public_pdcp
(
uint32_t
Pdcp_stats_tx_window_ms
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
]);
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_bytes_w
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_bytes_tmp_w
[
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_w
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_tmp_w
[
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_throughput_w
[
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_aiat_
w
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_tx_aiat_tmp_
w
[
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_window_ms
[
MAX_NUM_CCs
][
NUMBER_OF_UE_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_w
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_tmp_w
[
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_bytes_w
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_bytes_tmp_w
[
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_goodput_w
[
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_aiat_
w
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
][
NB_RB_MAX
]);
public_pdcp
(
uint32_t
Pdcp_stats_rx_aiat_tmp_
w
[
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
]);
...
...
This diff is collapsed.
Click to expand it.
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