seq_printf(seq, "CQ stats:\n");
seq_printf(seq, "- RX interrupts\t\t: %d\n", sdpstats.rx_int_count);
seq_printf(seq, "- TX interrupts\t\t: %d\n", sdpstats.tx_int_count);
+
+ seq_printf(seq, "ZCopy stats:\n");
+ seq_printf(seq, "- TX timeout\t\t: %d\n", sdpstats.zcopy_tx_timeout);
+ seq_printf(seq, "- TX error\t\t: %d\n", sdpstats.zcopy_tx_error);
return 0;
}
else if (tx_sa->bytes_acked > tx_sa->bytes_sent) {
err = -EINVAL;
- sdp_warn(sk, "acked bytes > sent bytes\n");
+ sdp_dbg_data(sk, "acked bytes > sent bytes\n");
tx_sa->abort_flags |= TX_SA_ERROR;
break;
}
}
if (!ssk->qp_active) {
- sdp_warn(sk, "QP destroyed\n");
+ sdp_dbg_data(sk, "QP destroyed\n");
break;
}
sdp_prf(sk, skb, "Finished waiting(rc=%d)", rc);
if (!ssk->qp_active) {
- sdp_warn(sk, "QP destroyed during RDMA read\n");
+ sdp_dbg_data(sk, "QP destroyed during RDMA read\n");
rc = -EPIPE;
goto err_post_send;
}
} else if (f & TX_SA_ERROR) {
sdp_dbg_data(sk, "SrcAvail error completion\n");
sdp_reset(sk);
+ SDPSTATS_COUNTER_INC(zcopy_tx_error);
} else if (ssk->qp_active) {
- if (!(f & TX_SA_INTRRUPTED))
- sdp_warn(sk, "abort_flag = 0x%x.\n", f);
+ if (!(f & TX_SA_INTRRUPTED)) {
+ sdp_dbg_data(sk, "abort_flag = 0x%x.\n", f);
+ SDPSTATS_COUNTER_INC(zcopy_tx_timeout);
+ }
sdp_post_srcavail_cancel(sk);
sdp_wait_rdmardcompl(ssk, timeo, 1);
sdp_dbg_data(sk, "finished waiting\n");
} else {
- sdp_warn(sk, "QP was destroyed while waiting\n");
+ sdp_dbg_data(sk, "QP was destroyed while waiting\n");
}
} else {
sdp_dbg_data(sk, "got RdmaRdCompl\n");