Michael S. Tsirkin wrote:
>>@@ -642,6 +651,11 @@ void ipoib_ib_dev_flush(struct work_stru
>> 
>>      ipoib_ib_dev_down(dev, 0);
>> 
>>+     if (restart_qp) {
>>+             ipoib_ib_dev_stop(dev, 0);
>>+             ipoib_ib_dev_open(dev);
>>+     }
>>+
>>      /*
>>       * The device could have been brought down between the start and when
>>       * we get here, don't bring it back up if it's not configured up
> 
> 
> By the way, I think I see a small issue now - if there's a
> pkey change event, this will flush all interfaces, even if
> the pkey changed is not used by ipoib at all.
> 
> How about:
> - rename restart_qp flag to pkey_change_event
> - do something like this at the beginning of the flush routine
>       if (pkey_change_event &&
>               query_pkey(current index) == current_pkey))
>               return;
I think we should do the following: hold the index in dev_priv, set it outside
restart_qp, and use it in restart_qp as an input parameter. On flush, we find
and set it. This will prevent ~64 pkey queries, which are not yet 
cache-optimized.

> 
> Need to think what to do if index is not valid, but you get the idea.
> 
We can give up, clear PKEY_ASSIGNED flag, and let the polling do its job.

> This will remove all the extra flushes in the common case
> where pkeys are not moved around too much.
> 

_______________________________________________
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