flow: Add a couple of missing build assertions on FLOW_WC_SEQ.
[openvswitch] / lib / netdev-linux.c
index 9ff286ee4fe75b0031c2f24dae02a66622dbb0f9..49475360db0344bf834bd6847c9006a3280b7855 100644 (file)
@@ -802,9 +802,9 @@ netdev_linux_recv(struct netdev *netdev_, void *data, size_t size)
     }
 
     for (;;) {
-        ssize_t retval = read(netdev->fd, data, size);
+        ssize_t retval = recv(netdev->fd, data, size, MSG_TRUNC);
         if (retval >= 0) {
-            return retval;
+            return retval <= size ? retval : -EMSGSIZE;
         } else if (errno != EINTR) {
             if (errno != EAGAIN) {
                 VLOG_WARN_RL(&rl, "error receiving Ethernet packet on %s: %s",
@@ -1030,6 +1030,10 @@ netdev_linux_set_mtu(const struct netdev *netdev_, int mtu)
     struct ifreq ifr;
     int error;
 
+    if (netdev_dev->cache_valid & VALID_MTU &&
+        netdev_dev->mtu == mtu) {
+        return 0;
+    }
     ifr.ifr_mtu = mtu;
     error = netdev_linux_do_ioctl(netdev_get_name(netdev_), &ifr,
                                   SIOCSIFMTU, "SIOCSIFMTU");