On Sun, Oct 25, 2015 at 09:58:00AM +0100, Claudio Jeker wrote:
> On Sat, Oct 24, 2015 at 06:22:10PM +0200, Martin Pieuchot wrote:
> > On 24/10/15(Sat) 18:01, Martin Pieuchot wrote:

> > > As a side effect arp_ifinit() can now die since every Ethernet driver
> > > initialize if_rtrequest in ether_ifattach().
> > 
> > Index: net/if.c
> > ===================================================================
> > RCS file: /cvs/src/sys/net/if.c,v
> > retrieving revision 1.394
> > diff -u -p -r1.394 if.c
> > --- net/if.c        24 Oct 2015 10:52:05 -0000      1.394
> > +++ net/if.c        24 Oct 2015 16:19:49 -0000
> > @@ -520,6 +520,7 @@ if_attach_common(struct ifnet *ifp)
> >         M_TEMP, M_WAITOK);

> > @@ -821,7 +820,6 @@ arpproxy(struct in_addr in, unsigned int
> >  void
> >  arp_ifinit(struct arpcom *ac, struct ifaddr *ifa)
> >  {
> > -   ifa->ifa_rtrequest = arp_rtrequest;
> >  }
> >  
> 
> Woohoo empty function.  Guess somebody can make a big diff killing this
> function for real. Any volunteer?
> 

Challenge accepted. Coffee, a bit of Coccinelle and then final polish
by hand. GENERIC compiles in amd64 and i386. I tried to remove all
unused "struct ifaddr *ifa = (struct ifaddr *)data;" by hand from all
archs, but there might still be some and produce unused argument
errors while compiling kernel.

The following is "git diff" since I don't know how to work in CVS with
patches applied. Help appreciated if it needs to be cvs diff.

 136 files changed, 19 insertions(+), 619 deletions(-)

I'm getting "diff blindness" to spot any mistakes. Comments welcome :)


diff --git a/sys/arch/armv7/imx/imxenet.c b/sys/arch/armv7/imx/imxenet.c
index 77eafd3..e6d1fa0 100644
--- a/sys/arch/armv7/imx/imxenet.c
+++ b/sys/arch/armv7/imx/imxenet.c
@@ -764,7 +764,6 @@ imxenet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct imxenet_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -774,8 +773,6 @@ imxenet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        imxenet_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/armv7/omap/if_cpsw.c b/sys/arch/armv7/omap/if_cpsw.c
index e85bb00..2c6ce43 100644
--- a/sys/arch/armv7/omap/if_cpsw.c
+++ b/sys/arch/armv7/omap/if_cpsw.c
@@ -567,7 +567,6 @@ int
 cpsw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct cpsw_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s = splnet();
        int error = 0;
@@ -575,9 +574,7 @@ cpsw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
-
+               /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
                        if (ifp->if_flags & IFF_RUNNING)
diff --git a/sys/arch/armv7/sunxi/sxie.c b/sys/arch/armv7/sunxi/sxie.c
index 1cfa1b6..1e41718 100644
--- a/sys/arch/armv7/sunxi/sxie.c
+++ b/sys/arch/armv7/sunxi/sxie.c
@@ -626,7 +626,6 @@ sxie_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct sxie_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -637,8 +636,6 @@ sxie_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                        ifp->if_flags |= IFF_UP;
                        sxie_init(sc);
                }
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/arch/macppc/dev/if_bm.c b/sys/arch/macppc/dev/if_bm.c
index 9e3d862..ca82ee7 100644
--- a/sys/arch/macppc/dev/if_bm.c
+++ b/sys/arch/macppc/dev/if_bm.c
@@ -740,7 +740,6 @@ int
 bmac_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct bmac_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -749,16 +748,7 @@ bmac_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       bmac_init(sc);
-                       arp_ifinit(&sc->arpcom, ifa);
-                       break;
-               default:
-                       bmac_init(sc);
-                       break;
-               }
+               bmac_init(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/macppc/dev/if_mc.c b/sys/arch/macppc/dev/if_mc.c
index 3533704..26e1a5a 100644
--- a/sys/arch/macppc/dev/if_mc.c
+++ b/sys/arch/macppc/dev/if_mc.c
@@ -489,7 +489,6 @@ int
 mc_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct mc_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, err = 0;
 
        s = splnet();
@@ -499,8 +498,6 @@ mc_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        mc_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/octeon/dev/if_cnmac.c b/sys/arch/octeon/dev/if_cnmac.c
index c2403cf..544cf13 100644
--- a/sys/arch/octeon/dev/if_cnmac.c
+++ b/sys/arch/octeon/dev/if_cnmac.c
@@ -702,7 +702,6 @@ int
 octeon_eth_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct octeon_eth_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -713,8 +712,6 @@ octeon_eth_ioctl(struct ifnet *ifp, u_long cmd, caddr_t 
data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        octeon_eth_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/sgi/dev/if_iec.c b/sys/arch/sgi/dev/if_iec.c
index 1416c32..af5ad04 100644
--- a/sys/arch/sgi/dev/if_iec.c
+++ b/sys/arch/sgi/dev/if_iec.c
@@ -1016,7 +1016,6 @@ iec_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct iec_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -1026,8 +1025,6 @@ iec_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        iec_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/sgi/dev/if_mec.c b/sys/arch/sgi/dev/if_mec.c
index 1acf49e..02a910b 100644
--- a/sys/arch/sgi/dev/if_mec.c
+++ b/sys/arch/sgi/dev/if_mec.c
@@ -1026,7 +1026,6 @@ mec_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct mec_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -1036,8 +1035,6 @@ mec_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        mec_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/sgi/hpc/if_sq.c b/sys/arch/sgi/hpc/if_sq.c
index 26ca048..431b00b 100644
--- a/sys/arch/sgi/hpc/if_sq.c
+++ b/sys/arch/sgi/hpc/if_sq.c
@@ -591,7 +591,6 @@ int
 sq_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct sq_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -604,8 +603,6 @@ sq_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        sq_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
 
        case SIOCSIFMEDIA:
diff --git a/sys/arch/socppc/dev/if_tsec.c b/sys/arch/socppc/dev/if_tsec.c
index 0802d0b..bca8a9f 100644
--- a/sys/arch/socppc/dev/if_tsec.c
+++ b/sys/arch/socppc/dev/if_tsec.c
@@ -557,7 +557,6 @@ int
 tsec_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
 {
        struct tsec_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)addr;
        struct ifreq *ifr = (struct ifreq *)addr;
        int error = 0, s;
 
@@ -566,8 +565,6 @@ tsec_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/arch/sparc/dev/be.c b/sys/arch/sparc/dev/be.c
index 1fdd86b..7b3556b 100644
--- a/sys/arch/sparc/dev/be.c
+++ b/sys/arch/sparc/dev/be.c
@@ -560,7 +560,6 @@ beioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct besoftc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -569,15 +568,7 @@ beioctl(ifp, cmd, data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       beinit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       beinit(sc);
-                       break;
-               }
+               beinit(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/sparc/dev/hme.c b/sys/arch/sparc/dev/hme.c
index f279f69..7f71236 100644
--- a/sys/arch/sparc/dev/hme.c
+++ b/sys/arch/sparc/dev/hme.c
@@ -395,7 +395,6 @@ hmeioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct hme_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -406,8 +405,6 @@ hmeioctl(ifp, cmd, data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        hmeinit(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/sparc/dev/if_ie.c b/sys/arch/sparc/dev/if_ie.c
index 536b6f7..c74f93c 100644
--- a/sys/arch/sparc/dev/if_ie.c
+++ b/sys/arch/sparc/dev/if_ie.c
@@ -1843,7 +1843,6 @@ ieioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct ie_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -1851,16 +1850,7 @@ ieioctl(ifp, cmd, data)
        switch(cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-
-               switch(ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       ieinit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       ieinit(sc);
-                       break;
-               }
+               ieinit(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/sparc/dev/qe.c b/sys/arch/sparc/dev/qe.c
index 7595fc7..ff6554e 100644
--- a/sys/arch/sparc/dev/qe.c
+++ b/sys/arch/sparc/dev/qe.c
@@ -580,7 +580,6 @@ qeioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct qesoftc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -589,15 +588,7 @@ qeioctl(ifp, cmd, data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       qeinit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       qeinit(sc);
-                       break;
-               }
+               qeinit(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/sparc64/dev/vnet.c b/sys/arch/sparc64/dev/vnet.c
index 5d87b97..8bf1842 100644
--- a/sys/arch/sparc64/dev/vnet.c
+++ b/sys/arch/sparc64/dev/vnet.c
@@ -1243,7 +1243,6 @@ int
 vnet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct vnet_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1252,8 +1251,6 @@ vnet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/arch/vax/if/if_de.c b/sys/arch/vax/if/if_de.c
index 4691b71..6d8468b 100644
--- a/sys/arch/vax/if/if_de.c
+++ b/sys/arch/vax/if/if_de.c
@@ -562,7 +562,6 @@ deioctl(ifp, cmd, data)
        u_long  cmd;
        caddr_t data;
 {
-       register struct ifaddr *ifa = (struct ifaddr *)data;
        register struct de_softc *ds = ifp->if_softc;
        int s, error = 0;
 
@@ -572,12 +571,6 @@ deioctl(ifp, cmd, data)
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
                deinit(ds);
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       arp_ifinit(&ds->ds_ac, ifa);
-                       break;
-               }
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/arch/vax/if/if_qe.c b/sys/arch/vax/if/if_qe.c
index 374909f..4e19864 100644
--- a/sys/arch/vax/if/if_qe.c
+++ b/sys/arch/vax/if/if_qe.c
@@ -626,7 +626,6 @@ int
 qeioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct qe_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -637,7 +636,6 @@ qeioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                switch(ifa->ifa_addr->sa_family) {
                case AF_INET:
                        qeinit(sc);
-                       arp_ifinit(&sc->sc_ac, ifa);
                        break;
                }
                break;
diff --git a/sys/arch/vax/if/sgec.c b/sys/arch/vax/if/sgec.c
index 9431e05..a163bac 100644
--- a/sys/arch/vax/if/sgec.c
+++ b/sys/arch/vax/if/sgec.c
@@ -618,7 +618,6 @@ zeioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct ze_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -630,7 +629,6 @@ zeioctl(ifp, cmd, data)
                switch(ifa->ifa_addr->sa_family) {
                case AF_INET:
                        zeinit(sc);
-                       arp_ifinit(&sc->sc_ac, ifa);
                        break;
                }
                break;
diff --git a/sys/dev/ic/acx.c b/sys/dev/ic/acx.c
index 7e8a78d..ca321ae 100644
--- a/sys/dev/ic/acx.c
+++ b/sys/dev/ic/acx.c
@@ -839,7 +839,6 @@ acx_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct acx_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
        uint8_t chan;
@@ -848,10 +847,7 @@ acx_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                        arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/aic6915.c b/sys/dev/ic/aic6915.c
index 4bdfec4..bd0663d 100644
--- a/sys/dev/ic/aic6915.c
+++ b/sys/dev/ic/aic6915.c
@@ -508,7 +508,6 @@ int
 sf_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct sf_softc *sc = (struct sf_softc *)ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *) data;
        int s, error = 0;
 
@@ -519,8 +518,6 @@ sf_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        sf_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/an.c b/sys/dev/ic/an.c
index 077cf7a..2d131e1 100644
--- a/sys/dev/ic/an.c
+++ b/sys/dev/ic/an.c
@@ -874,7 +874,6 @@ int
 an_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct an_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        if ((sc->sc_dev.dv_flags & DVF_ACTIVE) == 0)
@@ -885,15 +884,7 @@ an_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
        switch(command) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       error = an_init(ifp);
-                       arp_ifinit(&sc->sc_ic.ic_ac, ifa);
-                       break;
-               default:
-                       error = an_init(ifp);
-                       break;
-               }
+               error = an_init(ifp);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/ath.c b/sys/dev/ic/ath.c
index 0fbac5b..196ad33 100644
--- a/sys/dev/ic/ath.c
+++ b/sys/dev/ic/ath.c
@@ -977,16 +977,12 @@ ath_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        struct ath_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int error = 0, s;
 
        s = splnet();
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET) {
-                       arp_ifinit(&ic->ic_ac, ifa);
-               }
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/athn.c b/sys/dev/ic/athn.c
index dede2eb..064640e 100644
--- a/sys/dev/ic/athn.c
+++ b/sys/dev/ic/athn.c
@@ -2657,7 +2657,6 @@ athn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct athn_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -2665,10 +2664,7 @@ athn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/atw.c b/sys/dev/ic/atw.c
index 95a77c6..627822e 100644
--- a/sys/dev/ic/atw.c
+++ b/sys/dev/ic/atw.c
@@ -4004,9 +4004,7 @@ int
 atw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct atw_softc *sc = ifp->if_softc;
-       struct ieee80211com *ic = &sc->sc_ic;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        /* XXX monkey see, monkey do. comes from wi_ioctl. */
@@ -4018,9 +4016,6 @@ atw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
         case SIOCSIFADDR:
                 ifp->if_flags |= IFF_UP;
-                if (ifa->ifa_addr->sa_family == AF_INET) {
-                        arp_ifinit(&ic->ic_ac, ifa);
-                }
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/bwi.c b/sys/dev/ic/bwi.c
index 5702da1..e14bae8 100644
--- a/sys/dev/ic/bwi.c
+++ b/sys/dev/ic/bwi.c
@@ -7112,7 +7112,6 @@ bwi_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct bwi_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
        uint8_t chan;
@@ -7121,10 +7120,7 @@ bwi_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/dc.c b/sys/dev/ic/dc.c
index 481d969..eefbba6 100644
--- a/sys/dev/ic/dc.c
+++ b/sys/dev/ic/dc.c
@@ -2914,7 +2914,6 @@ dc_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct dc_softc         *sc = ifp->if_softc;
        struct ifreq            *ifr = (struct ifreq *) data;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                     s, error = 0;
 
        s = splnet();
@@ -2924,8 +2923,6 @@ dc_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        dc_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/dp8390.c b/sys/dev/ic/dp8390.c
index fb1f3d2..ccf71cf 100644
--- a/sys/dev/ic/dp8390.c
+++ b/sys/dev/ic/dp8390.c
@@ -814,7 +814,6 @@ int
 dp8390_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct dp8390_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        int s, error = 0;
 
@@ -827,8 +826,6 @@ dp8390_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        dp8390_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/elink3.c b/sys/dev/ic/elink3.c
index f5f1e51..fb3ea4c 100644
--- a/sys/dev/ic/elink3.c
+++ b/sys/dev/ic/elink3.c
@@ -1419,7 +1419,6 @@ int
 epioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct ep_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1430,8 +1429,6 @@ epioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        epinit(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/fxp.c b/sys/dev/ic/fxp.c
index 094b898..e93fa61 100644
--- a/sys/dev/ic/fxp.c
+++ b/sys/dev/ic/fxp.c
@@ -1632,7 +1632,6 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct fxp_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -1642,8 +1641,6 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        fxp_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/gem.c b/sys/dev/ic/gem.c
index 4044432..b40cc04 100644
--- a/sys/dev/ic/gem.c
+++ b/sys/dev/ic/gem.c
@@ -1490,7 +1490,6 @@ int
 gem_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct gem_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1501,8 +1500,6 @@ gem_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if ((ifp->if_flags & IFF_RUNNING) == 0)
                        gem_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/hme.c b/sys/dev/ic/hme.c
index b9d915c..34e6810 100644
--- a/sys/dev/ic/hme.c
+++ b/sys/dev/ic/hme.c
@@ -1152,7 +1152,6 @@ int
 hme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct hme_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1163,8 +1162,6 @@ hme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        hme_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/i82596.c b/sys/dev/ic/i82596.c
index 3d0f1e4..af8381d 100644
--- a/sys/dev/ic/i82596.c
+++ b/sys/dev/ic/i82596.c
@@ -1852,7 +1852,6 @@ i82596_ioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct ie_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1861,16 +1860,7 @@ i82596_ioctl(ifp, cmd, data)
        switch(cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-
-               switch(ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       i82596_init(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       i82596_init(sc);
-                       break;
-               }
+               i82596_init(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/if_wi.c b/sys/dev/ic/if_wi.c
index 2b8bc35..5d5d667 100644
--- a/sys/dev/ic/if_wi.c
+++ b/sys/dev/ic/if_wi.c
@@ -1526,7 +1526,6 @@ wi_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
        struct wi_softc         *sc = ifp->if_softc;
        struct ifreq            *ifr = (struct ifreq *)data;
        struct proc             *p = curproc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        struct wi_scan_res      *res;
        struct wi_scan_p2_hdr   *p2;
        struct wi_req           *wreq = NULL;
@@ -1560,15 +1559,7 @@ wi_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
        switch(command) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       wi_init(sc);
-                       arp_ifinit(&sc->sc_ic.ic_ac, ifa);
-                       break;
-               default:
-                       wi_init(sc);
-                       break;
-               }
+               wi_init(sc);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/lance.c b/sys/dev/ic/lance.c
index e8288da..4f3dcd5 100644
--- a/sys/dev/ic/lance.c
+++ b/sys/dev/ic/lance.c
@@ -500,7 +500,6 @@ int
 lance_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct lance_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -511,8 +510,6 @@ lance_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        lance_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/lemac.c b/sys/dev/ic/lemac.c
index c00af66..adf5683 100644
--- a/sys/dev/ic/lemac.c
+++ b/sys/dev/ic/lemac.c
@@ -771,7 +771,6 @@ int
 lemac_ifioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct lemac_softc *const sc = LEMAC_IFP_TO_SOFTC(ifp);
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -781,14 +780,6 @@ lemac_ifioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
                lemac_init(sc);
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-
-               default:
-                       break;
-               }
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/malo.c b/sys/dev/ic/malo.c
index 2845fb3..d6b4764 100644
--- a/sys/dev/ic/malo.c
+++ b/sys/dev/ic/malo.c
@@ -935,7 +935,6 @@ malo_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct malo_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
        uint8_t chan;
@@ -944,10 +943,7 @@ malo_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/mtd8xx.c b/sys/dev/ic/mtd8xx.c
index 085e0d3..9262a10 100644
--- a/sys/dev/ic/mtd8xx.c
+++ b/sys/dev/ic/mtd8xx.c
@@ -572,7 +572,6 @@ static int
 mtd_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct mtd_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -582,11 +581,6 @@ mtd_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
                mtd_init(ifp);
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               }
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/pgt.c b/sys/dev/ic/pgt.c
index c460858..600ba94 100644
--- a/sys/dev/ic/pgt.c
+++ b/sys/dev/ic/pgt.c
@@ -2350,8 +2350,6 @@ pgt_ioctl(struct ifnet *ifp, u_long cmd, caddr_t req)
        case SIOCSIFADDR:
                ifa = (struct ifaddr *)req;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                        arp_ifinit(&sc->sc_ic.ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/re.c b/sys/dev/ic/re.c
index f9579ee..57c1953 100644
--- a/sys/dev/ic/re.c
+++ b/sys/dev/ic/re.c
@@ -2066,7 +2066,6 @@ re_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct rl_softc *sc = ifp->if_softc;
        struct ifreq    *ifr = (struct ifreq *) data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int             s, error = 0;
 
        s = splnet();
@@ -2076,8 +2075,6 @@ re_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        re_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/rt2560.c b/sys/dev/ic/rt2560.c
index 4d18642..58e4455 100644
--- a/sys/dev/ic/rt2560.c
+++ b/sys/dev/ic/rt2560.c
@@ -2006,7 +2006,6 @@ rt2560_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct rt2560_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -2014,10 +2013,7 @@ rt2560_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/rt2661.c b/sys/dev/ic/rt2661.c
index e682a5a..77c1129 100644
--- a/sys/dev/ic/rt2661.c
+++ b/sys/dev/ic/rt2661.c
@@ -2011,7 +2011,6 @@ rt2661_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct rt2661_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -2019,10 +2018,7 @@ rt2661_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/rt2860.c b/sys/dev/ic/rt2860.c
index e4d39ff..b4337b6 100644
--- a/sys/dev/ic/rt2860.c
+++ b/sys/dev/ic/rt2860.c
@@ -1815,7 +1815,6 @@ rt2860_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct rt2860_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1823,10 +1822,7 @@ rt2860_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/ic/rtl81x9.c b/sys/dev/ic/rtl81x9.c
index 3a9d016..0287c3f 100644
--- a/sys/dev/ic/rtl81x9.c
+++ b/sys/dev/ic/rtl81x9.c
@@ -1007,7 +1007,6 @@ rl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct rl_softc *sc = ifp->if_softc;
        struct ifreq    *ifr = (struct ifreq *) data;
-       struct ifaddr   *ifa = (struct ifaddr *) data;
        int             s, error = 0;
 
        s = splnet();
@@ -1017,8 +1016,6 @@ rl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        rl_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/rtw.c b/sys/dev/ic/rtw.c
index 3e01557..623a951 100644
--- a/sys/dev/ic/rtw.c
+++ b/sys/dev/ic/rtw.c
@@ -2603,8 +2603,6 @@ int
 rtw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct rtw_softc *sc = ifp->if_softc;
-       struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int rc = 0, s;
 
@@ -2613,9 +2611,6 @@ rtw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET) {
-                       arp_ifinit(&ic->ic_ac, ifa);
-               }
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/smc83c170.c b/sys/dev/ic/smc83c170.c
index bbad373..25588dd 100644
--- a/sys/dev/ic/smc83c170.c
+++ b/sys/dev/ic/smc83c170.c
@@ -522,7 +522,6 @@ int
 epic_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct epic_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -531,16 +530,7 @@ epic_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       epic_init(ifp);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       epic_init(ifp);
-                       break;
-               }
+               epic_init(ifp);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/smc91cxx.c b/sys/dev/ic/smc91cxx.c
index 9fcebee..f9947d5 100644
--- a/sys/dev/ic/smc91cxx.c
+++ b/sys/dev/ic/smc91cxx.c
@@ -1022,7 +1022,6 @@ smc91cxx_ioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct smc91cxx_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1033,15 +1032,7 @@ smc91cxx_ioctl(ifp, cmd, data)
                if ((error = smc91cxx_enable(sc)) != 0)
                        break;
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       smc91cxx_init(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       smc91cxx_init(sc);
-                       break;
-               }
+               smc91cxx_init(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/ti.c b/sys/dev/ic/ti.c
index 89485b9..0f499d2 100644
--- a/sys/dev/ic/ti.c
+++ b/sys/dev/ic/ti.c
@@ -2224,7 +2224,6 @@ int
 ti_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct ti_softc         *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        struct ifreq            *ifr = (struct ifreq *)data;
        int                     s, error = 0;
 
@@ -2235,8 +2234,6 @@ ti_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if ((ifp->if_flags & IFF_RUNNING) == 0)
                        ti_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/ic/xl.c b/sys/dev/ic/xl.c
index c36fcd6..f0adbe7 100644
--- a/sys/dev/ic/xl.c
+++ b/sys/dev/ic/xl.c
@@ -2162,7 +2162,6 @@ xl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct xl_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
        struct mii_data *mii = NULL;
 
@@ -2173,8 +2172,6 @@ xl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        xl_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/isa/if_ef_isapnp.c b/sys/dev/isa/if_ef_isapnp.c
index e546c7a..ec69560 100644
--- a/sys/dev/isa/if_ef_isapnp.c
+++ b/sys/dev/isa/if_ef_isapnp.c
@@ -335,7 +335,6 @@ efioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct ef_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -344,15 +343,7 @@ efioctl(ifp, cmd, data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       efinit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       efinit(sc);
-                       break;
-               }
+               efinit(sc);
                break;
        case SIOCSIFMEDIA:
        case SIOCGIFMEDIA:
diff --git a/sys/dev/isa/if_eg.c b/sys/dev/isa/if_eg.c
index f4a3480..cc431f4 100644
--- a/sys/dev/isa/if_eg.c
+++ b/sys/dev/isa/if_eg.c
@@ -738,7 +738,6 @@ int
 egioctl(register struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct eg_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -746,16 +745,7 @@ egioctl(register struct ifnet *ifp, u_long cmd, caddr_t 
data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       eginit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       eginit(sc);
-                       break;
-               }
+               eginit(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/isa/if_el.c b/sys/dev/isa/if_el.c
index 6373683..8017bed 100644
--- a/sys/dev/isa/if_el.c
+++ b/sys/dev/isa/if_el.c
@@ -574,7 +574,6 @@ elioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct el_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -582,16 +581,7 @@ elioctl(ifp, cmd, data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       elinit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       elinit(sc);
-                       break;
-               }
+               elinit(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/isa/if_ex.c b/sys/dev/isa/if_ex.c
index 9ad0cec..8d8091a 100644
--- a/sys/dev/isa/if_ex.c
+++ b/sys/dev/isa/if_ex.c
@@ -731,7 +731,6 @@ int
 ex_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct ex_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        int s, error = 0;
 
@@ -745,8 +744,6 @@ ex_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        ex_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
        case SIOCSIFFLAGS:
                DODEBUG(Start_End, printf("SIOCSIFFLAGS"););
diff --git a/sys/dev/isa/if_ie.c b/sys/dev/isa/if_ie.c
index 7457b0a..c46ebb0 100644
--- a/sys/dev/isa/if_ie.c
+++ b/sys/dev/isa/if_ie.c
@@ -2019,7 +2019,6 @@ ieioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct ie_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -2027,16 +2026,7 @@ ieioctl(ifp, cmd, data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       ieinit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       ieinit(sc);
-                       break;
-               }
+               ieinit(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_age.c b/sys/dev/pci/if_age.c
index b020bdb..58ef170 100644
--- a/sys/dev/pci/if_age.c
+++ b/sys/dev/pci/if_age.c
@@ -1038,7 +1038,6 @@ age_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct age_softc *sc = ifp->if_softc;
        struct mii_data *mii = &sc->sc_miibus;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1049,8 +1048,6 @@ age_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                         age_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_alc.c b/sys/dev/pci/if_alc.c
index 86c4002..bab4e83 100644
--- a/sys/dev/pci/if_alc.c
+++ b/sys/dev/pci/if_alc.c
@@ -1446,7 +1446,6 @@ alc_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct alc_softc *sc = ifp->if_softc;
        struct mii_data *mii = &sc->sc_miibus;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1457,8 +1456,6 @@ alc_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        alc_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_ale.c b/sys/dev/pci/if_ale.c
index a8a5a3c..67dbfed 100644
--- a/sys/dev/pci/if_ale.c
+++ b/sys/dev/pci/if_ale.c
@@ -1070,7 +1070,6 @@ ale_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct ale_softc *sc = ifp->if_softc;
        struct mii_data *mii = &sc->sc_miibus;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1081,8 +1080,6 @@ ale_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        ale_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_bce.c b/sys/dev/pci/if_bce.c
index dec5989..59d0eda 100644
--- a/sys/dev/pci/if_bce.c
+++ b/sys/dev/pci/if_bce.c
@@ -460,7 +460,6 @@ int
 bce_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct bce_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        int s, error = 0;
 
@@ -471,8 +470,6 @@ bce_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        bce_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->bce_ac, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_bge.c b/sys/dev/pci/if_bge.c
index d94aaf3..ccd6a49 100644
--- a/sys/dev/pci/if_bge.c
+++ b/sys/dev/pci/if_bge.c
@@ -4410,7 +4410,6 @@ int
 bge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct bge_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        int s, error = 0;
        struct mii_data *mii;
@@ -4422,8 +4421,6 @@ bge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        bge_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_bnx.c b/sys/dev/pci/if_bnx.c
index 19ef39e..1087a66 100644
--- a/sys/dev/pci/if_bnx.c
+++ b/sys/dev/pci/if_bnx.c
@@ -5068,7 +5068,6 @@ int
 bnx_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct bnx_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        struct mii_data         *mii = &sc->bnx_mii;
        int                     s, error = 0;
@@ -5080,8 +5079,6 @@ bnx_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        bnx_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_cas.c b/sys/dev/pci/if_cas.c
index 68afd1f..c6e32dc 100644
--- a/sys/dev/pci/if_cas.c
+++ b/sys/dev/pci/if_cas.c
@@ -1651,7 +1651,6 @@ int
 cas_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct cas_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1662,8 +1661,6 @@ cas_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if ((ifp->if_flags & IFF_RUNNING) == 0)
                        cas_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_de.c b/sys/dev/pci/if_de.c
index 2c31292..dfa8894 100644
--- a/sys/dev/pci/if_de.c
+++ b/sys/dev/pci/if_de.c
@@ -4146,7 +4146,6 @@ tulip_ifioctl(struct ifnet * ifp, u_long cmd, caddr_t 
data)
 {
     TULIP_PERFSTART(ifioctl)
     tulip_softc_t * const sc = TULIP_IFP_TO_SOFTC(ifp);
-    struct ifaddr *ifa = (struct ifaddr *)data;
     struct ifreq *ifr = (struct ifreq *) data;
     int s;
     int error = 0;
@@ -4157,16 +4156,6 @@ tulip_ifioctl(struct ifnet * ifp, u_long cmd, caddr_t 
data)
     case SIOCSIFADDR: {
        ifp->if_flags |= IFF_UP;
        tulip_init(sc);
-       switch(ifa->ifa_addr->sa_family) {
-       case AF_INET: {
-           arp_ifinit(&sc->tulip_ac, ifa);
-           break;
-       }
-
-       default: {
-           break;
-       }
-       }
        break;
     }
 
diff --git a/sys/dev/pci/if_em.c b/sys/dev/pci/if_em.c
index f2ddb32..6b0cb56 100644
--- a/sys/dev/pci/if_em.c
+++ b/sys/dev/pci/if_em.c
@@ -656,7 +656,6 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        int             error = 0;
        struct ifreq   *ifr = (struct ifreq *) data;
-       struct ifaddr  *ifa = (struct ifaddr *)data;
        struct em_softc *sc = ifp->if_softc;
        int s;
 
@@ -670,8 +669,6 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                        ifp->if_flags |= IFF_UP;
                        em_init(sc);
                }
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->interface_data, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_et.c b/sys/dev/pci/if_et.c
index e8e32e3..e62c5b2 100644
--- a/sys/dev/pci/if_et.c
+++ b/sys/dev/pci/if_et.c
@@ -1007,7 +1007,6 @@ int
 et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct et_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1018,8 +1017,6 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        et_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_ipw.c b/sys/dev/pci/if_ipw.c
index 0bdf8ce..30c3527 100644
--- a/sys/dev/pci/if_ipw.c
+++ b/sys/dev/pci/if_ipw.c
@@ -1358,7 +1358,6 @@ ipw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct ipw_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1377,10 +1376,7 @@ ipw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_iwi.c b/sys/dev/pci/if_iwi.c
index 36e5912..425f608 100644
--- a/sys/dev/pci/if_iwi.c
+++ b/sys/dev/pci/if_iwi.c
@@ -1451,7 +1451,6 @@ iwi_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct iwi_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1470,10 +1469,7 @@ iwi_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_iwm.c b/sys/dev/pci/if_iwm.c
index 5e3fbe4..3917841 100644
--- a/sys/dev/pci/if_iwm.c
+++ b/sys/dev/pci/if_iwm.c
@@ -5689,7 +5689,6 @@ iwm_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct iwm_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -5710,9 +5709,6 @@ iwm_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               ifa = (struct ifaddr *)data;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_iwn.c b/sys/dev/pci/if_iwn.c
index dc5f948..396e0f4 100644
--- a/sys/dev/pci/if_iwn.c
+++ b/sys/dev/pci/if_iwn.c
@@ -3106,7 +3106,6 @@ iwn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct iwn_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -3125,10 +3124,7 @@ iwn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_ix.c b/sys/dev/pci/if_ix.c
index 1ee022c..451d1d0 100644
--- a/sys/dev/pci/if_ix.c
+++ b/sys/dev/pci/if_ix.c
@@ -427,7 +427,6 @@ int
 ixgbe_ioctl(struct ifnet * ifp, u_long command, caddr_t data)
 {
        struct ix_softc *sc = ifp->if_softc;
-       struct ifaddr   *ifa = (struct ifaddr *) data;
        struct ifreq    *ifr = (struct ifreq *) data;
        int             s, error = 0;
 
@@ -439,8 +438,6 @@ ixgbe_ioctl(struct ifnet * ifp, u_long command, caddr_t 
data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        ixgbe_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_ixgb.c b/sys/dev/pci/if_ixgb.c
index 9bebe61..a63763a 100644
--- a/sys/dev/pci/if_ixgb.c
+++ b/sys/dev/pci/if_ixgb.c
@@ -331,7 +331,6 @@ int
 ixgb_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct ixgb_softc *sc = ifp->if_softc;
-       struct ifaddr   *ifa = (struct ifaddr *) data;
        struct ifreq    *ifr = (struct ifreq *) data;
        int             s, error = 0;
 
@@ -344,8 +343,6 @@ ixgb_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        ixgb_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->interface_data, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_jme.c b/sys/dev/pci/if_jme.c
index 74f70e5..554268d 100644
--- a/sys/dev/pci/if_jme.c
+++ b/sys/dev/pci/if_jme.c
@@ -1315,7 +1315,6 @@ jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct jme_softc *sc = ifp->if_softc;
        struct mii_data *mii = &sc->sc_miibus;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int error = 0, s;
 
@@ -1326,8 +1325,6 @@ jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        jme_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_lge.c b/sys/dev/pci/if_lge.c
index b681766..1bbd9c4 100644
--- a/sys/dev/pci/if_lge.c
+++ b/sys/dev/pci/if_lge.c
@@ -1153,7 +1153,6 @@ int
 lge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct lge_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        struct mii_data         *mii;
        int                     s, error = 0;
@@ -1165,8 +1164,6 @@ lge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        lge_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_lii.c b/sys/dev/pci/if_lii.c
index 88adc70..65cd1a9 100644
--- a/sys/dev/pci/if_lii.c
+++ b/sys/dev/pci/if_lii.c
@@ -1069,7 +1069,6 @@ int
 lii_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
 {
        struct lii_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)addr;
        struct ifreq *ifr = (struct ifreq *)addr;
        int s, error = 0;
 
@@ -1078,8 +1077,6 @@ lii_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
        switch(cmd) {
        case SIOCSIFADDR:
                SET(ifp->if_flags, IFF_UP);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_msk.c b/sys/dev/pci/if_msk.c
index aedeadb..963e194 100644
--- a/sys/dev/pci/if_msk.c
+++ b/sys/dev/pci/if_msk.c
@@ -578,7 +578,6 @@ int
 msk_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct sk_if_softc *sc_if = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        struct mii_data *mii;
        int s, error = 0;
@@ -590,8 +589,6 @@ msk_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        msk_init(sc_if);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc_if->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_myx.c b/sys/dev/pci/if_myx.c
index 57621e2..5a00f86 100644
--- a/sys/dev/pci/if_myx.c
+++ b/sys/dev/pci/if_myx.c
@@ -919,7 +919,6 @@ int
 myx_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct myx_softc        *sc = (struct myx_softc *)ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        struct ifreq            *ifr = (struct ifreq *)data;
        int                      s, error = 0;
 
@@ -928,8 +927,6 @@ myx_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_nep.c b/sys/dev/pci/if_nep.c
index 50caf2b..5164595 100644
--- a/sys/dev/pci/if_nep.c
+++ b/sys/dev/pci/if_nep.c
@@ -1929,7 +1929,6 @@ int
 nep_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct nep_softc *sc = (struct nep_softc *)ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1938,8 +1937,6 @@ nep_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_nfe.c b/sys/dev/pci/if_nfe.c
index 51a2439..7184d7d 100644
--- a/sys/dev/pci/if_nfe.c
+++ b/sys/dev/pci/if_nfe.c
@@ -519,7 +519,6 @@ int
 nfe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct nfe_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -530,8 +529,6 @@ nfe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        nfe_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_nge.c b/sys/dev/pci/if_nge.c
index 8290bb6..94a55cc 100644
--- a/sys/dev/pci/if_nge.c
+++ b/sys/dev/pci/if_nge.c
@@ -1775,7 +1775,6 @@ int
 nge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct nge_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        struct mii_data         *mii;
        int                     s, error = 0;
@@ -1785,15 +1784,7 @@ nge_ioctl(struct ifnet *ifp, u_long command, caddr_t 
data)
        switch(command) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       nge_init(sc);
-                       arp_ifinit(&sc->arpcom, ifa);
-                       break;
-               default:
-                       nge_init(sc);
-                       break;
-                }
+               nge_init(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_nxe.c b/sys/dev/pci/if_nxe.c
index 080b663..b85ee36 100644
--- a/sys/dev/pci/if_nxe.c
+++ b/sys/dev/pci/if_nxe.c
@@ -1015,7 +1015,6 @@ int
 nxe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
 {
        struct nxe_softc                *sc = ifp->if_softc;
-       struct ifaddr                   *ifa = (struct ifaddr *)addr;
        struct ifreq                    *ifr = (struct ifreq *)addr;
        int                             s, error = 0;
 
@@ -1027,8 +1026,6 @@ nxe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
        switch (cmd) {
        case SIOCSIFADDR:
                SET(ifp->if_flags, IFF_UP);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_oce.c b/sys/dev/pci/if_oce.c
index 54236f8..5f6cd1a 100644
--- a/sys/dev/pci/if_oce.c
+++ b/sys/dev/pci/if_oce.c
@@ -849,7 +849,6 @@ int
 oce_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct oce_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -860,8 +859,6 @@ oce_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        oce_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_pcn.c b/sys/dev/pci/if_pcn.c
index 895334b..d7eaac5 100644
--- a/sys/dev/pci/if_pcn.c
+++ b/sys/dev/pci/if_pcn.c
@@ -1043,7 +1043,6 @@ int
 pcn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct pcn_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        int s, error = 0;
 
@@ -1054,8 +1053,6 @@ pcn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        pcn_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_rtwn.c b/sys/dev/pci/if_rtwn.c
index 1d772a5..1c025ed 100644
--- a/sys/dev/pci/if_rtwn.c
+++ b/sys/dev/pci/if_rtwn.c
@@ -1929,7 +1929,6 @@ rtwn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct rtwn_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1948,10 +1947,7 @@ rtwn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_se.c b/sys/dev/pci/if_se.c
index 5f3bdb3..7bfec9e 100644
--- a/sys/dev/pci/if_se.c
+++ b/sys/dev/pci/if_se.c
@@ -1354,7 +1354,6 @@ se_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct se_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *) data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, rc = 0;
 
        s = splnet();
@@ -1364,10 +1363,6 @@ se_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if ((ifp->if_flags & IFF_RUNNING) == 0)
                        rc = se_init(ifp);
-               if (rc == 0) {
-                       if (ifa->ifa_addr->sa_family == AF_INET)
-                               arp_ifinit(&sc->sc_ac, ifa);
-               }
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_sis.c b/sys/dev/pci/if_sis.c
index dede1d2..04eb623 100644
--- a/sys/dev/pci/if_sis.c
+++ b/sys/dev/pci/if_sis.c
@@ -1889,7 +1889,6 @@ int
 sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct sis_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        struct mii_data         *mii;
        int                     s, error = 0;
@@ -1901,8 +1900,6 @@ sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        sis_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_sk.c b/sys/dev/pci/if_sk.c
index 4a02573..5e4bd23 100644
--- a/sys/dev/pci/if_sk.c
+++ b/sys/dev/pci/if_sk.c
@@ -687,7 +687,6 @@ int
 sk_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct sk_if_softc *sc_if = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        struct mii_data *mii;
        int s, error = 0;
@@ -699,8 +698,6 @@ sk_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        sk_init(sc_if);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc_if->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_ste.c b/sys/dev/pci/if_ste.c
index 7050d81..31c5dff 100644
--- a/sys/dev/pci/if_ste.c
+++ b/sys/dev/pci/if_ste.c
@@ -1195,7 +1195,6 @@ int
 ste_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct ste_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        int                     s, error = 0;
 
@@ -1206,8 +1205,6 @@ ste_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        ste_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_stge.c b/sys/dev/pci/if_stge.c
index 8b4672d..d6a9bc0 100644
--- a/sys/dev/pci/if_stge.c
+++ b/sys/dev/pci/if_stge.c
@@ -661,7 +661,6 @@ int
 stge_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct stge_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -673,8 +672,6 @@ stge_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                if (!(ifp->if_flags & IFF_RUNNING))
                        stge_init(ifp);
 
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_tht.c b/sys/dev/pci/if_tht.c
index 84a6797..2628134 100644
--- a/sys/dev/pci/if_tht.c
+++ b/sys/dev/pci/if_tht.c
@@ -865,7 +865,6 @@ int
 tht_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
 {
        struct tht_softc                *sc = ifp->if_softc;
-       struct ifaddr                   *ifa = (struct ifaddr *)addr;
        struct ifreq                    *ifr = (struct ifreq *)addr;
        int                             s, error = 0;
 
@@ -875,9 +874,6 @@ tht_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_tl.c b/sys/dev/pci/if_tl.c
index f84c068..5a8007d 100644
--- a/sys/dev/pci/if_tl.c
+++ b/sys/dev/pci/if_tl.c
@@ -1649,7 +1649,6 @@ int
 tl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct tl_softc         *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        int                     s, error = 0;
 
@@ -1660,8 +1659,6 @@ tl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        tl_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_txp.c b/sys/dev/pci/if_txp.c
index 6b2e568..d678a8d 100644
--- a/sys/dev/pci/if_txp.c
+++ b/sys/dev/pci/if_txp.c
@@ -1159,7 +1159,6 @@ int
 txp_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct txp_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        int s, error = 0;
 
@@ -1168,15 +1167,7 @@ txp_ioctl(struct ifnet *ifp, u_long command, caddr_t 
data)
        switch(command) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       txp_init(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       txp_init(sc);
-                       break;
-               }
+               txp_init(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_vge.c b/sys/dev/pci/if_vge.c
index 9307bea..699445f 100644
--- a/sys/dev/pci/if_vge.c
+++ b/sys/dev/pci/if_vge.c
@@ -1759,7 +1759,6 @@ int
 vge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct vge_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        int                     s, error = 0;
 
@@ -1770,8 +1769,6 @@ vge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        vge_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_vic.c b/sys/dev/pci/if_vic.c
index dc32eea..d8b292b 100644
--- a/sys/dev/pci/if_vic.c
+++ b/sys/dev/pci/if_vic.c
@@ -1177,7 +1177,6 @@ int
 vic_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct vic_softc *sc = (struct vic_softc *)ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1186,8 +1185,6 @@ vic_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_vio.c b/sys/dev/pci/if_vio.c
index ce4f35d..6a25c4b 100644
--- a/sys/dev/pci/if_vio.c
+++ b/sys/dev/pci/if_vio.c
@@ -853,7 +853,6 @@ int
 vio_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct vio_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, r = 0;
 
@@ -863,8 +862,6 @@ vio_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        vio_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_vmx.c b/sys/dev/pci/if_vmx.c
index e471911..7aab99b 100644
--- a/sys/dev/pci/if_vmx.c
+++ b/sys/dev/pci/if_vmx.c
@@ -999,7 +999,6 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct vmxnet3_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int error = 0, s;
 
        s = splnet();
@@ -1009,8 +1008,6 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if ((ifp->if_flags & IFF_RUNNING) == 0)
                        error = vmxnet3_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_vr.c b/sys/dev/pci/if_vr.c
index cb2216c..ed3ff2b 100644
--- a/sys/dev/pci/if_vr.c
+++ b/sys/dev/pci/if_vr.c
@@ -1537,7 +1537,6 @@ int
 vr_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct vr_softc         *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        int                     s, error = 0;
 
@@ -1548,8 +1547,6 @@ vr_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        vr_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_vte.c b/sys/dev/pci/if_vte.c
index cc4a324..186ec2e 100644
--- a/sys/dev/pci/if_vte.c
+++ b/sys/dev/pci/if_vte.c
@@ -725,7 +725,6 @@ vte_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct vte_softc *sc = ifp->if_softc;
        struct mii_data *mii = &sc->sc_miibus;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -736,8 +735,6 @@ vte_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        vte_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_wb.c b/sys/dev/pci/if_wb.c
index 7a3fcb0..01177b6 100644
--- a/sys/dev/pci/if_wb.c
+++ b/sys/dev/pci/if_wb.c
@@ -1517,7 +1517,6 @@ int wb_ioctl(ifp, command, data)
        caddr_t                 data;
 {
        struct wb_softc         *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *) data;
        struct ifreq            *ifr = (struct ifreq *) data;
        int                     s, error = 0;
 
@@ -1526,14 +1525,7 @@ int wb_ioctl(ifp, command, data)
        switch(command) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       wb_init(sc);
-                       arp_ifinit(&sc->arpcom, ifa);
-                       break;
-               default:
-                       wb_init(sc);
-               }
+               wb_init(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pci/if_wpi.c b/sys/dev/pci/if_wpi.c
index 42fc502..918b078 100644
--- a/sys/dev/pci/if_wpi.c
+++ b/sys/dev/pci/if_wpi.c
@@ -1965,7 +1965,6 @@ wpi_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct wpi_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1984,10 +1983,7 @@ wpi_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pci/if_xge.c b/sys/dev/pci/if_xge.c
index bd24381..bbefb51 100644
--- a/sys/dev/pci/if_xge.c
+++ b/sys/dev/pci/if_xge.c
@@ -941,7 +941,6 @@ int
 xge_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct xge_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *) data;
        struct ifreq *ifr = (struct ifreq *) data;
        int s, error = 0;
 
@@ -952,8 +951,6 @@ xge_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        xge_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pcmcia/if_cnw.c b/sys/dev/pcmcia/if_cnw.c
index a17751a..ea6837a 100644
--- a/sys/dev/pcmcia/if_cnw.c
+++ b/sys/dev/pcmcia/if_cnw.c
@@ -749,7 +749,6 @@ cnw_ioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct cnw_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        int s, error = 0;
 
        s = splnet();
@@ -760,11 +759,6 @@ cnw_ioctl(ifp, cmd, data)
                    (error = cnw_enable(sc)) != 0)
                        break;
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               }
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/pcmcia/if_malo.c b/sys/dev/pcmcia/if_malo.c
index 06740aa..e038d32 100644
--- a/sys/dev/pcmcia/if_malo.c
+++ b/sys/dev/pcmcia/if_malo.c
@@ -370,7 +370,6 @@ cmalo_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        struct ieee80211com *ic = &sc->sc_ic;
        struct ieee80211_nodereq_all *na;
        struct ieee80211_nodereq *nr;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int i, j, s, error = 0;
 
@@ -389,10 +388,7 @@ cmalo_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/pcmcia/if_xe.c b/sys/dev/pcmcia/if_xe.c
index c961490..b292037 100644
--- a/sys/dev/pcmcia/if_xe.c
+++ b/sys/dev/pcmcia/if_xe.c
@@ -1160,7 +1160,6 @@ xe_ioctl(ifp, command, data)
        caddr_t data;
 {
        struct xe_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1170,8 +1169,6 @@ xe_ioctl(ifp, command, data)
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
                xe_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/sbus/be.c b/sys/dev/sbus/be.c
index c168a44..80bbbc2 100644
--- a/sys/dev/sbus/be.c
+++ b/sys/dev/sbus/be.c
@@ -912,7 +912,6 @@ int
 beioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct be_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -921,15 +920,7 @@ beioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       beinit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       beinit(sc);
-                       break;
-               }
+               beinit(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/sbus/qe.c b/sys/dev/sbus/qe.c
index 45426eb..26adb27 100644
--- a/sys/dev/sbus/qe.c
+++ b/sys/dev/sbus/qe.c
@@ -884,7 +884,6 @@ qeioctl(ifp, cmd, data)
        caddr_t data;
 {
        struct qe_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -893,15 +892,7 @@ qeioctl(ifp, cmd, data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       qeinit(sc);
-                       arp_ifinit(&sc->sc_arpcom, ifa);
-                       break;
-               default:
-                       qeinit(sc);
-                       break;
-               }
+               qeinit(sc);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_athn_usb.c b/sys/dev/usb/if_athn_usb.c
index f16c663..9f19fd6 100644
--- a/sys/dev/usb/if_athn_usb.c
+++ b/sys/dev/usb/if_athn_usb.c
@@ -2124,7 +2124,6 @@ athn_usb_ioctl(struct ifnet *ifp, u_long cmd, caddr_t 
data)
        struct athn_softc *sc = ifp->if_softc;
        struct athn_usb_softc *usc = (struct athn_usb_softc *)sc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -2137,10 +2136,7 @@ athn_usb_ioctl(struct ifnet *ifp, u_long cmd, caddr_t 
data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_atu.c b/sys/dev/usb/if_atu.c
index 6423773..ebc9bf6 100644
--- a/sys/dev/usb/if_atu.c
+++ b/sys/dev/usb/if_atu.c
@@ -2111,7 +2111,6 @@ int
 atu_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct atu_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa;
        int                     err = 0, s;
 
        s = splnet();
@@ -2119,15 +2118,8 @@ atu_ioctl(struct ifnet *ifp, u_long command, caddr_t 
data)
        case SIOCSIFADDR:
                DPRINTFN(15, ("%s: SIOCSIFADDR\n", sc->atu_dev.dv_xname));
 
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
                atu_init(ifp);
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       arp_ifinit(&sc->sc_ic.ic_ac, ifa);
-                       break;
-               }
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_aue.c b/sys/dev/usb/if_aue.c
index 126de08..fbf87b2 100644
--- a/sys/dev/usb/if_aue.c
+++ b/sys/dev/usb/if_aue.c
@@ -1429,7 +1429,6 @@ int
 aue_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct aue_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        struct ifreq            *ifr = (struct ifreq *)data;
        int                     s, error = 0;
 
@@ -1443,8 +1442,6 @@ aue_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        aue_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_axe.c b/sys/dev/usb/if_axe.c
index c86d8eb..a4c74e9 100644
--- a/sys/dev/usb/if_axe.c
+++ b/sys/dev/usb/if_axe.c
@@ -1392,7 +1392,6 @@ axe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct axe_softc        *sc = ifp->if_softc;
        struct ifreq            *ifr = (struct ifreq *)data;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                     s, error = 0;
 
        s = splnet();
@@ -1402,8 +1401,6 @@ axe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        axe_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_axen.c b/sys/dev/usb/if_axen.c
index cb761ab..68de708 100644
--- a/sys/dev/usb/if_axen.c
+++ b/sys/dev/usb/if_axen.c
@@ -1393,7 +1393,6 @@ axen_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct axen_softc       *sc = ifp->if_softc;
        struct ifreq            *ifr = (struct ifreq *)data;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                     s;
        int                     error = 0;
 
@@ -1404,8 +1403,6 @@ axen_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        axen_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_cdce.c b/sys/dev/usb/if_cdce.c
index d0b4585..9a4ea62 100644
--- a/sys/dev/usb/if_cdce.c
+++ b/sys/dev/usb/if_cdce.c
@@ -509,7 +509,6 @@ int
 cdce_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct cdce_softc       *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                      s, error = 0;
 
        if (usbd_is_dying(sc->cdce_udev))
@@ -522,8 +521,6 @@ cdce_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        cdce_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->cdce_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_cdcef.c b/sys/dev/usb/if_cdcef.c
index 1fe0adc..0b0191f 100644
--- a/sys/dev/usb/if_cdcef.c
+++ b/sys/dev/usb/if_cdcef.c
@@ -458,7 +458,6 @@ int
 cdcef_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct cdcef_softc      *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                      s, error = 0;
 
        s = splnet();
@@ -468,8 +467,6 @@ cdcef_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        cdcef_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_cue.c b/sys/dev/usb/if_cue.c
index 9c62e5f..a32d869 100644
--- a/sys/dev/usb/if_cue.c
+++ b/sys/dev/usb/if_cue.c
@@ -1041,7 +1041,6 @@ int
 cue_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct cue_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                     s, error = 0;
 
        if (usbd_is_dying(sc->cue_udev))
@@ -1053,12 +1052,6 @@ cue_ioctl(struct ifnet *ifp, u_long command, caddr_t 
data)
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
                cue_init(sc);
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       arp_ifinit(&sc->arpcom, ifa);
-                       break;
-               }
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_kue.c b/sys/dev/usb/if_kue.c
index 9881333..747ae3c 100644
--- a/sys/dev/usb/if_kue.c
+++ b/sys/dev/usb/if_kue.c
@@ -998,7 +998,6 @@ int
 kue_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct kue_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                     s, error = 0;
 
        DPRINTFN(5,("%s: %s: enter\n", sc->kue_dev.dv_xname,__func__));
@@ -1019,12 +1018,6 @@ kue_ioctl(struct ifnet *ifp, u_long command, caddr_t 
data)
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
                kue_init(sc);
-
-               switch (ifa->ifa_addr->sa_family) {
-               case AF_INET:
-                       arp_ifinit(&sc->arpcom, ifa);
-                       break;
-               }
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_mos.c b/sys/dev/usb/if_mos.c
index b0a737d..613a3d7 100644
--- a/sys/dev/usb/if_mos.c
+++ b/sys/dev/usb/if_mos.c
@@ -1263,7 +1263,6 @@ mos_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct mos_softc        *sc = ifp->if_softc;
        struct ifreq            *ifr = (struct ifreq *)data;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                     s, error = 0;
 
        s = splnet();
@@ -1273,8 +1272,6 @@ mos_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        mos_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_otus.c b/sys/dev/usb/if_otus.c
index 7b722e4..f1a30b2 100644
--- a/sys/dev/usb/if_otus.c
+++ b/sys/dev/usb/if_otus.c
@@ -1474,7 +1474,6 @@ otus_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct otus_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1487,10 +1486,7 @@ otus_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_ral.c b/sys/dev/usb/if_ral.c
index 277ac43..0d94d4d 100644
--- a/sys/dev/usb/if_ral.c
+++ b/sys/dev/usb/if_ral.c
@@ -1314,7 +1314,6 @@ ural_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct ural_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1327,10 +1326,7 @@ ural_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_rsu.c b/sys/dev/usb/if_rsu.c
index e995b39..c9e40a1 100644
--- a/sys/dev/usb/if_rsu.c
+++ b/sys/dev/usb/if_rsu.c
@@ -1664,7 +1664,6 @@ rsu_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct rsu_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1677,10 +1676,7 @@ rsu_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_rum.c b/sys/dev/usb/if_rum.c
index 02e07cf..672638e 100644
--- a/sys/dev/usb/if_rum.c
+++ b/sys/dev/usb/if_rum.c
@@ -1318,7 +1318,6 @@ rum_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct rum_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1331,10 +1330,7 @@ rum_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_run.c b/sys/dev/usb/if_run.c
index b5f0736..773617c 100644
--- a/sys/dev/usb/if_run.c
+++ b/sys/dev/usb/if_run.c
@@ -2589,7 +2589,6 @@ run_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct run_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -2602,10 +2601,7 @@ run_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_smsc.c b/sys/dev/usb/if_smsc.c
index 616f075..4923ccd 100644
--- a/sys/dev/usb/if_smsc.c
+++ b/sys/dev/usb/if_smsc.c
@@ -861,7 +861,6 @@ smsc_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct smsc_softc       *sc = ifp->if_softc;
        struct ifreq            *ifr = (struct ifreq *)data;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                     s, error = 0;
 
        s = splnet();
@@ -871,8 +870,6 @@ smsc_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        smsc_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_uath.c b/sys/dev/usb/if_uath.c
index 9a4f54d..9d43f68 100644
--- a/sys/dev/usb/if_uath.c
+++ b/sys/dev/usb/if_uath.c
@@ -1552,7 +1552,6 @@ uath_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct uath_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -1560,10 +1559,7 @@ uath_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_udav.c b/sys/dev/usb/if_udav.c
index 715b94b..e0a793a 100644
--- a/sys/dev/usb/if_udav.c
+++ b/sys/dev/usb/if_udav.c
@@ -1133,7 +1133,6 @@ int
 udav_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct udav_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1149,9 +1148,6 @@ udav_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        udav_init(ifp);
-
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_ugl.c b/sys/dev/usb/if_ugl.c
index 6e16928..0589030 100644
--- a/sys/dev/usb/if_ugl.c
+++ b/sys/dev/usb/if_ugl.c
@@ -760,7 +760,6 @@ int
 ugl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct ugl_softc        *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                     s, error = 0;
 
        if (usbd_is_dying(sc->sc_udev))
@@ -776,8 +775,6 @@ ugl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        ugl_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_upgt.c b/sys/dev/usb/if_upgt.c
index 381ae28..f151b6c 100644
--- a/sys/dev/usb/if_upgt.c
+++ b/sys/dev/usb/if_upgt.c
@@ -1139,7 +1139,6 @@ upgt_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct upgt_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
        uint8_t chan;
@@ -1148,10 +1147,7 @@ upgt_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_url.c b/sys/dev/usb/if_url.c
index e785409..1da75f0 100644
--- a/sys/dev/usb/if_url.c
+++ b/sys/dev/usb/if_url.c
@@ -1000,7 +1000,6 @@ int
 url_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct url_softc *sc = ifp->if_softc;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct ifreq *ifr = (struct ifreq *)data;
        int s, error = 0;
 
@@ -1016,8 +1015,6 @@ url_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        url_init(ifp);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_urndis.c b/sys/dev/usb/if_urndis.c
index e059263..962e72e 100644
--- a/sys/dev/usb/if_urndis.c
+++ b/sys/dev/usb/if_urndis.c
@@ -968,7 +968,6 @@ int
 urndis_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
        struct urndis_softc     *sc = ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                      s, error = 0;
 
        if (usbd_is_dying(sc->sc_udev))
@@ -981,8 +980,6 @@ urndis_ioctl(struct ifnet *ifp, u_long command, caddr_t 
data)
                ifp->if_flags |= IFF_UP;
                if (!(ifp->if_flags & IFF_RUNNING))
                        urndis_init(sc);
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_arpcom, ifa);
                break;
 
        case SIOCSIFFLAGS:
diff --git a/sys/dev/usb/if_urtw.c b/sys/dev/usb/if_urtw.c
index a99a73e..9c9e9f7 100644
--- a/sys/dev/usb/if_urtw.c
+++ b/sys/dev/usb/if_urtw.c
@@ -2332,7 +2332,6 @@ urtw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct urtw_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -2345,10 +2344,7 @@ urtw_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_urtwn.c b/sys/dev/usb/if_urtwn.c
index 26acfce..99e31e2 100644
--- a/sys/dev/usb/if_urtwn.c
+++ b/sys/dev/usb/if_urtwn.c
@@ -2200,7 +2200,6 @@ urtwn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct urtwn_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -2213,10 +2212,7 @@ urtwn_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/dev/usb/if_zyd.c b/sys/dev/usb/if_zyd.c
index 5d0eb82..53242fd 100644
--- a/sys/dev/usb/if_zyd.c
+++ b/sys/dev/usb/if_zyd.c
@@ -2301,7 +2301,6 @@ zyd_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct zyd_softc *sc = ifp->if_softc;
        struct ieee80211com *ic = &sc->sc_ic;
-       struct ifaddr *ifa;
        struct ifreq *ifr;
        int s, error = 0;
 
@@ -2309,10 +2308,7 @@ zyd_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
        switch (cmd) {
        case SIOCSIFADDR:
-               ifa = (struct ifaddr *)data;
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&ic->ic_ac, ifa);
                /* FALLTHROUGH */
        case SIOCSIFFLAGS:
                if (ifp->if_flags & IFF_UP) {
diff --git a/sys/net/if.c b/sys/net/if.c
index 129a7e8..fd58d6a 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -2523,11 +2523,6 @@ ifnewlladdr(struct ifnet *ifp)
        ifrq.ifr_flags = ifp->if_flags;
        (*ifp->if_ioctl)(ifp, SIOCSIFFLAGS, (caddr_t)&ifrq);
 
-       TAILQ_FOREACH(ifa, &ifp->if_addrlist, ifa_list) {
-               if (ifa->ifa_addr != NULL &&
-                   ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit((struct arpcom *)ifp, ifa);
-       }
 #ifdef INET6
        /*
         * Update the link-local address.  Don't do it if we're
diff --git a/sys/net/if_trunk.c b/sys/net/if_trunk.c
index 2c2d82d..dbad149 100644
--- a/sys/net/if_trunk.c
+++ b/sys/net/if_trunk.c
@@ -619,7 +619,6 @@ trunk_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        struct trunk_reqall *ra = (struct trunk_reqall *)data;
        struct trunk_reqport *rp = (struct trunk_reqport *)data, rpbuf;
        struct ifreq *ifr = (struct ifreq *)data;
-       struct ifaddr *ifa = (struct ifaddr *)data;
        struct trunk_port *tp;
        struct ifnet *tpif;
        int s, i, error = 0;
@@ -737,8 +736,6 @@ trunk_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
                break;
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&tr->tr_ac, ifa);
                error = ENETRESET;
                break;
        case SIOCSIFFLAGS:
diff --git a/sys/net/if_tun.c b/sys/net/if_tun.c
index 03b62d4..39830af 100644
--- a/sys/net/if_tun.c
+++ b/sys/net/if_tun.c
@@ -490,7 +490,6 @@ tun_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct tun_softc        *tp = (struct tun_softc *)(ifp->if_softc);
        struct ifreq            *ifr = (struct ifreq *)data;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        int                      error = 0, s;
 
        s = splnet();
@@ -499,15 +498,6 @@ tun_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        case SIOCSIFADDR:
                tun_init(tp);
                TUNDEBUG(("%s: address set\n", ifp->if_xname));
-               if (tp->tun_flags & TUN_LAYER2) {
-                       switch (ifa->ifa_addr->sa_family) {
-                       case AF_INET:
-                               arp_ifinit(&tp->arpcom, ifa);
-                               break;
-                       default:
-                               break;
-                       }
-               }
                break;
        case SIOCSIFDSTADDR:
                tun_init(tp);
diff --git a/sys/net/if_vether.c b/sys/net/if_vether.c
index 5854e04..7a3b518 100644
--- a/sys/net/if_vether.c
+++ b/sys/net/if_vether.c
@@ -143,15 +143,12 @@ int
 vetherioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct vether_softc     *sc = (struct vether_softc *)ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        struct ifreq            *ifr = (struct ifreq *)data;
        int                      error = 0, link_state;
 
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c
index d9f1772..228a30b 100644
--- a/sys/net/if_vlan.c
+++ b/sys/net/if_vlan.c
@@ -582,7 +582,6 @@ int
 vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct proc     *p = curproc;   /* XXX */
-       struct ifaddr   *ifa;
        struct ifnet    *pr;
        struct ifreq    *ifr;
        struct ifvlan   *ifv;
@@ -590,15 +589,12 @@ vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        int              error = 0, s;
 
        ifr = (struct ifreq *)data;
-       ifa = (struct ifaddr *)data;
        ifv = ifp->if_softc;
 
        switch (cmd) {
        case SIOCSIFADDR:
                if (ifv->ifv_p != NULL) {
                        ifp->if_flags |= IFF_UP;
-                       if (ifa->ifa_addr->sa_family == AF_INET)
-                               arp_ifinit(&ifv->ifv_ac, ifa);
                } else
                        error = EINVAL;
                break;
diff --git a/sys/net/if_vxlan.c b/sys/net/if_vxlan.c
index d1ff279..25399df 100644
--- a/sys/net/if_vxlan.c
+++ b/sys/net/if_vxlan.c
@@ -328,7 +328,6 @@ int
 vxlanioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
        struct vxlan_softc      *sc = (struct vxlan_softc *)ifp->if_softc;
-       struct ifaddr           *ifa = (struct ifaddr *)data;
        struct ifreq            *ifr = (struct ifreq *)data;
        struct if_laddrreq      *lifr = (struct if_laddrreq *)data;
        int                      error = 0, s;
@@ -336,8 +335,6 @@ vxlanioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        switch (cmd) {
        case SIOCSIFADDR:
                ifp->if_flags |= IFF_UP;
-               if (ifa->ifa_addr->sa_family == AF_INET)
-                       arp_ifinit(&sc->sc_ac, ifa);
                /* FALLTHROUGH */
 
        case SIOCSIFFLAGS:
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index d78a0ff..40b6ed1 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -817,11 +817,6 @@ arpproxy(struct in_addr in, unsigned int rtableid)
        return (found);
 }
 
-void
-arp_ifinit(struct arpcom *ac, struct ifaddr *ifa)
-{
-}
-
 /*
  * Called from Ethernet interrupt handlers
  * when ether packet type ETHERTYPE_REVARP
diff --git a/sys/netinet/if_ether.h b/sys/netinet/if_ether.h
index fc6b2ee..2dc9810 100644
--- a/sys/netinet/if_ether.h
+++ b/sys/netinet/if_ether.h
@@ -196,7 +196,6 @@ void        arpwhohas(struct arpcom *, struct in_addr *);
 void   arpintr(void);
 int    arpresolve(struct ifnet *,
            struct rtentry *, struct mbuf *, struct sockaddr *, u_char *);
-void   arp_ifinit(struct arpcom *, struct ifaddr *);
 void   arp_rtrequest(struct ifnet *, int, struct rtentry *);
 
 int    ether_addmulti(struct ifreq *, struct arpcom *);


-- 
Ossi Herrala

Reply via email to