This is the fixed patch:

Signed-off-by: Leonid Arsh <[EMAIL PROTECTED]>

Index: linux-kernel/infiniband/include/rdma/ib_verbs.h
===================================================================
--- linux-kernel/infiniband/include/rdma/ib_verbs.h     (revision 8165)
+++ linux-kernel/infiniband/include/rdma/ib_verbs.h     (working copy)
@@ -283,7 +283,8 @@
        IB_EVENT_SM_CHANGE,
        IB_EVENT_SRQ_ERR,
        IB_EVENT_SRQ_LIMIT_REACHED,
-       IB_EVENT_QP_LAST_WQE_REACHED
+       IB_EVENT_QP_LAST_WQE_REACHED,
+       IB_EVENT_CLIENT_REREGISTER
 };
 
 struct ib_event {
Index: linux-kernel/infiniband/hw/mthca/mthca_eq.c
===================================================================
--- linux-kernel/infiniband/hw/mthca/mthca_eq.c (revision 8504)
+++ linux-kernel/infiniband/hw/mthca/mthca_eq.c (working copy)
@@ -93,6 +93,7 @@
        MTHCA_EVENT_TYPE_WQ_INVAL_REQ_ERROR = 0x10,
        MTHCA_EVENT_TYPE_WQ_ACCESS_ERROR    = 0x11,
        MTHCA_EVENT_TYPE_SRQ_CATAS_ERROR    = 0x12,
+       MTHCA_EVENT_TYPE_CLIENT_REREGISTER  = 0x16,
        MTHCA_EVENT_TYPE_LOCAL_CATAS_ERROR  = 0x08,
        MTHCA_EVENT_TYPE_PORT_CHANGE        = 0x09,
        MTHCA_EVENT_TYPE_EQ_OVERFLOW        = 0x0f,
@@ -111,6 +112,7 @@
                                (1ULL << MTHCA_EVENT_TYPE_WQ_ACCESS_ERROR)    | 
\
                                (1ULL << MTHCA_EVENT_TYPE_LOCAL_CATAS_ERROR)  | 
\
                                (1ULL << MTHCA_EVENT_TYPE_PORT_CHANGE)        | 
\
+                               (1ULL << MTHCA_EVENT_TYPE_CLIENT_REREGISTER)  | 
\
                                (1ULL << MTHCA_EVENT_TYPE_ECC_DETECT))
 #define MTHCA_SRQ_EVENT_MASK   ((1ULL << MTHCA_EVENT_TYPE_SRQ_CATAS_ERROR)    
| \
                                (1ULL << MTHCA_EVENT_TYPE_SRQ_QP_LAST_WQE)    | 
\
@@ -274,6 +276,20 @@
        ib_dispatch_event(&record);
 }
 
+static void client_reregister_event(struct mthca_dev *dev, int port)
+{
+       struct ib_event record;
+
+       mthca_dbg(dev, "Client reregister for port %d\n",
+                 port);
+
+       record.device = &dev->ib_dev;
+       record.event  = IB_EVENT_CLIENT_REREGISTER;
+       record.element.port_num = port;
+
+       ib_dispatch_event(&record);
+}
+
 static int mthca_eq_int(struct mthca_dev *dev, struct mthca_eq *eq)
 {
        struct mthca_eqe *eqe;
@@ -365,7 +381,12 @@
                case MTHCA_EVENT_TYPE_EQ_OVERFLOW:
                        mthca_warn(dev, "EQ overrun on EQN %d\n", eq->eqn);
                        break;
-
+               case MTHCA_EVENT_TYPE_CLIENT_REREGISTER:
+                       client_reregister_event(dev,
+                                               (be32_to_cpu
+                                                (eqe->event.port_change.
+                                                 port) >> 28) & 3);
+                       break;
                case MTHCA_EVENT_TYPE_EEC_CATAS_ERROR:
                case MTHCA_EVENT_TYPE_SRQ_CATAS_ERROR:
                case MTHCA_EVENT_TYPE_LOCAL_CATAS_ERROR:
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to