IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules
[deliverable/linux.git] / drivers / infiniband / hw / ehca / ehca_classes.h
index cf95ee474b0f6a1105551ce69f342168d5c2034e..f64d42b08674a9f60fad0aa2635e9f585b747b57 100644 (file)
@@ -42,8 +42,6 @@
 #ifndef __EHCA_CLASSES_H__
 #define __EHCA_CLASSES_H__
 
-#include "ehca_classes.h"
-#include "ipz_pt_fn.h"
 
 struct ehca_module;
 struct ehca_qp;
@@ -54,15 +52,25 @@ struct ehca_mw;
 struct ehca_pd;
 struct ehca_av;
 
-#ifdef CONFIG_PPC64
-#include "ehca_classes_pSeries.h"
-#endif
+#include <linux/wait.h>
 
 #include <rdma/ib_verbs.h>
 #include <rdma/ib_user_verbs.h>
 
+#ifdef CONFIG_PPC64
+#include "ehca_classes_pSeries.h"
+#endif
+#include "ipz_pt_fn.h"
+#include "ehca_qes.h"
 #include "ehca_irq.h"
 
+#define EHCA_EQE_CACHE_SIZE 20
+
+struct ehca_eqe_cache_entry {
+       struct ehca_eqe *eqe;
+       struct ehca_cq *cq;
+};
+
 struct ehca_eq {
        u32 length;
        struct ipz_queue ipz_queue;
@@ -74,6 +82,8 @@ struct ehca_eq {
        spinlock_t spinlock;
        struct tasklet_struct interrupt_task;
        u32 ist;
+       spinlock_t irq_spinlock;
+       struct ehca_eqe_cache_entry eqe_cache[EHCA_EQE_CACHE_SIZE];
 };
 
 struct ehca_sport {
@@ -96,6 +106,7 @@ struct ehca_shca {
        struct ehca_mr *maxmr;
        struct ehca_pd *pd;
        struct h_galpas galpas;
+       struct mutex modify_mutex;
 };
 
 struct ehca_pd {
@@ -145,7 +156,9 @@ struct ehca_cq {
        spinlock_t cb_lock;
        struct hlist_head qp_hashtab[QP_HASHTAB_LEN];
        struct list_head entry;
-       u32 nr_callbacks;
+       u32 nr_callbacks; /* #events assigned to cpu by scaling code */
+       u32 nr_events;    /* #events seen */
+       wait_queue_head_t wait_completion;
        spinlock_t task_lock;
        u32 ownpid;
        /* mmap counter for resources mapped into user space */
@@ -163,6 +176,7 @@ struct ehca_mr {
                struct ib_mr ib_mr;     /* must always be first in ehca_mr */
                struct ib_fmr ib_fmr;   /* must always be first in ehca_mr */
        } ib;
+       struct ib_umem *umem;
        spinlock_t mrlock;
 
        enum ehca_mr_flag flags;
@@ -269,6 +283,7 @@ extern struct idr ehca_cq_idr;
 extern int ehca_static_rate;
 extern int ehca_port_act_time;
 extern int ehca_use_hp_mr;
+extern int ehca_scaling_code;
 
 struct ipzu_queue_resp {
        u32 qe_size;      /* queue entry size */
This page took 0.064621 seconds and 5 git commands to generate.