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
canghaiwuhen
OpenXG-RAN
Commits
d35f52a2
Commit
d35f52a2
authored
Dec 14, 2017
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
);
...
...
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
;
...
...
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*/
...
...
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
);
...
...
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
));
...
...
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
]);
...
...
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