Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/sun3/dev Remove obsolete ancient optimization for bpf



details:   https://anonhg.NetBSD.org/src/rev/f30626d994a2
branches:  trunk
changeset: 349319:f30626d994a2
user:      ozaki-r <ozaki-r%NetBSD.org@localhost>
date:      Tue Dec 06 07:49:25 2016 +0000

description:
Remove obsolete ancient optimization for bpf

The optimization code was obsoleted over 15 years ago.
We can remove it safely.

diffstat:

 sys/arch/sun3/dev/if_ie.c |  84 +++-------------------------------------------
 1 files changed, 7 insertions(+), 77 deletions(-)

diffs (149 lines):

diff -r 1fe764b26d6f -r f30626d994a2 sys/arch/sun3/dev/if_ie.c
--- a/sys/arch/sun3/dev/if_ie.c Tue Dec 06 07:34:22 2016 +0000
+++ b/sys/arch/sun3/dev/if_ie.c Tue Dec 06 07:49:25 2016 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_ie.c,v 1.59 2016/07/07 06:55:39 msaitoh Exp $ */
+/*     $NetBSD: if_ie.c,v 1.60 2016/12/06 07:49:25 ozaki-r Exp $ */
 
 /*-
  * Copyright (c) 1993, 1994, 1995 Charles M. Hannum.
@@ -98,7 +98,7 @@
 */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ie.c,v 1.59 2016/07/07 06:55:39 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ie.c,v 1.60 2016/12/06 07:49:25 ozaki-r Exp $");
 
 #include "opt_inet.h"
 #include "opt_ns.h"
@@ -203,10 +203,9 @@
 
 static inline void ie_ack(struct ie_softc *, u_int);
 static inline u_short ether_cmp(u_char *, uint8_t *);
-static inline int check_eh(struct ie_softc *, struct ether_header *, int *);
 static inline int ie_buflen(struct ie_softc *, int);
 static inline int ie_packet_len(struct ie_softc *);
-static inline struct mbuf * ieget(struct ie_softc *, int *);
+static inline struct mbuf * ieget(struct ie_softc *);
 
 
 /*
@@ -666,32 +665,6 @@
 #define        ether_equal !ether_cmp
 
 /*
- * Check for a valid address.  to_bpf is filled in with one of the following:
- *   0 -> BPF doesn't get this packet
- *   1 -> BPF does get this packet
- *   2 -> BPF does get this packet, but we don't
- * Return value is true if the packet is for us, and false otherwise.
- *
- * This routine is a mess, but it's also critical that it be as fast
- * as possible.  It could be made cleaner if we can assume that the
- * only client which will fiddle with IFF_PROMISC is BPF.  This is
- * probably a good assumption, but we do not make it here.  (Yet.)
- */
-static inline int 
-check_eh(struct ie_softc *sc, struct ether_header *eh, int *to_bpf)
-{
-       struct ifnet *ifp;
-
-       ifp = &sc->sc_if;
-       *to_bpf = (ifp->if_bpf != 0);
-
-       /*
-        * This is all handled at a higher level now.
-        */
-       return 1;
-}
-
-/*
  * We want to isolate the bits that have meaning...  This assumes that
  * IE_RBUF_SIZE is an even power of two.  If somehow the act_len exceeds
  * the size of the buffer, then we are screwed anyway.
@@ -791,7 +764,7 @@
  * operation considerably.  (Provided that it works, of course.)
  */
 static inline struct mbuf *
-ieget(struct ie_softc *sc, int *to_bpf)
+ieget(struct ie_softc *sc)
 {
        struct mbuf *top, **mp, *m;
        int len, totlen, resid;
@@ -811,19 +784,6 @@
        (sc->sc_memcpy)((void *)&eh, (void *)sc->cbuffs[head],
            sizeof(struct ether_header));
 
-       /*
-        * As quickly as possible, check if this packet is for us.
-        * If not, don't waste a single cycle copying the rest of the
-        * packet in.
-        * This is only a consideration when FILTER is defined; i.e., when
-        * we are either running BPF or doing multicasting.
-        */
-       if (check_eh(sc, &eh, to_bpf) == 0) {
-               /* just this case, it's not an error */
-               sc->sc_if.if_ierrors--;
-               return 0;
-       }
-
        resid = totlen;
 
        MGETHDR(m, M_DONTWAIT, MT_DATA);
@@ -931,7 +891,6 @@
 {
        int status;
        struct mbuf *m = 0;
-       int bpf_gets_it = 0;
 
        status = sc->rframes[num]->ie_fd_status;
 
@@ -943,7 +902,7 @@
        sc->rfhead = (sc->rfhead + 1) % sc->nframes;
 
        if (status & IE_FD_OK) {
-               m = ieget(sc, &bpf_gets_it);
+               m = ieget(sc);
                ie_drop_packet_buffer(sc);
        }
        if (m == 0) {
@@ -961,37 +920,8 @@
        }
 #endif
 
-       /*
-        * Check for a BPF filter; if so, hand it up.
-        * Note that we have to stick an extra mbuf up front, because
-        * bpf_mtap expects to have the ether header at the front.
-        * It doesn't matter that this results in an ill-formatted mbuf chain,
-        * since BPF just looks at the data.  (It doesn't try to free the mbuf,
-        * tho' it will make a copy for tcpdump.)
-        */
-       if (bpf_gets_it) {
-               /* Pass it up. */
-               bpf_mtap(&sc->sc_if, m);
-
-               /*
-                * A signal passed up from the filtering code indicating that
-                * the packet is intended for BPF but not for the protocol
-                * machinery.  We can save a few cycles by not handing it off
-                * to them.
-                */
-               if (bpf_gets_it == 2) {
-                       m_freem(m);
-                       return;
-               }
-       }
-
-       /*
-        * In here there used to be code to check destination addresses upon
-        * receipt of a packet.  We have deleted that code, and replaced it
-        * with code to check the address much earlier in the cycle, before
-        * copying the data in; this saves us valuable cycles when operating
-        * as a multicast router or when using BPF.
-        */
+       /* Pass it up. */
+       bpf_mtap(&sc->sc_if, m);
 
        /*
         * Finally pass this packet up to higher layers.



Home | Main Index | Thread Index | Old Index