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
alex037yang
OpenXG-RAN
Commits
0a3a8a5d
Commit
0a3a8a5d
authored
Apr 06, 2016
by
Navid Nikaein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix the dedicated DRB setup with multiple E_RAB_SETUP_REQ
parent
b8181d06
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
28 additions
and
18 deletions
+28
-18
openair2/LAYER2/MAC/config.c
openair2/LAYER2/MAC/config.c
+1
-1
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+2
-2
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+18
-9
openair2/RRC/LITE/rrc_eNB_S1AP.c
openair2/RRC/LITE/rrc_eNB_S1AP.c
+6
-5
openair3/S1AP/s1ap_eNB_decoder.c
openair3/S1AP/s1ap_eNB_decoder.c
+1
-1
No files found.
openair2/LAYER2/MAC/config.c
View file @
0a3a8a5d
...
@@ -191,7 +191,7 @@ rrc_mac_config_req(
...
@@ -191,7 +191,7 @@ rrc_mac_config_req(
}
}
else
{
else
{
eNB_mac_inst
[
Mod_id
].
lcid_active
[
logicalChannelIdentity
]
=
1
;
eNB_mac_inst
[
Mod_id
].
lcid_active
[
logicalChannelIdentity
]
=
1
;
LOG_I
(
MAC
,
"[CONFIG][eNB %d] lcid %d is active for UE rnti %x on cc_id %
\n
"
,
Mod_id
,
rntiP
,
CC_id
);
LOG_I
(
MAC
,
"[CONFIG][eNB %d] lcid %d is active for UE rnti %x on cc_id %
d
\n
"
,
Mod_id
,
logicalChannelIdentity
,
rntiP
,
CC_id
);
}
}
}
}
...
...
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
View file @
0a3a8a5d
...
@@ -918,8 +918,8 @@ schedule_ue_spec(
...
@@ -918,8 +918,8 @@ schedule_ue_spec(
if
(
rlc_status
.
bytes_in_buffer
>
0
)
{
if
(
rlc_status
.
bytes_in_buffer
>
0
)
{
LOG_
D
(
MAC
,
"[eNB %d][USER-PLANE DEFAULT DRB] Frame %d : DTCH%d->DLSCH, Requesting %d bytes from RLC (total hdr len dtch
%d)
\n
"
,
LOG_
I
(
MAC
,
"[eNB %d][USER-PLANE DEFAULT DRB] Frame %d : DTCH->DLSCH, Requesting %d bytes from RLC (lcid %d total hdr len
%d)
\n
"
,
module_idP
,
frameP
,
lcid
,
TBS
-
header_len_dcch
-
sdu_length_total
-
header_len_dtch
,
header_len_dtch
);
module_idP
,
frameP
,
TBS
-
header_len_dcch
-
sdu_length_total
-
header_len_dtch
,
lcid
,
header_len_dtch
);
sdu_lengths
[
num_sdus
]
=
mac_rlc_data_req
(
module_idP
,
sdu_lengths
[
num_sdus
]
=
mac_rlc_data_req
(
module_idP
,
rnti
,
rnti
,
module_idP
,
module_idP
,
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
0a3a8a5d
...
@@ -113,7 +113,7 @@ extern void* bigphys_malloc(int);
...
@@ -113,7 +113,7 @@ extern void* bigphys_malloc(int);
extern
uint16_t
two_tier_hexagonal_cellIds
[
7
];
extern
uint16_t
two_tier_hexagonal_cellIds
[
7
];
/* TS 36.331: RRC-TransactionIdentifier ::= INTEGER (0..3) */
/* TS 36.331: RRC-TransactionIdentifier ::= INTEGER (0..3) */
static
const
uint8_t
RRC_TRANSACTION_IDENTIFIER_NUMBER
=
4
;
static
const
uint8_t
RRC_TRANSACTION_IDENTIFIER_NUMBER
=
3
;
mui_t
rrc_eNB_mui
=
0
;
mui_t
rrc_eNB_mui
=
0
;
...
@@ -504,6 +504,7 @@ rrc_eNB_get_next_transaction_identifier(
...
@@ -504,6 +504,7 @@ rrc_eNB_get_next_transaction_identifier(
{
{
static
uint8_t
rrc_transaction_identifier
[
NUMBER_OF_eNB_MAX
];
static
uint8_t
rrc_transaction_identifier
[
NUMBER_OF_eNB_MAX
];
rrc_transaction_identifier
[
enb_mod_idP
]
=
(
rrc_transaction_identifier
[
enb_mod_idP
]
+
1
)
%
RRC_TRANSACTION_IDENTIFIER_NUMBER
;
rrc_transaction_identifier
[
enb_mod_idP
]
=
(
rrc_transaction_identifier
[
enb_mod_idP
]
+
1
)
%
RRC_TRANSACTION_IDENTIFIER_NUMBER
;
LOG_T
(
RRC
,
"generated xid is %d
\n
"
,
rrc_transaction_identifier
[
enb_mod_idP
]);
return
rrc_transaction_identifier
[
enb_mod_idP
];
return
rrc_transaction_identifier
[
enb_mod_idP
];
}
}
/*------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------*/
...
@@ -1140,7 +1141,9 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
...
@@ -1140,7 +1141,9 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
struct
LogicalChannelConfig
*
DRB_lchan_config
=
NULL
;
struct
LogicalChannelConfig
*
DRB_lchan_config
=
NULL
;
struct
LogicalChannelConfig__ul_SpecificParameters
struct
LogicalChannelConfig__ul_SpecificParameters
*
DRB_ul_SpecificParameters
=
NULL
;
*
DRB_ul_SpecificParameters
=
NULL
;
DRB_ToAddModList_t
**
DRB_configList
=&
ue_context_pP
->
ue_context
.
DRB_configList
;
// DRB_ToAddModList_t** DRB_configList=&ue_context_pP->ue_context.DRB_configList;
DRB_ToAddModList_t
*
DRB_configList
=
ue_context_pP
->
ue_context
.
DRB_configList
;
DRB_ToAddModList_t
*
DRB_configList2
=
NULL
;
//DRB_ToAddModList_t** RRC_DRB_configList=&ue_context_pP->ue_context.DRB_configList;
//DRB_ToAddModList_t** RRC_DRB_configList=&ue_context_pP->ue_context.DRB_configList;
struct
RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
*
dedicatedInfoNASList
=
NULL
;
struct
RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
*
dedicatedInfoNASList
=
NULL
;
...
@@ -1148,17 +1151,19 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
...
@@ -1148,17 +1151,19 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
long
*
logicalchannelgroup
,
*
logicalchannelgroup_drb
;
long
*
logicalchannelgroup
,
*
logicalchannelgroup_drb
;
int
drb_identity_index
=
0
,
nas_sequence_flag
=
0
;
int
drb_identity_index
=
0
,
nas_sequence_flag
=
0
;
uint8_t
xid
=
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
);
//Transaction_id,
// Configure DRB
// Configure DRB
//*DRB_configList = CALLOC(1, sizeof(*DRB_configList));
//*DRB_configList = CALLOC(1, sizeof(*DRB_configList));
*
DRB_configList
=
CALLOC
(
1
,
sizeof
(
**
DRB_configList
));
DRB_configList2
=
CALLOC
(
1
,
sizeof
(
*
DRB_configList2
));
dedicatedInfoNASList
=
CALLOC
(
1
,
sizeof
(
struct
RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
));
dedicatedInfoNASList
=
CALLOC
(
1
,
sizeof
(
struct
RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
));
for
(
i
=
0
;
for
(
i
=
0
;
i
<
ue_context_pP
->
ue_context
.
setup_e_rabs
;
i
<
ue_context_pP
->
ue_context
.
setup_e_rabs
;
i
++
){
i
++
){
// bypass the already configured erabs
// bypass the
new and
already configured erabs
if
(
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
>=
E_RAB_STATUS_DONE
)
{
if
(
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
>=
E_RAB_STATUS_DONE
)
{
drb_identity_index
++
;
drb_identity_index
++
;
continue
;
continue
;
...
@@ -1242,7 +1247,8 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
...
@@ -1242,7 +1247,8 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
*
logicalchannelgroup_drb
=
1
;
//(i+1) % 3;
*
logicalchannelgroup_drb
=
1
;
//(i+1) % 3;
DRB_ul_SpecificParameters
->
logicalChannelGroup
=
logicalchannelgroup_drb
;
DRB_ul_SpecificParameters
->
logicalChannelGroup
=
logicalchannelgroup_drb
;
ASN_SEQUENCE_ADD
(
&
(
*
DRB_configList
)
->
list
,
DRB_config
);
ASN_SEQUENCE_ADD
(
&
DRB_configList
->
list
,
DRB_config
);
ASN_SEQUENCE_ADD
(
&
DRB_configList2
->
list
,
DRB_config
);
//ue_context_pP->ue_context.DRB_configList2[drb_identity_index] = &(*DRB_configList);
//ue_context_pP->ue_context.DRB_configList2[drb_identity_index] = &(*DRB_configList);
LOG_I
(
RRC
,
"EPS ID %d, DRB ID %d (index %d), QCI %d, priority %d, LCID %d LCGID %d
\n
"
,
LOG_I
(
RRC
,
"EPS ID %d, DRB ID %d (index %d), QCI %d, priority %d, LCID %d LCGID %d
\n
"
,
...
@@ -1280,7 +1286,7 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
...
@@ -1280,7 +1286,7 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
}
}
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_STATUS_DONE
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_STATUS_DONE
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
xid
=
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
);
//Transaction_id,
ue_context_pP
->
ue_context
.
e_rab
[
i
].
xid
=
xid
;
}
}
...
@@ -1288,9 +1294,9 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
...
@@ -1288,9 +1294,9 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
size
=
do_RRCConnectionReconfiguration
(
ctxt_pP
,
size
=
do_RRCConnectionReconfiguration
(
ctxt_pP
,
buffer
,
buffer
,
ue_context_pP
->
ue_context
.
e_rab
[
i
].
xid
,
xid
,
(
SRB_ToAddModList_t
*
)
NULL
,
(
SRB_ToAddModList_t
*
)
NULL
,
(
DRB_ToAddModList_t
*
)
*
DRB_configList
,
(
DRB_ToAddModList_t
*
)
DRB_configList2
,
(
DRB_ToReleaseList_t
*
)
NULL
,
// DRB2_list,
(
DRB_ToReleaseList_t
*
)
NULL
,
// DRB2_list,
(
struct
SPS_Config
*
)
NULL
,
// *sps_Config,
(
struct
SPS_Config
*
)
NULL
,
// *sps_Config,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
...
@@ -1482,6 +1488,9 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
...
@@ -1482,6 +1488,9 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
// Configure DRB
// Configure DRB
//*DRB_configList = CALLOC(1, sizeof(*DRB_configList));
//*DRB_configList = CALLOC(1, sizeof(*DRB_configList));
if
(
*
DRB_configList
)
{
free
(
*
DRB_configList
);
}
*
DRB_configList
=
CALLOC
(
1
,
sizeof
(
**
DRB_configList
));
*
DRB_configList
=
CALLOC
(
1
,
sizeof
(
**
DRB_configList
));
/// DRB
/// DRB
DRB_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_config
));
DRB_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_config
));
...
...
openair2/RRC/LITE/rrc_eNB_S1AP.c
View file @
0a3a8a5d
...
@@ -921,7 +921,7 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
...
@@ -921,7 +921,7 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP
(
rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP
(
&
ctxt
,
&
ctxt
,
&
create_tunnel_resp
);
&
create_tunnel_resp
);
ue_context_p
->
ue_context
.
setup_e_rabs
=
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
ue_context_p
->
ue_context
.
setup_e_rabs
=
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
}
}
/* TODO parameters yet to process ... */
/* TODO parameters yet to process ... */
...
@@ -1341,6 +1341,7 @@ int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
...
@@ -1341,6 +1341,7 @@ int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
for
(
e_rab
=
0
;
e_rab
<
ue_context_pP
->
ue_context
.
setup_e_rabs
;
e_rab
++
)
{
for
(
e_rab
=
0
;
e_rab
<
ue_context_pP
->
ue_context
.
setup_e_rabs
;
e_rab
++
)
{
/* only respond to the corresponding transaction */
/* only respond to the corresponding transaction */
//if (((xid+1)%4) == ue_context_pP->ue_context.e_rab[e_rab].xid) {
if
(
xid
==
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
xid
)
{
if
(
xid
==
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
xid
)
{
if
(
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
status
==
E_RAB_STATUS_DONE
)
{
if
(
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
status
==
E_RAB_STATUS_DONE
)
{
...
@@ -1352,7 +1353,7 @@ int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
...
@@ -1352,7 +1353,7 @@ int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
//S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr.length += 4;
//S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr.length += 4;
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
status
=
E_RAB_STATUS_ESTABLISHED
;
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
status
=
E_RAB_STATUS_ESTABLISHED
;
LOG_I
(
RRC
,
"enb_gtp_addr (msg index %d,
context
index %d, status %d, xid %d): nb_of_e_rabs %d, e_rab_id %d, teid: %u, addr: %d.%d.%d.%d
\n
"
,
LOG_I
(
RRC
,
"enb_gtp_addr (msg index %d,
e_rab
index %d, status %d, xid %d): nb_of_e_rabs %d, e_rab_id %d, teid: %u, addr: %d.%d.%d.%d
\n
"
,
e_rabs_done
,
e_rab
,
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
status
,
xid
,
e_rabs_done
,
e_rab
,
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
status
,
xid
,
ue_context_pP
->
ue_context
.
nb_of_e_rabs
,
ue_context_pP
->
ue_context
.
nb_of_e_rabs
,
S1AP_E_RAB_SETUP_RESP
(
msg_p
).
e_rabs
[
e_rabs_done
].
e_rab_id
,
S1AP_E_RAB_SETUP_RESP
(
msg_p
).
e_rabs
[
e_rabs_done
].
e_rab_id
,
...
@@ -1379,7 +1380,7 @@ int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
...
@@ -1379,7 +1380,7 @@ int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
// NN: add conditions for e_rabs_failed
// NN: add conditions for e_rabs_failed
if
((
e_rabs_done
>
0
)
){
if
((
e_rabs_done
>
0
)
){
LOG_I
(
RRC
,
"S1AP_E_RAB_SETUP_RESP: sending the message: nb_of_erabs %d, total e_rabs %d, index %d
\n
"
,
LOG_I
(
RRC
,
"S1AP_E_RAB_SETUP_RESP: sending the message: nb_of_erabs %d, total e_rabs %d, index %d
\n
"
,
ue_context_pP
->
ue_context
.
nb_of_e_rabs
,
ue_context_pP
->
ue_context
.
setup_e_rabs
,
e_rab
);
ue_context_pP
->
ue_context
.
nb_of_e_rabs
,
ue_context_pP
->
ue_context
.
setup_e_rabs
,
e_rab
);
MSC_LOG_TX_MESSAGE
(
MSC_LOG_TX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_ENB
,
...
@@ -1398,8 +1399,8 @@ int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
...
@@ -1398,8 +1399,8 @@ int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
}
else
{
}
else
{
/*debug info for the xid */
/*debug info for the xid */
LOG_D
(
RRC
,
"xid does not corresponds (context e_rab index %d, status %d, xid
%d)
\n
"
,
LOG_D
(
RRC
,
"xid does not corresponds (context e_rab index %d, status %d, xid %d/
%d)
\n
"
,
e_rab
,
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
status
,
xid
);
e_rab
,
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
status
,
xid
,
ue_context_pP
->
ue_context
.
e_rab
[
e_rab
].
xid
);
}
}
}
}
...
...
openair3/S1AP/s1ap_eNB_decoder.c
View file @
0a3a8a5d
...
@@ -140,7 +140,7 @@ static int s1ap_eNB_decode_initiating_message(s1ap_message *message,
...
@@ -140,7 +140,7 @@ static int s1ap_eNB_decode_initiating_message(s1ap_message *message,
ret
=
s1ap_decode_s1ap_e_rabreleasecommandies
(
&
message
->
msg
.
s1ap_E_RABReleaseCommandIEs
,
ret
=
s1ap_decode_s1ap_e_rabreleasecommandies
(
&
message
->
msg
.
s1ap_E_RABReleaseCommandIEs
,
&
initiating_p
->
value
);
&
initiating_p
->
value
);
//s1ap_xer_print_s1ap_e_rabsetuprequest(s1ap_xer__print2sp, message_string, message);
//s1ap_xer_print_s1ap_e_rabsetuprequest(s1ap_xer__print2sp, message_string, message);
S1AP_
ERROR
(
"TODO E_RABReleas i
nitiating message
\n
"
);
S1AP_
INFO
(
"TODO E_RABRelease
nitiating message
\n
"
);
free
(
message_string
);
free
(
message_string
);
default:
default:
...
...
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