be2net: cleanup be_get_drvinfo()
authorSomnath Kotur <somnath.kotur@emulex.com>
Sun, 26 May 2013 21:08:36 +0000 (21:08 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 28 May 2013 05:27:02 +0000 (22:27 -0700)
Removing the be_cmd_get_fw_ver() query from be_get_drvinfo() and invoking
the same from be_setup() and/or post firmware download.

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.h
drivers/net/ethernet/emulex/benet/be_ethtool.c
drivers/net/ethernet/emulex/benet/be_main.c

index f544b297c9abef7b7ee73fa3a5fd4eb2b9921f42..edce38bf83c9d6481a8998ec7653051ff620b315 100644 (file)
@@ -397,6 +397,7 @@ struct be_adapter {
        u32 cmd_privileges;
        /* Ethtool knobs and info */
        char fw_ver[FW_VER_LEN];
+       char fw_on_flash[FW_VER_LEN];
        int if_handle;          /* Used to configure filtering */
        u32 *pmac_id;           /* MAC addr handle used by BE card */
        u32 beacon_state;       /* for set_phys_id */
index 3d4461adb3b4194eef3fe2dca339650665dac97b..f3ee07758198cef3f3e7053cff4ce9986102e756 100644 (file)
@@ -177,19 +177,15 @@ static void be_get_drvinfo(struct net_device *netdev,
                                struct ethtool_drvinfo *drvinfo)
 {
        struct be_adapter *adapter = netdev_priv(netdev);
-       char fw_on_flash[FW_VER_LEN];
-
-       memset(fw_on_flash, 0 , sizeof(fw_on_flash));
-       be_cmd_get_fw_ver(adapter, adapter->fw_ver, fw_on_flash);
 
        strlcpy(drvinfo->driver, DRV_NAME, sizeof(drvinfo->driver));
        strlcpy(drvinfo->version, DRV_VER, sizeof(drvinfo->version));
-       if (!memcmp(adapter->fw_ver, fw_on_flash, FW_VER_LEN))
+       if (!memcmp(adapter->fw_ver, adapter->fw_on_flash, FW_VER_LEN))
                strlcpy(drvinfo->fw_version, adapter->fw_ver,
                        sizeof(drvinfo->fw_version));
        else
                snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version),
-                        "%s [%s]", adapter->fw_ver, fw_on_flash);
+                        "%s [%s]", adapter->fw_ver, adapter->fw_on_flash);
 
        strlcpy(drvinfo->bus_info, pci_name(adapter->pdev),
                sizeof(drvinfo->bus_info));
index 3d5e1a8929ae0f4785f5cfb8e4c3c6370bcf208e..d1580823c28637983219641fadd01905fe788d6d 100644 (file)
@@ -3193,7 +3193,7 @@ static int be_setup(struct be_adapter *adapter)
        if (status)
                goto err;
 
-       be_cmd_get_fw_ver(adapter, adapter->fw_ver, NULL);
+       be_cmd_get_fw_ver(adapter, adapter->fw_ver, adapter->fw_on_flash);
 
        if (adapter->vlans_added)
                be_vid_config(adapter);
@@ -3785,6 +3785,10 @@ int be_load_fw(struct be_adapter *adapter, u8 *fw_file)
        else
                status = be_fw_download(adapter, fw);
 
+       if (!status)
+               be_cmd_get_fw_ver(adapter, adapter->fw_ver,
+                                 adapter->fw_on_flash);
+
 fw_exit:
        release_firmware(fw);
        return status;