Commit 7bdd6f74 authored by Mitch Williams's avatar Mitch Williams Committed by Jeff Kirsher

i40evf: properly handle multiple AQ messages

When we receive an admin queue message, the msg_size field in the event
struct gets overwritten. Because of this, we need to reinit the field
each time we go through the loop. Without this we may receive truncated
messages due to the firmware thinking we have insufficient buffer size.

Change-ID: I21dcca5114d91365d731169965ce3ffec0e4a190
Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
Signed-off-by: default avatarPatrick Lu <patrick.lu@intel.com>
Tested-by: default avatarJim Young <jamesx.m.young@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 1790ed0c
...@@ -1647,10 +1647,8 @@ static void i40evf_adminq_task(struct work_struct *work) ...@@ -1647,10 +1647,8 @@ static void i40evf_adminq_task(struct work_struct *work)
v_msg->v_retval, event.msg_buf, v_msg->v_retval, event.msg_buf,
event.msg_size); event.msg_size);
if (pending != 0) { if (pending != 0) {
dev_info(&adapter->pdev->dev,
"%s: ARQ: Pending events %d\n",
__func__, pending);
memset(event.msg_buf, 0, I40EVF_MAX_AQ_BUF_SIZE); memset(event.msg_buf, 0, I40EVF_MAX_AQ_BUF_SIZE);
event.msg_size = I40EVF_MAX_AQ_BUF_SIZE;
} }
} while (pending); } while (pending);
......
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