File tree Expand file tree Collapse file tree 5 files changed +58
-2
lines changed
drivers/infiniband/ulp/rtrs Expand file tree Collapse file tree 5 files changed +58
-2
lines changed Original file line number Diff line number Diff 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+
31523160static 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+
31633181static 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
31673186static int __init rtrs_client_init (void )
Original file line number Diff line number Diff line change @@ -212,6 +212,8 @@ int rtrs_clt_remove_path_from_sysfs(struct rtrs_clt_path *path,
212212void rtrs_clt_set_max_reconnect_attempts (struct rtrs_clt_sess * clt , int value );
213213int rtrs_clt_get_max_reconnect_attempts (const struct rtrs_clt_sess * clt );
214214void 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
Original file line number Diff line number Diff line change @@ -69,6 +69,7 @@ struct rtrs_ib_dev;
6969
7070struct rtrs_rdma_dev_pd_ops {
7171 int (* init )(struct rtrs_ib_dev * dev );
72+ void (* deinit )(struct rtrs_ib_dev * dev );
7273};
7374
7475struct 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
8991struct rtrs_con {
Original file line number Diff line number Diff 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+ };
3033const 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+
22722303static int __init rtrs_server_init (void )
22732304{
22742305 int err ;
Original file line number Diff line number Diff line change @@ -132,6 +132,8 @@ struct rtrs_srv_ib_ctx {
132132extern const struct class rtrs_dev_class ;
133133
134134void 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
136138static inline void rtrs_srv_update_rdma_stats (struct rtrs_srv_stats * s ,
137139 size_t size , int d )
You can’t perform that action at this time.
0 commit comments