Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003  * RDMA Transport Layer
0004  *
0005  * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved.
0006  * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved.
0007  * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved.
0008  */
0009 #undef pr_fmt
0010 #define pr_fmt(fmt) KBUILD_MODNAME " L" __stringify(__LINE__) ": " fmt
0011 
0012 #include "rtrs-srv.h"
0013 
0014 int rtrs_srv_reset_rdma_stats(struct rtrs_srv_stats *stats, bool enable)
0015 {
0016     if (enable) {
0017         int cpu;
0018         struct rtrs_srv_stats_rdma_stats *r;
0019 
0020         for_each_possible_cpu(cpu) {
0021             r = per_cpu_ptr(stats->rdma_stats, cpu);
0022             memset(r, 0, sizeof(*r));
0023         }
0024 
0025         return 0;
0026     }
0027 
0028     return -EINVAL;
0029 }
0030 
0031 ssize_t rtrs_srv_stats_rdma_to_str(struct rtrs_srv_stats *stats, char *page)
0032 {
0033     int cpu;
0034     struct rtrs_srv_stats_rdma_stats sum;
0035     struct rtrs_srv_stats_rdma_stats *r;
0036 
0037     memset(&sum, 0, sizeof(sum));
0038 
0039     for_each_possible_cpu(cpu) {
0040         r = per_cpu_ptr(stats->rdma_stats, cpu);
0041 
0042         sum.dir[READ].cnt     += r->dir[READ].cnt;
0043         sum.dir[READ].size_total  += r->dir[READ].size_total;
0044         sum.dir[WRITE].cnt    += r->dir[WRITE].cnt;
0045         sum.dir[WRITE].size_total += r->dir[WRITE].size_total;
0046     }
0047 
0048     return sysfs_emit(page, "%llu %llu %llu %llu\n",
0049               sum.dir[READ].cnt, sum.dir[READ].size_total,
0050               sum.dir[WRITE].cnt, sum.dir[WRITE].size_total);
0051 }