[PATCH] gianfar: Fix half-duplex operation for non-MII/RMII interfaces
Anton Vorontsov
cbouatmailru at gmail.com
Thu Jun 25 07:50:41 EST 2009
On Thu, Jun 25, 2009 at 01:39:45AM +0400, Anton Vorontsov wrote:
> On Wed, Jun 24, 2009 at 04:25:06PM -0500, Andy Fleming wrote:
> [...]
> >>> My concern is that you will be detecting the GMII interface, and
> >>> disallowing half-duplex, despite the fact that the interface is
> >>> actually
> >>> running at 10 or 100 Mbit.
> >>
> >> Very interesting, though I'm not sure I'm completely following. :-)
> >>
> >> Are you saying that I should do this instead:
> >>
> >> if (!phydev->duplex &&
> >> (phyi == PHY_INTERFACE_MODE_MII ||
> >> phyi == PHY_INTERFACE_MODE_RMII ||
> >> (phyi == PHY_INTERFACE_MODE_GMII &&
> >> phydev->speed < 1000)))
> >> tempval &= ~MACCFG2_FULL_DUPLEX;
> >> else
> >> tempval |= MACCFG2_FULL_DUPLEX;
> >>
> >> i.e. we detected GMII interface initially, but it downgraded
> >> to MII since speed is < 1000, thus we can set half-duplex in MAC?
> >
> > Yeah, I think that works out more correctly.
>
> Cool, thanks.
>
> Do you happen to know how gianfar iface auto-detection works in HW?
> I mean, if we connect 100 Mbs link to the GMII PHY, then
> gfar_get_interface() would return MII, correct?
Stupid me. HW has nothing to do with this. GMII, just as you said,
is just a marker, comes from FSL_GIANFAR_DEV_HAS_GIGABIT flag.
--
Anton Vorontsov
email: cbouatmailru at gmail.com
irc://irc.freenode.net/bd2
More information about the Linuxppc-dev
mailing list