[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