diff mbox

[net] Fix incorrect spinlock release in stmmac_ptp.c and incorrect PTP capabilities detection in PTP initialization.

Message ID 1387559974-31872-1-git-send-email-vbridgers2013@gmail.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Vince Bridgers Dec. 20, 2013, 5:19 p.m. UTC
This patch corrects a problem in stmmac_ptp.c, functions
stmmac_adjust_time and stmmac_adjust_freq where the incorrect spinlocks 
were released. This patch also addresses a problem in stmmac_main, 
function stmmac_init_ptp where the capability detection for 
advanced timestamping was masked by message masking. 

This patch was touch tested using linuxptp, and runs without the previously
observed instabilities. More extensive testing is ongoing.

Vince

Signed-off-by: Vince Bridgers <vbridgers2013@gmail.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |   20 +++++++++-----------
 drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c  |    4 ++--
 2 files changed, 11 insertions(+), 13 deletions(-)

Comments

David Miller Dec. 30, 2013, 3:38 a.m. UTC | #1
From: Vince Bridgers <vbridgers2013@gmail.com>
Date: Fri, 20 Dec 2013 11:19:34 -0600

> This patch corrects a problem in stmmac_ptp.c, functions
> stmmac_adjust_time and stmmac_adjust_freq where the incorrect spinlocks 
> were released. This patch also addresses a problem in stmmac_main, 
> function stmmac_init_ptp where the capability detection for 
> advanced timestamping was masked by message masking. 
> 
> This patch was touch tested using linuxptp, and runs without the previously
> observed instabilities. More extensive testing is ongoing.
> 
> Signed-off-by: Vince Bridgers <vbridgers2013@gmail.com>

Applied, but please provide a more suitable subject line next time.

Subject lines should, after "[PATCH net]" should have an appropriate
prefix followed by a colon and a space.

Here, that would be "stmmac: "

Also, your Subject line is exceedingly long, try to keep it down to
80 columns.  I edited it to be:

stmmac: Fix incorrect spinlock release and PTP cap detection.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 8a7a23a..797b56a 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -622,17 +622,15 @@  static int stmmac_init_ptp(struct stmmac_priv *priv)
 	if (!(priv->dma_cap.time_stamp || priv->dma_cap.atime_stamp))
 		return -EOPNOTSUPP;
 
-	if (netif_msg_hw(priv)) {
-		if (priv->dma_cap.time_stamp) {
-			pr_debug("IEEE 1588-2002 Time Stamp supported\n");
-			priv->adv_ts = 0;
-		}
-		if (priv->dma_cap.atime_stamp && priv->extend_desc) {
-			pr_debug
-			    ("IEEE 1588-2008 Advanced Time Stamp supported\n");
-			priv->adv_ts = 1;
-		}
-	}
+	priv->adv_ts = 0;
+	if (priv->dma_cap.atime_stamp && priv->extend_desc)
+		priv->adv_ts = 1;
+
+	if (netif_msg_hw(priv) && priv->dma_cap.time_stamp)
+		pr_debug("IEEE 1588-2002 Time Stamp supported\n");
+
+	if (netif_msg_hw(priv) && priv->adv_ts)
+		pr_debug("IEEE 1588-2008 Advanced Time Stamp supported\n");
 
 	priv->hw->ptp = &stmmac_ptp;
 	priv->hwts_tx_en = 0;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c
index b8b0eee..7680581 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c
@@ -56,7 +56,7 @@  static int stmmac_adjust_freq(struct ptp_clock_info *ptp, s32 ppb)
 
 	priv->hw->ptp->config_addend(priv->ioaddr, addend);
 
-	spin_unlock_irqrestore(&priv->lock, flags);
+	spin_unlock_irqrestore(&priv->ptp_lock, flags);
 
 	return 0;
 }
@@ -91,7 +91,7 @@  static int stmmac_adjust_time(struct ptp_clock_info *ptp, s64 delta)
 
 	priv->hw->ptp->adjust_systime(priv->ioaddr, sec, nsec, neg_adj);
 
-	spin_unlock_irqrestore(&priv->lock, flags);
+	spin_unlock_irqrestore(&priv->ptp_lock, flags);
 
 	return 0;
 }