1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33#ifndef _CORE_PRIV_H
34#define _CORE_PRIV_H
35
36#include <linux/list.h>
37#include <linux/spinlock.h>
38#include <linux/cgroup_rdma.h>
39
40#include <rdma/ib_verbs.h>
41
42#if IS_ENABLED(CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS)
43int cma_configfs_init(void);
44void cma_configfs_exit(void);
45#else
46static inline int cma_configfs_init(void)
47{
48 return 0;
49}
50
51static inline void cma_configfs_exit(void)
52{
53}
54#endif
55struct cma_device;
56void cma_ref_dev(struct cma_device *cma_dev);
57void cma_deref_dev(struct cma_device *cma_dev);
58typedef bool (*cma_device_filter)(struct ib_device *, void *);
59struct cma_device *cma_enum_devices_by_ibdev(cma_device_filter filter,
60 void *cookie);
61int cma_get_default_gid_type(struct cma_device *cma_dev,
62 unsigned int port);
63int cma_set_default_gid_type(struct cma_device *cma_dev,
64 unsigned int port,
65 enum ib_gid_type default_gid_type);
66int cma_get_default_roce_tos(struct cma_device *cma_dev, unsigned int port);
67int cma_set_default_roce_tos(struct cma_device *a_dev, unsigned int port,
68 u8 default_roce_tos);
69struct ib_device *cma_get_ib_dev(struct cma_device *cma_dev);
70
71int ib_device_register_sysfs(struct ib_device *device,
72 int (*port_callback)(struct ib_device *,
73 u8, struct kobject *));
74void ib_device_unregister_sysfs(struct ib_device *device);
75
76void ib_cache_setup(void);
77void ib_cache_cleanup(void);
78
79typedef void (*roce_netdev_callback)(struct ib_device *device, u8 port,
80 struct net_device *idev, void *cookie);
81
82typedef int (*roce_netdev_filter)(struct ib_device *device, u8 port,
83 struct net_device *idev, void *cookie);
84
85void ib_enum_roce_netdev(struct ib_device *ib_dev,
86 roce_netdev_filter filter,
87 void *filter_cookie,
88 roce_netdev_callback cb,
89 void *cookie);
90void ib_enum_all_roce_netdevs(roce_netdev_filter filter,
91 void *filter_cookie,
92 roce_netdev_callback cb,
93 void *cookie);
94
95enum ib_cache_gid_default_mode {
96 IB_CACHE_GID_DEFAULT_MODE_SET,
97 IB_CACHE_GID_DEFAULT_MODE_DELETE
98};
99
100int ib_cache_gid_parse_type_str(const char *buf);
101
102const char *ib_cache_gid_type_str(enum ib_gid_type gid_type);
103
104void ib_cache_gid_set_default_gid(struct ib_device *ib_dev, u8 port,
105 struct net_device *ndev,
106 unsigned long gid_type_mask,
107 enum ib_cache_gid_default_mode mode);
108
109int ib_cache_gid_add(struct ib_device *ib_dev, u8 port,
110 union ib_gid *gid, struct ib_gid_attr *attr);
111
112int ib_cache_gid_del(struct ib_device *ib_dev, u8 port,
113 union ib_gid *gid, struct ib_gid_attr *attr);
114
115int ib_cache_gid_del_all_netdev_gids(struct ib_device *ib_dev, u8 port,
116 struct net_device *ndev);
117
118int roce_gid_mgmt_init(void);
119void roce_gid_mgmt_cleanup(void);
120
121int roce_rescan_device(struct ib_device *ib_dev);
122unsigned long roce_gid_type_mask_support(struct ib_device *ib_dev, u8 port);
123
124int ib_cache_setup_one(struct ib_device *device);
125void ib_cache_cleanup_one(struct ib_device *device);
126void ib_cache_release_one(struct ib_device *device);
127
128#ifdef CONFIG_CGROUP_RDMA
129int ib_device_register_rdmacg(struct ib_device *device);
130void ib_device_unregister_rdmacg(struct ib_device *device);
131
132int ib_rdmacg_try_charge(struct ib_rdmacg_object *cg_obj,
133 struct ib_device *device,
134 enum rdmacg_resource_type resource_index);
135
136void ib_rdmacg_uncharge(struct ib_rdmacg_object *cg_obj,
137 struct ib_device *device,
138 enum rdmacg_resource_type resource_index);
139#else
140static inline int ib_device_register_rdmacg(struct ib_device *device)
141{ return 0; }
142
143static inline void ib_device_unregister_rdmacg(struct ib_device *device)
144{ }
145
146static inline int ib_rdmacg_try_charge(struct ib_rdmacg_object *cg_obj,
147 struct ib_device *device,
148 enum rdmacg_resource_type resource_index)
149{ return 0; }
150
151static inline void ib_rdmacg_uncharge(struct ib_rdmacg_object *cg_obj,
152 struct ib_device *device,
153 enum rdmacg_resource_type resource_index)
154{ }
155#endif
156
157static inline bool rdma_is_upper_dev_rcu(struct net_device *dev,
158 struct net_device *upper)
159{
160 return netdev_has_upper_dev_all_rcu(dev, upper);
161}
162
163int addr_init(void);
164void addr_cleanup(void);
165
166int ib_mad_init(void);
167void ib_mad_cleanup(void);
168
169int ib_sa_init(void);
170void ib_sa_cleanup(void);
171
172int ibnl_init(void);
173void ibnl_cleanup(void);
174
175
176
177
178
179
180int ibnl_chk_listeners(unsigned int group);
181
182int ib_nl_handle_resolve_resp(struct sk_buff *skb,
183 struct netlink_callback *cb);
184int ib_nl_handle_set_timeout(struct sk_buff *skb,
185 struct netlink_callback *cb);
186int ib_nl_handle_ip_res_resp(struct sk_buff *skb,
187 struct netlink_callback *cb);
188
189#endif
190