From ddef8636923865a41c1afbb7d7724f6b6b462472 Mon Sep 17 00:00:00 2001 From: Amir Vadai Date: Tue, 3 Apr 2012 13:52:45 +0300 Subject: [PATCH] sdp: add [rt]x_bytes counters to sdpstats Those counter shows how many bytes actually rx/tx using SDP sockets. Signed-off-by: Amir Vadai Signed-off-by: Dotan Barak --- drivers/infiniband/ulp/sdp/sdp.h | 2 ++ drivers/infiniband/ulp/sdp/sdp_main.c | 4 ++++ drivers/infiniband/ulp/sdp/sdp_proc.c | 11 +++++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/ulp/sdp/sdp.h b/drivers/infiniband/ulp/sdp/sdp.h index 02cf8f0e6f42..6213f794e54c 100644 --- a/drivers/infiniband/ulp/sdp/sdp.h +++ b/drivers/infiniband/ulp/sdp/sdp.h @@ -772,6 +772,8 @@ static inline int credit_update_needed(struct sdp_sock *ssk) #define SDPSTATS_MAX_HIST_SIZE 256 struct sdpstats { + u64 rx_bytes; + u64 tx_bytes; u32 post_send[256]; u32 inline_sends; u32 sendmsg_bcopy_segment; diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index c26f6aff6c22..9287003e02b0 100644 --- a/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/drivers/infiniband/ulp/sdp/sdp_main.c @@ -2018,6 +2018,8 @@ out: err = copied; sdp_dbg_data(sk, "copied: 0x%x\n", copied); + if (copied > 0) + SDPSTATS_COUNTER_ADD(tx_bytes, copied); goto fin; @@ -2442,6 +2444,8 @@ found_fin_ok: got_disconn_in_peek: err = copied; + if (copied > 0) + SDPSTATS_COUNTER_ADD(rx_bytes, copied); out: posts_handler_put(ssk, SDP_RX_ARMING_DELAY); diff --git a/drivers/infiniband/ulp/sdp/sdp_proc.c b/drivers/infiniband/ulp/sdp/sdp_proc.c index e502b37f8581..fa0a9875985a 100644 --- a/drivers/infiniband/ulp/sdp/sdp_proc.c +++ b/drivers/infiniband/ulp/sdp/sdp_proc.c @@ -314,13 +314,15 @@ static void sdpstats_seq_hist(struct seq_file *seq, char *str, u32 *h, int n, } } -#define SDPSTATS_COUNTER_GET(var) ({ \ - u32 __val = 0; \ +#define _SDPSTATS_COUNTER_GET(var, _type) ({ \ + _type __val = 0; \ unsigned int __i; \ for_each_possible_cpu(__i) \ __val += per_cpu(sdpstats, __i).var; \ __val; \ }) +#define SDPSTATS_COUNTER_GET(var) _SDPSTATS_COUNTER_GET(var, u32) +#define SDPSTATS_COUNTER_GET64(var) _SDPSTATS_COUNTER_GET(var, u64) #define SDPSTATS_HIST_GET(hist, hist_len, sum) ({ \ unsigned int __i; \ @@ -360,6 +362,11 @@ static int sdpstats_seq_show(struct seq_file *seq, void *v) seq_printf(seq, "SDP statistics:\n"); + seq_printf(seq, "rx_bytes\t\t: %llu\n", + SDPSTATS_COUNTER_GET64(rx_bytes)); + seq_printf(seq, "tx_bytes\t\t: %llu\n", + SDPSTATS_COUNTER_GET64(tx_bytes)); + __sdpstats_seq_hist(seq, "sendmsg_seglen", sendmsg_seglen, 1); __sdpstats_seq_hist(seq, "send_size", send_size, 1); __sdpstats_seq_hist(seq, "credits_before_update", -- 2.50.1