From 27c8ce5c4cd6ef751eb4c0914805aef74ce50f68 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Sat, 4 Dec 2010 08:45:28 +0100 Subject: [PATCH] Increase txqueue length (qdisc) to avoid ENOBUFS errors --- gw-tests/lib.sh | 2 ++ latester/latester.c | 38 +++++++++++++++++++------------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/gw-tests/lib.sh b/gw-tests/lib.sh index 2312d43..f384587 100644 --- a/gw-tests/lib.sh +++ b/gw-tests/lib.sh @@ -114,6 +114,8 @@ _run() { sshgw 'chrt -p -f 50 `pidof irq/146-can1` > /dev/null || :' sshgw 'chrt -p -f 49 `pidof sirq-net-rx/0` > /dev/null || :' sshgw 'chrt -p -f 49 `pidof sirq-net-tx/0` > /dev/null || :' + # Set the length of qdisc queue to avoid ENOBUFS errors + ifconfig can0 txqueuelen 200 cleanupgw main diff --git a/latester/latester.c b/latester/latester.c index ab8f39d..a72558a 100644 --- a/latester/latester.c +++ b/latester/latester.c @@ -387,6 +387,22 @@ int send_frame(int socket) return ret; } +static inline send_and_check(int s) +{ + int ret; + ret = send_frame(s); + if (ret != sizeof(struct can_frame)) { +/* if (ret == -1 && errno == ENOBUFS && opt.period_us == 0 && !opt.oneattime) { */ +/* stats.enobufs++; */ +/* /\* Ignore this error - pfifo_fast qeuue is full *\/ */ +/* } else */ + error(1, errno, "send_frame (line %d)", __LINE__); + } else { + count++; + msg_in_progress++; + } +} + static inline void get_next_timeout(struct timespec *timeout) { struct timespec now; @@ -542,26 +558,10 @@ void *measure_thread(void *arg) set_sched_policy_and_prio(SCHED_FIFO, 40); -#define SEND() \ - do { \ - ret = send_frame(pfd[0].fd); \ - if (ret != sizeof(struct can_frame)) { \ - if (ret == -1 && errno == ENOBUFS && opt.period_us == 0 && !opt.oneattime) { \ - stats.enobufs++; \ - /* Ignore this error - pfifo_fast qeuue is full */ \ - } else \ - error(1, errno, "send_frame (line %d)", __LINE__); \ - } \ - else { \ - count++; \ - msg_in_progress++; \ - } \ - } while (0) - - if (opt.oneattime) { +#define SEND() send_and_check(pfd[0].fd) + + if (opt.oneattime) SEND(); - count = 1; - } while (!finish_flag && (opt.count == 0 || count < opt.count || msg_in_progress != 0)) { -- 2.39.2