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