Virtchnl failures can be hard to debug without logs. Logging the details
of virtchnl transactions can be useful for debugging virtchnl-related
issues.

Tested: Built and booted on a test machine.

Signed-off-by: Li Li <[email protected]>
---
v2:
 - Use dev_warn_ratelimited instead of dev_notice_ratelimited based on
   reviewer feedback.

 drivers/net/ethernet/intel/libie/controlq.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/net/ethernet/intel/libie/controlq.c 
b/drivers/net/ethernet/intel/libie/controlq.c
index ebc05355e39d..bf200fea1e12 100644
--- a/drivers/net/ethernet/intel/libie/controlq.c
+++ b/drivers/net/ethernet/intel/libie/controlq.c
@@ -762,6 +762,16 @@ libie_ctlq_xn_process_recv(struct 
libie_ctlq_xn_recv_params *params,
        status = ctlq_msg->chnl_retval ? -EFAULT : 0;
 
        xn = &xnm->ring[xn_index];
+
+       if (ctlq_msg->chnl_retval) {
+               dev_err_ratelimited(
+                       params->ctlq->dev,
+                       "Non-zero virtchnl ret val (msg op: %u, ret val: %u, 
msg_cookie: %u, data_len: %u); xn op: %u, id: %u, cookie: %u\n",
+                       ctlq_msg->chnl_opcode, ctlq_msg->chnl_retval,
+                       msg_cookie, ctlq_msg->data_len, xn->virtchnl_opcode,
+                       xn->index, xn->cookie);
+       }
+
        if (ctlq_msg->chnl_opcode != xn->virtchnl_opcode ||
            msg_cookie != xn->cookie)
                return false;
@@ -1011,6 +1021,11 @@ int libie_ctlq_xn_send(struct libie_ctlq_xn_send_params 
*params)
                params->recv_mem = xn->recv_mem;
                break;
        default:
+               dev_warn_ratelimited(
+                       params->ctlq->dev,
+                       "Transaction failed (op %u, xn state: %d, id: %u, 
cookie: %u, size: %zu)\n",
+                       params->chnl_opcode, xn->state, xn->index, xn->cookie,
+                       xn->recv_mem.iov_len);
                ret = -EBADMSG;
                break;
        }
-- 
2.54.0.rc2.544.gc7ae2d5bb8-goog

Reply via email to