netdev_linux_receive was returning positive error codes while the
interface specifies that it should be returning negative errors.
This difference causes a huge increase in (non-existant) packet
processing with the userspace datapath.
if (netdev->tap_fd < 0) {
/* Device was opened with NETDEV_ETH_TYPE_NONE. */
- return EAGAIN;
+ return -EAGAIN;
}
for (;;) {
VLOG_WARN_RL(&rl, "error receiving Ethernet packet on %s: %s",
strerror(errno), netdev_get_name(netdev_));
}
- return errno;
+ return -errno;
}
}
}