IB/qib: RDMA lkey/rkey validation is inefficient for large MRs
[linux.git] / drivers / infiniband / hw / qib / qib_verbs.h
index bd57c12732258698dd30416f79241732750f23e3..63b22a9a7feb9a25b459e874d65f310c98a9fd29 100644 (file)
@@ -301,6 +301,7 @@ struct qib_mregion {
        int access_flags;
        u32 max_segs;           /* number of qib_segs in all the arrays */
        u32 mapsz;              /* size of the map array */
+       u8  page_shift;         /* 0 - non unform/non powerof2 sizes */
        atomic_t refcount;
        struct qib_segarray *map[0];    /* the segments */
 };
@@ -435,7 +436,6 @@ struct qib_qp {
        spinlock_t r_lock;      /* used for APM */
        spinlock_t s_lock;
        atomic_t s_dma_busy;
-       unsigned processor_id;  /* Processor ID QP is bound to */
        u32 s_flags;
        u32 s_cur_size;         /* size of send packet in bytes */
        u32 s_len;              /* total length of s_sge */
@@ -813,13 +813,8 @@ extern struct workqueue_struct *qib_cq_wq;
  */
 static inline void qib_schedule_send(struct qib_qp *qp)
 {
-       if (qib_send_ok(qp)) {
-               if (qp->processor_id == smp_processor_id())
-                       queue_work(qib_wq, &qp->s_work);
-               else
-                       queue_work_on(qp->processor_id,
-                                     qib_wq, &qp->s_work);
-       }
+       if (qib_send_ok(qp))
+               queue_work(qib_wq, &qp->s_work);
 }
 
 static inline int qib_pkey_ok(u16 pkey1, u16 pkey2)