- Remove the second parameter of ether_input(), since:
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Mon, 1 Oct 2007 12:56:36 +0000 (12:56 +0000)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Mon, 1 Oct 2007 12:56:36 +0000 (12:56 +0000)
  o  if the second argument is not NULL, ether_input() always fails.
  o  No one calls ether_input() with a non-NULL second argument.
- Nuke ether_input_internal(), after above change it is no longer necessary.

sys/net/if_ethersubr.c
sys/net/if_var.h
sys/net/vlan/if_vlan.c

index 3ed662c..a0619e3 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)if_ethersubr.c      8.1 (Berkeley) 6/10/93
  * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.70.2.33 2003/04/28 15:45:53 archie Exp $
- * $DragonFly: src/sys/net/if_ethersubr.c,v 1.43 2007/09/08 12:50:34 sephe Exp $
+ * $DragonFly: src/sys/net/if_ethersubr.c,v 1.44 2007/10/01 12:56:36 sephe Exp $
  */
 
 #include "opt_atalk.h"
@@ -531,46 +531,30 @@ ether_ipfw_chk(
 }
 
 /*
- * XXX merge this function with ether_input.
- */
-static void
-ether_input_internal(struct ifnet *ifp, struct mbuf *m)
-{
-       ether_input(ifp, NULL, m);
-}
-
-/*
- * Process a received Ethernet packet. We have two different interfaces:
- * one (conventional) assumes the packet in the mbuf, with the ethernet
- * header provided separately in *eh. The second one (new) has everything
- * in the mbuf, and we can tell it because eh == NULL.
- * The caller MUST MAKE SURE that there are at least
- * sizeof(struct ether_header) bytes in the first mbuf.
+ * Process a received Ethernet packet.
+ *
+ * The ethernet header is assumed to be in the mbuf so the caller
+ * MUST MAKE SURE that there are at least sizeof(struct ether_header)
+ * bytes in the first mbuf.
  *
  * This allows us to concentrate in one place a bunch of code which
  * is replicated in all device drivers. Also, many functions called
  * from ether_input() try to put the eh back into the mbuf, so we
- * can later propagate the 'contiguous packet' interface to them,
- * and handle the old interface just here.
+ * can later propagate the 'contiguous packet' interface to them.
  *
- * NOTA BENE: for many drivers "eh" is a pointer into the first mbuf or
+ * NOTA BENE: for all drivers "eh" is a pointer into the first mbuf or
  * cluster, right before m_data. So be very careful when working on m,
  * as you could destroy *eh !!
  *
- * First we perform any link layer operations, then continue
- * to the upper layers with ether_demux().
+ * First we perform any link layer operations, then continue to the
+ * upper layers with ether_demux().
  */
 void
-ether_input(struct ifnet *ifp, struct ether_header *eh, struct mbuf *m)
+ether_input(struct ifnet *ifp, struct mbuf *m)
 {
-       ASSERT_SERIALIZED(ifp->if_serializer);
+       struct ether_header *eh;
 
-       /* XXX old crufty stuff, needs to be removed */
-       if (eh != NULL) {
-               kprintf("ether_input got mbuf without embedded ethernet header");
-               m_free(m);
-               return;
-       }
+       ASSERT_SERIALIZED(ifp->if_serializer);
 
        if (m->m_len < sizeof(struct ether_header)) {
                /* XXX error in the caller. */
@@ -578,7 +562,6 @@ ether_input(struct ifnet *ifp, struct ether_header *eh, struct mbuf *m)
                return;
        }
        m->m_pkthdr.rcvif = ifp;
-       eh = mtod(m, struct ether_header *);
 
        BPF_MTAP(ifp, m);
 
@@ -619,6 +602,8 @@ ether_input(struct ifnet *ifp, struct ether_header *eh, struct mbuf *m)
                }
        }
 
+       eh = mtod(m, struct ether_header *);
+
        /* XXX old crufty stuff, needs to be removed */
        m_adj(m, sizeof(struct ether_header));
        /* XXX */
@@ -852,7 +837,7 @@ ether_ifattach_bpf(struct ifnet *ifp, uint8_t *lla, u_int dlt, u_int hdrlen,
        if (ifp->if_baudrate == 0)
                ifp->if_baudrate = 10000000;
        ifp->if_output = ether_output;
-       ifp->if_input = ether_input_internal;
+       ifp->if_input = ether_input;
        ifp->if_resolvemulti = ether_resolvemulti;
        ifp->if_broadcastaddr = etherbroadcastaddr;
        sdl = IF_LLSOCKADDR(ifp);
index 25d8ca8..a39c088 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     From: @(#)if.h  8.1 (Berkeley) 6/10/93
  * $FreeBSD: src/sys/net/if_var.h,v 1.18.2.16 2003/04/15 18:11:19 fjoe Exp $
- * $DragonFly: src/sys/net/if_var.h,v 1.41 2007/09/30 04:37:27 sephe Exp $
+ * $DragonFly: src/sys/net/if_var.h,v 1.42 2007/10/01 12:56:36 sephe Exp $
  */
 
 #ifndef        _NET_IF_VAR_H_
@@ -455,7 +455,7 @@ void        ether_ifattach(struct ifnet *, uint8_t *, struct lwkt_serialize *);
 void   ether_ifattach_bpf(struct ifnet *, uint8_t *, u_int, u_int,
                        struct lwkt_serialize *);
 void   ether_ifdetach(struct ifnet *);
-void   ether_input(struct ifnet *, struct ether_header *, struct mbuf *);
+void   ether_input(struct ifnet *, struct mbuf *);
 void   ether_demux(struct ifnet *, struct ether_header *, struct mbuf *);
 int    ether_output_frame(struct ifnet *, struct mbuf *);
 int    ether_ioctl(struct ifnet *, int, caddr_t);
index 8e79b1d..047266a 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/net/if_vlan.c,v 1.15.2.13 2003/02/14 22:25:58 fenner Exp $
- * $DragonFly: src/sys/net/vlan/if_vlan.c,v 1.23 2006/12/22 23:44:57 swildner Exp $
+ * $DragonFly: src/sys/net/vlan/if_vlan.c,v 1.24 2007/10/01 12:56:36 sephe Exp $
  */
 
 /*
@@ -423,7 +423,7 @@ vlan_input_tag( struct mbuf *m, uint16_t t)
        ifv->ifv_if.if_ipackets++;
        lwkt_serialize_exit(rcvif->if_serializer);
        lwkt_serialize_enter(ifv->ifv_if.if_serializer);
-       ether_input(&ifv->ifv_if, NULL, m);
+       ether_input(&ifv->ifv_if, m);
        lwkt_serialize_exit(ifv->ifv_if.if_serializer);
        lwkt_serialize_enter(rcvif->if_serializer);
        return 0;
@@ -471,7 +471,7 @@ vlan_input(struct ether_header *eh, struct mbuf *m)
        ifv->ifv_if.if_ipackets++;
        lwkt_serialize_exit(rcvif->if_serializer);
        lwkt_serialize_enter(ifv->ifv_if.if_serializer);
-       ether_input(&ifv->ifv_if, NULL, m);
+       ether_input(&ifv->ifv_if, m);
        lwkt_serialize_exit(ifv->ifv_if.if_serializer);
        lwkt_serialize_enter(rcvif->if_serializer);
        return 0;