svn commit: r353861 - head/sys/dev/xilinx
Gleb Smirnoff
glebius at FreeBSD.org
Mon Oct 21 18:13:00 UTC 2019
Author: glebius
Date: Mon Oct 21 18:12:58 2019
New Revision: 353861
URL: https://svnweb.freebsd.org/changeset/base/353861
Log:
Convert to if_foreach_llmaddr() KPI.
Modified:
head/sys/dev/xilinx/if_xae.c
Modified: head/sys/dev/xilinx/if_xae.c
==============================================================================
--- head/sys/dev/xilinx/if_xae.c Mon Oct 21 18:12:40 2019 (r353860)
+++ head/sys/dev/xilinx/if_xae.c Mon Oct 21 18:12:58 2019 (r353861)
@@ -514,14 +514,40 @@ xae_media_change(struct ifnet * ifp)
return (error);
}
+static u_int
+xae_write_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt)
+{
+ struct xae_softc *sc = arg;
+ uint32_t reg;
+ uint8_t *ma;
+
+ if (cnt >= XAE_MULTICAST_TABLE_SIZE)
+ return (1);
+
+ ma = LLADDR(sdl);
+
+ reg = READ4(sc, XAE_FFC) & 0xffffff00;
+ reg |= cnt;
+ WRITE4(sc, XAE_FFC, reg);
+
+ reg = (ma[0]);
+ reg |= (ma[1] << 8);
+ reg |= (ma[2] << 16);
+ reg |= (ma[3] << 24);
+ WRITE4(sc, XAE_FFV(0), reg);
+
+ reg = ma[4];
+ reg |= ma[5] << 8;
+ WRITE4(sc, XAE_FFV(1), reg);
+
+ return (1);
+}
+
static void
xae_setup_rxfilter(struct xae_softc *sc)
{
- struct ifmultiaddr *ifma;
struct ifnet *ifp;
uint32_t reg;
- uint8_t *ma;
- int i;
XAE_ASSERT_LOCKED(sc);
@@ -539,33 +565,7 @@ xae_setup_rxfilter(struct xae_softc *sc)
reg &= ~FFC_PM;
WRITE4(sc, XAE_FFC, reg);
- if_maddr_rlock(ifp);
-
- i = 0;
- CK_STAILQ_FOREACH(ifma, &sc->ifp->if_multiaddrs, ifma_link) {
- if (ifma->ifma_addr->sa_family != AF_LINK)
- continue;
-
- if (i >= XAE_MULTICAST_TABLE_SIZE)
- break;
-
- ma = LLADDR((struct sockaddr_dl *)ifma->ifma_addr);
-
- reg = READ4(sc, XAE_FFC) & 0xffffff00;
- reg |= i++;
- WRITE4(sc, XAE_FFC, reg);
-
- reg = (ma[0]);
- reg |= (ma[1] << 8);
- reg |= (ma[2] << 16);
- reg |= (ma[3] << 24);
- WRITE4(sc, XAE_FFV(0), reg);
-
- reg = ma[4];
- reg |= ma[5] << 8;
- WRITE4(sc, XAE_FFV(1), reg);
- }
- if_maddr_runlock(ifp);
+ if_foreach_llmaddr(ifp, xae_write_maddr, sc);
}
/*
More information about the svn-src-all
mailing list