cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rdma_counter.h (1920B)


      1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
      2/*
      3 * Copyright (c) 2019 Mellanox Technologies. All rights reserved.
      4 */
      5
      6#ifndef _RDMA_COUNTER_H_
      7#define _RDMA_COUNTER_H_
      8
      9#include <linux/mutex.h>
     10#include <linux/pid_namespace.h>
     11
     12#include <rdma/restrack.h>
     13#include <rdma/rdma_netlink.h>
     14
     15struct ib_device;
     16struct ib_qp;
     17
     18struct auto_mode_param {
     19	int qp_type;
     20};
     21
     22struct rdma_counter_mode {
     23	enum rdma_nl_counter_mode mode;
     24	enum rdma_nl_counter_mask mask;
     25	struct auto_mode_param param;
     26};
     27
     28struct rdma_port_counter {
     29	struct rdma_counter_mode mode;
     30	struct rdma_hw_stats *hstats;
     31	unsigned int num_counters;
     32	struct mutex lock;
     33};
     34
     35struct rdma_counter {
     36	struct rdma_restrack_entry	res;
     37	struct ib_device		*device;
     38	uint32_t			id;
     39	struct kref			kref;
     40	struct rdma_counter_mode	mode;
     41	struct mutex			lock;
     42	struct rdma_hw_stats		*stats;
     43	u32				port;
     44};
     45
     46void rdma_counter_init(struct ib_device *dev);
     47void rdma_counter_release(struct ib_device *dev);
     48int rdma_counter_set_auto_mode(struct ib_device *dev, u32 port,
     49			       enum rdma_nl_counter_mask mask,
     50			       struct netlink_ext_ack *extack);
     51int rdma_counter_bind_qp_auto(struct ib_qp *qp, u32 port);
     52int rdma_counter_unbind_qp(struct ib_qp *qp, bool force);
     53
     54int rdma_counter_query_stats(struct rdma_counter *counter);
     55u64 rdma_counter_get_hwstat_value(struct ib_device *dev, u32 port, u32 index);
     56int rdma_counter_bind_qpn(struct ib_device *dev, u32 port,
     57			  u32 qp_num, u32 counter_id);
     58int rdma_counter_bind_qpn_alloc(struct ib_device *dev, u32 port,
     59				u32 qp_num, u32 *counter_id);
     60int rdma_counter_unbind_qpn(struct ib_device *dev, u32 port,
     61			    u32 qp_num, u32 counter_id);
     62int rdma_counter_get_mode(struct ib_device *dev, u32 port,
     63			  enum rdma_nl_counter_mode *mode,
     64			  enum rdma_nl_counter_mask *mask);
     65
     66int rdma_counter_modify(struct ib_device *dev, u32 port,
     67			unsigned int index, bool enable);
     68#endif /* _RDMA_COUNTER_H_ */