Message ID | 1462439856-51788-4-git-send-email-john@phrozen.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, May 05, 2016 at 11:17:36AM +0200, John Crispin wrote: > If an external Gigabit PHY is connected to either of the MACs we need to > tell the to use a RX delay. Not doing so will result in heavy packet loss > and/or data corruption of RX traffic. Hi John Is this comment correct? Reading the code, all this switch statement does is select between RGMII, MII and RMII. It has nothing to do with delay. I suspect the PHY is doing the delay, not the MAC, since you pass the phy mode to of_phy_connect(). If my interpretation of the code is correct, you might also want to handle PHY_INTERFACE_MODE_RGMII_TXID and PHY_INTERFACE_MODE_RGMII_ID which are also RGMII modes. Andrew
On 05/05/2016 14:13, Andrew Lunn wrote: > On Thu, May 05, 2016 at 11:17:36AM +0200, John Crispin wrote: >> If an external Gigabit PHY is connected to either of the MACs we need to >> tell the to use a RX delay. Not doing so will result in heavy packet loss >> and/or data corruption of RX traffic. > > Hi John > > Is this comment correct? Reading the code, all this switch statement > does is select between RGMII, MII and RMII. It has nothing to do with > delay. I suspect the PHY is doing the delay, not the MAC, since you > pass the phy mode to of_phy_connect(). > > If my interpretation of the code is correct, you might also want to > handle PHY_INTERFACE_MODE_RGMII_TXID and PHY_INTERFACE_MODE_RGMII_ID > which are also RGMII modes. > > Andrew Hi Andrew, the comment is indeed incorrect and the PHY needs to handle the delay. i will send a V2 and also add _TXID and _ID John
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index d397bec..41cdc0d 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -226,6 +226,7 @@ static int mtk_phy_connect(struct mtk_mac *mac) return -ENODEV; switch (of_get_phy_mode(np)) { + case PHY_INTERFACE_MODE_RGMII_RXID: case PHY_INTERFACE_MODE_RGMII: ge_mode = 0; break;
If an external Gigabit PHY is connected to either of the MACs we need to tell the to use a RX delay. Not doing so will result in heavy packet loss and/or data corruption of RX traffic. Signed-off-by: John Crispin <john@phrozen.org> --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 1 + 1 file changed, 1 insertion(+)