datapath: omit _mod from module names
[sliver-openvswitch.git] / lib / netdev-linux.c
index 939221b..7c2b901 100644 (file)
@@ -797,7 +797,11 @@ netdev_linux_recv(struct netdev *netdev_, void *data, size_t size)
     }
 
     for (;;) {
-        ssize_t retval = recv(netdev->fd, data, size, MSG_TRUNC);
+        ssize_t retval;
+
+        retval = (netdev_->netdev_dev->netdev_class == &netdev_tap_class
+                  ? read(netdev->fd, data, size)
+                  : recv(netdev->fd, data, size, MSG_TRUNC));
         if (retval >= 0) {
             return retval <= size ? retval : -EMSGSIZE;
         } else if (errno != EINTR) {
@@ -1498,7 +1502,7 @@ netdev_linux_get_features(const struct netdev *netdev,
     }
 
     /* Current settings. */
-    speed = (ecmd.speed_hi << 16) | ecmd.speed;
+    speed = ecmd.speed;
     if (speed == SPEED_10) {
         *current = ecmd.duplex ? NETDEV_F_10MB_FD : NETDEV_F_10MB_HD;
     } else if (speed == SPEED_100) {