mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-31 22:15:38 +00:00
Merge branch 'qcom-emac-pause'
Timur Tabi says: ==================== net: qcom/emac: ensure that pause frames are enabled The qcom emac driver experiences significant packet loss (through frame check sequence errors) if flow control is not enabled and the phy is not configured to allow pause frames to pass through it. Therefore, we need to enable flow control and force the phy to pass pause frames. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
fd6f24d75a
@ -575,10 +575,11 @@ void emac_mac_start(struct emac_adapter *adpt)
|
||||
|
||||
mac |= TXEN | RXEN; /* enable RX/TX */
|
||||
|
||||
/* We don't have ethtool support yet, so force flow-control mode
|
||||
* to 'full' always.
|
||||
*/
|
||||
mac |= TXFC | RXFC;
|
||||
/* Configure MAC flow control to match the PHY's settings. */
|
||||
if (phydev->pause)
|
||||
mac |= RXFC;
|
||||
if (phydev->pause != phydev->asym_pause)
|
||||
mac |= TXFC;
|
||||
|
||||
/* setup link speed */
|
||||
mac &= ~SPEED_MASK;
|
||||
@ -1003,6 +1004,12 @@ int emac_mac_up(struct emac_adapter *adpt)
|
||||
writel((u32)~DIS_INT, adpt->base + EMAC_INT_STATUS);
|
||||
writel(adpt->irq.mask, adpt->base + EMAC_INT_MASK);
|
||||
|
||||
/* Enable pause frames. Without this feature, the EMAC has been shown
|
||||
* to receive (and drop) frames with FCS errors at gigabit connections.
|
||||
*/
|
||||
adpt->phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
|
||||
adpt->phydev->advertising |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
|
||||
|
||||
adpt->phydev->irq = PHY_IGNORE_INTERRUPT;
|
||||
phy_start(adpt->phydev);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user