netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] net: qcom/emac: configure the external phy to allow pause frames
@ 2016-11-01 18:30 Timur Tabi
  2016-11-01 18:30 ` [PATCH 2/2] net: qcom/emac: enable flow control if requested Timur Tabi
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Timur Tabi @ 2016-11-01 18:30 UTC (permalink / raw)
  To: David Miller, Florian Fainelli, netdev

Pause frames are used to enable flow control.  A MAC can send and
receive pause frames in order to throttle traffic.  However, the PHY
must be configured to allow those frames to pass through.

Signed-off-by: Timur Tabi <timur@codeaurora.org>
---
 drivers/net/ethernet/qualcomm/emac/emac-mac.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/qualcomm/emac/emac-mac.c b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
index 6fb3bee..70a55dc 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac-mac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
@@ -1003,6 +1003,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);
 
-- 
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm
Technologies, Inc.  Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.

^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PATCH 0/2] net: qcom/emac: ensure that pause frames are enabled
@ 2016-11-07 16:51 Timur Tabi
  2016-11-07 16:51 ` [PATCH 1/2] net: qcom/emac: configure the external phy to allow pause frames Timur Tabi
  0 siblings, 1 reply; 8+ messages in thread
From: Timur Tabi @ 2016-11-07 16:51 UTC (permalink / raw)
  To: David Miller, Florian Fainelli, alokc, netdev

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.

Timur Tabi (2):
  net: qcom/emac: configure the external phy to allow pause frames
  [v2] net: qcom/emac: enable flow control if requested

 drivers/net/ethernet/qualcomm/emac/emac-mac.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

-- 
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm
Technologies, Inc.  Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-11-07 16:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-01 18:30 [PATCH 1/2] net: qcom/emac: configure the external phy to allow pause frames Timur Tabi
2016-11-01 18:30 ` [PATCH 2/2] net: qcom/emac: enable flow control if requested Timur Tabi
2016-11-01 18:34   ` Florian Fainelli
2016-11-01 19:05   ` Timur Tabi
2016-11-01 18:33 ` [PATCH 1/2] net: qcom/emac: configure the external phy to allow pause frames Florian Fainelli
2016-11-01 18:34 ` Timur Tabi
2016-11-01 18:40 ` [PATCH 0/2] net: qcom/emac: the emac driver requires " Timur Tabi
  -- strict thread matches above, loose matches on Subject: below --
2016-11-07 16:51 [PATCH 0/2] net: qcom/emac: ensure that pause frames are enabled Timur Tabi
2016-11-07 16:51 ` [PATCH 1/2] net: qcom/emac: configure the external phy to allow pause frames Timur Tabi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).