Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
trx-ecpri
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
nexedi
trx-ecpri
Commits
6a76a666
Commit
6a76a666
authored
Jan 27, 2025
by
Joanne Hugé
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wip
parent
a4ea2cdd
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
11 deletions
+18
-11
trx_ecpri.c
trx_ecpri.c
+18
-11
No files found.
trx_ecpri.c
View file @
6a76a666
...
@@ -369,8 +369,10 @@ static void *recv_thread(void *p) {
...
@@ -369,8 +369,10 @@ static void *recv_thread(void *p) {
#endif
#endif
cpu_set_t
mask
;
cpu_set_t
mask
;
uint8_t
*
data
;
int
stop
=
0
;
int
stop
=
0
;
struct
mmsghdr
msgh
[
MAX_RX_BURST
];
struct
iovec
msgv
[
MAX_RX_BURST
];
uint8_t
*
data
;
TRXEcpriState
*
s
=
(
TRXEcpriState
*
)
p
;
TRXEcpriState
*
s
=
(
TRXEcpriState
*
)
p
;
log_info
(
"RECV_THREAD"
,
"Thread init"
);
log_info
(
"RECV_THREAD"
,
"Thread init"
);
...
@@ -383,9 +385,6 @@ static void *recv_thread(void *p) {
...
@@ -383,9 +385,6 @@ static void *recv_thread(void *p) {
for
(
int64_t
i
=
0
;;
i
++
)
{
for
(
int64_t
i
=
0
;;
i
++
)
{
struct
mmsghdr
msgh
[
MAX_RX_BURST
];
struct
iovec
msgv
[
MAX_RX_BURST
];
memset
(
msgv
,
0
,
sizeof
(
msgv
));
memset
(
msgv
,
0
,
sizeof
(
msgv
));
memset
(
msgh
,
0
,
sizeof
(
msgh
));
memset
(
msgh
,
0
,
sizeof
(
msgh
));
...
@@ -395,21 +394,28 @@ static void *recv_thread(void *p) {
...
@@ -395,21 +394,28 @@ static void *recv_thread(void *p) {
msgh
[
j
].
msg_hdr
.
msg_iov
=
&
msgv
[
j
];
msgh
[
j
].
msg_hdr
.
msg_iov
=
&
msgv
[
j
];
msgh
[
j
].
msg_hdr
.
msg_iovlen
=
1
;
msgh
[
j
].
msg_hdr
.
msg_iovlen
=
1
;
}
}
int
ret
=
recvmmsg
(
recv_sockfd
,
msgh
,
s
->
rx_burst
,
0
,
NULL
);
int
ret
=
recvmmsg
(
recv_sockfd
,
msgh
,
s
->
rx_burst
,
0
,
NULL
);
if
(
ret
<=
-
1
)
if
(
ret
<=
-
1
)
error
(
EXIT_FAILURE
,
errno
,
"recvmmsg error"
);
error
(
EXIT_FAILURE
,
errno
,
"recvmmsg error"
);
for
(
int
j
=
0
;
j
<
ret
;
j
++
)
{
for
(
int
j
=
0
;
j
<
ret
;
j
++
)
{
data
=
rx_buf
+
j
*
PACKET_SIZE
;
data
=
rx_buf
+
j
*
PACKET_SIZE
;
if
(
((
uint16_t
*
)
data
)[
6
]
!=
0xaefe
)
if
(
((
uint16_t
*
)
data
)[
6
]
!=
0xfeae
)
{
continue
;
stop
=
1
;
else
if
((
msgh
+
j
)
->
msg_len
!=
PACKET_SIZE
)
log_info
(
"DECODE_THREAD"
,
"%d != %d
\n
"
,
((
uint16_t
*
)
data
)[
6
],
0xaefe
);
continue
;
break
;
}
else
if
((
msgh
+
j
)
->
msg_len
!=
PACKET_SIZE
)
{
stop
=
1
;
log_info
(
"DECODE_THREAD"
,
"Packet doesn't have correct size (%d != %d)"
,
(
msgh
+
j
)
->
msg_len
,
PACKET_SIZE
);
break
;
}
int
offset
=
ETHERNET_HEADER
+
ECPRI_COMMON_HEADER
;
int
offset
=
ETHERNET_HEADER
+
ECPRI_COMMON_HEADER
;
uint16_t
antenna_id
=
ntohs
(
*
((
uint16_t
*
)
(
data
+
offset
+
0
)));
uint16_t
antenna_id
=
ntohs
(
*
((
uint16_t
*
)
(
data
+
offset
+
0
)));
uint8_t
_seq_id
=
((
uint8_t
)
(
*
((
uint16_t
*
)
(
data
+
offset
+
2
))
>>
8
))
;
uint8_t
_seq_id
=
data
[
offset
+
2
]
;
if
(
(((
int
)
prev_seq_id
)
-
((
int
)
_seq_id
)
+
256
)
%
256
!=
1
)
{
if
(
(((
(
int
)
_seq_id
)
+
256
)
-
((
int
)
prev_seq_id
)
)
%
256
!=
1
)
{
stop
=
1
;
stop
=
1
;
log_info
(
"DECODE_THREAD"
,
"seq_ids are not sequential (%d, %d)"
,
prev_seq_id
,
_seq_id
);
log_info
(
"DECODE_THREAD"
,
"seq_ids are not sequential (%d, %d)"
,
prev_seq_id
,
_seq_id
);
break
;
break
;
...
@@ -492,7 +498,8 @@ static void *send_thread(void *p) {
...
@@ -492,7 +498,8 @@ static void *send_thread(void *p) {
// PC_ID
// PC_ID
*
((
uint16_t
*
)
(
data
+
j
+
0
))
=
htons
(
antenna_id
);
*
((
uint16_t
*
)
(
data
+
j
+
0
))
=
htons
(
antenna_id
);
// SEQ_ID
// SEQ_ID
*
((
uint16_t
*
)
(
data
+
j
+
2
))
=
htons
(
(((
uint16_t
)
seq_id
++
)
<<
8
)
+
0x80
);
data
[
j
+
2
]
=
seq_id
++
;
data
[
j
+
3
]
=
0x80
;
j
=
ETHERNET_HEADER
+
ECPRI_IQ_HEADER
;
j
=
ETHERNET_HEADER
+
ECPRI_IQ_HEADER
;
// ORAN counters
// ORAN counters
data
[
j
+
1
]
=
frame_id
;
data
[
j
+
1
]
=
frame_id
;
...
...
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