Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
f8df6c7e
Commit
f8df6c7e
authored
Aug 06, 2020
by
matzakos
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'NR_RRC_PDCP' of
https://gitlab.eurecom.fr/oai/openairinterface5g
into NR_RRC_PDCP
parents
8e48c151
a9efb05e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
47 additions
and
44 deletions
+47
-44
openair2/LAYER2/nr_rlc/asn1_utils.c
openair2/LAYER2/nr_rlc/asn1_utils.c
+40
-13
openair2/LAYER2/nr_rlc/asn1_utils.h
openair2/LAYER2/nr_rlc/asn1_utils.h
+3
-2
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
+4
-29
No files found.
openair2/LAYER2/nr_rlc/asn1_utils.c
View file @
f8df6c7e
...
...
@@ -21,14 +21,14 @@
#include "rlc.h"
int
decode_t_re
ordering
(
int
v
)
int
decode_t_re
assembly
(
int
v
)
{
static
int
tab
[
3
2
]
=
{
0
,
5
,
10
,
15
,
20
,
25
,
30
,
35
,
40
,
45
,
50
,
55
,
60
,
65
,
70
,
75
,
80
,
85
,
9
0
,
95
,
100
,
110
,
120
,
130
,
140
,
150
,
160
,
170
,
180
,
190
,
200
,
16
00
static
int
tab
[
3
1
]
=
{
0
,
5
,
10
,
15
,
20
,
25
,
30
,
35
,
40
,
45
,
50
,
55
,
60
,
65
,
70
,
75
,
80
,
85
,
90
,
9
5
,
100
,
110
,
120
,
130
,
140
,
150
,
160
,
170
,
180
,
190
,
2
00
};
if
(
v
<
0
||
v
>
3
1
)
{
if
(
v
<
0
||
v
>
3
0
)
{
LOG_E
(
RLC
,
"%s:%d:%s: fatal
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
...
...
@@ -72,11 +72,13 @@ int decode_t_poll_retransmit(int v)
int
decode_poll_pdu
(
int
v
)
{
static
int
tab
[
8
]
=
{
4
,
8
,
16
,
32
,
64
,
128
,
256
,
-
1
/* -1 means infinity */
static
int
tab
[
24
]
=
{
4
,
8
,
16
,
32
,
64
,
128
,
256
,
512
,
1024
,
2048
,
4096
,
6144
,
8192
,
12288
,
16384
,
20480
,
24576
,
28672
,
32768
,
40960
,
49152
,
57344
,
65536
-
1
/* -1 means infinity */
};
if
(
v
<
0
||
v
>
7
)
{
if
(
v
<
0
||
v
>
23
)
{
LOG_E
(
RLC
,
"%s:%d:%s: fatal
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
...
...
@@ -86,12 +88,23 @@ int decode_poll_pdu(int v)
int
decode_poll_byte
(
int
v
)
{
static
int
tab
[
15
]
=
{
25
,
50
,
75
,
100
,
125
,
250
,
375
,
500
,
750
,
1000
,
1250
,
1500
,
2000
,
3000
,
static
int
tab
[
44
]
=
{
/* KB */
1024
*
1
,
1024
*
2
,
1024
*
5
,
1024
*
8
,
1024
*
10
,
1024
*
15
,
1024
*
25
,
1024
*
50
,
1024
*
75
,
1024
*
100
,
1024
*
125
,
1024
*
250
,
1024
*
375
,
1024
*
500
,
1024
*
750
,
1024
*
1000
,
1024
*
1250
,
1024
*
1500
,
1024
*
2000
,
1024
*
3000
,
1024
*
4000
,
1024
*
4500
,
1024
*
5000
,
1024
*
5500
,
1024
*
6000
,
1024
*
6500
,
1024
*
7000
,
1024
*
7500
,
/* MB */
1024
*
1024
*
8
,
1024
*
1024
*
9
,
1024
*
1024
*
10
,
1024
*
1024
*
11
,
1024
*
1024
*
12
,
1024
*
1024
*
13
,
1024
*
1024
*
14
,
1024
*
1024
*
15
,
1024
*
1024
*
16
,
1024
*
1024
*
17
,
1024
*
1024
*
18
,
1024
*
1024
*
20
,
1024
*
1024
*
25
,
1024
*
1024
*
30
,
1024
*
1024
*
40
,
-
1
/* -1 means infinity */
};
if
(
v
<
0
||
v
>
14
)
{
if
(
v
<
0
||
v
>
43
)
{
LOG_E
(
RLC
,
"%s:%d:%s: fatal
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
...
...
@@ -114,10 +127,24 @@ int decode_max_retx_threshold(int v)
return
tab
[
v
];
}
int
decode_sn_field_length
(
int
v
)
int
decode_sn_field_length_um
(
int
v
)
{
static
int
tab
[
2
]
=
{
6
,
12
};
if
(
v
<
0
||
v
>
1
)
{
LOG_E
(
RLC
,
"%s:%d:%s: fatal
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
return
tab
[
v
];
}
int
decode_sn_field_length_am
(
int
v
)
{
static
int
tab
[
2
]
=
{
5
,
10
12
,
18
};
if
(
v
<
0
||
v
>
1
)
{
...
...
openair2/LAYER2/nr_rlc/asn1_utils.h
View file @
f8df6c7e
...
...
@@ -22,12 +22,13 @@
#ifndef _ASN1_UTILS_H_
#define _ASN1_UTILS_H_
int
decode_t_re
ordering
(
int
v
);
int
decode_t_re
assembly
(
int
v
);
int
decode_t_status_prohibit
(
int
v
);
int
decode_t_poll_retransmit
(
int
v
);
int
decode_poll_pdu
(
int
v
);
int
decode_poll_byte
(
int
v
);
int
decode_max_retx_threshold
(
int
v
);
int
decode_sn_field_length
(
int
v
);
int
decode_sn_field_length_um
(
int
v
);
int
decode_sn_field_length_am
(
int
v
);
#endif
/* _ASN1_UTILS_H_ */
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
View file @
f8df6c7e
...
...
@@ -40,13 +40,10 @@
static
nr_rlc_ue_manager_t
*
nr_rlc_ue_manager
;
/* TODO: handle time a bit more properly */
//#if 0
static
uint64_t
nr_rlc_current_time
;
static
int
nr_rlc_current_time_last_frame
;
static
int
nr_rlc_current_time_last_subframe
;
//#endif
//#if 0
void
mac_rlc_data_ind
(
const
module_id_t
module_idP
,
const
rnti_t
rntiP
,
...
...
@@ -202,7 +199,6 @@ mac_rlc_status_resp_t mac_rlc_status_ind(
ret
.
head_sdu_is_segmented
=
0
;
return
ret
;
}
//#endif
rlc_buffer_occupancy_t
mac_rlc_get_buffer_occupancy_ind
(
const
module_id_t
module_idP
,
...
...
@@ -261,7 +257,6 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind(
int
oai_emulation
;
//#if 0
rlc_op_status_t
rlc_data_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
srb_flag_t
srb_flagP
,
const
MBMS_flag_t
MBMS_flagP
,
...
...
@@ -313,9 +308,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t *const ctxt_pP,
return
RLC_OP_STATUS_OK
;
}
//#endif
//#if 0
int
rlc_module_init
(
int
enb_flag
)
{
static
pthread_mutex_t
lock
=
PTHREAD_MUTEX_INITIALIZER
;
...
...
@@ -336,13 +329,10 @@ int rlc_module_init(int enb_flag)
return
0
;
}
//#endif
//#if 0
void
rlc_util_print_hex_octets
(
comp_name_t
componentP
,
unsigned
char
*
dataP
,
const
signed
long
sizeP
)
{
}
//#endif
static
void
deliver_sdu
(
void
*
_ue
,
nr_rlc_entity_t
*
entity
,
char
*
buf
,
int
size
)
{
...
...
@@ -529,7 +519,7 @@ rb_found:
#endif
}
__attribute__
((
unused
))
static
void
add_srb
(
int
rnti
,
struct
LTE_SRB_ToAddMod
*
s
)
static
void
add_srb
(
int
rnti
,
struct
LTE_SRB_ToAddMod
*
s
)
{
nr_rlc_entity_t
*
nr_rlc_am
;
nr_rlc_ue_t
*
ue
;
...
...
@@ -539,7 +529,6 @@ __attribute__ ((unused)) static void add_srb(int rnti, struct LTE_SRB_ToAddMod *
int
srb_id
=
s
->
srb_Identity
;
int
logical_channel_group
;
//int t_reordering;
int
t_status_prohibit
;
int
t_poll_retransmit
;
int
poll_pdu
;
...
...
@@ -582,7 +571,6 @@ __attribute__ ((unused)) static void add_srb(int rnti, struct LTE_SRB_ToAddMod *
exit
(
1
);
}
am
=
&
r
->
choice
.
explicitValue
.
choice
.
am
;
//t_reordering = decode_t_reordering(am->dl_AM_RLC.t_Reordering);
t_status_prohibit
=
decode_t_status_prohibit
(
am
->
dl_AM_RLC
.
t_StatusProhibit
);
t_poll_retransmit
=
decode_t_poll_retransmit
(
am
->
ul_AM_RLC
.
t_PollRetransmit
);
poll_pdu
=
decode_poll_pdu
(
am
->
ul_AM_RLC
.
pollPDU
);
...
...
@@ -592,7 +580,6 @@ __attribute__ ((unused)) static void add_srb(int rnti, struct LTE_SRB_ToAddMod *
}
case
LTE_SRB_ToAddMod__rlc_Config_PR_defaultValue
:
/* default values from 36.331 9.2.1 */
//t_reordering = 35;
t_status_prohibit
=
0
;
t_poll_retransmit
=
45
;
poll_pdu
=
-
1
;
...
...
@@ -646,7 +633,6 @@ static void add_drb_am(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_BearerConfig_
int
channel_id
=
rlc_BearerConfig
->
logicalChannelIdentity
;
int
logical_channel_group
;
//int t_reordering;
int
t_status_prohibit
;
int
t_poll_retransmit
;
int
poll_pdu
;
...
...
@@ -679,7 +665,6 @@ static void add_drb_am(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_BearerConfig_
case
NR_RLC_Config_PR_am
:
{
struct
NR_RLC_Config__am
*
am
;
am
=
r
->
choice
.
am
;
//t_reordering = decode_t_reordering(am->dl_AM_RLC.t_Reordering);
t_status_prohibit
=
decode_t_status_prohibit
(
am
->
dl_AM_RLC
.
t_StatusProhibit
);
t_poll_retransmit
=
decode_t_poll_retransmit
(
am
->
ul_AM_RLC
.
t_PollRetransmit
);
poll_pdu
=
decode_poll_pdu
(
am
->
ul_AM_RLC
.
pollPDU
);
...
...
@@ -734,7 +719,6 @@ static void add_drb_um(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_BearerConfig_
int
channel_id
=
rlc_BearerConfig
->
logicalChannelIdentity
;
int
logical_channel_group
;
//int t_reordering;
int
sn_field_length
;
int
t_reassembly
;
...
...
@@ -762,12 +746,12 @@ static void add_drb_um(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_BearerConfig_
case
NR_RLC_Config_PR_um_Bi_Directional
:
{
struct
NR_RLC_Config__um_Bi_Directional
*
um
;
um
=
r
->
choice
.
um_Bi_Directional
;
//t_reordering = decode_t_reordering(um->dl_UM_RLC.t_Reordering
);
t_reassembly
=
decode_t_reassembly
(
um
->
dl_UM_RLC
.
t_Reassembly
);
if
(
*
um
->
dl_UM_RLC
.
sn_FieldLength
!=
*
um
->
ul_UM_RLC
.
sn_FieldLength
)
{
LOG_E
(
RLC
,
"%s:%d:%s: fatal
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
sn_field_length
=
decode_sn_field_length
(
*
um
->
dl_UM_RLC
.
sn_FieldLength
);
sn_field_length
=
decode_sn_field_length
_um
(
*
um
->
dl_UM_RLC
.
sn_FieldLength
);
break
;
}
default:
...
...
@@ -781,9 +765,6 @@ static void add_drb_um(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_BearerConfig_
LOG_D
(
RLC
,
"%s:%d:%s: warning DRB %d already exist for ue %d, do nothing
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
,
drb_id
,
rnti
);
}
else
{
/* hack: hardcode values for NR */
t_reassembly
=
35
;
sn_field_length
=
6
;
nr_rlc_um
=
new_nr_rlc_entity_um
(
1000000
,
1000000
,
deliver_sdu
,
ue
,
...
...
@@ -797,7 +778,7 @@ static void add_drb_um(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_BearerConfig_
nr_rlc_manager_unlock
(
nr_rlc_ue_manager
);
}
__attribute__
((
unused
))
static
void
add_drb
(
int
rnti
,
struct
NR_DRB_ToAddMod
*
s
,
struct
NR_RLC_BearerConfig
*
rlc_BearerConfig
)
static
void
add_drb
(
int
rnti
,
struct
NR_DRB_ToAddMod
*
s
,
struct
NR_RLC_BearerConfig
*
rlc_BearerConfig
)
{
switch
(
rlc_BearerConfig
->
rlc_Config
->
present
)
{
case
NR_RLC_Config_PR_am
:
...
...
@@ -869,7 +850,6 @@ rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt
return
RLC_OP_STATUS_OK
;
}
//#if 0
rlc_op_status_t
rrc_rlc_config_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
srb_flag_t
srb_flagP
,
...
...
@@ -928,16 +908,12 @@ rlc_op_status_t rrc_rlc_config_req (
nr_rlc_manager_unlock
(
nr_rlc_ue_manager
);
return
RLC_OP_STATUS_OK
;
}
//#endif
//#if 0
void
rrc_rlc_register_rrc
(
rrc_data_ind_cb_t
rrc_data_indP
,
rrc_data_conf_cb_t
rrc_data_confP
)
{
/* nothing to do */
}
//#endif
//#if 0
rlc_op_status_t
rrc_rlc_remove_ue
(
const
protocol_ctxt_t
*
const
x
)
{
LOG_D
(
RLC
,
"%s:%d:%s: remove UE %d
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
,
x
->
rnti
);
...
...
@@ -947,4 +923,3 @@ rlc_op_status_t rrc_rlc_remove_ue (const protocol_ctxt_t* const x)
return
RLC_OP_STATUS_OK
;
}
//#endif
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