> Wiadomość napisana przez Mark Kettenis <mark.kette...@xs4all.nl> w dniu > 17.02.2024, o godz. 01:00: > > Driver for the onboard Ethernet on many boards with an Allwinner SoCs. > If you have one, please make sure your network connection still works > after applying this patch. > > Thanks, > > Mark >
I wanted to test this but decided to run "sysupgrade -s” first, and now my A64+ locks up after mounting partitions. Not sure whats’s going on. -- Krystian > > Index: dev/fdt/if_dwxe.c > =================================================================== > RCS file: /cvs/src/sys/dev/fdt/if_dwxe.c,v > retrieving revision 1.23 > diff -u -p -r1.23 if_dwxe.c > --- dev/fdt/if_dwxe.c 10 Nov 2023 15:51:19 -0000 1.23 > +++ dev/fdt/if_dwxe.c 16 Feb 2024 23:49:02 -0000 > @@ -374,8 +374,10 @@ dwxe_attach(struct device *parent, struc > { > struct dwxe_softc *sc = (void *)self; > struct fdt_attach_args *faa = aux; > + char phy_mode[16] = { 0 }; > struct ifnet *ifp; > uint32_t phy; > + int mii_flags = 0; > int node; > > sc->sc_node = faa->fa_node; > @@ -387,6 +389,16 @@ dwxe_attach(struct device *parent, struc > } > sc->sc_dmat = faa->fa_dmat; > > + OF_getprop(faa->fa_node, "phy-mode", phy_mode, sizeof(phy_mode)); > + if (strcmp(phy_mode, "rgmii") == 0) > + mii_flags |= MIIF_SETDELAY; > + else if (strcmp(phy_mode, "rgmii-rxid") == 0) > + mii_flags |= MIIF_SETDELAY | MIIF_RXID; > + else if (strcmp(phy_mode, "rgmii-txid") == 0) > + mii_flags |= MIIF_SETDELAY | MIIF_TXID; > + else if (strcmp(phy_mode, "rgmii-id") == 0) > + mii_flags |= MIIF_SETDELAY | MIIF_RXID | MIIF_TXID; > + > /* Lookup PHY. */ > phy = OF_getpropint(faa->fa_node, "phy-handle", 0); > node = OF_getnodebyphandle(phy); > @@ -394,6 +406,7 @@ dwxe_attach(struct device *parent, struc > sc->sc_phyloc = OF_getpropint(node, "reg", MII_PHY_ANY); > else > sc->sc_phyloc = MII_PHY_ANY; > + sc->sc_mii.mii_node = node; > > sc->sc_clk = clock_get_frequency(faa->fa_node, "stmmaceth"); > if (sc->sc_clk > 160000000) > @@ -435,7 +448,7 @@ dwxe_attach(struct device *parent, struc > ifmedia_init(&sc->sc_media, 0, dwxe_media_change, dwxe_media_status); > > mii_attach(self, &sc->sc_mii, 0xffffffff, sc->sc_phyloc, > - MII_OFFSET_ANY, MIIF_NOISOLATE); > + MII_OFFSET_ANY, MIIF_NOISOLATE | mii_flags); > if (LIST_FIRST(&sc->sc_mii.mii_phys) == NULL) { > printf("%s: no PHY found!\n", sc->sc_dev.dv_xname); > ifmedia_add(&sc->sc_media, IFM_ETHER|IFM_MANUAL, 0, NULL); >