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

cma_priv.h (3971B)


      1/*
      2 * Copyright (c) 2005 Voltaire Inc.  All rights reserved.
      3 * Copyright (c) 2002-2005, Network Appliance, Inc. All rights reserved.
      4 * Copyright (c) 1999-2005, Mellanox Technologies, Inc. All rights reserved.
      5 * Copyright (c) 2005-2006 Intel Corporation.  All rights reserved.
      6 *
      7 * This software is available to you under a choice of one of two
      8 * licenses.  You may choose to be licensed under the terms of the GNU
      9 * General Public License (GPL) Version 2, available from the file
     10 * COPYING in the main directory of this source tree, or the
     11 * OpenIB.org BSD license below:
     12 *
     13 *     Redistribution and use in source and binary forms, with or
     14 *     without modification, are permitted provided that the following
     15 *     conditions are met:
     16 *
     17 *      - Redistributions of source code must retain the above
     18 *        copyright notice, this list of conditions and the following
     19 *        disclaimer.
     20 *
     21 *      - Redistributions in binary form must reproduce the above
     22 *        copyright notice, this list of conditions and the following
     23 *        disclaimer in the documentation and/or other materials
     24 *        provided with the distribution.
     25 *
     26 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     27 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     28 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     29 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
     30 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
     31 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
     32 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     33 * SOFTWARE.
     34 */
     35
     36#ifndef _CMA_PRIV_H
     37#define _CMA_PRIV_H
     38
     39enum rdma_cm_state {
     40	RDMA_CM_IDLE,
     41	RDMA_CM_ADDR_QUERY,
     42	RDMA_CM_ADDR_RESOLVED,
     43	RDMA_CM_ROUTE_QUERY,
     44	RDMA_CM_ROUTE_RESOLVED,
     45	RDMA_CM_CONNECT,
     46	RDMA_CM_DISCONNECT,
     47	RDMA_CM_ADDR_BOUND,
     48	RDMA_CM_LISTEN,
     49	RDMA_CM_DEVICE_REMOVAL,
     50	RDMA_CM_DESTROYING
     51};
     52
     53struct rdma_id_private {
     54	struct rdma_cm_id	id;
     55
     56	struct rdma_bind_list	*bind_list;
     57	struct hlist_node	node;
     58	union {
     59		struct list_head device_item; /* On cma_device->id_list */
     60		struct list_head listen_any_item; /* On listen_any_list */
     61	};
     62	union {
     63		/* On rdma_id_private->listen_list */
     64		struct list_head listen_item;
     65		struct list_head listen_list;
     66	};
     67	struct cma_device	*cma_dev;
     68	struct list_head	mc_list;
     69
     70	int			internal_id;
     71	enum rdma_cm_state	state;
     72	spinlock_t		lock;
     73	struct mutex		qp_mutex;
     74
     75	struct completion	comp;
     76	refcount_t refcount;
     77	struct mutex		handler_mutex;
     78
     79	int			backlog;
     80	int			timeout_ms;
     81	struct ib_sa_query	*query;
     82	int			query_id;
     83	union {
     84		struct ib_cm_id	*ib;
     85		struct iw_cm_id	*iw;
     86	} cm_id;
     87
     88	u32			seq_num;
     89	u32			qkey;
     90	u32			qp_num;
     91	u32			options;
     92	u8			srq;
     93	u8			tos;
     94	u8			tos_set:1;
     95	u8                      timeout_set:1;
     96	u8			min_rnr_timer_set:1;
     97	u8			reuseaddr;
     98	u8			afonly;
     99	u8			timeout;
    100	u8			min_rnr_timer;
    101	u8 used_resolve_ip;
    102	enum ib_gid_type	gid_type;
    103
    104	/*
    105	 * Internal to RDMA/core, don't use in the drivers
    106	 */
    107	struct rdma_restrack_entry     res;
    108	struct rdma_ucm_ece ece;
    109};
    110
    111#if IS_ENABLED(CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS)
    112int cma_configfs_init(void);
    113void cma_configfs_exit(void);
    114#else
    115static inline int cma_configfs_init(void)
    116{
    117	return 0;
    118}
    119
    120static inline void cma_configfs_exit(void)
    121{
    122}
    123#endif
    124
    125void cma_dev_get(struct cma_device *dev);
    126void cma_dev_put(struct cma_device *dev);
    127typedef bool (*cma_device_filter)(struct ib_device *, void *);
    128struct cma_device *cma_enum_devices_by_ibdev(cma_device_filter filter,
    129					     void *cookie);
    130int cma_get_default_gid_type(struct cma_device *dev, u32 port);
    131int cma_set_default_gid_type(struct cma_device *dev, u32 port,
    132			     enum ib_gid_type default_gid_type);
    133int cma_get_default_roce_tos(struct cma_device *dev, u32 port);
    134int cma_set_default_roce_tos(struct cma_device *dev, u32 port,
    135			     u8 default_roce_tos);
    136struct ib_device *cma_get_ib_dev(struct cma_device *dev);
    137
    138#endif /* _CMA_PRIV_H */