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
OpenXG
OpenXG UE
Commits
cdd06928
Commit
cdd06928
authored
Feb 19, 2019
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
attempt to fix l2 simulator issue
parent
e5a64b45
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
113 additions
and
172 deletions
+113
-172
openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c
openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c
+50
-47
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+18
-52
openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
+26
-50
openair2/LAYER2/RLC/rlc.c
openair2/LAYER2/RLC/rlc.c
+6
-16
openair3/NAS/UE/ESM/esm_ebr_context.c
openair3/NAS/UE/ESM/esm_ebr_context.c
+12
-6
targets/RT/USER/lte-uesoftmodem.c
targets/RT/USER/lte-uesoftmodem.c
+1
-1
No files found.
openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c
View file @
cdd06928
...
...
@@ -56,7 +56,7 @@ struct nlmsghdr *nas_nlh_rx = NULL;
struct
iovec
nas_iov_tx
;
struct
iovec
nas_iov_rx
=
{
nl_rx_buf
,
sizeof
(
nl_rx_buf
)};
int
nas_sock_fd
;
int
nas_sock_fd
[
MAX_MOBILES_PER_ENB
]
;
struct
msghdr
nas_msg_tx
;
struct
msghdr
nas_msg_rx
;
...
...
@@ -96,72 +96,75 @@ static int tun_alloc(char *dev) {
int
netlink_init_tun
(
void
)
{
int
ret
;
char
ifname
[
64
];
sprintf
(
ifname
,
"oip1"
);
nas_sock_fd
=
tun_alloc
(
ifname
);
if
(
nas_sock_fd
==
-
1
)
{
printf
(
"[NETLINK] Error opening socket %d (%d:%s)
\n
"
,
nas_sock_fd
,
errno
,
strerror
(
errno
));
exit
(
1
);
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
sprintf
(
ifname
,
"oaitun_ue%d"
,
i
+
1
);
nas_sock_fd
[
i
]
=
tun_alloc
(
ifname
);
printf
(
"[NETLINK]Opened socket with fd %d
\n
"
,
nas_sock_fd
);
ret
=
fcntl
(
nas_sock_fd
,
F_SETFL
,
O_NONBLOCK
);
if
(
nas_sock_fd
[
i
]
==
-
1
)
{
printf
(
"[NETLINK] Error opening socket %s (%d:%s)
\n
"
,
ifname
,
errno
,
strerror
(
errno
));
exit
(
1
);
}
if
(
ret
==
-
1
)
{
printf
(
"[NETLINK] Error fcntl (%d:%s)
\n
"
,
errno
,
strerror
(
errno
)
);
printf
(
"[NETLINK]Opened socket %s with fd %d
\n
"
,
ifname
,
nas_sock_fd
[
i
]);
ret
=
fcntl
(
nas_sock_fd
[
i
],
F_SETFL
,
O_NONBLOCK
);
if
(
LINK_ENB_PDCP_TO_IP_DRIVER
)
{
exit
(
1
);
if
(
ret
==
-
1
)
{
printf
(
"[NETLINK] Error fcntl (%d:%s)
\n
"
,
errno
,
strerror
(
errno
));
if
(
LINK_ENB_PDCP_TO_IP_DRIVER
)
{
exit
(
1
);
}
}
}
memset
(
&
nas_src_addr
,
0
,
sizeof
(
nas_src_addr
));
nas_src_addr
.
nl_family
=
AF_NETLINK
;
nas_src_addr
.
nl_pid
=
1
;
//getpid(); /* self pid */
nas_src_addr
.
nl_groups
=
0
;
/* not in mcast groups */
ret
=
bind
(
nas_sock_fd
,
(
struct
sockaddr
*
)
&
nas_src_addr
,
sizeof
(
nas_src_addr
));
memset
(
&
nas_dest_addr
,
0
,
sizeof
(
nas_dest_addr
));
nas_dest_addr
.
nl_family
=
AF_NETLINK
;
nas_dest_addr
.
nl_pid
=
0
;
/* For Linux Kernel */
nas_dest_addr
.
nl_groups
=
0
;
/* unicast */
memset
(
&
nas_src_addr
,
0
,
sizeof
(
nas_src_addr
));
nas_src_addr
.
nl_family
=
AF_NETLINK
;
nas_src_addr
.
nl_pid
=
1
;
//getpid(); /* self pid */
nas_src_addr
.
nl_groups
=
0
;
/* not in mcast groups */
ret
=
bind
(
nas_sock_fd
[
i
]
,
(
struct
sockaddr
*
)
&
nas_src_addr
,
sizeof
(
nas_src_addr
));
memset
(
&
nas_dest_addr
,
0
,
sizeof
(
nas_dest_addr
));
nas_dest_addr
.
nl_family
=
AF_NETLINK
;
nas_dest_addr
.
nl_pid
=
0
;
/* For Linux Kernel */
nas_dest_addr
.
nl_groups
=
0
;
/* unicast */
// TX PART
nas_nlh_tx
=
(
struct
nlmsghdr
*
)
malloc
(
NLMSG_SPACE
(
NL_MAX_PAYLOAD
));
memset
(
nas_nlh_tx
,
0
,
NLMSG_SPACE
(
NL_MAX_PAYLOAD
));
nas_nlh_tx
=
(
struct
nlmsghdr
*
)
malloc
(
NLMSG_SPACE
(
NL_MAX_PAYLOAD
));
memset
(
nas_nlh_tx
,
0
,
NLMSG_SPACE
(
NL_MAX_PAYLOAD
));
/* Fill the netlink message header */
nas_nlh_tx
->
nlmsg_len
=
NLMSG_SPACE
(
NL_MAX_PAYLOAD
);
nas_nlh_tx
->
nlmsg_pid
=
1
;
//getpid(); /* self pid */
nas_nlh_tx
->
nlmsg_flags
=
0
;
nas_iov_tx
.
iov_base
=
(
void
*
)
nas_nlh_tx
;
nas_iov_tx
.
iov_len
=
nas_nlh_tx
->
nlmsg_len
;
memset
(
&
nas_msg_tx
,
0
,
sizeof
(
nas_msg_tx
));
nas_msg_tx
.
msg_name
=
(
void
*
)
&
nas_dest_addr
;
nas_msg_tx
.
msg_namelen
=
sizeof
(
nas_dest_addr
);
nas_msg_tx
.
msg_iov
=
&
nas_iov_tx
;
nas_msg_tx
.
msg_iovlen
=
1
;
nas_nlh_tx
->
nlmsg_len
=
NLMSG_SPACE
(
NL_MAX_PAYLOAD
);
nas_nlh_tx
->
nlmsg_pid
=
1
;
//getpid(); /* self pid */
nas_nlh_tx
->
nlmsg_flags
=
0
;
nas_iov_tx
.
iov_base
=
(
void
*
)
nas_nlh_tx
;
nas_iov_tx
.
iov_len
=
nas_nlh_tx
->
nlmsg_len
;
memset
(
&
nas_msg_tx
,
0
,
sizeof
(
nas_msg_tx
));
nas_msg_tx
.
msg_name
=
(
void
*
)
&
nas_dest_addr
;
nas_msg_tx
.
msg_namelen
=
sizeof
(
nas_dest_addr
);
nas_msg_tx
.
msg_iov
=
&
nas_iov_tx
;
nas_msg_tx
.
msg_iovlen
=
1
;
// RX PART
memset
(
&
nas_msg_rx
,
0
,
sizeof
(
nas_msg_rx
));
nas_msg_rx
.
msg_name
=
(
void
*
)
&
nas_src_addr
;
nas_msg_rx
.
msg_namelen
=
sizeof
(
nas_src_addr
);
nas_msg_rx
.
msg_iov
=
&
nas_iov_rx
;
nas_msg_rx
.
msg_iovlen
=
1
;
memset
(
&
nas_msg_rx
,
0
,
sizeof
(
nas_msg_rx
));
nas_msg_rx
.
msg_name
=
(
void
*
)
&
nas_src_addr
;
nas_msg_rx
.
msg_namelen
=
sizeof
(
nas_src_addr
);
nas_msg_rx
.
msg_iov
=
&
nas_iov_rx
;
nas_msg_rx
.
msg_iovlen
=
1
;
}
/* for */
return
1
;
}
int
netlink_init
(
void
)
{
int
ret
;
nas_sock_fd
=
socket
(
PF_NETLINK
,
SOCK_RAW
,
GRAAL_NETLINK_ID
);
nas_sock_fd
[
0
]
=
socket
(
PF_NETLINK
,
SOCK_RAW
,
GRAAL_NETLINK_ID
);
if
(
nas_sock_fd
==
-
1
)
{
printf
(
"[NETLINK] Error opening socket %d (%d:%s)
\n
"
,
nas_sock_fd
,
errno
,
strerror
(
errno
));
if
(
nas_sock_fd
[
0
]
==
-
1
)
{
printf
(
"[NETLINK] Error opening socket %d (%d:%s)
\n
"
,
nas_sock_fd
[
0
]
,
errno
,
strerror
(
errno
));
if
(
LINK_ENB_PDCP_TO_IP_DRIVER
)
{
exit
(
1
);
}
}
printf
(
"[NETLINK]Opened socket with fd %d
\n
"
,
nas_sock_fd
);
ret
=
fcntl
(
nas_sock_fd
,
F_SETFL
,
O_NONBLOCK
);
printf
(
"[NETLINK]Opened socket with fd %d
\n
"
,
nas_sock_fd
[
0
]
);
ret
=
fcntl
(
nas_sock_fd
[
0
]
,
F_SETFL
,
O_NONBLOCK
);
if
(
ret
==
-
1
)
{
printf
(
"[NETLINK] Error fcntl (%d:%s)
\n
"
,
errno
,
strerror
(
errno
));
...
...
@@ -175,7 +178,7 @@ int netlink_init(void) {
nas_src_addr
.
nl_family
=
AF_NETLINK
;
nas_src_addr
.
nl_pid
=
1
;
//getpid(); /* self pid */
nas_src_addr
.
nl_groups
=
0
;
/* not in mcast groups */
ret
=
bind
(
nas_sock_fd
,
(
struct
sockaddr
*
)
&
nas_src_addr
,
sizeof
(
nas_src_addr
));
ret
=
bind
(
nas_sock_fd
[
0
]
,
(
struct
sockaddr
*
)
&
nas_src_addr
,
sizeof
(
nas_src_addr
));
memset
(
&
nas_dest_addr
,
0
,
sizeof
(
nas_dest_addr
));
nas_dest_addr
.
nl_family
=
AF_NETLINK
;
nas_dest_addr
.
nl_pid
=
0
;
/* For Linux Kernel */
...
...
@@ -200,6 +203,6 @@ int netlink_init(void) {
nas_msg_rx
.
msg_namelen
=
sizeof
(
nas_src_addr
);
nas_msg_rx
.
msg_iov
=
&
nas_iov_rx
;
nas_msg_rx
.
msg_iovlen
=
1
;
return
(
nas_sock_fd
);
return
(
nas_sock_fd
[
0
]
);
}
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
View file @
cdd06928
...
...
@@ -100,11 +100,9 @@ boolean_t pdcp_data_req(
const
confirm_t
confirmP
,
const
sdu_size_t
sdu_buffer_sizeP
,
unsigned
char
*
const
sdu_buffer_pP
,
const
pdcp_transmission_mode_t
modeP
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
const
uint32_t
*
const
sourceL2Id
,
const
uint32_t
*
const
destinationL2Id
#endif
const
pdcp_transmission_mode_t
modeP
,
const
uint32_t
*
const
sourceL2Id
,
const
uint32_t
*
const
destinationL2Id
)
//-----------------------------------------------------------------------------
{
...
...
@@ -189,19 +187,12 @@ boolean_t pdcp_data_req(
LOG_UI
(
PDCP
,
"Before rlc_data_req 1, srb_flagP: %d, rb_idP: %d
\n
"
,
srb_flagP
,
rb_idP
);
}
rlc_status
=
rlc_data_req
(
ctxt_pP
,
srb_flagP
,
MBMS_FLAG_YES
,
rb_idP
,
muiP
,
confirmP
,
sdu_buffer_sizeP
,
pdcp_pdu_p
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
NULL
,
NULL
#endif
);
}
else
{
rlc_status
=
RLC_OP_STATUS_OUT_OF_RESSOURCES
;
LOG_
W
(
PDCP
,
PROTOCOL_CTXT_FMT
" PDCP_DATA_REQ SDU DROPPED, OUT OF MEMORY
\n
"
,
LOG_
E
(
PDCP
,
PROTOCOL_CTXT_FMT
" PDCP_DATA_REQ SDU DROPPED, OUT OF MEMORY
\n
"
,
PROTOCOL_CTXT_ARGS
(
ctxt_pP
));
#if defined(STOP_ON_IP_TRAFFIC_OVERLOAD)
AssertFatal
(
0
,
PROTOCOL_CTXT_FMT
"[RB %u] PDCP_DATA_REQ SDU DROPPED, OUT OF MEMORY
\n
"
,
PROTOCOL_CTXT_ARGS
(
ctxt_pP
),
rb_idP
);
#endif
}
}
else
{
// calculate the pdcp header and trailer size
...
...
@@ -344,14 +335,11 @@ boolean_t pdcp_data_req(
stop_meas
(
&
UE_pdcp_stats
[
ctxt_pP
->
module_id
].
data_req
);
}
#if defined(STOP_ON_IP_TRAFFIC_OVERLOAD)
AssertFatal
(
0
,
"[FRAME %5u][%s][PDCP][MOD %u/%u][RB %u] PDCP_DATA_REQ SDU DROPPED, OUT OF MEMORY
\n
"
,
LOG_E
(
PDCP
,
"[FRAME %5u][%s][PDCP][MOD %u][RB %u] PDCP_DATA_REQ SDU DROPPED, OUT OF MEMORY
\n
"
,
ctxt_pP
->
frame
,
(
ctxt_pP
->
enb_flag
)
?
"eNB"
:
"UE"
,
ctxt_pP
->
enb_module_id
,
ctxt_pP
->
ue_module_id
,
ctxt_pP
->
module_id
,
rb_idP
);
#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_REQ
,
VCD_FUNCTION_OUT
);
return
FALSE
;
}
...
...
@@ -364,10 +352,8 @@ boolean_t pdcp_data_req(
"[MSG] PDCP DL %s PDU on rb_id %d
\n
"
,(
srb_flagP
)
?
"CONTROL"
:
"DATA"
,
rb_idP
);
LOG_D
(
PDCP
,
"Before rlc_data_req 2, srb_flagP: %d, rb_idP: %d
\n
"
,
srb_flagP
,
rb_idP
);
rlc_status
=
rlc_data_req
(
ctxt_pP
,
srb_flagP
,
MBMS_FLAG_NO
,
rb_idP
,
muiP
,
confirmP
,
pdcp_pdu_size
,
pdcp_pdu_p
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
sourceL2Id
,
destinationL2Id
#endif
);
}
...
...
@@ -832,19 +818,15 @@ pdcp_data_ind(
Pdcp_stats_rx_bytes_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
sdu_buffer_sizeP
-
payload_offset
);
Pdcp_stats_rx_sn
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
=
sequence_number
;
if
(
oo_flag
==
1
)
if
(
oo_flag
==
1
)
{
Pdcp_stats_rx_outoforder
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
++
;
}
else
{
LOG_E
(
PDCP
,
PROTOCOL_PDCP_CTXT_FMT
" PDCP_DATA_IND SDU DROPPED, OUT OF ORDER
\n
"
,
PROTOCOL_PDCP_CTXT_ARGS
(
ctxt_pP
,
pdcp_p
));
}
Pdcp_stats_rx_aiat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
Pdcp_stats_rx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]);
Pdcp_stats_rx_aiat_tmp_w
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
+=
(
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
-
Pdcp_stats_rx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]);
Pdcp_stats_rx_iat
[
ctxt_pP
->
module_id
][
pdcp_uid
][
rb_idP
+
rb_offset
]
=
pdcp_enb
[
ctxt_pP
->
module_id
].
sfn
;
#if defined(STOP_ON_IP_TRAFFIC_OVERLOAD)
else
{
AssertFatal
(
0
,
PROTOCOL_PDCP_CTXT_FMT
" PDCP_DATA_IND SDU DROPPED, OUT OF MEMORY
\n
"
,
PROTOCOL_PDCP_CTXT_ARGS
(
ctxt_pP
,
pdcp_p
));
}
#endif
}
free_mem_block
(
sdu_buffer_pP
,
__func__
);
...
...
@@ -962,10 +944,8 @@ pdcp_run (
RRC_DCCH_DATA_REQ
(
msg_p
).
confirmp
,
RRC_DCCH_DATA_REQ
(
msg_p
).
sdu_size
,
RRC_DCCH_DATA_REQ
(
msg_p
).
sdu_p
,
RRC_DCCH_DATA_REQ
(
msg_p
).
mode
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
NULL
,
NULL
#endif
RRC_DCCH_DATA_REQ
(
msg_p
).
mode
,
NULL
,
NULL
);
if
(
result
!=
TRUE
)
...
...
@@ -1117,11 +1097,9 @@ rrc_pdcp_config_asn1_req (
const
uint8_t
security_modeP
,
uint8_t
*
const
kRRCenc_pP
,
uint8_t
*
const
kRRCint_pP
,
uint8_t
*
const
kUPenc_pP
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
,
LTE_PMCH_InfoList_r9_t
*
const
pmch_InfoList_r9_pP
#endif
,
rb_id_t
*
const
defaultDRB
uint8_t
*
const
kUPenc_pP
,
LTE_PMCH_InfoList_r9_t
*
const
pmch_InfoList_r9_pP
,
rb_id_t
*
const
defaultDRB
)
//-----------------------------------------------------------------------------
{
...
...
@@ -1144,11 +1122,10 @@ rrc_pdcp_config_asn1_req (
hashtable_rc_t
h_rc
;
hash_key_t
key_defaultDRB
=
HASHTABLE_NOT_A_KEY_VALUE
;
hashtable_rc_t
h_defaultDRB_rc
;
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
int
i
,
j
;
LTE_MBMS_SessionInfoList_r9_t
*
mbms_SessionInfoList_r9_p
=
NULL
;
LTE_MBMS_SessionInfo_r9_t
*
MBMS_SessionInfo_p
=
NULL
;
#endif
LOG_T
(
PDCP
,
PROTOCOL_CTXT_FMT
" %s() SRB2ADD %p DRB2ADD %p DRB2RELEASE %p
\n
"
,
PROTOCOL_CTXT_ARGS
(
ctxt_pP
),
__FUNCTION__
,
...
...
@@ -1438,7 +1415,6 @@ rrc_pdcp_config_asn1_req (
}
}
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
if
(
pmch_InfoList_r9_pP
!=
NULL
)
{
for
(
i
=
0
;
i
<
pmch_InfoList_r9_pP
->
list
.
count
;
i
++
)
{
...
...
@@ -1501,7 +1477,6 @@ rrc_pdcp_config_asn1_req (
}
}
#endif
return
0
;
}
...
...
@@ -1665,7 +1640,6 @@ pdcp_config_req_asn1 (
memset
(
pdcp_pP
,
0
,
sizeof
(
pdcp_t
));
break
;
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
case
CONFIG_ACTION_MBMS_ADD
:
case
CONFIG_ACTION_MBMS_MODIFY
:
...
...
@@ -1685,7 +1659,6 @@ pdcp_config_req_asn1 (
}
break
;
#endif
case
CONFIG_ACTION_SET_SECURITY_MODE
:
pdcp_config_set_security
(
...
...
@@ -1958,10 +1931,9 @@ void pdcp_layer_init(void)
{
module_id_t
instance
;
int
i
,
j
;
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
mbms_session_id_t
session_id
;
mbms_service_id_t
service_id
;
#endif
/*
* Initialize SDU list
*/
...
...
@@ -1970,7 +1942,6 @@ void pdcp_layer_init(void)
AssertFatal
(
pdcp_coll_p
!=
NULL
,
"UNRECOVERABLE error, PDCP hashtable_create failed"
);
for
(
instance
=
0
;
instance
<
MAX_MOBILES_PER_ENB
;
instance
++
)
{
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
for
(
service_id
=
0
;
service_id
<
LTE_maxServiceCount
;
service_id
++
)
{
for
(
session_id
=
0
;
session_id
<
LTE_maxSessionPerPMCH
;
session_id
++
)
{
...
...
@@ -1978,22 +1949,17 @@ void pdcp_layer_init(void)
}
}
#endif
pdcp_eNB_UE_instance_to_rnti
[
instance
]
=
NOT_A_RNTI
;
}
pdcp_eNB_UE_instance_to_rnti_index
=
0
;
for
(
instance
=
0
;
instance
<
NUMBER_OF_eNB_MAX
;
instance
++
)
{
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
for
(
service_id
=
0
;
service_id
<
LTE_maxServiceCount
;
service_id
++
)
{
for
(
session_id
=
0
;
session_id
<
LTE_maxSessionPerPMCH
;
session_id
++
)
{
memset
(
&
pdcp_mbms_array_eNB
[
instance
][
service_id
][
session_id
],
0
,
sizeof
(
pdcp_mbms_t
));
}
}
#endif
}
#ifdef MBMS_MULTICAST_OUT
...
...
openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
View file @
cdd06928
...
...
@@ -74,16 +74,16 @@ extern struct nlmsghdr *nas_nlh_rx;
extern
struct
iovec
nas_iov_tx
;
extern
struct
iovec
nas_iov_rx
;
extern
int
nas_sock_fd
;
extern
int
nas_sock_fd
[
MAX_MOBILES_PER_ENB
]
;
extern
struct
msghdr
nas_msg_tx
;
extern
struct
msghdr
nas_msg_rx
;
extern
uint8_t
nfapi_mode
;
#ifdef UESIM_EXPANSION
extern
uint8_t
nfapi_mode
;
#ifdef UESIM_EXPANSION
extern
uint16_t
inst_pdcp_list
[
NUMBER_OF_UE_MAX
];
#endif
#endif
extern
Packet_OTG_List_t
*
otg_pdcp_buffer
;
...
...
@@ -124,11 +124,11 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t *const ctxt_pP) {
ret
=
sendto
(
pdcp_pc5_sockfd
,
&
(
sdu_p
->
data
[
sizeof
(
pdcp_data_ind_header_t
)]),
sizeof
(
sidelink_pc5s_element
),
0
,
(
struct
sockaddr
*
)
&
prose_pdcp_addr
,
sizeof
(
prose_pdcp_addr
)
);
}
else
if
(
UE_NAS_USE_TUN
)
{
ret
=
write
(
nas_sock_fd
,
&
(
sdu_p
->
data
[
sizeof
(
pdcp_data_ind_header_t
)]),
sizeToWrite
);
ret
=
write
(
nas_sock_fd
[
ctxt_pP
->
module_id
]
,
&
(
sdu_p
->
data
[
sizeof
(
pdcp_data_ind_header_t
)]),
sizeToWrite
);
}
else
if
(
PDCP_USE_NETLINK
)
{
//UE_NAS_USE_TUN
memcpy
(
NLMSG_DATA
(
nas_nlh_tx
),
(
uint8_t
*
)
sdu_p
->
data
,
sizeToWrite
);
nas_nlh_tx
->
nlmsg_len
=
sizeToWrite
;
ret
=
sendmsg
(
nas_sock_fd
,
&
nas_msg_tx
,
0
);
ret
=
sendmsg
(
nas_sock_fd
[
0
]
,
&
nas_msg_tx
,
0
);
}
// PDCP_USE_NETLINK
AssertFatal
(
ret
>=
0
,
"[PDCP_FIFOS] pdcp_fifo_flush_sdus (errno: %d %s)
\n
"
,
errno
,
strerror
(
errno
));
...
...
@@ -155,7 +155,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
do
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_FIFO_READ
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_FIFO_READ_BUFFER
,
1
);
len
=
read
(
nas_sock_fd
,
&
nl_rx_buf
,
NL_MAX_PAYLOAD
);
len
=
read
(
nas_sock_fd
[
ctxt_pP
->
module_id
]
,
&
nl_rx_buf
,
NL_MAX_PAYLOAD
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_FIFO_READ_BUFFER
,
0
);
if
(
len
<=
0
)
continue
;
...
...
@@ -180,9 +180,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
pdcp_data_req
(
&
ctxt
,
SRB_FLAG_NO
,
rab_id
,
RLC_MUI_UNDEFINED
,
RLC_SDU_CONFIRM_NO
,
len
,
(
unsigned
char
*
)
nl_rx_buf
,
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
NULL
,
NULL
#endif
);
}
else
{
MSC_LOG_RX_DISCARDED_MESSAGE
(
...
...
@@ -214,7 +212,6 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
module_id_t
ue_id
=
0
;
pdcp_t
*
pdcp_p
=
NULL
;
//TTN for D2D (PC5S)
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
int
prose_addr_len
;
char
send_buf
[
BUFSIZE
],
receive_buf
[
BUFSIZE
];
//int optval;
...
...
@@ -225,14 +222,12 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
//uint32_t groupL2Id;
//module_id_t module_id = 0;
pc5s_header_t
*
pc5s_header
;
#endif
static
unsigned
char
pdcp_read_state_g
=
0
;
int
len
=
1
;
int
msg_len
;
rb_id_t
rab_id
=
0
;
int
rlc_data_req_flag
=
3
;
//TTN for D2D (PC5S)
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
prose_addr_len
=
sizeof
(
prose_pdcp_addr
);
// receive a message from ProSe App
memset
(
receive_buf
,
0
,
BUFSIZE
);
...
...
@@ -368,11 +363,9 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
RLC_SDU_CONFIRM_NO
,
pc5s_header
->
data_size
,
(
unsigned
char
*
)
receive_buf
,
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
&
pc5s_header
->
sourceL2Id
,
&
pc5s_header
->
destinationL2Id
#endif
PDCP_TRANSMISSION_MODE_DATA
,
&
pc5s_header
->
sourceL2Id
,
&
pc5s_header
->
destinationL2Id
);
}
else
{
MSC_LOG_RX_DISCARDED_MESSAGE
(
...
...
@@ -425,11 +418,9 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
RLC_SDU_CONFIRM_NO
,
pc5s_header
->
data_size
,
(
unsigned
char
*
)
receive_buf
,
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
&
pc5s_header
->
sourceL2Id
,
&
pc5s_header
->
destinationL2Id
#endif
PDCP_TRANSMISSION_MODE_DATA
,
&
pc5s_header
->
sourceL2Id
,
&
pc5s_header
->
destinationL2Id
);
}
}
...
...
@@ -439,12 +430,11 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
}
}
#endif
while
((
len
>
0
)
&&
(
rlc_data_req_flag
!=
0
))
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_FIFO_READ
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_FIFO_READ_BUFFER
,
1
);
len
=
recvmsg
(
nas_sock_fd
,
&
nas_msg_rx
,
0
);
len
=
recvmsg
(
nas_sock_fd
[
0
]
,
&
nas_msg_rx
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_FIFO_READ_BUFFER
,
0
);
if
(
len
<=
0
)
{
...
...
@@ -570,9 +560,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
pdcp_read_header_g
.
data_size
,
(
unsigned
char
*
)
NLMSG_DATA
(
nas_nlh_rx
),
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
NULL
,
NULL
#endif
);
}
else
{
LOG_D
(
PDCP
,
"[FRAME %5u][eNB][IP][INSTANCE %u][RB %u][--- PDCP_DATA_REQ / %d Bytes ---X][PDCP][MOD %u][UE %u][RB %u] NON INSTANCIATED INSTANCE, DROPPED
\n
"
,
...
...
@@ -607,9 +595,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
pdcp_read_header_g
.
data_size
,
(
unsigned
char
*
)
NLMSG_DATA
(
nas_nlh_rx
),
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
NULL
,
NULL
#endif
);
}
}
...
...
@@ -672,11 +658,9 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
RLC_SDU_CONFIRM_NO
,
pdcp_read_header_g
.
data_size
,
(
unsigned
char
*
)
NLMSG_DATA
(
nas_nlh_rx
),
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
NULL
,
NULL
#endif
PDCP_TRANSMISSION_MODE_DATA
,
NULL
,
NULL
);
}
else
{
pdcp_data_req
(
...
...
@@ -687,11 +671,9 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
RLC_SDU_CONFIRM_NO
,
pdcp_read_header_g
.
data_size
,
(
unsigned
char
*
)
NLMSG_DATA
(
nas_nlh_rx
),
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
&
pdcp_read_header_g
.
sourceL2Id
,
&
pdcp_read_header_g
.
destinationL2Id
#endif
PDCP_TRANSMISSION_MODE_DATA
,
&
pdcp_read_header_g
.
sourceL2Id
,
&
pdcp_read_header_g
.
destinationL2Id
);
}
}
else
{
...
...
@@ -747,11 +729,9 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
RLC_SDU_CONFIRM_NO
,
pdcp_read_header_g
.
data_size
,
(
unsigned
char
*
)
NLMSG_DATA
(
nas_nlh_rx
),
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
NULL
,
NULL
#endif
PDCP_TRANSMISSION_MODE_DATA
,
NULL
,
NULL
);
}
else
{
pdcp_data_req
(
...
...
@@ -762,11 +742,9 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t *const ctxt_pP) {
RLC_SDU_CONFIRM_NO
,
pdcp_read_header_g
.
data_size
,
(
unsigned
char
*
)
NLMSG_DATA
(
nas_nlh_rx
),
PDCP_TRANSMISSION_MODE_DATA
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,
&
pdcp_read_header_g
.
sourceL2Id
,
&
pdcp_read_header_g
.
destinationL2Id
#endif
PDCP_TRANSMISSION_MODE_DATA
,
&
pdcp_read_header_g
.
sourceL2Id
,
&
pdcp_read_header_g
.
destinationL2Id
);
}
}
...
...
@@ -808,7 +786,6 @@ void pdcp_fifo_read_input_sdus_from_otg (const protocol_ctxt_t *const ctxt_pP)
}
//TTN for D2D (PC5S)
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
void
pdcp_pc5_socket_init
()
{
...
...
@@ -841,4 +818,3 @@ pdcp_pc5_socket_init() {
}
}
#endif
openair2/LAYER2/RLC/rlc.c
View file @
cdd06928
...
...
@@ -640,8 +640,6 @@ rlc_module_init (void) {
}
for
(
module_id1
=
0
;
module_id1
<
MAX_MOBILES_PER_ENB
;
module_id1
++
)
{
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
for
(
k
=
0
;
k
<
RLC_MAX_MBMS_LC
;
k
++
)
{
rlc_mbms_lcid2service_session_id_ue
[
module_id1
][
k
].
service_id
=
0
;
rlc_mbms_lcid2service_session_id_ue
[
module_id1
][
k
].
session_id
=
0
;
...
...
@@ -650,23 +648,15 @@ rlc_module_init (void) {
for
(
k
=
0
;
k
<
NB_RB_MBMS_MAX
;
k
++
)
{
rlc_mbms_rbid2lcid_ue
[
module_id1
][
k
]
=
RLC_LC_UNALLOCATED
;
}
#endif
}
for
(
module_id1
=
0
;
module_id1
<
NUMBER_OF_eNB_MAX
;
module_id1
++
)
{
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
for
(
k
=
0
;
k
<
RLC_MAX_MBMS_LC
;
k
++
)
{
rlc_mbms_lcid2service_session_id_eNB
[
module_id1
][
k
].
service_id
=
0
;
rlc_mbms_lcid2service_session_id_eNB
[
module_id1
][
k
].
session_id
=
0
;
}
for
(
k
=
0
;
k
<
NB_RB_MBMS_MAX
;
k
++
)
{
rlc_mbms_rbid2lcid_eNB
[
module_id1
][
k
]
=
RLC_LC_UNALLOCATED
;
}
for
(
k
=
0
;
k
<
RLC_MAX_MBMS_LC
;
k
++
)
{
rlc_mbms_lcid2service_session_id_eNB
[
0
][
k
].
service_id
=
0
;
rlc_mbms_lcid2service_session_id_eNB
[
0
][
k
].
session_id
=
0
;
}
#endif
for
(
k
=
0
;
k
<
NB_RB_MBMS_MAX
;
k
++
)
{
rlc_mbms_rbid2lcid_eNB
[
0
][
k
]
=
RLC_LC_UNALLOCATED
;
}
pool_buffer_init
();
...
...
openair3/NAS/UE/ESM/esm_ebr_context.c
View file @
cdd06928
...
...
@@ -282,37 +282,43 @@ int esm_ebr_context_create(
#ifdef UESIM_EXPANSION
uint16_t
inst_nic
=
(
pdn
->
ip_addr
[
3
]
&
0x000000FF
)
-
2
;
res
=
sprintf
(
command_line
,
"ifconfig
oip
%d %s netmask %s broadcast %s up && "
"ifconfig
%s
%d %s netmask %s broadcast %s up && "
"ip rule add from %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 %s%d table %d"
,
UE_NAS_USE_TUN
?
"oaitun_ue"
:
"oip"
,
inst_nic
+
1
,
ipv4_addr
,
netmask
,
broadcast
,
ipv4_addr
,
201
,
ipv4_addr
,
201
,
UE_NAS_USE_TUN
?
"oaitun_ue"
:
"oip"
,
inst_nic
+
1
,
201
);
inst_pdcp_list
[
inst_nic
]
=
ueid
;
#else
res
=
sprintf
(
command_line
,
"ifconfig
oip
%d %s netmask %s broadcast %s up && "
"ifconfig
%s
%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"
,
"ip route add default dev %s%d table %d"
,
UE_NAS_USE_TUN
?
"oaitun_ue"
:
"oip"
,
ueid
+
1
,
ipv4_addr
,
netmask
,
broadcast
,
ipv4_addr
,
ueid
+
201
,
ipv4_addr
,
ueid
+
201
,
UE_NAS_USE_TUN
?
"oaitun_ue"
:
"oip"
,
ueid
+
1
,
ueid
+
201
);
#endif
}
// PDCP_USE_NETLINK
}
else
{
res
=
sprintf
(
command_line
,
"ifconfig
oip
%d %s netmask %s broadcast %s up && "
"ifconfig
%s
%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"
,
"ip route add default dev %s%d table %d"
,
UE_NAS_USE_TUN
?
"oaitun_ue"
:
"oip"
,
ueid
+
1
,
ipv4_addr
,
netmask
,
broadcast
,
ipv4_addr
,
ueid
+
201
,
ipv4_addr
,
ueid
+
201
,
UE_NAS_USE_TUN
?
"oaitun_ue"
:
"oip"
,
ueid
+
1
,
ueid
+
201
);
}
if
(
res
<
0
)
{
...
...
targets/RT/USER/lte-uesoftmodem.c
View file @
cdd06928
...
...
@@ -772,7 +772,7 @@ int main( int argc, char **argv ) {
init_opt
();
uint32_t
pdcp_initmask
=
((
!
IS_SOFTMODEM_NOS1
)
||
IS_SOFTMODEM_NOKRNMOD
)
?
LINK_ENB_PDCP_TO_GTPV1U_BIT
:
(
LINK_ENB_PDCP_TO_GTPV1U_BIT
|
PDCP_USE_NETLINK_BIT
|
LINK_ENB_PDCP_TO_IP_DRIVER_BIT
);
if
(
IS_SOFTMODEM_BASICSIM
)
{
if
(
IS_SOFTMODEM_BASICSIM
||
(
nfapi_mode
==
3
)
)
{
pdcp_initmask
=
pdcp_initmask
|
UE_NAS_USE_TUN_BIT
;
}
...
...
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