Skip to contentSkip to conversation

pch_gbe: Do not abort probe on bad MAC

PATCH In review Darren Hart 2 participants 5 messages May 1, 2012 – May 7, 2012 Network drivers

lore
Share & tools
lore
#0 lore raw

cover pch_gbe: Do not abort probe on bad MAC

This somehow missed the 3.0 to 3.2 update. It is required for networking on the sys940x BSP. Please apply to standard/base and derived branches.

The following changes since commit 900717638fab9d2b25be35f3612ccfd95ceb31d1:

Merge branch 'yocto/standard/base' into standard/base (2012-03-16 10:43:42 -0400)

are available in the git repository at:

git://git.infradead.org/users/dvhart/linux-yocto-3.2.git dvhart/standard/pch_gbe
http://git.infradead.org/users/dvhart/linux-yocto-3.2.git/shortlog/refs/heads/dvhart/standard/pch_gbe

Darren Hart (1):
pch_gbe: Do not abort probe on bad MAC

 .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)
Signature · 1 line
1.7.7.6
#1 lore raw

PATCH 1/1 pch_gbe: Do not abort probe on bad MAC

commit: 2b53d07891630dead46d65c8f896955fd3ae0302 (linux-stable)

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.

CC Arjan van de Ven <[email protected]>
CC Alan Cox <[email protected]>
CC Tomoya MORINAGA <[email protected]>
CC Jeff Kirsher <[email protected]>
CC "David S. Miller" <[email protected]>
CC Paul Gortmaker <[email protected]>
CC Jon Mason <[email protected]>
CC Mark Brown <[email protected]>
CC David Laight <[email protected]>
CC Joe Perches <[email protected]>
---
 .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +14 -3
index 48406ca..43c7b25 100644
@@ -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);
Signature · 1 line
1.7.7.6
#2 lore raw
In reply to Darren Hart
Quoted 2 lines · Darren Hart

This somehow missed the 3.0 to 3.2 update. It is required for networking on the sys940x BSP. Please apply to standard/base and derived branches.

The somehow .. is that I thought this made 3.2, and it didn't. This is merged here, and when I get back to a decent internet connection. It'll appear on the servers.

Bruce

Quoted 16 lines

The following changes since commit 900717638fab9d2b25be35f3612ccfd95ceb31d1:

   Merge branch 'yocto/standard/base' into standard/base (2012-03-16 10:43:42 -0400)

are available in the git repository at:

git://git.infradead.org/users/dvhart/linux-yocto-3.2.git dvhart/standard/pch_gbe
http://git.infradead.org/users/dvhart/linux-yocto-3.2.git/shortlog/refs/heads/dvhart/standard/pch_gbe

Darren Hart (1):
pch_gbe: Do not abort probe on bad MAC

  .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   |   17 ++++++++++++++---
  1 files changed, 14 insertions(+), 3 deletions(-)
#3 lore raw
Quoted 9 lines · Bruce Ashfield
Quoted 2 lines · Darren Hart

This somehow missed the 3.0 to 3.2 update. It is required for networking on the sys940x BSP. Please apply to standard/base and derived branches.

The somehow .. is that I thought this made 3.2, and it didn't. This is merged
here, and when I get back to a decent internet connection. It'll appear on the servers.

It's been proposed to stable since, so it will make it eventually.

Quoted 19 lines

Bruce

Quoted 16 lines

The following changes since commit 900717638fab9d2b25be35f3612ccfd95ceb31d1:

   Merge branch 'yocto/standard/base' into standard/base (2012-03-16 10:43:42 -0400)

are available in the git repository at:

git://git.infradead.org/users/dvhart/linux-yocto-3.2.git dvhart/standard/pch_gbe
http://git.infradead.org/users/dvhart/linux-yocto-3.2.git/shortlog/refs/heads/dvhart/standard/pch_gbe

Darren Hart (1):
pch_gbe: Do not abort probe on bad MAC

  .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   |   17 ++++++++++++++---
  1 files changed, 14 insertions(+), 3 deletions(-)
Signature · 3 lines
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
#4 lore raw
Quoted 7 lines · Darren Hart
Quoted 4 lines · Bruce Ashfield
Quoted 2 lines · Darren Hart

This somehow missed the 3.0 to 3.2 update. It is required for networking on the sys940x BSP. Please apply to standard/base and derived branches.

Quoted 7 lines
Quoted 5 lines

The somehow .. is that I thought this made 3.2, and it didn't. This is merged
here, and when I get back to a decent internet connection. It'll appear on the servers.

It's been proposed to stable since, so it will make it eventually.

This is merged out now. Sorry for the delay, I had a stream of other fixes and issues to deal with.

update your SRCREVs accordingly, and I'll send one out for master shortly.

Bruce

Quoted 22 lines
Quoted 21 lines

Bruce

Quoted 16 lines

The following changes since commit 900717638fab9d2b25be35f3612ccfd95ceb31d1:

    Merge branch 'yocto/standard/base' into standard/base (2012-03-16 10:43:42 -0400)

are available in the git repository at:

git://git.infradead.org/users/dvhart/linux-yocto-3.2.git dvhart/standard/pch_gbe
http://git.infradead.org/users/dvhart/linux-yocto-3.2.git/shortlog/refs/heads/dvhart/standard/pch_gbe

Darren Hart (1):
pch_gbe: Do not abort probe on bad MAC

   .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   |   17 ++++++++++++++---
   1 files changed, 14 insertions(+), 3 deletions(-)