svn commit: r353864 - head/sys/arm/ralink
Gleb Smirnoff
glebius at FreeBSD.org
Mon Oct 21 18:13:25 UTC 2019
Author: glebius
Date: Mon Oct 21 18:13:24 2019
New Revision: 353864
URL: https://svnweb.freebsd.org/changeset/base/353864
Log:
Convert to if_foreach_llmaddr() KPI.
Modified:
head/sys/arm/ralink/if_fv.c
Modified: head/sys/arm/ralink/if_fv.c
==============================================================================
--- head/sys/arm/ralink/if_fv.c Mon Oct 21 18:13:19 2019 (r353863)
+++ head/sys/arm/ralink/if_fv.c Mon Oct 21 18:13:24 2019 (r353864)
@@ -200,8 +200,25 @@ DRIVER_MODULE(fvmdio, simplebus, fvmdio_driver, fvmdio
DRIVER_MODULE(mdio, fvmdio, mdio_driver, mdio_devclass, 0, 0);
#endif
-/* setup frame code refer dc code */
+static u_int
+fv_set_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt)
+{
+ uint16_t *sp = arg;
+ uint8_t *ma;
+ int i;
+ ma = LLADDR(sdl);
+ i = cnt * 6;
+ sp[i] = sp[i+1] = (ma[1] << 8 | ma[0]);
+ i += 2;
+ sp[i] = sp[i+1] = (ma[3] << 8 | ma[2]);
+ i += 2;
+ sp[i] = sp[i+1] = (ma[5] << 8 | ma[4]);
+
+ return (1);
+}
+
+/* setup frame code refer dc code */
static void
fv_setfilt(struct fv_softc *sc)
{
@@ -209,9 +226,7 @@ fv_setfilt(struct fv_softc *sc)
struct fv_desc *sframe;
int i;
struct ifnet *ifp;
- struct ifmultiaddr *ifma;
uint16_t *sp;
- uint8_t *ma;
ifp = sc->fv_ifp;
@@ -225,20 +240,7 @@ fv_setfilt(struct fv_softc *sc)
sframe->fv_addr = sc->fv_rdata.fv_sf_paddr;
sframe->fv_devcs = ADCTL_Tx_SETUP | FV_DMASIZE(FV_SFRAME_LEN);
- i = 0;
- if_maddr_rlock(ifp);
- CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
- if (ifma->ifma_addr->sa_family != AF_LINK)
- continue;
- ma = LLADDR((struct sockaddr_dl *)ifma->ifma_addr);
- sp[i] = sp[i+1] = (ma[1] << 8 | ma[0]);
- i += 2;
- sp[i] = sp[i+1] = (ma[3] << 8 | ma[2]);
- i += 2;
- sp[i] = sp[i+1] = (ma[5] << 8 | ma[4]);
- i += 2;
- }
- if_maddr_runlock(ifp);
+ i = if_foreach_llmaddr(ifp, fv_set_maddr, sp) * 6;
bcopy(IF_LLADDR(sc->fv_ifp), eaddr, ETHER_ADDR_LEN);
sp[90] = sp[91] = eaddr[0];
More information about the svn-src-all
mailing list