linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / infiniband / core / mad_priv.h
index d147f3b..570f786 100644 (file)
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  * SOFTWARE.
  *
- * $Id: mad_priv.h 5596 2006-03-03 01:00:07Z sean.hefty $
+ * $Id: mad_priv.h 2730 2005-06-28 16:43:03Z sean.hefty $
  */
 
 #ifndef __IB_MAD_PRIV_H__
 #define __IB_MAD_PRIV_H__
 
-#include <linux/completion.h>
 #include <linux/pci.h>
 #include <linux/kthread.h>
 #include <linux/workqueue.h>
@@ -86,12 +85,6 @@ struct ib_mad_private {
        } mad;
 } __attribute__ ((packed));
 
-struct ib_rmpp_segment {
-       struct list_head list;
-       u32 num;
-       u8 data[0];
-};
-
 struct ib_mad_agent_private {
        struct list_head agent_list;
        struct ib_mad_agent agent;
@@ -109,7 +102,7 @@ struct ib_mad_agent_private {
        struct list_head rmpp_list;
 
        atomic_t refcount;
-       struct completion comp;
+       wait_queue_head_t wait;
 };
 
 struct ib_mad_snoop_private {
@@ -118,7 +111,7 @@ struct ib_mad_snoop_private {
        int snoop_index;
        int mad_snoop_flags;
        atomic_t refcount;
-       struct completion comp;
+       wait_queue_head_t wait;
 };
 
 struct ib_mad_send_wr_private {
@@ -126,8 +119,7 @@ struct ib_mad_send_wr_private {
        struct list_head agent_list;
        struct ib_mad_agent_private *mad_agent_priv;
        struct ib_mad_send_buf send_buf;
-       DECLARE_PCI_UNMAP_ADDR(header_mapping)
-       DECLARE_PCI_UNMAP_ADDR(payload_mapping)
+       DECLARE_PCI_UNMAP_ADDR(mapping)
        struct ib_send_wr send_wr;
        struct ib_sge sg_list[IB_MAD_SEND_REQ_MAX_SG];
        __be64 tid;
@@ -138,12 +130,11 @@ struct ib_mad_send_wr_private {
        enum ib_wc_status status;
 
        /* RMPP control */
-       struct list_head rmpp_list;
-       struct ib_rmpp_segment *last_ack_seg;
-       struct ib_rmpp_segment *cur_seg;
        int last_ack;
        int seg_num;
        int newwin;
+       int total_seg;
+       int data_offset;
        int pad;
 };
 
@@ -212,11 +203,12 @@ struct ib_mad_port_private {
        struct ib_mad_qp_info qp_info[IB_MAD_QPS_CORE];
 };
 
+extern kmem_cache_t *ib_mad_cache;
+
 int ib_send_mad(struct ib_mad_send_wr_private *mad_send_wr);
 
 struct ib_mad_send_wr_private *
-ib_find_send_mad(struct ib_mad_agent_private *mad_agent_priv,
-                struct ib_mad_recv_wc *mad_recv_wc);
+ib_find_send_mad(struct ib_mad_agent_private *mad_agent_priv, __be64 tid);
 
 void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr,
                             struct ib_mad_send_wc *mad_send_wc);