[ofa-general] Re: [PATCHv3 2/2] ipoib: handle pkey change events
Yosef Etigin
yosefe at voltaire.com
Wed May 9 22:51:21 PDT 2007
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.
>
More information about the general
mailing list