diff options
| author | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
| commit | 1ac731c529cd4d6adbce134754b51ff7d822b145 (patch) | |
| tree | 143ab3f35ca5f3b69f583c84e6964b17139c2ec1 /drivers/net/ethernet/sfc/efx_devlink.c | |
| parent | 07b4c950f27bef0362dc6ad7ee713aab61d58149 (diff) | |
| parent | 54116d442e001e1b6bd482122043b1870998a1f3 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.6 merge window.
Diffstat (limited to 'drivers/net/ethernet/sfc/efx_devlink.c')
| -rw-r--r-- | drivers/net/ethernet/sfc/efx_devlink.c | 95 | 
1 files changed, 45 insertions, 50 deletions
diff --git a/drivers/net/ethernet/sfc/efx_devlink.c b/drivers/net/ethernet/sfc/efx_devlink.c index 381b805659d3..ef9971cbb695 100644 --- a/drivers/net/ethernet/sfc/efx_devlink.c +++ b/drivers/net/ethernet/sfc/efx_devlink.c @@ -171,9 +171,14 @@ static int efx_devlink_info_nvram_partition(struct efx_nic *efx,  	rc = efx_mcdi_nvram_metadata(efx, partition_type, NULL, version, NULL,  				     0); + +	/* If the partition does not exist, that is not an error. */ +	if (rc == -ENOENT) +		return 0; +  	if (rc) { -		netif_err(efx, drv, efx->net_dev, "mcdi nvram %s: failed\n", -			  version_name); +		netif_err(efx, drv, efx->net_dev, "mcdi nvram %s: failed (rc=%d)\n", +			  version_name, rc);  		return rc;  	} @@ -187,36 +192,33 @@ static int efx_devlink_info_nvram_partition(struct efx_nic *efx,  static int efx_devlink_info_stored_versions(struct efx_nic *efx,  					    struct devlink_info_req *req)  { -	int rc; - -	rc = efx_devlink_info_nvram_partition(efx, req, -					      NVRAM_PARTITION_TYPE_BUNDLE, -					      DEVLINK_INFO_VERSION_GENERIC_FW_BUNDLE_ID); -	if (rc) -		return rc; - -	rc = efx_devlink_info_nvram_partition(efx, req, -					      NVRAM_PARTITION_TYPE_MC_FIRMWARE, -					      DEVLINK_INFO_VERSION_GENERIC_FW_MGMT); -	if (rc) -		return rc; - -	rc = efx_devlink_info_nvram_partition(efx, req, -					      NVRAM_PARTITION_TYPE_SUC_FIRMWARE, -					      EFX_DEVLINK_INFO_VERSION_FW_MGMT_SUC); -	if (rc) -		return rc; - -	rc = efx_devlink_info_nvram_partition(efx, req, -					      NVRAM_PARTITION_TYPE_EXPANSION_ROM, -					      EFX_DEVLINK_INFO_VERSION_FW_EXPROM); -	if (rc) -		return rc; +	int err; -	rc = efx_devlink_info_nvram_partition(efx, req, -					      NVRAM_PARTITION_TYPE_EXPANSION_UEFI, -					      EFX_DEVLINK_INFO_VERSION_FW_UEFI); -	return rc; +	/* We do not care here about the specific error but just if an error +	 * happened. The specific error will be reported inside the call +	 * through system messages, and if any error happened in any call +	 * below, we report it through extack. +	 */ +	err = efx_devlink_info_nvram_partition(efx, req, +					       NVRAM_PARTITION_TYPE_BUNDLE, +					       DEVLINK_INFO_VERSION_GENERIC_FW_BUNDLE_ID); + +	err |= efx_devlink_info_nvram_partition(efx, req, +						NVRAM_PARTITION_TYPE_MC_FIRMWARE, +						DEVLINK_INFO_VERSION_GENERIC_FW_MGMT); + +	err |= efx_devlink_info_nvram_partition(efx, req, +						NVRAM_PARTITION_TYPE_SUC_FIRMWARE, +						EFX_DEVLINK_INFO_VERSION_FW_MGMT_SUC); + +	err |= efx_devlink_info_nvram_partition(efx, req, +						NVRAM_PARTITION_TYPE_EXPANSION_ROM, +						EFX_DEVLINK_INFO_VERSION_FW_EXPROM); + +	err |= efx_devlink_info_nvram_partition(efx, req, +						NVRAM_PARTITION_TYPE_EXPANSION_UEFI, +						EFX_DEVLINK_INFO_VERSION_FW_UEFI); +	return err;  }  #define EFX_VER_FLAG(_f)	\ @@ -587,27 +589,20 @@ static int efx_devlink_info_get(struct devlink *devlink,  {  	struct efx_devlink *devlink_private = devlink_priv(devlink);  	struct efx_nic *efx = devlink_private->efx; -	int rc; +	int err; -	/* Several different MCDI commands are used. We report first error -	 * through extack returning at that point. Specific error -	 * information via system messages. +	/* Several different MCDI commands are used. We report if errors +	 * happened through extack. Specific error information via system +	 * messages inside the calls.  	 */ -	rc = efx_devlink_info_board_cfg(efx, req); -	if (rc) { -		NL_SET_ERR_MSG_MOD(extack, "Getting board info failed"); -		return rc; -	} -	rc = efx_devlink_info_stored_versions(efx, req); -	if (rc) { -		NL_SET_ERR_MSG_MOD(extack, "Getting stored versions failed"); -		return rc; -	} -	rc = efx_devlink_info_running_versions(efx, req); -	if (rc) { -		NL_SET_ERR_MSG_MOD(extack, "Getting running versions failed"); -		return rc; -	} +	err = efx_devlink_info_board_cfg(efx, req); + +	err |= efx_devlink_info_stored_versions(efx, req); + +	err |= efx_devlink_info_running_versions(efx, req); + +	if (err) +		NL_SET_ERR_MSG_MOD(extack, "Errors when getting device info. Check system messages");  	return 0;  }  |