Guruplug Server Plus working to some extent...
Milan Obuch
freebsd-arm at dino.sk
Sun Oct 24 21:22:44 UTC 2010
On Sunday 24 October 2010 13:14:38 Kristof Provost wrote:
> On 2010-10-21 23:13:21 (+0200), Milan Obuch <freebsd-arm at dino.sk> wrote:
> > Also, when I put mge1's ethernet link address (MAC) into .dts file, it is
> > initialised with this value, as expected. But nothing else changed -
> > receiving frames works, sending does not.
> >
> > Maybe it's time for some mge's source tweaking, but I have absolutelly no
> > idea where to begin.
>
> I suspect the PHY asignment. The current code tries to retrieve the PHY
> number from the dts but then probes for PHYs and uses the first one.
>
Well, it may be. I am no expert in this area, but what I do not understand is
how bad PHY assignment could affect sending frames but nor receiving. I would
expect with wrong assignment failing both, but, again, I am no expert here...
> Can you try the following patch? I unfortunately don't have hardware
> with two PHYs.
> Make sure you have the correct phy number set for mge1 (probably just
> 0x1) in your dts.
>
> It's probably not a final solution though as it relies on the dts for
> information which can be probed automatically.
>
> Index: dev/mge/if_mge.c
> ===================================================================
> --- dev/mge/if_mge.c (revision 214256)
> +++ dev/mge/if_mge.c (working copy)
> @@ -626,7 +626,6 @@
> mge_attach(device_t dev)
> {
> struct mge_softc *sc;
> - struct mii_softc *miisc;
> struct ifnet *ifp;
> uint8_t hwaddr[ETHER_ADDR_LEN];
> int i, error, phy;
> @@ -717,8 +716,7 @@
> sc->mii = device_get_softc(sc->miibus);
>
> /* Tell the MAC where to find the PHY so autoneg works */
> - miisc = LIST_FIRST(&sc->mii->mii_phys);
> - MGE_WRITE(sc, MGE_REG_PHYDEV, miisc->mii_phy);
> + MGE_WRITE(sc, MGE_REG_PHYDEV, phy);
>
> /* Attach interrupt handlers */
> for (i = 0; i < 2; ++i) {
>
Thanks for patch, but behavior did not changed. I played with .dts definition
for second port a bit, but it was a bit guesswork, and everytime receiving
frames worked and sending frames did not. I did not found good description of
.dts or the one I really understand details there :(
Milan
More information about the freebsd-arm
mailing list