Commit 6a8e93db authored by Mitch Williams's avatar Mitch Williams Committed by Jeff Kirsher

i40evf: return more useful error information

When verifying the API version (which is the first time the driver
communicates with the firmware and thus the PF driver), there are many
ways in which a failure can occur. There may be an error from the
firmware, there may be unresponsive firmware, there may be an error from
the PF driver, etc, etc.

Make this function return more useful information, instead of just -EIO.
Propagate FW errors back to the caller, and log a message if the PF
sends an invalid reply.

Change-ID: I3e9135a2b80f7acdb855f62f12b2b2668c9a8951
Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent e5d17c3e
...@@ -80,8 +80,9 @@ int i40evf_send_api_ver(struct i40evf_adapter *adapter) ...@@ -80,8 +80,9 @@ int i40evf_send_api_ver(struct i40evf_adapter *adapter)
* @adapter: adapter structure * @adapter: adapter structure
* *
* Compare API versions with the PF. Must be called after admin queue is * Compare API versions with the PF. Must be called after admin queue is
* initialized. Returns 0 if API versions match, -EIO if * initialized. Returns 0 if API versions match, -EIO if they do not,
* they do not, or I40E_ERR_ADMIN_QUEUE_NO_WORK if the admin queue is empty. * I40E_ERR_ADMIN_QUEUE_NO_WORK if the admin queue is empty, and any errors
* from the firmware are propagated.
**/ **/
int i40evf_verify_api_ver(struct i40evf_adapter *adapter) int i40evf_verify_api_ver(struct i40evf_adapter *adapter)
{ {
...@@ -102,13 +103,13 @@ int i40evf_verify_api_ver(struct i40evf_adapter *adapter) ...@@ -102,13 +103,13 @@ int i40evf_verify_api_ver(struct i40evf_adapter *adapter)
goto out_alloc; goto out_alloc;
err = (i40e_status)le32_to_cpu(event.desc.cookie_low); err = (i40e_status)le32_to_cpu(event.desc.cookie_low);
if (err) { if (err)
err = -EIO;
goto out_alloc; goto out_alloc;
}
if ((enum i40e_virtchnl_ops)le32_to_cpu(event.desc.cookie_high) != if ((enum i40e_virtchnl_ops)le32_to_cpu(event.desc.cookie_high) !=
I40E_VIRTCHNL_OP_VERSION) { I40E_VIRTCHNL_OP_VERSION) {
dev_info(&adapter->pdev->dev, "Invalid reply type %d from PF\n",
le32_to_cpu(event.desc.cookie_high));
err = -EIO; err = -EIO;
goto out_alloc; goto out_alloc;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment