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
spbro
OpenXG-RAN
Commits
e13c962d
Commit
e13c962d
authored
Nov 02, 2018
by
yoshio.inoue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed bug that u-plane is not transferred with multiple UEs
parent
bb7d63e9
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
75 additions
and
15 deletions
+75
-15
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+12
-2
openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
+13
-2
openair2/NETWORK_DRIVER/UE_IP/common.c
openair2/NETWORK_DRIVER/UE_IP/common.c
+10
-1
openair2/NETWORK_DRIVER/UE_IP/device.c
openair2/NETWORK_DRIVER/UE_IP/device.c
+5
-5
openair3/NAS/UE/ESM/esm_ebr_context.c
openair3/NAS/UE/ESM/esm_ebr_context.c
+25
-3
targets/RT/USER/lte-uesoftmodem.c
targets/RT/USER/lte-uesoftmodem.c
+10
-2
No files found.
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
View file @
e13c962d
...
@@ -64,7 +64,9 @@
...
@@ -64,7 +64,9 @@
#endif
#endif
extern
int
otg_enabled
;
extern
int
otg_enabled
;
#if defined(ENABLE_USE_MME)
extern
uint8_t
nfapi_mode
;
#endif
#include "common/ran_context.h"
#include "common/ran_context.h"
extern
RAN_CONTEXT_t
RC
;
extern
RAN_CONTEXT_t
RC
;
hash_table_t
*
pdcp_coll_p
=
NULL
;
hash_table_t
*
pdcp_coll_p
=
NULL
;
...
@@ -796,7 +798,15 @@ pdcp_data_ind(
...
@@ -796,7 +798,15 @@ pdcp_data_ind(
* for the UE compiled in noS1 mode, we need 0
* for the UE compiled in noS1 mode, we need 0
* TODO: be sure of this
* TODO: be sure of this
*/
*/
if
(
nfapi_mode
==
3
)
{
#ifdef UESIM_EXPANSION
((
pdcp_data_ind_header_t
*
)
new_sdu_p
->
data
)
->
inst
=
1
;
#else
((
pdcp_data_ind_header_t
*
)
new_sdu_p
->
data
)
->
inst
=
ctxt_pP
->
module_id
+
1
;
#endif
}
else
{
((
pdcp_data_ind_header_t
*
)
new_sdu_p
->
data
)
->
inst
=
1
;
((
pdcp_data_ind_header_t
*
)
new_sdu_p
->
data
)
->
inst
=
1
;
}
#endif
#endif
}
else
{
}
else
{
((
pdcp_data_ind_header_t
*
)
new_sdu_p
->
data
)
->
rb_id
=
rb_id
+
(
ctxt_pP
->
module_id
*
maxDRB
);
((
pdcp_data_ind_header_t
*
)
new_sdu_p
->
data
)
->
rb_id
=
rb_id
+
(
ctxt_pP
->
module_id
*
maxDRB
);
...
...
openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
View file @
e13c962d
...
@@ -82,10 +82,13 @@ extern struct msghdr nas_msg_tx;
...
@@ -82,10 +82,13 @@ extern struct msghdr nas_msg_tx;
extern
struct
msghdr
nas_msg_rx
;
extern
struct
msghdr
nas_msg_rx
;
unsigned
char
pdcp_read_state_g
=
0
;
unsigned
char
pdcp_read_state_g
=
0
;
extern
uint8_t
nfapi_mode
;
#ifdef UESIM_EXPANSION
extern
uint16_t
inst_pdcp_list
[
NUMBER_OF_UE_MAX
];
#endif
#endif
#endif
extern
Packet_OTG_List_t
*
otg_pdcp_buffer
;
extern
Packet_OTG_List_t
*
otg_pdcp_buffer
;
extern
uint8_t
nfapi_mode
;
#if defined(LINK_ENB_PDCP_TO_GTPV1U)
#if defined(LINK_ENB_PDCP_TO_GTPV1U)
# include "gtpv1u_eNB_task.h"
# include "gtpv1u_eNB_task.h"
# include "gtpv1u_eNB_defs.h"
# include "gtpv1u_eNB_defs.h"
...
@@ -930,8 +933,16 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP)
...
@@ -930,8 +933,16 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP)
ctxt
.
module_id
=
0
;
ctxt
.
module_id
=
0
;
rab_id
=
pdcp_read_header_g
.
rb_id
%
maxDRB
;
rab_id
=
pdcp_read_header_g
.
rb_id
%
maxDRB
;
ctxt
.
rnti
=
pdcp_eNB_UE_instance_to_rnti
[
pdcp_read_header_g
.
rb_id
/
maxDRB
];
ctxt
.
rnti
=
pdcp_eNB_UE_instance_to_rnti
[
pdcp_read_header_g
.
rb_id
/
maxDRB
];
}
else
{
if
(
nfapi_mode
==
3
)
{
#ifdef UESIM_EXPANSION
ctxt
.
module_id
=
inst_pdcp_list
[
pdcp_read_header_g
.
inst
];
#else
ctxt
.
module_id
=
pdcp_read_header_g
.
inst
-
1
;
#endif
}
else
{
}
else
{
ctxt
.
module_id
=
0
;
ctxt
.
module_id
=
0
;
}
rab_id
=
pdcp_read_header_g
.
rb_id
%
maxDRB
;
rab_id
=
pdcp_read_header_g
.
rb_id
%
maxDRB
;
ctxt
.
rnti
=
pdcp_UE_UE_module_id_to_rnti
[
ctxt
.
module_id
];
ctxt
.
rnti
=
pdcp_UE_UE_module_id_to_rnti
[
ctxt
.
module_id
];
}
}
...
...
openair2/NETWORK_DRIVER/UE_IP/common.c
View file @
e13c962d
...
@@ -304,7 +304,16 @@ ue_ip_common_ip2wireless(
...
@@ -304,7 +304,16 @@ ue_ip_common_ip2wireless(
if
(
dst_addr
)
{
if
(
dst_addr
)
{
printk
(
"[UE_IP_DRV][%s] Dest %d.%d.%d.%d
\n
"
,
__FUNCTION__
,
dst_addr
[
0
],
dst_addr
[
1
],
dst_addr
[
2
],
dst_addr
[
3
]);
printk
(
"[UE_IP_DRV][%s] Dest %d.%d.%d.%d
\n
"
,
__FUNCTION__
,
dst_addr
[
0
],
dst_addr
[
1
],
dst_addr
[
2
],
dst_addr
[
3
]);
}
}
// modify inst by IP address for the U-Plane of multiple UEs while L2 fapi simulator start
#ifdef UESIM_EXPANSION
if
((
src_addr
[
3
]
-
1
)
>
instP
)
{
pdcph
.
inst
=
src_addr
[
3
]
-
1
;
printk
(
"[UE_IP_DRV] change INST from %d to %d
\n
"
,
instP
,
pdcph
.
inst
);
instP
=
src_addr
[
3
]
-
1
;
priv_p
=
netdev_priv
(
ue_ip_dev
[
instP
]);
}
#endif
// modify inst by IP address for the U-Plane of multiple UEs while L2 fapi simulator end
//get Ipv4 address and pass to PCDP header
//get Ipv4 address and pass to PCDP header
printk
(
"[UE_IP_DRV] source Id: 0x%08x
\n
"
,
pdcph
.
sourceL2Id
);
printk
(
"[UE_IP_DRV] source Id: 0x%08x
\n
"
,
pdcph
.
sourceL2Id
);
printk
(
"[UE_IP_DRV] destinationL2Id Id: 0x%08x
\n
"
,
pdcph
.
destinationL2Id
);
printk
(
"[UE_IP_DRV] destinationL2Id Id: 0x%08x
\n
"
,
pdcph
.
destinationL2Id
);
...
...
openair2/NETWORK_DRIVER/UE_IP/device.c
View file @
e13c962d
...
@@ -61,7 +61,7 @@ int ue_ip_find_inst(struct net_device *dev_pP)
...
@@ -61,7 +61,7 @@ int ue_ip_find_inst(struct net_device *dev_pP)
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
int
i
;
int
i
;
for
(
i
=
0
;
i
<
UE_IP_NB_INSTANCES_MAX
;
i
++
)
for
(
i
=
1
;
i
<=
UE_IP_NB_INSTANCES_MAX
;
i
++
)
if
(
ue_ip_dev
[
i
]
==
dev_pP
)
{
if
(
ue_ip_dev
[
i
]
==
dev_pP
)
{
return
(
i
);
return
(
i
);
}
}
...
@@ -194,7 +194,7 @@ void ue_ip_teardown(struct net_device *dev_pP)
...
@@ -194,7 +194,7 @@ void ue_ip_teardown(struct net_device *dev_pP)
priv_p
=
netdev_priv
(
dev_pP
);
priv_p
=
netdev_priv
(
dev_pP
);
inst
=
ue_ip_find_inst
(
dev_pP
);
inst
=
ue_ip_find_inst
(
dev_pP
);
if
((
inst
<
0
)
||
(
inst
>=
UE_IP_NB_INSTANCES_MAX
))
{
if
((
inst
<
=
0
)
||
(
inst
>
UE_IP_NB_INSTANCES_MAX
))
{
printk
(
"[UE_IP_DRV][%s] ERROR, couldn't find instance
\n
"
,
__FUNCTION__
);
printk
(
"[UE_IP_DRV][%s] ERROR, couldn't find instance
\n
"
,
__FUNCTION__
);
return
;
return
;
}
}
...
@@ -243,7 +243,7 @@ int ue_ip_hard_start_xmit(struct sk_buff *skb_pP, struct net_device *dev_pP)
...
@@ -243,7 +243,7 @@ int ue_ip_hard_start_xmit(struct sk_buff *skb_pP, struct net_device *dev_pP)
return
-
1
;
return
-
1
;
}
}
if
((
inst
>
=
0
)
&&
(
inst
<
UE_IP_NB_INSTANCES_MAX
))
{
if
((
inst
>
0
)
&&
(
inst
<=
UE_IP_NB_INSTANCES_MAX
))
{
#ifdef OAI_DRV_OAI_DRV_DEBUG_DEVICE
#ifdef OAI_DRV_OAI_DRV_DEBUG_DEVICE
printk
(
"[UE_IP_DRV][%s] inst %d, begin
\n
"
,
__FUNCTION__
,
inst
);
printk
(
"[UE_IP_DRV][%s] inst %d, begin
\n
"
,
__FUNCTION__
,
inst
);
#endif
#endif
...
@@ -392,7 +392,7 @@ int init_module (void)
...
@@ -392,7 +392,7 @@ int init_module (void)
// Initialize parameters shared with RRC
// Initialize parameters shared with RRC
printk
(
"[UE_IP_DRV][%s] Starting OAI IP driver"
,
__FUNCTION__
);
printk
(
"[UE_IP_DRV][%s] Starting OAI IP driver"
,
__FUNCTION__
);
for
(
inst
=
0
;
inst
<
UE_IP_NB_INSTANCES_MAX
;
inst
++
)
{
for
(
inst
=
1
;
inst
<=
UE_IP_NB_INSTANCES_MAX
;
inst
++
)
{
printk
(
"[UE_IP_DRV][%s] begin init instance %d
\n
"
,
__FUNCTION__
,
inst
);
printk
(
"[UE_IP_DRV][%s] begin init instance %d
\n
"
,
__FUNCTION__
,
inst
);
sprintf
(
devicename
,
"oip%d"
,
inst
);
sprintf
(
devicename
,
"oip%d"
,
inst
);
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
...
@@ -434,7 +434,7 @@ void cleanup_module(void)
...
@@ -434,7 +434,7 @@ void cleanup_module(void)
printk
(
"[UE_IP_DRV][CLEANUP] begin
\n
"
);
printk
(
"[UE_IP_DRV][CLEANUP] begin
\n
"
);
for
(
inst
=
0
;
inst
<
UE_IP_NB_INSTANCES_MAX
;
inst
++
)
{
for
(
inst
=
1
;
inst
<=
UE_IP_NB_INSTANCES_MAX
;
inst
++
)
{
#ifdef OAI_DRV_DEBUG_DEVICE
#ifdef OAI_DRV_DEBUG_DEVICE
printk
(
"[UE_IP_DRV][CLEANUP] unregister and free net device instance %d
\n
"
,
inst
);
printk
(
"[UE_IP_DRV][CLEANUP] unregister and free net device instance %d
\n
"
,
inst
);
#endif
#endif
...
...
openair3/NAS/UE/ESM/esm_ebr_context.c
View file @
e13c962d
...
@@ -57,7 +57,12 @@ Description Defines functions used to handle EPS bearer contexts.
...
@@ -57,7 +57,12 @@ Description Defines functions used to handle EPS bearer contexts.
#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#ifdef PDCP_USE_NETLINK
#ifdef UESIM_EXPANSION
#include "openairinterface5g_limits.h"
extern
uint16_t
inst_pdcp_list
[
NUMBER_OF_UE_MAX
];
#endif
#endif
extern
uint8_t
nfapi_mode
;
extern
uint8_t
nfapi_mode
;
/****************************************************************************/
/****************************************************************************/
...
@@ -277,15 +282,32 @@ int esm_ebr_context_create(
...
@@ -277,15 +282,32 @@ int esm_ebr_context_create(
// this is for L2 FAPI simulator.
// this is for L2 FAPI simulator.
// change for multiple UE's like 256UEs.
// change for multiple UE's like 256UEs.
// if it's made too many tables , OS may crush so we use one table.
// if it's made too many tables , OS may crush so we use one table.
#ifdef PDCP_USE_NETLINK
#ifdef UESIM_EXPANSION
uint16_t
inst_nic
=
(
pdn
->
ip_addr
[
3
]
&
0x000000FF
)
-
1
;
res
=
sprintf
(
command_line
,
res
=
sprintf
(
command_line
,
"ifconfig oip%d %s netmask %s broadcast %s up && "
"ifconfig oip%d %s netmask %s broadcast %s up && "
"ip rule add from %s/24 table %d && "
"ip rule add from %s/24 table %d && "
"ip rule add to %s/24 table %d && "
"ip rule add to %s/24 table %d && "
"ip route add default dev oip%d table %d"
,
"ip route add default dev oip%d table %d"
,
ueid
+
1
,
ipv4_addr
,
netmask
,
broadcast
,
inst_nic
,
ipv4_addr
,
netmask
,
broadcast
,
ipv4_addr
,
201
,
ipv4_addr
,
201
,
ipv4_addr
,
201
,
ipv4_addr
,
201
,
ueid
+
1
,
201
);
inst_nic
,
201
);
inst_pdcp_list
[
inst_nic
]
=
ueid
;
#else
res
=
sprintf
(
command_line
,
"ifconfig oip%d %s netmask %s broadcast %s up && "
"ip rule add from %s/32 table %d && "
"ip rule add to %s/32 table %d && "
"ip route add default dev oip%d table %d"
,
ueid
+
1
,
ipv4_addr
,
netmask
,
broadcast
,
ipv4_addr
,
ueid
+
201
,
ipv4_addr
,
ueid
+
201
,
ueid
+
1
,
ueid
+
201
);
#endif
#endif
}
else
{
}
else
{
res
=
sprintf
(
command_line
,
res
=
sprintf
(
command_line
,
"ifconfig oip%d %s netmask %s broadcast %s up && "
"ifconfig oip%d %s netmask %s broadcast %s up && "
...
...
targets/RT/USER/lte-uesoftmodem.c
View file @
e13c962d
...
@@ -115,7 +115,11 @@ pthread_mutex_t nfapi_sync_mutex;
...
@@ -115,7 +115,11 @@ pthread_mutex_t nfapi_sync_mutex;
int
nfapi_sync_var
=-
1
;
//!< protected by mutex \ref nfapi_sync_mutex
int
nfapi_sync_var
=-
1
;
//!< protected by mutex \ref nfapi_sync_mutex
uint8_t
nfapi_mode
=
0
;
uint8_t
nfapi_mode
=
0
;
#ifdef PDCP_USE_NETLINK
#ifdef UESIM_EXPANSION
uint16_t
inst_pdcp_list
[
NUMBER_OF_UE_MAX
];
#endif
#endif
uint16_t
sf_ahead
=
2
;
uint16_t
sf_ahead
=
2
;
int
tddflag
;
int
tddflag
;
char
*
emul_iface
;
char
*
emul_iface
;
...
@@ -821,7 +825,11 @@ int main( int argc, char **argv )
...
@@ -821,7 +825,11 @@ int main( int argc, char **argv )
int
CC_id
;
int
CC_id
;
uint8_t
abstraction_flag
=
0
;
uint8_t
abstraction_flag
=
0
;
unsigned
int
start_msc
=
0
;
unsigned
int
start_msc
=
0
;
#ifdef PDCP_USE_NETLINK
#ifdef UESIM_EXPANSION
memset
(
inst_pdcp_list
,
0
,
sizeof
(
inst_pdcp_list
));
#endif
#endif
// Default value for the number of UEs. It will hold,
// Default value for the number of UEs. It will hold,
// if not changed from the command line option --num-ues
// if not changed from the command line option --num-ues
NB_UE_INST
=
1
;
NB_UE_INST
=
1
;
...
...
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