IB/ipath: Fix SDMA error recovery in absence of link status change
authorJohn Gregor <john.gregor@qlogic.com>
Wed, 7 May 2008 18:01:10 +0000 (11:01 -0700)
committerRoland Dreier <rolandd@cisco.com>
Wed, 7 May 2008 18:01:10 +0000 (11:01 -0700)
commitab69b3cf1219e0d07bb4ea373f36b1de38af531c
treecad988230450defcdc2d598fd70b6f4ed89df044
parente2ab41cae418108f376ad1634d7507f56379f7a2
IB/ipath: Fix SDMA error recovery in absence of link status change

What's fixed:

    in ipath_cancel_sends()

        We need to unconditionally set ABORTING.  So, swap the tests
        so the set_bit() isn't shadowed by the &&.

        If we've disarmed the piobufs, then we need to unconditionally
        set DISARMED.  So, move it out from the overly protective if
        at the bottom.

    in sdma_abort_task()

        Abort_task was written knowing that the SDMA engine would always
        be reset (and restarted) on error.  A recent change broke that
        fundamental assumption by taking the restart portion and making
        it conditional on a link status change.  But, SDMA can go boom
        without a link status change in some conditions.

Signed-off-by: John Gregor <john.gregor@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_driver.c
drivers/infiniband/hw/ipath/ipath_sdma.c