netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2 v2] pch_gbe: Do not abort probe on bad MAC
@ 2012-04-02  3:00 Tomoya MORINAGA
  2012-04-19 18:41 ` Greg KH
  0 siblings, 1 reply; 3+ messages in thread
From: Tomoya MORINAGA @ 2012-04-02  3:00 UTC (permalink / raw)
  To: stable
  Cc: Tomoya MORINAGA, Darren Hart, Arjan van de Ven, Alan Cox,
	Jeff Kirsher, David S. Miller, Paul Gortmaker, Jon Mason, netdev,
	Mark Brown, David Laight, Joe Perches

If the MAC is invalid or not implemented, do not abort the probe. Issue
a warning and prevent bringing the interface up until a MAC is set manually
(via ifconfig $IFACE hw ether $MAC).

Tested on two platforms, one with a valid MAC, the other without a MAC. The real
MAC is used if present, the interface fails to come up until the MAC is set on
the other. They successfully get an IP over DHCP and pass a simple ping and
login over ssh test.

This is meant to allow the Inforce SYS940X development board:
http://www.inforcecomputing.com/SYS940X_ECX.html
(and others suffering from a missing MAC) to work with the mainline kernel.
Without this patch, the probe will fail and the interface will not be created,
preventing the user from configuring the MAC manually.

This does not make any attempt to address a missing or invalid MAC for the
pch_phub driver.

commit: 2b53d07891630dead46d65c8f896955fd3ae0302
kernel version: 3.0, 3.2

Cc: stable@vger.kernel.org
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
CC: Arjan van de Ven <arjan@linux.intel.com>
CC: Alan Cox <alan@linux.intel.com>
CC: Tomoya MORINAGA <tomoya.rohm@gmail.com>
CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
CC: "David S. Miller" <davem@davemloft.net>
CC: Paul Gortmaker <paul.gortmaker@windriver.com>
CC: Jon Mason <jdmason@kudzu.us>
CC: netdev@vger.kernel.org
CC: Mark Brown <broonie@opensource.wolfsonmicro.com>
CC: David Laight <David.Laight@ACULAB.COM>
CC: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
---
v2:
  Retrieve change log and cc-/Signed-off lists.
---
 .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
index 48406ca..43c7b25 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
@@ -1745,6 +1745,12 @@ int pch_gbe_up(struct pch_gbe_adapter *adapter)
 	struct pch_gbe_rx_ring *rx_ring = adapter->rx_ring;
 	int err;
 
+	/* Ensure we have a valid MAC */
+	if (!is_valid_ether_addr(adapter->hw.mac.addr)) {
+		pr_err("Error: Invalid MAC address\n");
+		return -EINVAL;
+	}
+
 	/* hardware has been reset, we need to reload some things */
 	pch_gbe_set_multi(netdev);
 
@@ -2467,9 +2473,14 @@ static int pch_gbe_probe(struct pci_dev *pdev,
 
 	memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
 	if (!is_valid_ether_addr(netdev->dev_addr)) {
-		dev_err(&pdev->dev, "Invalid MAC Address\n");
-		ret = -EIO;
-		goto err_free_adapter;
+		/*
+		 * If the MAC is invalid (or just missing), display a warning
+		 * but do not abort setting up the device. pch_gbe_up will
+		 * prevent the interface from being brought up until a valid MAC
+		 * is set.
+		 */
+		dev_err(&pdev->dev, "Invalid MAC address, "
+		                    "interface disabled.\n");
 	}
 	setup_timer(&adapter->watchdog_timer, pch_gbe_watchdog,
 		    (unsigned long)adapter);
-- 
1.7.7.6

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

* Re: [PATCH 1/2 v2] pch_gbe: Do not abort probe on bad MAC
  2012-04-02  3:00 [PATCH 1/2 v2] pch_gbe: Do not abort probe on bad MAC Tomoya MORINAGA
@ 2012-04-19 18:41 ` Greg KH
  0 siblings, 0 replies; 3+ messages in thread
From: Greg KH @ 2012-04-19 18:41 UTC (permalink / raw)
  To: Tomoya MORINAGA
  Cc: stable, Darren Hart, Arjan van de Ven, Alan Cox, Jeff Kirsher,
	David S. Miller, Paul Gortmaker, Jon Mason, netdev, Mark Brown,
	David Laight, Joe Perches

On Mon, Apr 02, 2012 at 12:00:44PM +0900, Tomoya MORINAGA wrote:
> If the MAC is invalid or not implemented, do not abort the probe. Issue
> a warning and prevent bringing the interface up until a MAC is set manually
> (via ifconfig $IFACE hw ether $MAC).
> 
> Tested on two platforms, one with a valid MAC, the other without a MAC. The real
> MAC is used if present, the interface fails to come up until the MAC is set on
> the other. They successfully get an IP over DHCP and pass a simple ping and
> login over ssh test.
> 
> This is meant to allow the Inforce SYS940X development board:
> http://www.inforcecomputing.com/SYS940X_ECX.html
> (and others suffering from a missing MAC) to work with the mainline kernel.
> Without this patch, the probe will fail and the interface will not be created,
> preventing the user from configuring the MAC manually.
> 
> This does not make any attempt to address a missing or invalid MAC for the
> pch_phub driver.
> 
> commit: 2b53d07891630dead46d65c8f896955fd3ae0302
> kernel version: 3.0, 3.2

How can you want this in 3.0, when the file this patches is not in the
3.0 kernel tree?

Please be more careful.

greg k-h

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

* [PATCH 1/2 v2] pch_gbe: Do not abort probe on bad MAC
@ 2012-04-20  6:54 Tomoya MORINAGA
  0 siblings, 0 replies; 3+ messages in thread
From: Tomoya MORINAGA @ 2012-04-20  6:54 UTC (permalink / raw)
  To: stable
  Cc: Darren Hart, Arjan van de Ven, Alan Cox, Tomoya MORINAGA,
	Jeff Kirsher, David S. Miller, Paul Gortmaker, Jon Mason, netdev,
	Mark Brown, David Laight, Joe Perches

From: Darren Hart <dvhart@linux.intel.com>

If the MAC is invalid or not implemented, do not abort the probe. Issue
a warning and prevent bringing the interface up until a MAC is set manually
(via ifconfig $IFACE hw ether $MAC).

Tested on two platforms, one with a valid MAC, the other without a MAC. The real
MAC is used if present, the interface fails to come up until the MAC is set on
the other. They successfully get an IP over DHCP and pass a simple ping and
login over ssh test.

This is meant to allow the Inforce SYS940X development board:
http://www.inforcecomputing.com/SYS940X_ECX.html
(and others suffering from a missing MAC) to work with the mainline kernel.
Without this patch, the probe will fail and the interface will not be created,
preventing the user from configuring the MAC manually.

This does not make any attempt to address a missing or invalid MAC for the
pch_phub driver.

commit 2b53d07891630dead46d65c8f896955fd3ae0302
kernel 3.0

Cc: stable@vger.kernel.org
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
CC: Arjan van de Ven <arjan@linux.intel.com>
CC: Alan Cox <alan@linux.intel.com>
CC: Tomoya MORINAGA <tomoya.rohm@gmail.com>
CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
CC: "David S. Miller" <davem@davemloft.net>
CC: Paul Gortmaker <paul.gortmaker@windriver.com>
CC: Jon Mason <jdmason@kudzu.us>
CC: netdev@vger.kernel.org
CC: Mark Brown <broonie@opensource.wolfsonmicro.com>
CC: David Laight <David.Laight@ACULAB.COM>
CC: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
---
v2
 - Separate into 2 patches because folder structure was changed.
---
 drivers/net/pch_gbe/pch_gbe_main.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/drivers/net/pch_gbe/pch_gbe_main.c b/drivers/net/pch_gbe/pch_gbe_main.c
index eac3c5c..e7412f2 100644
--- a/drivers/net/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/pch_gbe/pch_gbe_main.c
@@ -1701,6 +1701,12 @@ int pch_gbe_up(struct pch_gbe_adapter *adapter)
 	struct pch_gbe_rx_ring *rx_ring = adapter->rx_ring;
 	int err;
 
+	/* Ensure we have a valid MAC */
+	if (!is_valid_ether_addr(adapter->hw.mac.addr)) {
+		pr_err("Error: Invalid MAC address\n");
+		return -EINVAL;
+	}
+
 	/* hardware has been reset, we need to reload some things */
 	pch_gbe_set_multi(netdev);
 
@@ -2392,9 +2398,14 @@ static int pch_gbe_probe(struct pci_dev *pdev,
 
 	memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
 	if (!is_valid_ether_addr(netdev->dev_addr)) {
-		dev_err(&pdev->dev, "Invalid MAC Address\n");
-		ret = -EIO;
-		goto err_free_adapter;
+		/*
+		 * If the MAC is invalid (or just missing), display a warning
+		 * but do not abort setting up the device. pch_gbe_up will
+		 * prevent the interface from being brought up until a valid MAC
+		 * is set.
+		 */
+		dev_err(&pdev->dev, "Invalid MAC address, "
+		                    "interface disabled.\n");
 	}
 	setup_timer(&adapter->watchdog_timer, pch_gbe_watchdog,
 		    (unsigned long)adapter);
-- 
1.7.7.6

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

end of thread, other threads:[~2012-04-20  6:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-02  3:00 [PATCH 1/2 v2] pch_gbe: Do not abort probe on bad MAC Tomoya MORINAGA
2012-04-19 18:41 ` Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2012-04-20  6:54 Tomoya MORINAGA

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