Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Aug 2025 09:00:07 +0800
From:      Zhenlei Huang <zlei@FreeBSD.org>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>
Subject:   Re: git: 96a550e9dd89 - main - genet: Add a detach routine
Message-ID:  <C3B49CC9-5928-42A9-ACF6-6E70318253B7@FreeBSD.org>
In-Reply-To: <202508012009.571K9FBP097692@gitrepo.freebsd.org>
References:  <202508012009.571K9FBP097692@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help


> On Aug 2, 2025, at 4:09 AM, John Baldwin <jhb@FreeBSD.org> wrote:
>=20
> The branch main has been updated by jhb:
>=20
> URL: =
https://cgit.FreeBSD.org/src/commit/?id=3D96a550e9dd892f24a479da00ead93fbf=
aafb7733
>=20
> commit 96a550e9dd892f24a479da00ead93fbfaafb7733
> Author:     John Baldwin <jhb@FreeBSD.org>
> AuthorDate: 2025-08-01 20:07:30 +0000
> Commit:     John Baldwin <jhb@FreeBSD.org>
> CommitDate: 2025-08-01 20:07:30 +0000
>=20
>    genet: Add a detach routine
>=20
>    PR:             288309
>    Co-authored by: Mike Belanger <mibelanger@qnx.com>
>    MFC after:      2 weeks
> ---
> sys/arm64/broadcom/genet/if_genet.c | 35 =
+++++++++++++++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
>=20
> diff --git a/sys/arm64/broadcom/genet/if_genet.c =
b/sys/arm64/broadcom/genet/if_genet.c
> index 182b5582fb7c..013573f1551b 100644
> --- a/sys/arm64/broadcom/genet/if_genet.c
> +++ b/sys/arm64/broadcom/genet/if_genet.c
> @@ -201,6 +201,7 @@ struct gen_softc {
>=20
> static void gen_init(void *softc);
> static void gen_start(if_t ifp);
> +static void gen_stop(struct gen_softc *sc);
> static void gen_destroy(struct gen_softc *sc);
> static int gen_encap(struct gen_softc *sc, struct mbuf **mp);
> static int gen_parse_tx(struct mbuf *m, int csum_flags);
> @@ -379,6 +380,39 @@ gen_destroy(struct gen_softc *sc)
> 	}
> }
>=20
> +static int
> +gen_detach(device_t dev)
> +{
> +	struct gen_softc *sc;
> +	int error;
> +
> +	sc =3D device_get_softc(dev);
> +

~~~~~~
> +	GEN_LOCK(sc);
> +	gen_stop(sc);
> +	GEN_UNLOCK(sc);
> +	callout_drain(&sc->stat_ch);
> +	ether_ifdetach(sc->ifp);
~~~~~~

I guess the above logic want be wrapped by condition =
`device_is_attached(dev)` .

> +
> +	/* Detach the miibus */
> +	error =3D bus_generic_detach(dev);
> +	if (error !=3D 0)
> +		return (error);
> +
> +	/* clean up dma */
> +	gen_bus_dma_teardown(sc);
> +
> +	/* Release bus resources. */
> +	bus_teardown_intr(sc->dev, sc->res[_RES_IRQ1], sc->ih);
> +	bus_teardown_intr(sc->dev, sc->res[_RES_IRQ2], sc->ih2);
> +	bus_release_resources(sc->dev, gen_spec, sc->res);
> +
> +	if (sc->ifp !=3D NULL)
> +		if_free(sc->ifp);
> +	mtx_destroy(&sc->mtx);
> +	return (0);
> +}
> +
> static int
> gen_get_phy_mode(device_t dev)
> {
> @@ -1805,6 +1839,7 @@ static device_method_t gen_methods[] =3D {
> 	/* Device interface */
> 	DEVMETHOD(device_probe,		gen_probe),
> 	DEVMETHOD(device_attach,	gen_attach),
> +	DEVMETHOD(device_detach,	gen_detach),
>=20
> 	/* MII interface */
> 	DEVMETHOD(miibus_readreg,	gen_miibus_readreg),






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C3B49CC9-5928-42A9-ACF6-6E70318253B7>