IB/ipath: Fix count of packets received by kernel
authorMichael Albaugh <Michael.Albaugh@Qlogic.com>
Wed, 7 May 2008 17:59:23 +0000 (10:59 -0700)
committerRoland Dreier <rolandd@cisco.com>
Wed, 7 May 2008 17:59:23 +0000 (10:59 -0700)
The loop in ipath_kreceive() that processes packets increments the
loop-index 'i' once too often, because the exit condition does not
depend on it, and is checked after the increment. By adding a check for
!last to the iterator in the for loop, we correct that in a way that is
not so likely to be re-broken by changes in the loop body.

Signed-off-by: Michael Albaugh <micheal.albaugh@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_driver.c

index acf30c06a0c0ff8eb1981e692c7cc2818b78c4cc..f81dd4acdc600810e196ad3ff15a9b271ea8bb36 100644 (file)
@@ -1197,7 +1197,7 @@ void ipath_kreceive(struct ipath_portdata *pd)
        }
 
 reloop:
-       for (last = 0, i = 1; !last; i++) {
+       for (last = 0, i = 1; !last; i += !last) {
                hdr = dd->ipath_f_get_msgheader(dd, rhf_addr);
                eflags = ipath_hdrget_err_flags(rhf_addr);
                etype = ipath_hdrget_rcv_type(rhf_addr);