]> rtime.felk.cvut.cz Git - can-benchmark.git/blobdiff - latester/latester.c
Increase txqueue length (qdisc) to avoid ENOBUFS errors
[can-benchmark.git] / latester / latester.c
index ab8f39d401d23a96c192a4bb5e20163dfb88beba..a72558a06b5fe8de6c0a1422bd7f6538486c0e21 100644 (file)
@@ -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)) {