diff options
author | Hoang-Nam Nguyen <hnguyen@linux.vnet.ibm.com> | 2007-02-15 11:06:33 -0500 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-02-16 16:57:34 -0500 |
commit | 78d8d5f9ef8d6179e92b94481cfdfc45d396992f (patch) | |
tree | 55ee3cecd4c0d59f418b59870cec2ac33b1b70e7 /drivers/infiniband/hw/ehca/ehca_classes.h | |
parent | 551fd6122d247d76124c4fdb6eb898cc8e3d74aa (diff) |
IB/ehca: Rework irq handler
Rework ehca interrupt handling to avoid/reduce missed irq events.
Signed-off-by: Hoang-Nam Nguyen <hnguyen@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/ehca/ehca_classes.h')
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_classes.h | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h index cf95ee474b0f..f08ad6f9c132 100644 --- a/drivers/infiniband/hw/ehca/ehca_classes.h +++ b/drivers/infiniband/hw/ehca/ehca_classes.h | |||
@@ -42,8 +42,6 @@ | |||
42 | #ifndef __EHCA_CLASSES_H__ | 42 | #ifndef __EHCA_CLASSES_H__ |
43 | #define __EHCA_CLASSES_H__ | 43 | #define __EHCA_CLASSES_H__ |
44 | 44 | ||
45 | #include "ehca_classes.h" | ||
46 | #include "ipz_pt_fn.h" | ||
47 | 45 | ||
48 | struct ehca_module; | 46 | struct ehca_module; |
49 | struct ehca_qp; | 47 | struct ehca_qp; |
@@ -54,14 +52,22 @@ struct ehca_mw; | |||
54 | struct ehca_pd; | 52 | struct ehca_pd; |
55 | struct ehca_av; | 53 | struct ehca_av; |
56 | 54 | ||
55 | #include <rdma/ib_verbs.h> | ||
56 | #include <rdma/ib_user_verbs.h> | ||
57 | |||
57 | #ifdef CONFIG_PPC64 | 58 | #ifdef CONFIG_PPC64 |
58 | #include "ehca_classes_pSeries.h" | 59 | #include "ehca_classes_pSeries.h" |
59 | #endif | 60 | #endif |
61 | #include "ipz_pt_fn.h" | ||
62 | #include "ehca_qes.h" | ||
63 | #include "ehca_irq.h" | ||
60 | 64 | ||
61 | #include <rdma/ib_verbs.h> | 65 | #define EHCA_EQE_CACHE_SIZE 20 |
62 | #include <rdma/ib_user_verbs.h> | ||
63 | 66 | ||
64 | #include "ehca_irq.h" | 67 | struct ehca_eqe_cache_entry { |
68 | struct ehca_eqe *eqe; | ||
69 | struct ehca_cq *cq; | ||
70 | }; | ||
65 | 71 | ||
66 | struct ehca_eq { | 72 | struct ehca_eq { |
67 | u32 length; | 73 | u32 length; |
@@ -74,6 +80,8 @@ struct ehca_eq { | |||
74 | spinlock_t spinlock; | 80 | spinlock_t spinlock; |
75 | struct tasklet_struct interrupt_task; | 81 | struct tasklet_struct interrupt_task; |
76 | u32 ist; | 82 | u32 ist; |
83 | spinlock_t irq_spinlock; | ||
84 | struct ehca_eqe_cache_entry eqe_cache[EHCA_EQE_CACHE_SIZE]; | ||
77 | }; | 85 | }; |
78 | 86 | ||
79 | struct ehca_sport { | 87 | struct ehca_sport { |