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>