be2net: FLR must be first cmd issued to Lancer FW
authorKalesh AP <kalesh.purayil@emulex.com>
Sun, 28 Apr 2013 22:22:29 +0000 (22:22 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 29 Apr 2013 19:14:02 +0000 (15:14 -0400)
Lancer FW requires that the first cmd issued by the host-driver be an FLR.
So, re-order be_probe() to move be_cmd_function_reset() ahead of
be_cmd_fw_init().

Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Somnath Kotur <somnath.kotur@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_main.c

index 43d5c1e..1c73491 100644 (file)
@@ -4174,23 +4174,23 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
                        goto ctrl_clean;
        }
 
-       /* tell fw we're ready to fire cmds */
-       status = be_cmd_fw_init(adapter);
-       if (status)
-               goto ctrl_clean;
-
        if (be_reset_required(adapter)) {
                status = be_cmd_reset_function(adapter);
                if (status)
                        goto ctrl_clean;
-       }
 
-       /* Wait for interrupts to quiesce after an FLR */
-       msleep(100);
+               /* Wait for interrupts to quiesce after an FLR */
+               msleep(100);
+       }
 
        /* Allow interrupts for other ULPs running on NIC function */
        be_intr_set(adapter, true);
 
+       /* tell fw we're ready to fire cmds */
+       status = be_cmd_fw_init(adapter);
+       if (status)
+               goto ctrl_clean;
+
        status = be_stats_init(adapter);
        if (status)
                goto ctrl_clean;
@@ -4400,12 +4400,12 @@ static void be_eeh_resume(struct pci_dev *pdev)
 
        pci_save_state(pdev);
 
-       /* tell fw we're ready to fire cmds */
-       status = be_cmd_fw_init(adapter);
+       status = be_cmd_reset_function(adapter);
        if (status)
                goto err;
 
-       status = be_cmd_reset_function(adapter);
+       /* tell fw we're ready to fire cmds */
+       status = be_cmd_fw_init(adapter);
        if (status)
                goto err;