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
zzha zzha
OpenXG-RAN
Commits
a5210e4f
Commit
a5210e4f
authored
Sep 28, 2016
by
fnabet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE L2 changes for 3GPP alignement
parent
f8061760
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
32 additions
and
2 deletions
+32
-2
openair2/LAYER2/MAC/ue_procedures.c
openair2/LAYER2/MAC/ue_procedures.c
+30
-1
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
+2
-1
No files found.
openair2/LAYER2/MAC/ue_procedures.c
View file @
a5210e4f
...
...
@@ -151,7 +151,7 @@ unsigned char *parse_header(unsigned char *mac_header,
unsigned
short
tb_length
)
{
unsigned
char
not_done
=
1
,
num_ces
=
0
,
num_sdus
=
0
,
lcid
,
num_sdu_cnt
;
unsigned
char
not_done
=
1
,
num_ces
=
0
,
num_
cont_res
=
0
,
num_padding
=
0
,
num_
sdus
=
0
,
lcid
,
num_sdu_cnt
;
unsigned
char
*
mac_header_ptr
=
mac_header
;
unsigned
short
length
,
ce_len
=
0
;
...
...
@@ -165,6 +165,14 @@ unsigned char *parse_header(unsigned char *mac_header,
lcid
=
((
SCH_SUBHEADER_FIXED
*
)
mac_header_ptr
)
->
LCID
;
if
(
lcid
<
UE_CONT_RES
)
{
//FNA: Contention Resolution check according to Annex B of 36.321
// if this is for CCCH then a Contention Resolution must have been parsed before
if
((
lcid
==
0
)
&&
(
num_cont_res
==
0
))
{
LOG_W
(
MAC
,
"[UE] Msg4 Wrong received format: CCCH received without Contention Resolution before
\n
"
);
// exit parsing
return
NULL
;
}
//printf("[MAC][UE] header %x.%x.%x\n",mac_header_ptr[0],mac_header_ptr[1],mac_header_ptr[2]);
if
(
not_done
==
0
)
{
// last MAC SDU, length is implicit
mac_header_ptr
++
;
...
...
@@ -196,6 +204,7 @@ unsigned char *parse_header(unsigned char *mac_header,
num_sdus
++
;
}
else
{
// This is a control element subheader
if
(
lcid
==
SHORT_PADDING
)
{
num_padding
++
;
mac_header_ptr
++
;
}
else
{
rx_ces
[
num_ces
]
=
lcid
;
...
...
@@ -205,6 +214,23 @@ unsigned char *parse_header(unsigned char *mac_header,
if
(
lcid
==
TIMING_ADV_CMD
)
{
ce_len
++
;
}
else
if
(
lcid
==
UE_CONT_RES
)
{
// FNA: check MAC Header is one of thoses defined in Annex B of 36.321
// Check there is only 1 Contention Resolution
if
(
num_cont_res
)
{
LOG_W
(
MAC
,
"[UE] Msg4 Wrong received format: More than 1 Contention Resolution
\n
"
);
// exit parsing
return
NULL
;
}
// UE_CONT_RES shall never be the last subheader unless this is the only MAC subheader
if
((
not_done
==
0
)
&&
((
num_sdus
)
||
(
num_ces
>
1
)
||
(
num_padding
)))
{
LOG_W
(
MAC
,
"[UE] Msg4 Wrong received format: Contention Resolution after num_ces=%d num_sdus=%d num_padding=%d
\n
"
,
num_ces
,
num_sdus
,
num_padding
);
// exit parsing
return
NULL
;
}
num_cont_res
++
;
ce_len
+=
6
;
}
}
...
...
@@ -343,6 +369,8 @@ ue_send_sdu(module_id_t module_idP,
LOG_T
(
MAC
,
"
\n
"
);
#endif
if
(
payload_ptr
!=
NULL
)
{
for
(
i
=
0
;
i
<
num_ce
;
i
++
)
{
// printf("ce %d : %d\n",i,rx_ces[i]);
switch
(
rx_ces
[
i
])
{
...
...
@@ -467,6 +495,7 @@ ue_send_sdu(module_id_t module_idP,
}
payload_ptr
+=
rx_lengths
[
i
];
}
}
// end if (payload_ptr != NULL)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_SDU
,
VCD_FUNCTION_OUT
);
stop_meas
(
&
UE_mac_inst
[
module_idP
].
rx_dlsch_sdu
);
...
...
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
View file @
a5210e4f
...
...
@@ -420,8 +420,9 @@ rlc_am_receive_process_data_pdu (
rlc_am_rx_list_reassemble_rlc_sdus
(
ctxt_pP
,
rlc_pP
);
}
//FNA: fix check VrX out of receiving window
if
(
rlc_pP
->
t_reordering
.
running
)
{
if
((
rlc_pP
->
vr_x
==
rlc_pP
->
vr_r
)
||
((
rlc_am_in_rx_window
(
ctxt_pP
,
rlc_pP
,
pdu_info_p
->
sn
)
==
0
)
&&
(
rlc_pP
->
vr_x
!=
rlc_pP
->
vr_mr
)))
{
if
((
rlc_pP
->
vr_x
==
rlc_pP
->
vr_r
)
||
((
rlc_am_in_rx_window
(
ctxt_pP
,
rlc_pP
,
rlc_pP
->
vr_x
)
==
0
)
&&
(
rlc_pP
->
vr_x
!=
rlc_pP
->
vr_mr
)))
{
rlc_am_stop_and_reset_timer_reordering
(
ctxt_pP
,
rlc_pP
);
}
}
...
...
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