NetXen: driver reload fix for newer firmware.
authorAmit S. Kale <amitkale@netxen.com>
Mon, 18 Dec 2006 13:51:29 +0000 (05:51 -0800)
committerJeff Garzik <jeff@garzik.org>
Tue, 26 Dec 2006 21:45:25 +0000 (16:45 -0500)
Signed-off-by: Amit S. Kale <amitkale@netxen.com>
netxen_nic_main.c |    7 +++++++
 1 files changed, 7 insertions(+)
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/netxen/netxen_nic_main.c

index d8b1daf0e4b9cb3a8ca6ecdb68f4858065d9a27b..f2b3fbc593c602d766b478435e0665a717399f74 100644 (file)
@@ -446,6 +446,11 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                adapter->port[i] = port;
        }
 
+       writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
+       netxen_pinit_from_rom(adapter, 0);
+       udelay(500);
+       netxen_load_firmware(adapter);
+       netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE);
        /*
         * delay a while to ensure that the Pegs are up & running.
         * Otherwise, we might see some flaky behaviour.
@@ -533,6 +538,8 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
 
        netxen_nic_stop_all_ports(adapter);
        /* leave the hw in the same state as reboot */
+       netxen_pinit_from_rom(adapter, 0);
+       writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
        netxen_load_firmware(adapter);
        netxen_free_adapter_offload(adapter);