> @@ -638,10 +660,32 @@ void ipoib_ib_dev_flush(struct work_stru
>               return;
>       }
>  
> +     if (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_pkey_dev_delay_open(dev);
> +                     return;
> +             }
> +             set_bit(IPOIB_PKEY_ASSIGNED, &priv->flags);
> +
> +             /* restart qp only of pkey index is cahnged */
> +             if (new_index == priv->pkey_index) {
> +                     ipoib_dbg(priv, "Not flushing - pkey index not 
> changed.\n");
> +                     return;
> +             }
> +             priv->pkey_index = new_index;
> +     }
> +
>       ipoib_dbg(priv, "flushing\n");
>  

Say, what if IPOIB_PKEY_ASSIGNED was cleared previously?
priv->pkey_index will be wrong, won't it?

-- 
MST
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to