Commit ab124d58 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'bnxt_en-2-bug-fixes'



Michael Chan says:

====================
bnxt_en: 2 bug fixes.

This first patch fixes a rare but possible crash in pci_disable_msix()
when the MTU is changed.  The 2nd patch fixes a regression in error
code handling when flashing a file to NVRAM.

Please also queue these for -stable.  Thanks.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 249bc974 22630e28
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -10982,13 +10982,13 @@ static int bnxt_change_mtu(struct net_device *dev, int new_mtu)
	struct bnxt *bp = netdev_priv(dev);

	if (netif_running(dev))
		bnxt_close_nic(bp, false, false);
		bnxt_close_nic(bp, true, false);

	dev->mtu = new_mtu;
	bnxt_set_ring_params(bp);

	if (netif_running(dev))
		return bnxt_open_nic(bp, false, false);
		return bnxt_open_nic(bp, true, false);

	return 0;
}
+11 −13
Original line number Diff line number Diff line
@@ -2007,8 +2007,8 @@ int bnxt_flash_package_from_file(struct net_device *dev, const char *filename,
	struct hwrm_nvm_install_update_output *resp = bp->hwrm_cmd_resp_addr;
	struct hwrm_nvm_install_update_input install = {0};
	const struct firmware *fw;
	int rc, hwrm_err = 0;
	u32 item_len;
	int rc = 0;
	u16 index;

	bnxt_hwrm_fw_set_time(bp);
@@ -2052,15 +2052,14 @@ int bnxt_flash_package_from_file(struct net_device *dev, const char *filename,
			memcpy(kmem, fw->data, fw->size);
			modify.host_src_addr = cpu_to_le64(dma_handle);

			hwrm_err = hwrm_send_message(bp, &modify,
						     sizeof(modify),
			rc = hwrm_send_message(bp, &modify, sizeof(modify),
					       FLASH_PACKAGE_TIMEOUT);
			dma_free_coherent(&bp->pdev->dev, fw->size, kmem,
					  dma_handle);
		}
	}
	release_firmware(fw);
	if (rc || hwrm_err)
	if (rc)
		goto err_exit;

	if ((install_type & 0xffff) == 0)
@@ -2069,20 +2068,19 @@ int bnxt_flash_package_from_file(struct net_device *dev, const char *filename,
	install.install_type = cpu_to_le32(install_type);

	mutex_lock(&bp->hwrm_cmd_lock);
	hwrm_err = _hwrm_send_message(bp, &install, sizeof(install),
	rc = _hwrm_send_message(bp, &install, sizeof(install),
				INSTALL_PACKAGE_TIMEOUT);
	if (hwrm_err) {
	if (rc) {
		u8 error_code = ((struct hwrm_err_output *)resp)->cmd_err;

		if (resp->error_code && error_code ==
		    NVM_INSTALL_UPDATE_CMD_ERR_CODE_FRAG_ERR) {
			install.flags |= cpu_to_le16(
			       NVM_INSTALL_UPDATE_REQ_FLAGS_ALLOWED_TO_DEFRAG);
			hwrm_err = _hwrm_send_message(bp, &install,
						      sizeof(install),
			rc = _hwrm_send_message(bp, &install, sizeof(install),
						INSTALL_PACKAGE_TIMEOUT);
		}
		if (hwrm_err)
		if (rc)
			goto flash_pkg_exit;
	}

@@ -2094,7 +2092,7 @@ int bnxt_flash_package_from_file(struct net_device *dev, const char *filename,
flash_pkg_exit:
	mutex_unlock(&bp->hwrm_cmd_lock);
err_exit:
	if (hwrm_err == -EACCES)
	if (rc == -EACCES)
		bnxt_print_admin_err(bp);
	return rc;
}