int err, copied;
long timeo;
struct bzcopy_state *bz = NULL;
- unsigned long long a, b, c;
- unsigned long long start, end;
SDPSTATS_COUNTER_INC(sendmsg);
lock_sock(sk);
sdp_dbg_data(sk, "%s\n", __func__);
- rdtscll(start);
-
posts_handler_get(ssk);
flags = msg->msg_flags;
SDPSTATS_HIST(sendmsg_seglen, seglen);
- rdtscll(a);
if (bz)
sdp_bz_cleanup(bz);
- rdtscll(b);
bz = sdp_bz_setup(ssk, from, seglen, size_goal);
- rdtscll(c);
- SDPSTATS_COUNTER_ADD(bz_clean_sum, b - a);
- SDPSTATS_COUNTER_ADD(bz_setup_sum, c - b);
if (IS_ERR(bz)) {
bz = NULL;
err = PTR_ERR(bz);
goto new_segment;
}
- rdtscll(a);
copy = (bz) ? sdp_bzcopy_get(sk, skb, from, copy, bz) :
sdp_bcopy_get(sk, skb, from, copy);
- rdtscll(b);
- if (copy > 0)
- SDPSTATS_COUNTER_ADD(tx_copy_sum, b - a);
if (unlikely(copy < 0)) {
if (!++copy)
goto wait_for_memory;
sdp_auto_moderation(ssk);
- rdtscll(end);
- SDPSTATS_COUNTER_ADD(sendmsg_sum, end - start);
release_sock(sk);
return copied;
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, "bz_clean \t\t: %d\n", sdpstats.sendmsg ?
- sdpstats.bz_clean_sum / sdpstats.sendmsg : 0);
- seq_printf(seq, "bz_setup \t\t: %d\n", sdpstats.sendmsg ?
- sdpstats.bz_setup_sum / sdpstats.sendmsg : 0);
- seq_printf(seq, "tx_copy \t\t: %d\n", sdpstats.sendmsg ?
- sdpstats.tx_copy_sum / sdpstats.sendmsg : 0);
- seq_printf(seq, "sendmsg \t\t: %d\n", sdpstats.sendmsg ?
- sdpstats.sendmsg_sum / sdpstats.sendmsg : 0);
return 0;
}