Author: vmaffione
Date: Mon Aug 19 17:23:22 2019
New Revision: 351220
URL: https://svnweb.freebsd.org/changeset/base/351220

Log:
  if_tuntap: minor improvements
  
  Rewrite a loop to avoid duplicating the exit condition.
  Simplify mask processing in tunpoll().
  Fix minor typos.
  
  Reviewed by:  kevans, markj
  MFC after:    2 weeks
  Differential Revision:        https://reviews.freebsd.org/D21302

Modified:
  head/sys/net/if_tuntap.c

Modified: head/sys/net/if_tuntap.c
==============================================================================
--- head/sys/net/if_tuntap.c    Mon Aug 19 16:29:51 2019        (r351219)
+++ head/sys/net/if_tuntap.c    Mon Aug 19 17:23:22 2019        (r351220)
@@ -110,7 +110,6 @@ struct tuntap_softc {
        u_short                          tun_flags;     /* misc flags */
 #define        TUN_OPEN        0x0001
 #define        TUN_INITED      0x0002
-#define        TUN_RCOLL       0x0004
 #define        TUN_IASET       0x0008
 #define        TUN_DSTADDR     0x0010
 #define        TUN_LMODE       0x0020
@@ -168,9 +167,9 @@ SX_SYSINIT(tun_ioctl_sx, &tun_ioctl_sx, "tun_ioctl");
 SYSCTL_DECL(_net_link);
 /* tun */
 static SYSCTL_NODE(_net_link, OID_AUTO, tun, CTLFLAG_RW, 0,
-    "IP tunnel software network interface.");
+    "IP tunnel software network interface");
 SYSCTL_INT(_net_link_tun, OID_AUTO, devfs_cloning, CTLFLAG_RWTUN, &tundclone, 
0,
-    "Enable legacy devfs interface creation.");
+    "Enable legacy devfs interface creation");
 
 /* tap */
 static SYSCTL_NODE(_net_link, OID_AUTO, tap, CTLFLAG_RW, 0,
@@ -442,7 +441,7 @@ tun_clone_create(struct if_clone *ifc, char *name, siz
                return (ENXIO);
 
        if (unit != -1) {
-               /* If this unit number is still available that/s okay. */
+               /* If this unit number is still available that's okay. */
                if (alloc_unr_specific(drv->unrhdr, unit) == -1)
                        return (EEXIST);
        } else {
@@ -1435,22 +1434,22 @@ tunread(struct cdev *dev, struct uio *uio, int flag)
 
        tp->tun_flags &= ~TUN_RWAIT;
 
-       do {
+       for (;;) {
                IFQ_DEQUEUE(&ifp->if_snd, m);
-               if (m == NULL) {
-                       if (flag & O_NONBLOCK) {
-                               TUN_UNLOCK(tp);
-                               return (EWOULDBLOCK);
-                       }
-                       tp->tun_flags |= TUN_RWAIT;
-                       error = mtx_sleep(tp, &tp->tun_mtx, PCATCH | (PZERO + 
1),
-                           "tunread", 0);
-                       if (error != 0) {
-                               TUN_UNLOCK(tp);
-                               return (error);
-                       }
+               if (m != NULL)
+                       break;
+               if (flag & O_NONBLOCK) {
+                       TUN_UNLOCK(tp);
+                       return (EWOULDBLOCK);
                }
-       } while (m == NULL);
+               tp->tun_flags |= TUN_RWAIT;
+               error = mtx_sleep(tp, &tp->tun_mtx, PCATCH | (PZERO + 1),
+                   "tunread", 0);
+               if (error != 0) {
+                       TUN_UNLOCK(tp);
+                       return (error);
+               }
+       }
        TUN_UNLOCK(tp);
 
        if ((tp->tun_flags & TUN_L2) != 0)
@@ -1629,8 +1628,7 @@ tunpoll(struct cdev *dev, int events, struct thread *t
                }
                IFQ_UNLOCK(&ifp->if_snd);
        }
-       if (events & (POLLOUT | POLLWRNORM))
-               revents |= events & (POLLOUT | POLLWRNORM);
+       revents |= events & (POLLOUT | POLLWRNORM);
 
        return (revents);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to