Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / drivers / infiniband / hw / ipath / ipath_keys.c
index a5ca279..5ae8761 100644 (file)
@@ -1,5 +1,4 @@
 /*
- * Copyright (c) 2006 QLogic, Inc. All rights reserved.
  * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved.
  *
  * This software is available to you under a choice of one of two
@@ -121,7 +120,6 @@ int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge,
                  struct ib_sge *sge, int acc)
 {
        struct ipath_mregion *mr;
-       unsigned n, m;
        size_t off;
        int ret;
 
@@ -153,22 +151,20 @@ int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge,
        }
 
        off += mr->offset;
-       m = 0;
-       n = 0;
-       while (off >= mr->map[m]->segs[n].length) {
-               off -= mr->map[m]->segs[n].length;
-               n++;
-               if (n >= IPATH_SEGSZ) {
-                       m++;
-                       n = 0;
+       isge->mr = mr;
+       isge->m = 0;
+       isge->n = 0;
+       while (off >= mr->map[isge->m]->segs[isge->n].length) {
+               off -= mr->map[isge->m]->segs[isge->n].length;
+               isge->n++;
+               if (isge->n >= IPATH_SEGSZ) {
+                       isge->m++;
+                       isge->n = 0;
                }
        }
-       isge->mr = mr;
-       isge->vaddr = mr->map[m]->segs[n].vaddr + off;
-       isge->length = mr->map[m]->segs[n].length - off;
+       isge->vaddr = mr->map[isge->m]->segs[isge->n].vaddr + off;
+       isge->length = mr->map[isge->m]->segs[isge->n].length - off;
        isge->sge_length = sge->length;
-       isge->m = m;
-       isge->n = n;
 
        ret = 1;
 
@@ -193,25 +189,9 @@ int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss,
        struct ipath_lkey_table *rkt = &dev->lk_table;
        struct ipath_sge *sge = &ss->sge;
        struct ipath_mregion *mr;
-       unsigned n, m;
        size_t off;
        int ret;
 
-       /*
-        * We use RKEY == zero for physical addresses
-        * (see ipath_get_dma_mr).
-        */
-       if (rkey == 0) {
-               sge->mr = NULL;
-               sge->vaddr = phys_to_virt(vaddr);
-               sge->length = len;
-               sge->sge_length = len;
-               ss->sg_list = NULL;
-               ss->num_sge = 1;
-               ret = 1;
-               goto bail;
-       }
-
        mr = rkt->table[(rkey >> (32 - ib_ipath_lkey_table_size))];
        if (unlikely(mr == NULL || mr->lkey != rkey)) {
                ret = 0;
@@ -226,22 +206,20 @@ int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss,
        }
 
        off += mr->offset;
-       m = 0;
-       n = 0;
-       while (off >= mr->map[m]->segs[n].length) {
-               off -= mr->map[m]->segs[n].length;
-               n++;
-               if (n >= IPATH_SEGSZ) {
-                       m++;
-                       n = 0;
+       sge->mr = mr;
+       sge->m = 0;
+       sge->n = 0;
+       while (off >= mr->map[sge->m]->segs[sge->n].length) {
+               off -= mr->map[sge->m]->segs[sge->n].length;
+               sge->n++;
+               if (sge->n >= IPATH_SEGSZ) {
+                       sge->m++;
+                       sge->n = 0;
                }
        }
-       sge->mr = mr;
-       sge->vaddr = mr->map[m]->segs[n].vaddr + off;
-       sge->length = mr->map[m]->segs[n].length - off;
+       sge->vaddr = mr->map[sge->m]->segs[sge->n].vaddr + off;
+       sge->length = mr->map[sge->m]->segs[sge->n].length - off;
        sge->sge_length = len;
-       sge->m = m;
-       sge->n = n;
        ss->sg_list = NULL;
        ss->num_sge = 1;