Date: Fri, 16 Sep 2022 17:40:45 GMT From: Mitchell Horne <mhorne@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: 9465af5ee2de - stable/13 - if_dwc: fix reinitialization with changed MAC Message-ID: <202209161740.28GHejjj022098@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=9465af5ee2de0374b143802ea32823c45f3d73be commit 9465af5ee2de0374b143802ea32823c45f3d73be Author: Jiahao LI <jiahali@blackberry.com> AuthorDate: 2022-09-08 15:50:37 +0000 Commit: Mitchell Horne <mhorne@FreeBSD.org> CommitDate: 2022-09-16 17:34:48 +0000 if_dwc: fix reinitialization with changed MAC It was observed that on RockPro64 hardware, the dwc interface is unable to receive packets after being assigned a new MAC address. The fix is simply to call mii_mediachg() before touching any device registers in dwc_init_locked(). This is consistent with what the OpenBSD driver does. PR: 263820 MFC after: 1 week (cherry picked from commit 6501fcdc0a97faa3c59f6ece314bf7754303db6f) --- sys/dev/dwc/if_dwc.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sys/dev/dwc/if_dwc.c b/sys/dev/dwc/if_dwc.c index 761f4a33ab43..8865c79ccc0c 100644 --- a/sys/dev/dwc/if_dwc.c +++ b/sys/dev/dwc/if_dwc.c @@ -1166,6 +1166,12 @@ dwc_init_locked(struct dwc_softc *sc) if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) return; + /* + * Call mii_mediachg() which will call back into dwc_miibus_statchg() + * to set up the remaining config registers based on current media. + */ + mii_mediachg(sc->mii_softc); + dwc_setup_rxfilter(sc); dwc_setup_core(sc); dwc_enable_mac(sc, true); @@ -1174,11 +1180,6 @@ dwc_init_locked(struct dwc_softc *sc) if_setdrvflagbits(ifp, IFF_DRV_RUNNING, IFF_DRV_OACTIVE); - /* - * Call mii_mediachg() which will call back into dwc_miibus_statchg() - * to set up the remaining config registers based on current media. - */ - mii_mediachg(sc->mii_softc); callout_reset(&sc->dwc_callout, hz, dwc_tick, sc); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202209161740.28GHejjj022098>