svn commit: r353848 - head/sys/dev/jme
Sergey Kandaurov
pluknet at gmail.com
Mon Oct 21 20:31:01 UTC 2019
пн, 21 окт. 2019 г. в 21:14, Gleb Smirnoff <glebius at freebsd.org>:
> Author: glebius
> Date: Mon Oct 21 18:11:43 2019
> New Revision: 353848
> URL: https://svnweb.freebsd.org/changeset/base/353848
>
> Log:
> Convert to if_foreach_llmaddr() KPI.
>
> Modified:
> head/sys/dev/jme/if_jme.c
>
> Modified: head/sys/dev/jme/if_jme.c
>
> ==============================================================================
> --- head/sys/dev/jme/if_jme.c Mon Oct 21 18:11:38 2019 (r353847)
> +++ head/sys/dev/jme/if_jme.c Mon Oct 21 18:11:43 2019 (r353848)
> @@ -3236,12 +3236,26 @@ jme_set_vlan(struct jme_softc *sc)
> CSR_WRITE_4(sc, JME_RXMAC, reg);
> }
>
> +static u_int
> +jme_hash_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt)
> +{
> + uint32_t crc, *mchash = arg;
> +
> + crc = ether_crc32_be(LLADDR(sdl), ETHER_ADDR_LEN);
> +
> + /* Just want the 6 least significant bits. */
> + crc &= 0x3f;
> +
> + /* Set the corresponding bit in the hash table. */
> + mchash[crc >> 5] |= 1 << (crc & 0x1f);
> +
> + return (1);
> +}
> +
> static void
> jme_set_filter(struct jme_softc *sc)
> {
> struct ifnet *ifp;
> - struct ifmultiaddr *ifma;
> - uint32_t crc;
> uint32_t mchash[2];
> uint32_t rxcfg;
>
> @@ -3276,21 +3290,7 @@ jme_set_filter(struct jme_softc *sc)
> */
> rxcfg |= RXMAC_MULTICAST;
> bzero(mchash, sizeof(mchash));
> -
> - if_maddr_rlock(ifp);
> - CK_STAILQ_FOREACH(ifma, &sc->jme_ifp->if_multiaddrs, ifma_link) {
> - if (ifma->ifma_addr->sa_family != AF_LINK)
> - continue;
> - crc = ether_crc32_be(LLADDR((struct sockaddr_dl *)
> - ifma->ifma_addr), ETHER_ADDR_LEN);
> -
> - /* Just want the 6 least significant bits. */
> - crc &= 0x3f;
> -
> - /* Set the corresponding bit in the hash table. */
> - mchash[crc >> 5] |= 1 << (crc & 0x1f);
> - }
> - if_maddr_runlock(ifp);
> + if_foreach_llmaddr(ifp, jme_hash_maddr, &mchash);
>
Should not be there just “mchash”?
You seems to be passing (uint32_t **),
also in tsec.
> CSR_WRITE_4(sc, JME_MAR0, mchash[0]);
> CSR_WRITE_4(sc, JME_MAR1, mchash[1]);
>
More information about the svn-src-all
mailing list