diff mbox

[1/2] Revert "bnx2: Reset device during driver initialization"

Message ID 1478871995-29652-2-git-send-email-bhe@redhat.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Baoquan He Nov. 11, 2016, 1:46 p.m. UTC
This reverts commit 3e1be7ad2d38c6bd6aeef96df9bd0a7822f4e51c.

When people build bnx2 driver into kernel, it will fail to detect
and load firmware because firmware is contained in initramfs and
initramfs has not been uncompressed yet during do_initcalls. So
revert commit 3e1be7a and work out a new way in the later patch.

Signed-off-by: Baoquan He <bhe@redhat.com>
---
 drivers/net/ethernet/broadcom/bnx2.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

Comments

Paul Menzel Nov. 11, 2016, 1:51 p.m. UTC | #1
Dear Baoquan,


On 11/11/16 14:46, Baoquan He wrote:
> This reverts commit 3e1be7ad2d38c6bd6aeef96df9bd0a7822f4e51c.

Thanks a lot.

> When people build bnx2 driver into kernel, it will fail to detect
> and load firmware because firmware is contained in initramfs and
> initramfs has not been uncompressed yet during do_initcalls. So
> revert commit 3e1be7a and work out a new way in the later patch.

Just to note, that the other reason is, that in some installations 
people don’t have the firmware in initramfs at all or don’t use an 
initramfs.

> Signed-off-by: Baoquan He <bhe@redhat.com>

Please mark this for inclusion into the stable Linux kernel.

Acked-by: Paul Menzel <pmenzel@molgen.mpg.de>


Thanks,

Paul
diff mbox

Patch

diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index b3791b3..c557972 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -6361,6 +6361,10 @@  bnx2_open(struct net_device *dev)
 	struct bnx2 *bp = netdev_priv(dev);
 	int rc;
 
+	rc = bnx2_request_firmware(bp);
+	if (rc < 0)
+		goto out;
+
 	netif_carrier_off(dev);
 
 	bnx2_disable_int(bp);
@@ -6429,6 +6433,7 @@  bnx2_open(struct net_device *dev)
 	bnx2_free_irq(bp);
 	bnx2_free_mem(bp);
 	bnx2_del_napi(bp);
+	bnx2_release_firmware(bp);
 	goto out;
 }
 
@@ -8575,12 +8580,6 @@  bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	pci_set_drvdata(pdev, dev);
 
-	rc = bnx2_request_firmware(bp);
-	if (rc < 0)
-		goto error;
-
-
-	bnx2_reset_chip(bp, BNX2_DRV_MSG_CODE_RESET);
 	memcpy(dev->dev_addr, bp->mac_addr, ETH_ALEN);
 
 	dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG |
@@ -8613,7 +8612,6 @@  bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	return 0;
 
 error:
-	bnx2_release_firmware(bp);
 	pci_iounmap(pdev, bp->regview);
 	pci_release_regions(pdev);
 	pci_disable_device(pdev);