Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
openairinterface5G
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
oai
openairinterface5G
Commits
13a94c7a
Commit
13a94c7a
authored
6 years ago
by
Robert Schmidt
Browse files
Options
Downloads
Patches
Plain Diff
Revert "Drop traffic in PDCP if RLC buffer is full"
This reverts commit
97c69dc4
.
parent
c1359a10
No related branches found
No related tags found
1 merge request
!384
Feature slice+restart on top of develop.w35
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+17
-32
17 additions, 32 deletions
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+0
-2
0 additions, 2 deletions
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
openair2/LAYER2/RLC/rlc.h
+0
-1
0 additions, 1 deletion
openair2/LAYER2/RLC/rlc.h
with
17 additions
and
35 deletions
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+
17
−
32
View file @
13a94c7a
...
@@ -169,11 +169,6 @@ boolean_t pdcp_data_req(
...
@@ -169,11 +169,6 @@ boolean_t pdcp_data_req(
start_meas
(
&
UE_pdcp_stats
[
ctxt_pP
->
module_id
].
data_req
);
start_meas
(
&
UE_pdcp_stats
[
ctxt_pP
->
module_id
].
data_req
);
}
}
for
(
pdcp_uid
=
0
;
pdcp_uid
<
MAX_MOBILES_PER_ENB
;
++
pdcp_uid
)
{
if
(
pdcp_enb
[
ctxt_pP
->
module_id
].
rnti
[
pdcp_uid
]
==
ctxt_pP
->
rnti
)
break
;
}
// PDCP transparent mode for MBMS traffic
// PDCP transparent mode for MBMS traffic
if
(
modeP
==
PDCP_TRANSMISSION_MODE_TRANSPARENT
)
{
if
(
modeP
==
PDCP_TRANSMISSION_MODE_TRANSPARENT
)
{
...
@@ -371,24 +366,13 @@ boolean_t pdcp_data_req(
...
@@ -371,24 +366,13 @@ boolean_t pdcp_data_req(
LOG_DUMPMSG
(
PDCP
,
DEBUG_PDCP
,(
char
*
)
pdcp_pdu_p
->
data
,
pdcp_pdu_size
,
LOG_DUMPMSG
(
PDCP
,
DEBUG_PDCP
,(
char
*
)
pdcp_pdu_p
->
data
,
pdcp_pdu_size
,
"[MSG] PDCP DL %s PDU on rb_id %d
\n
"
,(
srb_flagP
)
?
"CONTROL"
:
"DATA"
,
rb_idP
);
"[MSG] PDCP DL %s PDU on rb_id %d
\n
"
,(
srb_flagP
)
?
"CONTROL"
:
"DATA"
,
rb_idP
);
/* if RLC buffer for this UE has been full, we want to skip all subsequent
rlc_status
=
rlc_data_req
(
ctxt_pP
,
srb_flagP
,
MBMS_FLAG_NO
,
rb_idP
,
muiP
,
confirmP
,
pdcp_pdu_size
,
pdcp_pdu_p
* traffic for TM_SKIP_FULL_BUF_MS ms. Afterwards, it will be checkd again */
if
(
pdcp_enb
[
ctxt_pP
->
module_id
].
time_buf_full
[
pdcp_uid
]
==
0
||
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
pdcp_enb
[
ctxt_pP
->
module_id
].
time_buf_full
[
pdcp_uid
]
>=
TM_SKIP_FULL_BUF_MS
)
{
pdcp_enb
[
ctxt_pP
->
module_id
].
time_buf_full
[
pdcp_uid
]
=
0
;
rlc_status
=
rlc_data_req
(
ctxt_pP
,
srb_flagP
,
MBMS_FLAG_NO
,
rb_idP
,
muiP
,
confirmP
,
pdcp_pdu_size
,
pdcp_pdu_p
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
sourceL2Id
,
sourceL2Id
,
destinationL2Id
,
destinationL2Id
#endif
#endif
);
);
}
else
{
/* RLC would free pdcp_pdu_p, but since we skip it, have to do it
* ourselves and fake normal operation */
free_mem_block
(
pdcp_pdu_p
,
__func__
);
rlc_status
=
RLC_OP_SKIPPED_FUL_BUF
;
}
}
}
switch
(
rlc_status
)
{
switch
(
rlc_status
)
{
...
@@ -406,17 +390,9 @@ boolean_t pdcp_data_req(
...
@@ -406,17 +390,9 @@ boolean_t pdcp_data_req(
return
FALSE
;
return
FALSE
;
case
RLC_OP_STATUS_OUT_OF_RESSOURCES
:
case
RLC_OP_STATUS_OUT_OF_RESSOURCES
:
pdcp_enb
[
ctxt_pP
->
module_id
].
time_buf_full
[
pdcp_uid
]
=
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
;
LOG_W
(
PDCP
,
"Data sending request over RLC failed with 'Out of Resources' reason!
\n
"
);
LOG_W
(
PDCP
,
"Data sending request over RLC failed with 'Out of Resources' reason!
\n
"
);
int
h
=
TM_SKIP_FULL_BUF_MS
;
ret
=
FALSE
;
LOG_W
(
PDCP
,
"Blocking incoming traffic for %d ms
\n
"
,
h
);
break
;
return
FALSE
;
case
RLC_OP_SKIPPED_FUL_BUF
:
LOG_D
(
PDCP
,
"Skipping RLC request due to full buffer
\n
"
);
/* fake good return so that GTP doesn't spam us and return immediately so
* that dropped traffic is not counted in PDCP traffic stats */
return
TRUE
;
default:
default:
LOG_W
(
PDCP
,
"RLC returned an unknown status code after PDCP placed the order to send some data (Status Code:%d)
\n
"
,
rlc_status
);
LOG_W
(
PDCP
,
"RLC returned an unknown status code after PDCP placed the order to send some data (Status Code:%d)
\n
"
,
rlc_status
);
...
@@ -430,6 +406,16 @@ boolean_t pdcp_data_req(
...
@@ -430,6 +406,16 @@ boolean_t pdcp_data_req(
stop_meas
(
&
UE_pdcp_stats
[
ctxt_pP
->
module_id
].
data_req
);
stop_meas
(
&
UE_pdcp_stats
[
ctxt_pP
->
module_id
].
data_req
);
}
}
/*
* Control arrives here only if rlc_data_req() returns RLC_OP_STATUS_OK
* so we return TRUE afterwards
*/
for
(
pdcp_uid
=
0
;
pdcp_uid
<
MAX_MOBILES_PER_ENB
;
pdcp_uid
++
){
if
(
pdcp_enb
[
ctxt_pP
->
module_id
].
rnti
[
pdcp_uid
]
==
ctxt_pP
->
rnti
)
break
;
}
//LOG_I(PDCP,"ueid %d lcid %d tx seq num %d\n", pdcp_uid, rb_idP+rb_offset, current_sn);
//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
[
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_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
...
@@ -1078,7 +1064,6 @@ void pdcp_add_UE(const protocol_ctxt_t* const ctxt_pP){
...
@@ -1078,7 +1064,6 @@ void pdcp_add_UE(const protocol_ctxt_t* const ctxt_pP){
if
(
pdcp_enb
[
ctxt_pP
->
module_id
].
rnti
[
i
]
==
0
){
if
(
pdcp_enb
[
ctxt_pP
->
module_id
].
rnti
[
i
]
==
0
){
pdcp_enb
[
ctxt_pP
->
module_id
].
rnti
[
i
]
=
ctxt_pP
->
rnti
;
pdcp_enb
[
ctxt_pP
->
module_id
].
rnti
[
i
]
=
ctxt_pP
->
rnti
;
pdcp_enb
[
ctxt_pP
->
module_id
].
uid
[
i
]
=
i
;
pdcp_enb
[
ctxt_pP
->
module_id
].
uid
[
i
]
=
i
;
pdcp_enb
[
ctxt_pP
->
module_id
].
time_buf_full
[
i
]
=
0
;
pdcp_enb
[
ctxt_pP
->
module_id
].
num_ues
++
;
pdcp_enb
[
ctxt_pP
->
module_id
].
num_ues
++
;
printf
(
"add new uid is %d %x
\n\n
"
,
i
,
ctxt_pP
->
rnti
);
printf
(
"add new uid is %d %x
\n\n
"
,
i
,
ctxt_pP
->
rnti
);
// ret=1;
// ret=1;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+
0
−
2
View file @
13a94c7a
...
@@ -106,8 +106,6 @@ typedef struct pdcp_enb_s {
...
@@ -106,8 +106,6 @@ typedef struct pdcp_enb_s {
uint16_t
uid
[
MAX_MOBILES_PER_ENB
];
uint16_t
uid
[
MAX_MOBILES_PER_ENB
];
rnti_t
rnti
[
MAX_MOBILES_PER_ENB
];
rnti_t
rnti
[
MAX_MOBILES_PER_ENB
];
uint16_t
num_ues
;
uint16_t
num_ues
;
#define TM_SKIP_FULL_BUF_MS (500)
uint64_t
time_buf_full
[
MAX_MOBILES_PER_ENB
];
uint64_t
sfn
;
uint64_t
sfn
;
frame_t
frame
;
frame_t
frame
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/RLC/rlc.h
+
0
−
1
View file @
13a94c7a
...
@@ -67,7 +67,6 @@ typedef uint64_t hash_key_t;
...
@@ -67,7 +67,6 @@ typedef uint64_t hash_key_t;
#define RLC_OP_STATUS_BAD_PARAMETER 22
#define RLC_OP_STATUS_BAD_PARAMETER 22
#define RLC_OP_STATUS_INTERNAL_ERROR 2
#define RLC_OP_STATUS_INTERNAL_ERROR 2
#define RLC_OP_STATUS_OUT_OF_RESSOURCES 3
#define RLC_OP_STATUS_OUT_OF_RESSOURCES 3
#define RLC_OP_SKIPPED_FUL_BUF 4
#define RLC_MUI_UNDEFINED (mui_t)0
#define RLC_MUI_UNDEFINED (mui_t)0
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment