Lines Matching +full:recv +full:- +full:empty
1 // SPDX-License-Identifier: GPL-2.0
8 * mode using the '-r' option. Receiver will compare arrival timestamps to
10 * queue. The streams can differ due to out-of-order delivery and drops.
82 iov.iov_base = &ts->data; in do_send_one()
90 if (ts->delay_us >= 0) { in do_send_one()
95 tdeliver = glob_tstart + ts->delay_us * 1000; in do_send_one()
100 cm->cmsg_level = SOL_SOCKET; in do_send_one()
101 cm->cmsg_type = SCM_TXTIME; in do_send_one()
102 cm->cmsg_len = CMSG_LEN(sizeof(tdeliver)); in do_send_one()
107 if (ret == -1) in do_send_one()
120 ret = recv(fdr, rbuf, sizeof(rbuf), 0); in do_recv_one()
121 if (ret == -1 && errno == EAGAIN) in do_recv_one()
122 error(1, EAGAIN, "recv: timeout"); in do_recv_one()
123 if (ret == -1) in do_recv_one()
128 tstop = (gettime_ns(cfg_clockid) - glob_tstart) / 1000; in do_recv_one()
129 texpect = ts->delay_us >= 0 ? ts->delay_us : 0; in do_recv_one()
134 if (rbuf[0] != ts->data) in do_recv_one()
135 error(1, 0, "payload mismatch. expected %c", ts->data); in do_recv_one()
137 if (llabs(tstop - texpect) > cfg_variance_us) in do_recv_one()
146 ret = recv(fdr, rbuf, sizeof(rbuf), 0); in do_recv_verify_empty()
147 if (ret != -1 || errno != EAGAIN) in do_recv_verify_empty()
148 error(1, 0, "recv: not empty as expected (%d, %d)", ret, errno); in do_recv_verify_empty()
177 if (ret == -1 && errno == EAGAIN) in do_recv_errqueue_timeout()
179 if (ret == -1) in do_recv_errqueue_timeout()
185 if (cm->cmsg_level != cfg_errq_level || in do_recv_errqueue_timeout()
186 cm->cmsg_type != cfg_errq_type) in do_recv_errqueue_timeout()
188 cm->cmsg_level, cm->cmsg_type); in do_recv_errqueue_timeout()
191 if (err->ee_origin != SO_EE_ORIGIN_TXTIME) in do_recv_errqueue_timeout()
192 error(1, 0, "errqueue: origin 0x%x\n", err->ee_origin); in do_recv_errqueue_timeout()
194 switch (err->ee_errno) { in do_recv_errqueue_timeout()
196 if (err->ee_code != SO_EE_CODE_TXTIME_MISSED) in do_recv_errqueue_timeout()
198 err->ee_code); in do_recv_errqueue_timeout()
202 if (err->ee_code != SO_EE_CODE_TXTIME_INVALID_PARAM) in do_recv_errqueue_timeout()
204 err->ee_code); in do_recv_errqueue_timeout()
209 err->ee_errno, err->ee_code); in do_recv_errqueue_timeout()
212 tstamp = ((int64_t) err->ee_data) << 32 | err->ee_info; in do_recv_errqueue_timeout()
213 tstamp -= (int64_t) glob_tstart; in do_recv_errqueue_timeout()
216 data[ret - 1], tstamp, reason); in do_recv_errqueue_timeout()
234 if (ret == -1) in recv_errqueue_msgs()
258 err = usleep((cfg_start_time_ns - now) / 1000); in start_time_wait()
288 fd = socket(addr->sa_family, SOCK_DGRAM, 0); in setup_tx()
289 if (fd == -1) in setup_tx()
309 fd = socket(addr->sa_family, SOCK_DGRAM, 0); in setup_rx()
310 if (fd == -1) in setup_rx()
327 addr->sa_family == PF_INET ? '4' : '6', in do_test_tx()
371 addr4->sin_family = AF_INET; in setup_sockaddr()
372 addr4->sin_port = htons(cfg_port); in setup_sockaddr()
374 inet_pton(AF_INET, str_addr, &(addr4->sin_addr)) != 1) in setup_sockaddr()
379 addr6->sin6_family = AF_INET6; in setup_sockaddr()
380 addr6->sin6_port = htons(cfg_port); in setup_sockaddr()
382 inet_pton(AF_INET6, str_addr, &(addr6->sin6_addr)) != 1) in setup_sockaddr()
398 arg = NULL; /* only pass non-zero on first call */ in parse_io()
404 array->delay_us = strtol(tok, NULL, 0) * 1000; in parse_io()
407 array->data = tok[0]; in parse_io()
422 " -4 only IPv4\n" in usage()
423 " -6 only IPv6\n" in usage()
424 " -c <clock> monotonic or tai (default)\n" in usage()
425 " -D <addr> destination IP address (server)\n" in usage()
426 " -S <addr> source IP address (client)\n" in usage()
427 " -r run rx mode\n" in usage()
428 " -t <nsec> start time (UTC nanoseconds)\n" in usage()
429 " -m <mark> socket mark\n" in usage()
441 while ((c = getopt(argc, argv, "46c:S:D:rt:m:")) != -1) { in parse_opts()
445 error(1, 0, "Pass one of -4 or -6"); in parse_opts()
453 error(1, 0, "Pass one of -4 or -6"); in parse_opts()
488 if (argc - optind != 1) in parse_opts()
492 error(1, 0, "Pass one of -4 or -6"); in parse_opts()
494 error(1, 0, "-D <server addr> required\n"); in parse_opts()
496 error(1, 0, "-S <client addr> required\n"); in parse_opts()