u16 pvid;
        struct phy_info phy;
        u8 wol_cap;
-       bool wol;
+       bool wol_en;
        u32 uc_macs;            /* Count of secondary UC MAC programmed */
        u16 asic_rev;
        u16 qnq_vid;
 
 {
        struct be_mcc_wrb *wrb;
        struct be_cmd_req_acpi_wol_magic_config_v1 *req;
-       int status;
-       int payload_len = sizeof(*req);
+       int status = 0;
        struct be_dma_mem cmd;
 
        if (!be_cmd_allowed(adapter, OPCODE_ETH_ACPI_WOL_MAGIC_CONFIG,
                            CMD_SUBSYSTEM_ETH))
                return -EPERM;
 
+       if (be_is_wol_excluded(adapter))
+               return status;
+
        if (mutex_lock_interruptible(&adapter->mbox_lock))
                return -1;
 
 
        be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ETH,
                               OPCODE_ETH_ACPI_WOL_MAGIC_CONFIG,
-                              payload_len, wrb, &cmd);
+                              sizeof(*req), wrb, &cmd);
 
        req->hdr.version = 1;
        req->query_options = BE_GET_WOL_CAP;
                struct be_cmd_resp_acpi_wol_magic_config_v1 *resp;
                resp = (struct be_cmd_resp_acpi_wol_magic_config_v1 *) cmd.va;
 
-               /* the command could succeed misleadingly on old f/w
-                * which is not aware of the V1 version. fake an error. */
-               if (resp->hdr.response_length < payload_len) {
-                       status = -1;
-                       goto err;
-               }
                adapter->wol_cap = resp->wol_settings;
+               if (adapter->wol_cap & BE_WOL_CAP)
+                       adapter->wol_en = true;
        }
 err:
        mutex_unlock(&adapter->mbox_lock);
 
 {
        struct be_adapter *adapter = netdev_priv(netdev);
 
-       if (be_is_wol_supported(adapter)) {
+       if (adapter->wol_cap & BE_WOL_CAP) {
                wol->supported |= WAKE_MAGIC;
-               if (adapter->wol)
+               if (adapter->wol_en)
                        wol->wolopts |= WAKE_MAGIC;
-       } else
+       } else {
                wol->wolopts = 0;
+       }
        memset(&wol->sopass, 0, sizeof(wol->sopass));
 }
 
        if (wol->wolopts & ~WAKE_MAGIC)
                return -EOPNOTSUPP;
 
-       if (!be_is_wol_supported(adapter)) {
+       if (!(adapter->wol_cap & BE_WOL_CAP)) {
                dev_warn(&adapter->pdev->dev, "WOL not supported\n");
                return -EOPNOTSUPP;
        }
 
        if (wol->wolopts & WAKE_MAGIC)
-               adapter->wol = true;
+               adapter->wol_en = true;
        else
-               adapter->wol = false;
+               adapter->wol_en = false;
 
        return 0;
 }
 
 
        be_set_rx_mode(adapter->netdev);
 
+       be_cmd_get_acpi_wol_cap(adapter);
+
        be_cmd_get_flow_control(adapter, &tx_fc, &rx_fc);
 
        if (rx_fc != adapter->rx_fc || tx_fc != adapter->tx_fc)
        free_netdev(adapter->netdev);
 }
 
-bool be_is_wol_supported(struct be_adapter *adapter)
-{
-       return ((adapter->wol_cap & BE_WOL_CAP) &&
-               !be_is_wol_excluded(adapter)) ? true : false;
-}
-
 static int be_get_initial_config(struct be_adapter *adapter)
 {
        int status, level;
        if (status)
                return status;
 
-       status = be_cmd_get_acpi_wol_cap(adapter);
-       if (status) {
-               /* in case of a failure to get wol capabillities
-                * check the exclusion list to determine WOL capability */
-               if (!be_is_wol_excluded(adapter))
-                       adapter->wol_cap |= BE_WOL_CAP;
-       }
-
-       if (be_is_wol_supported(adapter))
-               adapter->wol = true;
-
        /* Must be a power of 2 or else MODULO will BUG_ON */
        adapter->be_get_temp_freq = 64;
 
        struct be_adapter *adapter = pci_get_drvdata(pdev);
        struct net_device *netdev =  adapter->netdev;
 
-       if (adapter->wol)
+       if (adapter->wol_en)
                be_setup_wol(adapter, true);
 
        be_intr_set(adapter, false);
                              msecs_to_jiffies(1000));
        netif_device_attach(netdev);
 
-       if (adapter->wol)
+       if (adapter->wol_en)
                be_setup_wol(adapter, false);
 
        return 0;