Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
White Rabbit Switch - Testing
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Projects
White Rabbit Switch - Testing
Commits
400b86fe
Commit
400b86fe
authored
Aug 14, 2013
by
Grzegorz Daniluk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
networkTool: receiving function didn't have proper buffer for received frames
parent
39e8f379
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
24 deletions
+26
-24
networkTool.c
sw/networkTool/networkTool.c
+26
-24
No files found.
sw/networkTool/networkTool.c
View file @
400b86fe
...
...
@@ -121,7 +121,8 @@ int rx_seq_from(my_socket *sock, wr_sockaddr_t *from, int *data, size_t data_len
RunTimeOpts
*
rtOpts
,
long
*
acc_latency
,
long
*
acc_interval
,
timeval_t
*
last_rx
)
{
struct
my_socket
*
s
=
(
struct
my_socket
*
)
sock
;
struct
bench_pkt
pkt
;
struct
bench_pkt
*
pkt
;
char
buf
[
PACKET_SIZE
];
struct
msghdr
msg
;
struct
iovec
entry
;
struct
sockaddr_ll
from_addr
;
...
...
@@ -135,61 +136,62 @@ int rx_seq_from(my_socket *sock, wr_sockaddr_t *from, int *data, size_t data_len
memset
(
&
msg
,
0
,
sizeof
(
msg
));
msg
.
msg_iov
=
&
entry
;
msg
.
msg_iovlen
=
1
;
entry
.
iov_base
=
&
pkt
;
entry
.
iov_len
=
len
;
entry
.
iov_base
=
&
buf
;
entry
.
iov_len
=
PACKET_SIZE
;
msg
.
msg_name
=
(
caddr_t
)
&
from_addr
;
msg
.
msg_namelen
=
sizeof
(
from_addr
);
msg
.
msg_control
=
&
control
;
msg
.
msg_controllen
=
sizeof
(
control
);
int
ret
=
recvmsg
(
s
->
fd
,
&
msg
,
MSG_DONTWAIT
);
gettimeofday
(
&
pkt
.
rx
,
NULL
);
if
(
!
pkt
.
size2
)
pkt
.
size2
=
ret
;
pkt
=
(
struct
bench_pkt
*
)
buf
;
gettimeofday
(
&
pkt
->
rx
,
NULL
);
if
(
!
pkt
->
size2
)
pkt
->
size2
=
ret
;
if
(
ret
<
0
&&
errno
==
EAGAIN
)
return
0
;
// would be blocking
if
(
ret
==
-
EAGAIN
)
return
0
;
if
(
ret
<=
0
)
return
ret
;
if
((
pkt
.
rx
.
tv_usec
-
pkt
.
tx
.
tv_usec
)
<
0
)
if
((
pkt
->
rx
.
tv_usec
-
pkt
->
tx
.
tv_usec
)
<
0
)
{
pkt
.
xx
.
tv_usec
=
1000
*
1000
+
pkt
.
rx
.
tv_usec
-
pkt
.
tx
.
tv_usec
;
pkt
.
xx
.
tv_sec
=
pkt
.
rx
.
tv_sec
-
pkt
.
tx
.
tv_sec
-
1
;
pkt
->
xx
.
tv_usec
=
1000
*
1000
+
pkt
->
rx
.
tv_usec
-
pkt
->
tx
.
tv_usec
;
pkt
->
xx
.
tv_sec
=
pkt
->
rx
.
tv_sec
-
pkt
->
tx
.
tv_sec
-
1
;
}
else
{
pkt
.
xx
.
tv_usec
=
pkt
.
rx
.
tv_usec
-
pkt
.
tx
.
tv_usec
;
pkt
.
xx
.
tv_sec
=
pkt
.
rx
.
tv_sec
-
pkt
.
tx
.
tv_sec
;
pkt
->
xx
.
tv_usec
=
pkt
->
rx
.
tv_usec
-
pkt
->
tx
.
tv_usec
;
pkt
->
xx
.
tv_sec
=
pkt
->
rx
.
tv_sec
-
pkt
->
tx
.
tv_sec
;
}
(
*
acc_latency
)
=
(
*
acc_latency
)
+
(
long
)
pkt
.
xx
.
tv_usec
;
(
*
acc_latency
)
=
(
*
acc_latency
)
+
(
long
)
pkt
->
xx
.
tv_usec
;
if
(
last_rx
->
tv_sec
==
0
&&
last_rx
->
tv_usec
==
0
)
//first
{
// first time, do nothing
}
else
if
((
pkt
.
rx
.
tv_usec
-
last_rx
->
tv_usec
)
<
0
)
else
if
((
pkt
->
rx
.
tv_usec
-
last_rx
->
tv_usec
)
<
0
)
{
*
acc_interval
=
*
acc_interval
+
(
long
)(
1000
*
1000
+
pkt
.
rx
.
tv_usec
-
last_rx
->
tv_usec
)
+
1000
*
1000
*
(
long
)(
pkt
.
rx
.
tv_sec
-
last_rx
->
tv_sec
-
1
);
*
acc_interval
=
*
acc_interval
+
(
long
)(
1000
*
1000
+
pkt
->
rx
.
tv_usec
-
last_rx
->
tv_usec
)
+
1000
*
1000
*
(
long
)(
pkt
->
rx
.
tv_sec
-
last_rx
->
tv_sec
-
1
);
}
else
{
*
acc_interval
=
*
acc_interval
+
(
long
)(
pkt
.
rx
.
tv_usec
-
last_rx
->
tv_usec
)
+
1000
*
1000
*
(
long
)(
pkt
.
rx
.
tv_sec
-
last_rx
->
tv_sec
);
*
acc_interval
=
*
acc_interval
+
(
long
)(
pkt
->
rx
.
tv_usec
-
last_rx
->
tv_usec
)
+
1000
*
1000
*
(
long
)(
pkt
->
rx
.
tv_sec
-
last_rx
->
tv_sec
);
}
last_rx
->
tv_usec
=
pkt
.
rx
.
tv_usec
;
last_rx
->
tv_sec
=
pkt
.
rx
.
tv_sec
;
last_rx
->
tv_usec
=
pkt
->
rx
.
tv_usec
;
last_rx
->
tv_sec
=
pkt
->
rx
.
tv_sec
;
if
(
rtOpts
->
show_rxtx_data
==
DEBUG_DETAIL
)
printf
(
"n %4i transmision time: %9li.%06li [s] tx_size: %i rx_size: %i
\n
"
,
pkt
.
seq
,
pkt
.
xx
.
tv_sec
,
pkt
.
xx
.
tv_usec
,
pkt
.
size
,
pkt
.
size2
);
pkt
->
seq
,
pkt
->
xx
.
tv_sec
,
pkt
->
xx
.
tv_usec
,
pkt
->
size
,
pkt
->
size2
);
*
data
=
(
int
)
pkt
.
seq
;
*
data
=
(
int
)
pkt
->
seq
;
return
(
ret
);
}
...
...
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