Whamcloud - gitweb
LU-12287 lnet: handling device failure by IB event handler
[fs/lustre-release.git] / lnet / klnds / o2iblnd / o2iblnd.h
index 269306f..9eb4578 100644 (file)
@@ -117,16 +117,15 @@ extern struct kib_tunables  kiblnd_tunables;
                        min(t->lnd_peercredits_hiw, (__u32)conn->ibc_queue_depth - 1))
 
 #ifdef HAVE_RDMA_CREATE_ID_5ARG
-# define kiblnd_rdma_create_id(ns, cb, dev, ps, qpt) rdma_create_id(ns, cb, \
-                                                                   dev, ps, \
-                                                                   qpt)
+# define kiblnd_rdma_create_id(ns, cb, dev, ps, qpt) \
+        rdma_create_id((ns) ? (ns) : &init_net, cb, dev, ps, qpt)
 #else
 # ifdef HAVE_RDMA_CREATE_ID_4ARG
-#  define kiblnd_rdma_create_id(ns, cb, dev, ps, qpt) rdma_create_id(cb, dev, \
-                                                                    ps, qpt)
+#  define kiblnd_rdma_create_id(ns, cb, dev, ps, qpt) \
+         rdma_create_id(cb, dev, ps, qpt)
 # else
-#  define kiblnd_rdma_create_id(ns, cb, dev, ps, qpt) rdma_create_id(cb, dev, \
-                                                                    ps)
+#  define kiblnd_rdma_create_id(ns, cb, dev, ps, qpt) \
+         rdma_create_id(cb, dev, ps)
 # endif
 #endif
 
@@ -205,6 +204,13 @@ struct kib_hca_dev {
        struct ib_mr        *ibh_mrs;           /* global MR */
 #endif
        struct ib_pd        *ibh_pd;            /* PD */
+       u8                   ibh_port;          /* port number */
+       struct ib_event_handler
+                            ibh_event_handler; /* IB event handler */
+       int                  ibh_state;         /* device status */
+#define IBLND_DEV_PORT_DOWN     0
+#define IBLND_DEV_PORT_ACTIVE   1
+#define IBLND_DEV_FATAL         2
        struct kib_dev           *ibh_dev;           /* owner */
        atomic_t             ibh_ref;           /* refcount */
 };
@@ -374,6 +380,7 @@ struct kib_net {
        struct kib_fmr_poolset  **ibn_fmr_ps;   /* fmr pool-set */
 
        struct kib_dev          *ibn_dev;       /* underlying IB device */
+       struct lnet_ni          *ibn_ni;        /* LNet interface */
 };
 
 #define KIB_THREAD_SHIFT               16
@@ -1128,8 +1135,8 @@ static inline void kiblnd_dma_unmap_sg(struct ib_device *dev,
 
 #ifndef HAVE_IB_SG_DMA_ADDRESS
 #include <linux/scatterlist.h>
-#define ib_sg_dma_address(dev, sg)     sg_dma_address((dev), (sg))
-#define ib_sg_dma_len(dev, sg)         sg_dma_len((dev), (sg))
+#define ib_sg_dma_address(dev, sg)     sg_dma_address(sg)
+#define ib_sg_dma_len(dev, sg)         sg_dma_len(sg)
 #endif
 
 static inline __u64 kiblnd_sg_dma_address(struct ib_device *dev,