netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error
@ 2010-10-19  0:10 Guo-Fu Tseng
  2010-10-19  0:10 ` [PATCH net-next-2.6 2/5] jme: Add comment in jme_set_settings Guo-Fu Tseng
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Guo-Fu Tseng @ 2010-10-19  0:10 UTC (permalink / raw)
  To: David Miller; +Cc: Guo-Fu Tseng, linux-netdev, stable

From: Guo-Fu Tseng <cooldavid@cooldavid.org>

Adding phy_on in opposition to phy_off.

Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Cc: <stable@kernel.org>
---
 drivers/net/jme.c |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/net/jme.c b/drivers/net/jme.c
index c04c096..e04f180 100644
--- a/drivers/net/jme.c
+++ b/drivers/net/jme.c
@@ -1574,6 +1574,16 @@ jme_free_irq(struct jme_adapter *jme)
 	}
 }
 
+static inline void
+jme_phy_on(struct jme_adapter *jme)
+{
+	u32 bmcr;
+
+	bmcr = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_BMCR);
+	bmcr &= ~BMCR_PDOWN;
+	jme_mdio_write(jme->dev, jme->mii_if.phy_id, MII_BMCR, bmcr);
+}
+
 static int
 jme_open(struct net_device *netdev)
 {
@@ -1594,10 +1604,12 @@ jme_open(struct net_device *netdev)
 
 	jme_start_irq(jme);
 
-	if (test_bit(JME_FLAG_SSET, &jme->flags))
+	if (test_bit(JME_FLAG_SSET, &jme->flags)) {
+		jme_phy_on(jme);
 		jme_set_settings(netdev, &jme->old_ecmd);
-	else
+	} else {
 		jme_reset_phy_processor(jme);
+	}
 
 	jme_reset_link(jme);
 
@@ -3005,10 +3017,12 @@ jme_resume(struct pci_dev *pdev)
 	jme_clear_pm(jme);
 	pci_restore_state(pdev);
 
-	if (test_bit(JME_FLAG_SSET, &jme->flags))
+	if (test_bit(JME_FLAG_SSET, &jme->flags)) {
+		jme_phy_on(jme);
 		jme_set_settings(netdev, &jme->old_ecmd);
-	else
+	} else {
 		jme_reset_phy_processor(jme);
+	}
 
 	jme_start_irq(jme);
 	netif_device_attach(netdev);
-- 
1.7.2.2


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

* [PATCH net-next-2.6 2/5] jme: Add comment in jme_set_settings
  2010-10-19  0:10 [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error Guo-Fu Tseng
@ 2010-10-19  0:10 ` Guo-Fu Tseng
  2010-10-19  0:10 ` [PATCH net-next-2.6 3/5] jme: Prevent possible read re-order error Guo-Fu Tseng
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Guo-Fu Tseng @ 2010-10-19  0:10 UTC (permalink / raw)
  To: David Miller; +Cc: Guo-Fu Tseng, linux-netdev

From: Guo-Fu Tseng <cooldavid@cooldavid.org>

Explains what `fdc` variable is for.

Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
---
 drivers/net/jme.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/jme.c b/drivers/net/jme.c
index e04f180..0ea0da3 100644
--- a/drivers/net/jme.c
+++ b/drivers/net/jme.c
@@ -2394,6 +2394,10 @@ jme_set_settings(struct net_device *netdev,
 	if (ecmd->speed == SPEED_1000 && ecmd->autoneg != AUTONEG_ENABLE)
 		return -EINVAL;
 
+	/*
+	 * Check If user changed duplex only while force_media.
+	 * Hardware would not generate link change interrupt.
+	 */
 	if (jme->mii_if.force_media &&
 	ecmd->autoneg != AUTONEG_ENABLE &&
 	(jme->mii_if.full_duplex != ecmd->duplex))
@@ -2403,10 +2407,9 @@ jme_set_settings(struct net_device *netdev,
 	rc = mii_ethtool_sset(&(jme->mii_if), ecmd);
 	spin_unlock_bh(&jme->phy_lock);
 
-	if (!rc && fdc)
-		jme_reset_link(jme);
-
 	if (!rc) {
+		if (fdc)
+			jme_reset_link(jme);
 		set_bit(JME_FLAG_SSET, &jme->flags);
 		jme->old_ecmd = *ecmd;
 	}
-- 
1.7.2.2


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

* [PATCH net-next-2.6 3/5] jme: Prevent possible read re-order error
  2010-10-19  0:10 [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error Guo-Fu Tseng
  2010-10-19  0:10 ` [PATCH net-next-2.6 2/5] jme: Add comment in jme_set_settings Guo-Fu Tseng
@ 2010-10-19  0:10 ` Guo-Fu Tseng
  2010-10-19  0:10 ` [PATCH net-next-2.6 4/5] jme: Adding mii-tool support Guo-Fu Tseng
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Guo-Fu Tseng @ 2010-10-19  0:10 UTC (permalink / raw)
  To: David Miller; +Cc: Guo-Fu Tseng, linux-netdev

From: Guo-Fu Tseng <cooldavid@cooldavid.org>

Adding read memory barrier in between flag reading and data reading of
receive descriptors. This prevents the data being read before hardware
complete writing informations.

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
---
 drivers/net/jme.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/net/jme.c b/drivers/net/jme.c
index 0ea0da3..095f899 100644
--- a/drivers/net/jme.c
+++ b/drivers/net/jme.c
@@ -989,6 +989,7 @@ jme_process_receive(struct jme_adapter *jme, int limit)
 			goto out;
 		--limit;
 
+		rmb();
 		desccnt = rxdesc->descwb.desccnt & RXWBDCNT_DCNT;
 
 		if (unlikely(desccnt > 1 ||
-- 
1.7.2.2


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

* [PATCH net-next-2.6 4/5] jme: Adding mii-tool support
  2010-10-19  0:10 [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error Guo-Fu Tseng
  2010-10-19  0:10 ` [PATCH net-next-2.6 2/5] jme: Add comment in jme_set_settings Guo-Fu Tseng
  2010-10-19  0:10 ` [PATCH net-next-2.6 3/5] jme: Prevent possible read re-order error Guo-Fu Tseng
@ 2010-10-19  0:10 ` Guo-Fu Tseng
  2010-10-19  0:10 ` [PATCH net-next-2.6 5/5] jme: Advance version number Guo-Fu Tseng
  2010-10-21 10:12 ` [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: Guo-Fu Tseng @ 2010-10-19  0:10 UTC (permalink / raw)
  To: David Miller; +Cc: Guo-Fu Tseng, linux-netdev

From: Guo-Fu Tseng <cooldavid@cooldavid.org>

Adding mii-tool support for some distribution only have mii-tool
installed by default.

Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
---
 drivers/net/jme.c |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/drivers/net/jme.c b/drivers/net/jme.c
index 095f899..c34c70f 100644
--- a/drivers/net/jme.c
+++ b/drivers/net/jme.c
@@ -2411,8 +2411,37 @@ jme_set_settings(struct net_device *netdev,
 	if (!rc) {
 		if (fdc)
 			jme_reset_link(jme);
-		set_bit(JME_FLAG_SSET, &jme->flags);
 		jme->old_ecmd = *ecmd;
+		set_bit(JME_FLAG_SSET, &jme->flags);
+	}
+
+	return rc;
+}
+
+static int
+jme_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
+{
+	int rc;
+	struct jme_adapter *jme = netdev_priv(netdev);
+	struct mii_ioctl_data *mii_data = if_mii(rq);
+	unsigned int duplex_chg;
+
+	if (cmd == SIOCSMIIREG) {
+		u16 val = mii_data->val_in;
+		if (!(val & (BMCR_RESET|BMCR_ANENABLE)) &&
+		    (val & BMCR_SPEED1000))
+			return -EINVAL;
+	}
+
+	spin_lock_bh(&jme->phy_lock);
+	rc = generic_mii_ioctl(&jme->mii_if, mii_data, cmd, &duplex_chg);
+	spin_unlock_bh(&jme->phy_lock);
+
+	if (!rc && (cmd == SIOCSMIIREG)) {
+		if (duplex_chg)
+			jme_reset_link(jme);
+		jme_get_settings(netdev, &jme->old_ecmd);
+		set_bit(JME_FLAG_SSET, &jme->flags);
 	}
 
 	return rc;
@@ -2692,6 +2721,7 @@ static const struct net_device_ops jme_netdev_ops = {
 	.ndo_open		= jme_open,
 	.ndo_stop		= jme_close,
 	.ndo_validate_addr	= eth_validate_addr,
+	.ndo_do_ioctl		= jme_ioctl,
 	.ndo_start_xmit		= jme_start_xmit,
 	.ndo_set_mac_address	= jme_set_macaddr,
 	.ndo_set_multicast_list	= jme_set_multi,
@@ -2883,6 +2913,8 @@ jme_init_one(struct pci_dev *pdev,
 		jme->mii_if.supports_gmii = true;
 	else
 		jme->mii_if.supports_gmii = false;
+	jme->mii_if.phy_id_mask = 0x1F;
+	jme->mii_if.reg_num_mask = 0x1F;
 	jme->mii_if.mdio_read = jme_mdio_read;
 	jme->mii_if.mdio_write = jme_mdio_write;
 
-- 
1.7.2.2


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

* [PATCH net-next-2.6 5/5] jme: Advance version number
  2010-10-19  0:10 [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error Guo-Fu Tseng
                   ` (2 preceding siblings ...)
  2010-10-19  0:10 ` [PATCH net-next-2.6 4/5] jme: Adding mii-tool support Guo-Fu Tseng
@ 2010-10-19  0:10 ` Guo-Fu Tseng
  2010-10-21 10:12 ` [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: Guo-Fu Tseng @ 2010-10-19  0:10 UTC (permalink / raw)
  To: David Miller; +Cc: Guo-Fu Tseng, linux-netdev

From: Guo-Fu Tseng <cooldavid@cooldavid.org>

Advance version number and update copyright info

Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
---
 drivers/net/jme.c |    1 +
 drivers/net/jme.h |    3 ++-
 2 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/jme.c b/drivers/net/jme.c
index c34c70f..d7a975e 100644
--- a/drivers/net/jme.c
+++ b/drivers/net/jme.c
@@ -3,6 +3,7 @@
  *
  * Copyright 2008 JMicron Technology Corporation
  * http://www.jmicron.com/
+ * Copyright (c) 2009 - 2010 Guo-Fu Tseng <cooldavid@cooldavid.org>
  *
  * Author: Guo-Fu Tseng <cooldavid@cooldavid.org>
  *
diff --git a/drivers/net/jme.h b/drivers/net/jme.h
index 1360f68..eac0926 100644
--- a/drivers/net/jme.h
+++ b/drivers/net/jme.h
@@ -3,6 +3,7 @@
  *
  * Copyright 2008 JMicron Technology Corporation
  * http://www.jmicron.com/
+ * Copyright (c) 2009 - 2010 Guo-Fu Tseng <cooldavid@cooldavid.org>
  *
  * Author: Guo-Fu Tseng <cooldavid@cooldavid.org>
  *
@@ -25,7 +26,7 @@
 #define __JME_H_INCLUDED__
 
 #define DRV_NAME	"jme"
-#define DRV_VERSION	"1.0.6"
+#define DRV_VERSION	"1.0.7"
 #define PFX		DRV_NAME ": "
 
 #define PCI_DEVICE_ID_JMICRON_JMC250	0x0250
-- 
1.7.2.2


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

* Re: [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error
  2010-10-19  0:10 [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error Guo-Fu Tseng
                   ` (3 preceding siblings ...)
  2010-10-19  0:10 ` [PATCH net-next-2.6 5/5] jme: Advance version number Guo-Fu Tseng
@ 2010-10-21 10:12 ` David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2010-10-21 10:12 UTC (permalink / raw)
  To: cooldavid; +Cc: netdev, stable


All 5 patches applied, thanks.

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

end of thread, other threads:[~2010-10-21 10:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-19  0:10 [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error Guo-Fu Tseng
2010-10-19  0:10 ` [PATCH net-next-2.6 2/5] jme: Add comment in jme_set_settings Guo-Fu Tseng
2010-10-19  0:10 ` [PATCH net-next-2.6 3/5] jme: Prevent possible read re-order error Guo-Fu Tseng
2010-10-19  0:10 ` [PATCH net-next-2.6 4/5] jme: Adding mii-tool support Guo-Fu Tseng
2010-10-19  0:10 ` [PATCH net-next-2.6 5/5] jme: Advance version number Guo-Fu Tseng
2010-10-21 10:12 ` [PATCH net-next-2.6 1/5] jme: Fix PHY power-off error David Miller

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