// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * RDMA Transport Layer
 *
 * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved.
 * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved.
 * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved.
 */
#undef pr_fmt
#define pr_fmt(fmt) KBUILD_MODNAME " L" __stringify(__LINE__) ": " fmt

#include "rtrs-srv.h"

int rtrs_srv_reset_rdma_stats(struct rtrs_srv_stats *stats, bool enable)
{
	if (enable) {
		struct rtrs_srv_stats_rdma_stats *r = &stats->rdma_stats;

		memset(r, 0, sizeof(*r));
		return 0;
	}

	return -EINVAL;
}

ssize_t rtrs_srv_stats_rdma_to_str(struct rtrs_srv_stats *stats, char *page)
{
	struct rtrs_srv_stats_rdma_stats *r = &stats->rdma_stats;

	return sysfs_emit(page, "%lld %lld %lld %lldn %u\n",
			  (s64)atomic64_read(&r->dir[READ].cnt),
			  (s64)atomic64_read(&r->dir[READ].size_total),
			  (s64)atomic64_read(&r->dir[WRITE].cnt),
			  (s64)atomic64_read(&r->dir[WRITE].size_total), 0);
}
