net: Add rx_mode to ether/netif
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 15 Nov 2017 18:08:53 +0000 (13:08 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Nov 2017 15:46:57 +0000 (10:46 -0500)
It's only used in a Linux driver.  It simplifies the driver a bit, and is
likely to help all other Linux drivers.  It's the way of the future!

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/net/ip.h
kern/src/net/netif.c

index d6bc171..c650ed1 100644 (file)
@@ -1088,6 +1088,9 @@ struct netif {
        int prom;                                       /* number of promiscuous opens */
        int scan;                                       /* number of base station scanners */
        int all;                                        /* number of -1 multiplexors */
+       /* Analogous to linux's IFF_PROMISC flags, currently used by linux drivers,
+        * pending a rewrite of ow promiscuous works */
+       int rx_mode;
 
        /* 9ns statistics */
        int misses;
index 3494269..a2a9446 100644 (file)
@@ -428,6 +428,7 @@ long netifwrite(struct ether *nif, struct chan *c, void *a, long n)
                if (f->prom == 0) {
                        /* Note that promisc has two meanings: put the NIC into promisc
                         * mode, and record our outbound traffic.  See etheroq(). */
+                       /* TODO: consider porting linux's interface for set_rx_mode. */
                        if (nif->prom == 0 && nif->promiscuous != NULL)
                                nif->promiscuous(nif->arg, 1);
                        f->prom = 1;