All of lore.kernel.org
 help / color / mirror / Atom feed
* [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
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ 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] 7+ messages in thread

* [PATCH 1/2] net: qcom/emac: configure the external phy to allow pause frames
  2016-11-07 16:51 [PATCH 0/2] net: qcom/emac: ensure that pause frames are enabled Timur Tabi
@ 2016-11-07 16:51 ` Timur Tabi
  2016-11-07 16:51 ` [PATCH 2/2] [v2] net: qcom/emac: enable flow control if requested Timur Tabi
  2016-11-09 23:45 ` [PATCH 0/2] net: qcom/emac: ensure that pause frames are enabled David Miller
  2 siblings, 0 replies; 7+ messages in thread
From: Timur Tabi @ 2016-11-07 16:51 UTC (permalink / raw)
  To: David Miller, Florian Fainelli, alokc, 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.

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
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] 7+ messages in thread

* [PATCH 2/2] [v2] net: qcom/emac: enable flow control if requested
  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
@ 2016-11-07 16:51 ` Timur Tabi
  2016-11-09 23:45 ` [PATCH 0/2] net: qcom/emac: ensure that pause frames are enabled David Miller
  2 siblings, 0 replies; 7+ messages in thread
From: Timur Tabi @ 2016-11-07 16:51 UTC (permalink / raw)
  To: David Miller, Florian Fainelli, alokc, netdev

If the PHY has been configured to allow pause frames, then the MAC
should be configured to generate and/or accept those frames.

Signed-off-by: Timur Tabi <timur@codeaurora.org>
---

v2: fix calculation when TXFC should be set

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

diff --git a/drivers/net/ethernet/qualcomm/emac/emac-mac.c b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
index 70a55dc..0b4deb3 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac-mac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
@@ -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;
-- 
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] 7+ messages in thread

* Re: [PATCH 0/2] net: qcom/emac: ensure that pause frames are enabled
  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
  2016-11-07 16:51 ` [PATCH 2/2] [v2] net: qcom/emac: enable flow control if requested Timur Tabi
@ 2016-11-09 23:45 ` David Miller
  2 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2016-11-09 23:45 UTC (permalink / raw)
  To: timur; +Cc: f.fainelli, alokc, netdev

From: Timur Tabi <timur@codeaurora.org>
Date: Mon,  7 Nov 2016 10:51:39 -0600

> 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.

Series applied, thanks.

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

* Re: [PATCH 1/2] net: qcom/emac: configure the external phy to allow pause frames
  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:33 ` Florian Fainelli
@ 2016-11-01 18:34 ` Timur Tabi
  1 sibling, 0 replies; 7+ messages in thread
From: Timur Tabi @ 2016-11-01 18:34 UTC (permalink / raw)
  To: David Miller, Florian Fainelli, netdev

Timur Tabi wrote:
> 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>

Ugh, I forgot to include an introductory post.  Coming right up.


-- 
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] 7+ messages in thread

* Re: [PATCH 1/2] net: qcom/emac: configure the external phy to allow pause frames
  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:33 ` Florian Fainelli
  2016-11-01 18:34 ` Timur Tabi
  1 sibling, 0 replies; 7+ messages in thread
From: Florian Fainelli @ 2016-11-01 18:33 UTC (permalink / raw)
  To: Timur Tabi, David Miller, netdev

On 11/01/2016 11:30 AM, Timur Tabi wrote:
> 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>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

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

* [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:33 ` Florian Fainelli
  2016-11-01 18:34 ` Timur Tabi
  0 siblings, 2 replies; 7+ 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] 7+ messages in thread

end of thread, other threads:[~2016-11-09 23:46 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2016-11-07 16:51 ` [PATCH 2/2] [v2] net: qcom/emac: enable flow control if requested Timur Tabi
2016-11-09 23:45 ` [PATCH 0/2] net: qcom/emac: ensure that pause frames are enabled David Miller
  -- strict thread matches above, loose matches on Subject: below --
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:33 ` Florian Fainelli
2016-11-01 18:34 ` Timur Tabi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.