Skip to content

Commit 667db86

Browse files
gprajsnerrleon
authored andcommitted
RDMA/rtrs: Register ib event handler
Use ib_register_event_handler() to register event handlers for both client and server side. For now, all those handlers do, is to print type of incoming event. Signed-off-by: Grzegorz Prajsner <[email protected]> Signed-off-by: Jack Wang <[email protected]> Signed-off-by: Md Haris Iqbal <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Leon Romanovsky <[email protected]>
1 parent d0e62bf commit 667db86

File tree

5 files changed

+58
-2
lines changed

5 files changed

+58
-2
lines changed

drivers/infiniband/ulp/rtrs/rtrs-clt.c

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3149,8 +3149,20 @@ int rtrs_clt_create_path_from_sysfs(struct rtrs_clt_sess *clt,
31493149
return err;
31503150
}
31513151

3152+
void rtrs_clt_ib_event_handler(struct ib_event_handler *handler,
3153+
struct ib_event *ibevent)
3154+
{
3155+
pr_info("Handling event: %s (%d).\n", ib_event_msg(ibevent->event),
3156+
ibevent->event);
3157+
}
3158+
3159+
31523160
static int rtrs_clt_ib_dev_init(struct rtrs_ib_dev *dev)
31533161
{
3162+
INIT_IB_EVENT_HANDLER(&dev->event_handler, dev->ib_dev,
3163+
rtrs_clt_ib_event_handler);
3164+
ib_register_event_handler(&dev->event_handler);
3165+
31543166
if (!(dev->ib_dev->attrs.device_cap_flags &
31553167
IB_DEVICE_MEM_MGT_EXTENSIONS)) {
31563168
pr_err("Memory registrations not supported.\n");
@@ -3160,8 +3172,15 @@ static int rtrs_clt_ib_dev_init(struct rtrs_ib_dev *dev)
31603172
return 0;
31613173
}
31623174

3175+
static void rtrs_clt_ib_dev_deinit(struct rtrs_ib_dev *dev)
3176+
{
3177+
ib_unregister_event_handler(&dev->event_handler);
3178+
}
3179+
3180+
31633181
static const struct rtrs_rdma_dev_pd_ops dev_pd_ops = {
3164-
.init = rtrs_clt_ib_dev_init
3182+
.init = rtrs_clt_ib_dev_init,
3183+
.deinit = rtrs_clt_ib_dev_deinit
31653184
};
31663185

31673186
static int __init rtrs_client_init(void)

drivers/infiniband/ulp/rtrs/rtrs-clt.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ int rtrs_clt_remove_path_from_sysfs(struct rtrs_clt_path *path,
212212
void rtrs_clt_set_max_reconnect_attempts(struct rtrs_clt_sess *clt, int value);
213213
int rtrs_clt_get_max_reconnect_attempts(const struct rtrs_clt_sess *clt);
214214
void free_path(struct rtrs_clt_path *clt_path);
215+
void rtrs_clt_ib_event_handler(struct ib_event_handler *handler,
216+
struct ib_event *ibevent);
215217

216218
/* rtrs-clt-stats.c */
217219

drivers/infiniband/ulp/rtrs/rtrs-pri.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ struct rtrs_ib_dev;
6969

7070
struct rtrs_rdma_dev_pd_ops {
7171
int (*init)(struct rtrs_ib_dev *dev);
72+
void (*deinit)(struct rtrs_ib_dev *dev);
7273
};
7374

7475
struct rtrs_rdma_dev_pd {
@@ -84,6 +85,7 @@ struct rtrs_ib_dev {
8485
struct kref ref;
8586
struct list_head entry;
8687
struct rtrs_rdma_dev_pd *pool;
88+
struct ib_event_handler event_handler;
8789
};
8890

8991
struct rtrs_con {

drivers/infiniband/ulp/rtrs/rtrs-srv.c

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ MODULE_LICENSE("GPL");
2626
#define DEFAULT_SESS_QUEUE_DEPTH 512
2727
#define MAX_HDR_SIZE PAGE_SIZE
2828

29-
static struct rtrs_rdma_dev_pd dev_pd;
29+
static const struct rtrs_rdma_dev_pd_ops dev_pd_ops;
30+
static struct rtrs_rdma_dev_pd dev_pd = {
31+
.ops = &dev_pd_ops
32+
};
3033
const struct class rtrs_dev_class = {
3134
.name = "rtrs-server",
3235
};
@@ -2269,6 +2272,34 @@ static int check_module_params(void)
22692272
return 0;
22702273
}
22712274

2275+
void rtrs_srv_ib_event_handler(struct ib_event_handler *handler,
2276+
struct ib_event *ibevent)
2277+
{
2278+
pr_info("Handling event: %s (%d).\n", ib_event_msg(ibevent->event),
2279+
ibevent->event);
2280+
}
2281+
2282+
static int rtrs_srv_ib_dev_init(struct rtrs_ib_dev *dev)
2283+
{
2284+
INIT_IB_EVENT_HANDLER(&dev->event_handler, dev->ib_dev,
2285+
rtrs_srv_ib_event_handler);
2286+
ib_register_event_handler(&dev->event_handler);
2287+
2288+
return 0;
2289+
}
2290+
2291+
static void rtrs_srv_ib_dev_deinit(struct rtrs_ib_dev *dev)
2292+
{
2293+
ib_unregister_event_handler(&dev->event_handler);
2294+
}
2295+
2296+
2297+
static const struct rtrs_rdma_dev_pd_ops dev_pd_ops = {
2298+
.init = rtrs_srv_ib_dev_init,
2299+
.deinit = rtrs_srv_ib_dev_deinit
2300+
};
2301+
2302+
22722303
static int __init rtrs_server_init(void)
22732304
{
22742305
int err;

drivers/infiniband/ulp/rtrs/rtrs-srv.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ struct rtrs_srv_ib_ctx {
132132
extern const struct class rtrs_dev_class;
133133

134134
void close_path(struct rtrs_srv_path *srv_path);
135+
void rtrs_srv_ib_event_handler(struct ib_event_handler *handler,
136+
struct ib_event *ibevent);
135137

136138
static inline void rtrs_srv_update_rdma_stats(struct rtrs_srv_stats *s,
137139
size_t size, int d)

0 commit comments

Comments
 (0)