]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/emulex/benet/be_main.c
be2net: reduce arguments passed to FW-cmd routines
[karo-tx-linux.git] / drivers / net / ethernet / emulex / benet / be_main.c
index 6297e72b77e2e1d294973057adf0f2139cf8140d..8ffcffab62f896ab8d1386062eb645dc5d680bed 100644 (file)
@@ -81,10 +81,10 @@ static const char * const ue_status_low_desc[] = {
        "P1_OB_LINK ",
        "HOST_GPIO ",
        "MBOX ",
-       "AXGMAC0",
-       "AXGMAC1",
-       "JTAG",
-       "MPU_INTPEND"
+       "ERX2 ",
+       "SPARE ",
+       "JTAG ",
+       "MPU_INTPEND "
 };
 /* UE Status High CSR */
 static const char * const ue_status_hi_desc[] = {
@@ -109,16 +109,16 @@ static const char * const ue_status_hi_desc[] = {
        "HOST5",
        "HOST6",
        "HOST7",
-       "HOST8",
-       "HOST9",
+       "ECRC",
+       "Poison TLP",
        "NETC",
-       "Unknown",
-       "Unknown",
-       "Unknown",
-       "Unknown",
-       "Unknown",
-       "Unknown",
-       "Unknown",
+       "PERIPH",
+       "LLTXULP",
+       "D2P",
+       "RCON",
+       "LDMA",
+       "LLTXP",
+       "LLTXPB",
        "Unknown"
 };
 
@@ -1281,13 +1281,15 @@ static int be_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
                                        vf + 1);
        }
 
-       if (status)
-               dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed\n",
-                       mac, vf);
-       else
-               memcpy(vf_cfg->mac_addr, mac, ETH_ALEN);
+       if (status) {
+               dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed: %#x",
+                       mac, vf, status);
+               return be_cmd_status(status);
+       }
 
-       return status;
+       ether_addr_copy(vf_cfg->mac_addr, mac);
+
+       return 0;
 }
 
 static int be_get_vf_config(struct net_device *netdev, int vf,
@@ -1336,12 +1338,16 @@ static int be_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos)
                                               vf + 1, vf_cfg->if_handle, 0);
        }
 
-       if (!status)
-               vf_cfg->vlan_tag = vlan;
-       else
-               dev_info(&adapter->pdev->dev,
-                        "VLAN %d config on VF %d failed\n", vlan, vf);
-       return status;
+       if (status) {
+               dev_err(&adapter->pdev->dev,
+                       "VLAN %d config on VF %d failed : %#x\n", vlan,
+                       vf, status);
+               return be_cmd_status(status);
+       }
+
+       vf_cfg->vlan_tag = vlan;
+
+       return 0;
 }
 
 static int be_set_vf_tx_rate(struct net_device *netdev, int vf,
@@ -1372,7 +1378,7 @@ static int be_set_vf_tx_rate(struct net_device *netdev, int vf,
 
        if (!link_status) {
                dev_err(dev, "TX-rate setting not allowed when link is down\n");
-               status = -EPERM;
+               status = -ENETDOWN;
                goto err;
        }
 
@@ -1403,7 +1409,7 @@ config_qos:
 err:
        dev_err(dev, "TX-rate setting of %dMbps on VF%d failed\n",
                max_tx_rate, vf);
-       return status;
+       return be_cmd_status(status);
 }
 static int be_set_vf_link_state(struct net_device *netdev, int vf,
                                int link_state)
@@ -1418,10 +1424,15 @@ static int be_set_vf_link_state(struct net_device *netdev, int vf,
                return -EINVAL;
 
        status = be_cmd_set_logical_link_config(adapter, link_state, vf+1);
-       if (!status)
-               adapter->vf_cfg[vf].plink_tracking = link_state;
+       if (status) {
+               dev_err(&adapter->pdev->dev,
+                       "Link state change on VF %d failed: %#x\n", vf, status);
+               return be_cmd_status(status);
+       }
 
-       return status;
+       adapter->vf_cfg[vf].plink_tracking = link_state;
+
+       return 0;
 }
 
 static void be_aic_update(struct be_aic_obj *aic, u64 rx_pkts, u64 tx_pkts,
@@ -2897,7 +2908,7 @@ static int be_open(struct net_device *netdev)
        for_all_evt_queues(adapter, eqo, i) {
                napi_enable(&eqo->napi);
                be_enable_busy_poll(eqo);
-               be_eq_notify(adapter, eqo->q.id, true, false, 0);
+               be_eq_notify(adapter, eqo->q.id, true, true, 0);
        }
        adapter->flags |= BE_FLAGS_NAPI_ENABLED;
 
@@ -2931,7 +2942,7 @@ static int be_setup_wol(struct be_adapter *adapter, bool enable)
        cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
                                     GFP_KERNEL);
        if (cmd.va == NULL)
-               return -1;
+               return -ENOMEM;
 
        if (enable) {
                status = pci_write_config_dword(adapter->pdev,
@@ -3414,10 +3425,7 @@ static int be_get_config(struct be_adapter *adapter)
        u16 profile_id;
        int status;
 
-       status = be_cmd_query_fw_cfg(adapter, &adapter->port_num,
-                                    &adapter->function_mode,
-                                    &adapter->function_caps,
-                                    &adapter->asic_rev);
+       status = be_cmd_query_fw_cfg(adapter);
        if (status)
                return status;
 
@@ -3606,7 +3614,7 @@ static int be_setup(struct be_adapter *adapter)
        if (status)
                goto err;
 
-       be_cmd_get_fw_ver(adapter, adapter->fw_ver, adapter->fw_on_flash);
+       be_cmd_get_fw_ver(adapter);
 
        if (BE2_chip(adapter) && fw_major_num(adapter->fw_ver) < 4) {
                dev_err(dev, "Firmware on card is old(%s), IRQs may not work.",
@@ -3956,7 +3964,7 @@ static int be_flash_skyhawk(struct be_adapter *adapter,
        fsec = get_fsec_info(adapter, filehdr_size + img_hdrs_size, fw);
        if (!fsec) {
                dev_err(dev, "Invalid Cookie. FW image may be corrupted\n");
-               return -1;
+               return -EINVAL;
        }
 
        for (i = 0; i < le32_to_cpu(fsec->fsec_hdr.num_images); i++) {
@@ -4187,7 +4195,7 @@ static int be_fw_download(struct be_adapter *adapter, const struct firmware* fw)
                                                              &flash_cmd,
                                                              num_imgs);
                                else {
-                                       status = -1;
+                                       status = -EINVAL;
                                        dev_err(&adapter->pdev->dev,
                                                "Can't load BE3 UFI on BE3R\n");
                                }
@@ -4198,7 +4206,7 @@ static int be_fw_download(struct be_adapter *adapter, const struct firmware* fw)
        if (ufi_type == UFI_TYPE2)
                status = be_flash_BEx(adapter, fw, &flash_cmd, 0);
        else if (ufi_type == -1)
-               status = -1;
+               status = -EINVAL;
 
        dma_free_coherent(&adapter->pdev->dev, flash_cmd.size, flash_cmd.va,
                          flash_cmd.dma);
@@ -4221,7 +4229,7 @@ int be_load_fw(struct be_adapter *adapter, u8 *fw_file)
        if (!netif_running(adapter->netdev)) {
                dev_err(&adapter->pdev->dev,
                        "Firmware load not allowed (interface is down)\n");
-               return -1;
+               return -ENETDOWN;
        }
 
        status = request_firmware(&fw, fw_file, &adapter->pdev->dev);
@@ -4236,8 +4244,7 @@ int be_load_fw(struct be_adapter *adapter, u8 *fw_file)
                status = be_fw_download(adapter, fw);
 
        if (!status)
-               be_cmd_get_fw_ver(adapter, adapter->fw_ver,
-                                 adapter->fw_on_flash);
+               be_cmd_get_fw_ver(adapter);
 
 fw_exit:
        release_firmware(fw);
@@ -4586,7 +4593,7 @@ static int be_stats_init(struct be_adapter *adapter)
        cmd->va = dma_zalloc_coherent(&adapter->pdev->dev, cmd->size, &cmd->dma,
                                      GFP_KERNEL);
        if (cmd->va == NULL)
-               return -1;
+               return -ENOMEM;
        return 0;
 }