bnxt_en: Add support for firmware updates for additional processors.
[deliverable/linux.git] / drivers / net / ethernet / broadcom / bnxt / bnxt_ethtool.c
index d7ab2d7982c25b73832d5dc112460a4607211a25..33b313573b1028a58aa4d6c1b9fc394cd0ff91f5 100644 (file)
@@ -961,7 +961,7 @@ static int bnxt_set_pauseparam(struct net_device *dev,
        struct bnxt_link_info *link_info = &bp->link_info;
 
        if (!BNXT_SINGLE_PF(bp))
-               return rc;
+               return -EOPNOTSUPP;
 
        if (epause->autoneg) {
                if (!(link_info->autoneg & BNXT_AUTONEG_SPEED))
@@ -1059,6 +1059,8 @@ static int bnxt_firmware_reset(struct net_device *dev,
        case BNX_DIR_TYPE_APE_FW:
        case BNX_DIR_TYPE_APE_PATCH:
                req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_MGMT;
+               /* Self-reset APE upon next PCIe reset: */
+               req.selfrst_status = FW_RESET_REQ_SELFRST_STATUS_SELFRSTPCIERST;
                break;
        case BNX_DIR_TYPE_KONG_FW:
        case BNX_DIR_TYPE_KONG_PATCH:
@@ -1092,9 +1094,27 @@ static int bnxt_flash_firmware(struct net_device *dev,
        case BNX_DIR_TYPE_BOOTCODE_2:
                code_type = CODE_BOOT;
                break;
+       case BNX_DIR_TYPE_CHIMP_PATCH:
+               code_type = CODE_CHIMP_PATCH;
+               break;
        case BNX_DIR_TYPE_APE_FW:
                code_type = CODE_MCTP_PASSTHRU;
                break;
+       case BNX_DIR_TYPE_APE_PATCH:
+               code_type = CODE_APE_PATCH;
+               break;
+       case BNX_DIR_TYPE_KONG_FW:
+               code_type = CODE_KONG_FW;
+               break;
+       case BNX_DIR_TYPE_KONG_PATCH:
+               code_type = CODE_KONG_PATCH;
+               break;
+       case BNX_DIR_TYPE_BONO_FW:
+               code_type = CODE_BONO_FW;
+               break;
+       case BNX_DIR_TYPE_BONO_PATCH:
+               code_type = CODE_BONO_PATCH;
+               break;
        default:
                netdev_err(dev, "Unsupported directory entry type: %u\n",
                           dir_type);
@@ -1149,6 +1169,8 @@ static bool bnxt_dir_type_is_ape_bin_format(u16 dir_type)
        case BNX_DIR_TYPE_APE_PATCH:
        case BNX_DIR_TYPE_KONG_FW:
        case BNX_DIR_TYPE_KONG_PATCH:
+       case BNX_DIR_TYPE_BONO_FW:
+       case BNX_DIR_TYPE_BONO_PATCH:
                return true;
        }
 
@@ -1186,7 +1208,8 @@ static int bnxt_flash_firmware_from_file(struct net_device *dev,
        const struct firmware  *fw;
        int                     rc;
 
-       if (bnxt_dir_type_is_executable(dir_type) == false)
+       if (dir_type != BNX_DIR_TYPE_UPDATE &&
+           bnxt_dir_type_is_executable(dir_type) == false)
                return -EINVAL;
 
        rc = request_firmware(&fw, filename, &dev->dev);
@@ -1483,7 +1506,7 @@ static int bnxt_set_eee(struct net_device *dev, struct ethtool_eee *edata)
        int rc = 0;
 
        if (!BNXT_SINGLE_PF(bp))
-               return 0;
+               return -EOPNOTSUPP;
 
        if (!(bp->flags & BNXT_FLAG_EEE_CAP))
                return -EOPNOTSUPP;
This page took 0.029792 seconds and 5 git commands to generate.