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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
1d6eea64
Commit
1d6eea64
authored
Feb 02, 2021
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/bugfix-x2-SgNBAdditionRequest' into integration_2021_wk05
parents
320b43c4
94dad700
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
34 additions
and
41 deletions
+34
-41
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+26
-33
openair2/RRC/NR/nr_rrc_proto.h
openair2/RRC/NR/nr_rrc_proto.h
+1
-1
openair2/RRC/NR/rrc_gNB_internode.c
openair2/RRC/NR/rrc_gNB_internode.c
+3
-3
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+3
-3
openair2/X2AP/x2ap_eNB_generate_messages.c
openair2/X2AP/x2ap_eNB_generate_messages.c
+1
-1
No files found.
openair2/RRC/LTE/rrc_eNB.c
View file @
1d6eea64
...
...
@@ -4428,9 +4428,9 @@ static int encode_CG_ConfigInfo(
int
RRC_OK
=
1
;
int
index
=
0
;
char
temp_buff
[
ASN_MAX_ENCODE_SIZE
];
LTE
_UE_CapabilityRAT_ContainerList_t
*
ue_cap_rat_container_list
=
NULL
;
LTE_UE_CapabilityRAT_Container_t
ue_cap_rat_container_MRDC
;
LTE_UE_CapabilityRAT_Container_t
ue_cap_rat_container_nr
;
NR
_UE_CapabilityRAT_ContainerList_t
*
ue_cap_rat_container_list
=
NULL
;
NR_UE_CapabilityRAT_Container_t
*
ue_cap_rat_container_MRDC
=
NULL
;
NR_UE_CapabilityRAT_Container_t
*
ue_cap_rat_container_nr
=
NULL
;
int
RAT_Container_count
=
0
;
rb_config
=
calloc
(
1
,
sizeof
(
struct
NR_RadioBearerConfig
));
AssertFatal
(
rb_config
!=
NULL
,
"failed to allocate memory for rb_config"
);
...
...
@@ -4503,10 +4503,6 @@ static int encode_CG_ConfigInfo(
=
calloc
(
1
,
sizeof
(
struct
NR_CG_ConfigInfo_IEs
));
AssertFatal
(
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
!=
NULL
,
"failed to allocate memory for cg_configinfo_IEs"
);
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
->
ue_CapabilityInfo
=
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
AssertFatal
(
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
->
ue_CapabilityInfo
!=
NULL
,
"failed to allocate memory for ue_capabilityinfo"
);
if
(
ue_context_pP
->
ue_context
.
UE_Capability_MRDC
)
{
RAT_Container_count
++
;
...
...
@@ -4514,8 +4510,10 @@ static int encode_CG_ConfigInfo(
(
void
*
)
ue_context_pP
->
ue_context
.
UE_Capability_MRDC
,
temp_buff
,
ASN_MAX_ENCODE_SIZE
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
ue_cap_rat_container_MRDC
.
rat_Type
=
LTE_RAT_Type_eutra_nr
;
OCTET_STRING_fromBuf
(
&
ue_cap_rat_container_MRDC
.
ueCapabilityRAT_Container
,
ue_cap_rat_container_MRDC
=
calloc
(
1
,
sizeof
(
*
ue_cap_rat_container_MRDC
));
AssertFatal
(
ue_cap_rat_container_MRDC
!=
NULL
,
"failed to allocate memory for ue_cap_rat_container_MRDC"
);
ue_cap_rat_container_MRDC
->
rat_Type
=
NR_RAT_Type_eutra_nr
;
OCTET_STRING_fromBuf
(
&
ue_cap_rat_container_MRDC
->
ue_CapabilityRAT_Container
,
(
const
char
*
)
temp_buff
,(
enc_rval
.
encoded
+
7
)
>>
3
);
memset
((
void
*
)
temp_buff
,
0
,
sizeof
(
temp_buff
));
}
...
...
@@ -4526,35 +4524,30 @@ static int encode_CG_ConfigInfo(
(
void
*
)
ue_context_pP
->
ue_context
.
UE_Capability_nr
,
temp_buff
,
ASN_MAX_ENCODE_SIZE
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
ue_cap_rat_container_nr
.
rat_Type
=
LTE_RAT_Type_nr
;
OCTET_STRING_fromBuf
(
&
ue_cap_rat_container_nr
.
ueCapabilityRAT_Container
,
ue_cap_rat_container_nr
=
calloc
(
1
,
sizeof
(
*
ue_cap_rat_container_nr
));
AssertFatal
(
ue_cap_rat_container_nr
!=
NULL
,
"failed to allocate memory for ue_cap_rat_container_nr"
);
ue_cap_rat_container_nr
->
rat_Type
=
NR_RAT_Type_nr
;
OCTET_STRING_fromBuf
(
&
ue_cap_rat_container_nr
->
ue_CapabilityRAT_Container
,
(
const
char
*
)
temp_buff
,(
enc_rval
.
encoded
+
7
)
>>
3
);
memset
((
void
*
)
temp_buff
,
0
,
sizeof
(
temp_buff
));
}
ue_cap_rat_container_list
=
calloc
(
1
,
sizeof
(
LTE_UE_CapabilityRAT_ContainerList_t
));
ue_cap_rat_container_list
->
list
.
count
=
RAT_Container_count
;
ue_cap_rat_container_list
->
list
.
size
=
RAT_Container_count
*
sizeof
(
LTE_UE_CapabilityRAT_Container_t
);
ue_cap_rat_container_list
->
list
.
array
=
calloc
(
RAT_Container_count
,
sizeof
(
LTE_UE_CapabilityRAT_Container_t
*
));
if
(
ue_context_pP
->
ue_context
.
UE_Capability_MRDC
)
{
ue_cap_rat_container_list
->
list
.
array
[
0
]
=
calloc
(
1
,
sizeof
(
LTE_UE_CapabilityRAT_Container_t
));
memcpy
(
ue_cap_rat_container_list
->
list
.
array
[
0
],
&
ue_cap_rat_container_MRDC
,
sizeof
(
LTE_UE_CapabilityRAT_Container_t
));
}
if
(
ue_context_pP
->
ue_context
.
UE_Capability_nr
)
{
ue_cap_rat_container_list
->
list
.
array
[
1
]
=
calloc
(
1
,
sizeof
(
LTE_UE_CapabilityRAT_Container_t
));
memcpy
(
ue_cap_rat_container_list
->
list
.
array
[
1
],
&
ue_cap_rat_container_nr
,
sizeof
(
LTE_UE_CapabilityRAT_Container_t
));
if
(
RAT_Container_count
)
{
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
->
ue_CapabilityInfo
=
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
AssertFatal
(
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
->
ue_CapabilityInfo
!=
NULL
,
"failed to allocate memory for ue_capabilityinfo"
);
ue_cap_rat_container_list
=
calloc
(
1
,
sizeof
(
NR_UE_CapabilityRAT_ContainerList_t
));
if
(
ue_cap_rat_container_MRDC
!=
NULL
)
ASN_SEQUENCE_ADD
(
&
ue_cap_rat_container_list
->
list
,
ue_cap_rat_container_MRDC
);
if
(
ue_cap_rat_container_nr
!=
NULL
)
ASN_SEQUENCE_ADD
(
&
ue_cap_rat_container_list
->
list
,
ue_cap_rat_container_nr
);
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_UE_CapabilityRAT_ContainerList
,
NULL
,
(
void
*
)
ue_cap_rat_container_list
,
temp_buff
,
ASN_MAX_ENCODE_SIZE
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
OCTET_STRING_fromBuf
(
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
->
ue_CapabilityInfo
,
(
const
char
*
)
temp_buff
,
(
enc_rval
.
encoded
+
7
)
>>
3
);
}
//this xer_fprint logs can be enabled for additional debugging logs
//xer_fprint(stdout,&asn_DEF_LTE_UE_CapabilityRAT_ContainerList,ue_cap_rat_container_list);
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_LTE_UE_CapabilityRAT_ContainerList
,
NULL
,
(
void
*
)
ue_cap_rat_container_list
,
temp_buff
,
ASN_MAX_ENCODE_SIZE
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
OCTET_STRING_fromBuf
(
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
->
ue_CapabilityInfo
,
(
const
char
*
)
temp_buff
,
(
enc_rval
.
encoded
+
7
)
>>
3
);
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
->
mcg_RB_Config
=
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
AssertFatal
(
cg_configinfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
->
...
...
@@ -4573,7 +4566,7 @@ static int encode_CG_ConfigInfo(
*
enc_size
=
(
enc_rval
.
encoded
+
7
)
/
8
;
ASN_STRUCT_FREE
(
asn_DEF_NR_RadioBearerConfig
,
rb_config
);
ASN_STRUCT_FREE
(
asn_DEF_NR_CG_ConfigInfo
,
cg_configinfo
);
ASN_STRUCT_FREE
(
asn_DEF_
LTE
_UE_CapabilityRAT_ContainerList
,
ue_cap_rat_container_list
);
ASN_STRUCT_FREE
(
asn_DEF_
NR
_UE_CapabilityRAT_ContainerList
,
ue_cap_rat_container_list
);
return
RRC_OK
;
}
//-----------------------------------------------------------------------------
...
...
openair2/RRC/NR/nr_rrc_proto.h
View file @
1d6eea64
...
...
@@ -65,7 +65,7 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge(
struct
rrc_gNB_ue_context_s
*
rrc_gNB_allocate_new_UE_context
(
gNB_RRC_INST
*
rrc_instance_pP
);
void
rrc_parse_ue_capabilities
(
gNB_RRC_INST
*
rrc
,
LTE
_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
,
x2ap_ENDC_sgnb_addition_req_t
*
m
,
NR_CG_ConfigInfo_IEs_t
*
cg_config_info
);
void
rrc_parse_ue_capabilities
(
gNB_RRC_INST
*
rrc
,
NR
_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
,
x2ap_ENDC_sgnb_addition_req_t
*
m
,
NR_CG_ConfigInfo_IEs_t
*
cg_config_info
);
void
rrc_add_nsa_user
(
gNB_RRC_INST
*
rrc
,
struct
rrc_gNB_ue_context_s
*
ue_context_p
,
x2ap_ENDC_sgnb_addition_req_t
*
m
);
...
...
openair2/RRC/NR/rrc_gNB_internode.c
View file @
1d6eea64
...
...
@@ -47,10 +47,10 @@ int parse_CG_ConfigInfo(gNB_RRC_INST *rrc, NR_CG_ConfigInfo_t *CG_ConfigInfo, x2
if
(
cg_ConfigInfo
->
ue_CapabilityInfo
)
{
// Decode UE-CapabilityRAT-ContainerList
LTE
_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
=
NULL
;
UE_CapabilityRAT_ContainerList
=
calloc
(
1
,
sizeof
(
LTE
_UE_CapabilityRAT_ContainerList_t
));
NR
_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
=
NULL
;
UE_CapabilityRAT_ContainerList
=
calloc
(
1
,
sizeof
(
NR
_UE_CapabilityRAT_ContainerList_t
));
asn_dec_rval_t
dec_rval
=
uper_decode
(
NULL
,
&
asn_DEF_
LTE
_UE_CapabilityRAT_ContainerList
,
&
asn_DEF_
NR
_UE_CapabilityRAT_ContainerList
,
(
void
**
)
&
UE_CapabilityRAT_ContainerList
,
cg_ConfigInfo
->
ue_CapabilityInfo
->
buf
,
cg_ConfigInfo
->
ue_CapabilityInfo
->
size
,
0
,
0
);
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
1d6eea64
...
...
@@ -62,7 +62,7 @@ extern rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t * con
const
LTE_PMCH_InfoList_r9_t
*
const
pmch_InfoList_r9_pP
,
struct
NR_CellGroupConfig__rlc_BearerToAddModList
*
rlc_bearer2add_list
);
void
rrc_parse_ue_capabilities
(
gNB_RRC_INST
*
rrc
,
LTE
_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
,
x2ap_ENDC_sgnb_addition_req_t
*
m
,
NR_CG_ConfigInfo_IEs_t
*
cg_config_info
)
{
void
rrc_parse_ue_capabilities
(
gNB_RRC_INST
*
rrc
,
NR
_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
,
x2ap_ENDC_sgnb_addition_req_t
*
m
,
NR_CG_ConfigInfo_IEs_t
*
cg_config_info
)
{
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
NULL
;
OCTET_STRING_t
*
ueCapabilityRAT_Container_nr
=
NULL
;
...
...
@@ -74,8 +74,8 @@ void rrc_parse_ue_capabilities(gNB_RRC_INST *rrc, LTE_UE_CapabilityRAT_Container
AssertFatal
((
list_size
=
UE_CapabilityRAT_ContainerList
->
list
.
count
)
>=
2
,
"UE_CapabilityRAT_ContainerList->list.size %d < 2
\n
"
,
UE_CapabilityRAT_ContainerList
->
list
.
count
);
for
(
int
i
=
0
;
i
<
list_size
;
i
++
)
{
if
(
UE_CapabilityRAT_ContainerList
->
list
.
array
[
i
]
->
rat_Type
==
LTE_RAT_Type_nr
)
ueCapabilityRAT_Container_nr
=
&
UE_CapabilityRAT_ContainerList
->
list
.
array
[
i
]
->
ue
CapabilityRAT_Container
;
else
if
(
UE_CapabilityRAT_ContainerList
->
list
.
array
[
i
]
->
rat_Type
==
LTE_RAT_Type_eutra_nr
)
ueCapabilityRAT_Container_MRDC
=
&
UE_CapabilityRAT_ContainerList
->
list
.
array
[
i
]
->
ue
CapabilityRAT_Container
;
if
(
UE_CapabilityRAT_ContainerList
->
list
.
array
[
i
]
->
rat_Type
==
NR_RAT_Type_nr
)
ueCapabilityRAT_Container_nr
=
&
UE_CapabilityRAT_ContainerList
->
list
.
array
[
i
]
->
ue_
CapabilityRAT_Container
;
else
if
(
UE_CapabilityRAT_ContainerList
->
list
.
array
[
i
]
->
rat_Type
==
NR_RAT_Type_eutra_nr
)
ueCapabilityRAT_Container_MRDC
=
&
UE_CapabilityRAT_ContainerList
->
list
.
array
[
i
]
->
ue_
CapabilityRAT_Container
;
}
// decode and store capabilities
...
...
openair2/X2AP/x2ap_eNB_generate_messages.c
View file @
1d6eea64
...
...
@@ -1675,7 +1675,7 @@ int x2ap_eNB_generate_ENDC_x2_SgNB_addition_request(
for
(
int
i
=
0
;
i
<
e_rabs_tobeadded
;
i
++
)
{
e_RABS_ToBeAdded_SgNBAddReq_ItemIEs
=
(
X2AP_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t
*
)
calloc
(
1
,
sizeof
(
X2AP_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t
));
e_RABS_ToBeAdded_SgNBAddReq_ItemIEs
->
id
=
X2AP_ProtocolIE_ID_id_E_RABs_ToBeAdded_SgNBAddReq_Item
;
e_RABS_ToBeAdded_SgNBAddReq_ItemIEs
->
criticality
=
X2AP_Criticality_ignore
;
e_RABS_ToBeAdded_SgNBAddReq_ItemIEs
->
criticality
=
X2AP_Criticality_reject
;
e_RABS_ToBeAdded_SgNBAddReq_ItemIEs
->
value
.
present
=
X2AP_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR_E_RABs_ToBeAdded_SgNBAddReq_Item
;
e_RABS_ToBeAdded_SgNBAddReq_Item
=
&
e_RABS_ToBeAdded_SgNBAddReq_ItemIEs
->
value
.
choice
.
E_RABs_ToBeAdded_SgNBAddReq_Item
;
{
...
...
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