Browse Source

Merge commit '5e3474b' into update_avalon_20130524

Luke Dashjr 12 years ago
parent
commit
d23c17d4f8
1 changed files with 10 additions and 2 deletions
  1. 10 2
      driver-avalon.c

+ 10 - 2
driver-avalon.c

@@ -210,9 +210,17 @@ static inline int avalon_gets(int fd, uint8_t *buf, struct thr_info *thr,
 	ssize_t ret = 0;
 
 	while (true) {
-		struct timeval timeout = {0, 100000};
+		struct timeval timeout;
 		fd_set rd;
 
+		timeout.tv_sec = 0;
+		/* If we get a restart message, still check if there's
+		 * anything in the buffer waiting to be parsed */
+		if (unlikely(thr->work_restart))
+			timeout.tv_usec = 0;
+		else
+			timeout.tv_usec = 100000;
+
 		FD_ZERO(&rd);
 		FD_SET(fd, &rd);
 		ret = select(fd + 1, &rd, NULL, NULL, &timeout);
@@ -233,7 +241,7 @@ static inline int avalon_gets(int fd, uint8_t *buf, struct thr_info *thr,
 			continue;
 		}
 
-		if (thr->work_restart) {
+		if (unlikely(thr->work_restart)) {
 			applog(LOG_DEBUG, "Avalon: Work restart");
 			return AVA_GETS_RESTART;
 		}