Commit:     167c42655cca188657aa9bb4e06d1194af3c73a5
Parent:     5163dc1a645bc9ed7984fa484f1a77378c166d23
Author:     Jack Morgenstein <[EMAIL PROTECTED]>
AuthorDate: Wed Feb 13 16:23:50 2008 +0200
Committer:  Roland Dreier <[EMAIL PROTECTED]>
CommitDate: Thu Feb 14 10:15:06 2008 -0800

    IPoIB: On P_Key change event, reset state properly
    In P_Key event handling, if the old P_Key is no longer available, the
    driver must call ipoib_ib_dev_stop() -- just as it does when the P_Key
    is still available (see procedure __ipoib_ib_dev_flush()).
    When a P_Key becomes available, the driver will perform ipoib_open(),
    which assumes that the QP is in RESET, the cm_id has been
    destroyed/deleted, etc.  If ipoib_ib_dev_stop() is not called as
    described above, then these assumptions will be false, and the attempt
    to bring the interface up will fail.
    Found by Mellanox QA.
    Signed-off-by: Jack Morgenstein <[EMAIL PROTECTED]>
    Signed-off-by: Roland Dreier <[EMAIL PROTECTED]>
 drivers/infiniband/ulp/ipoib/ipoib_ib.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c 
index 9d3e778..08c4396 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -780,6 +780,7 @@ static void __ipoib_ib_dev_flush(struct ipoib_dev_priv 
*priv, int pkey_event)
                if (ib_find_pkey(priv->ca, priv->port, priv->pkey, &new_index)) 
                        clear_bit(IPOIB_PKEY_ASSIGNED, &priv->flags);
                        ipoib_ib_dev_down(dev, 0);
+                       ipoib_ib_dev_stop(dev, 0);
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to