[Openib-windows] RE: Anything new about the IPOIB arp check-in?

Tzachi Dar tzachid at mellanox.co.il
Wed Dec 7 23:59:16 PST 2005


>-----Original Message-----
>From: Fab Tillier [mailto:ftillier at silverstorm.com] 
>Sent: Thursday, December 08, 2005 1:52 AM
>To: Tzachi Dar; openib-windows at openib.org
>Cc: Gilad Shainer
>Subject: RE: [Openib-windows] RE: Anything new about the IPOIB 
>arp check-in?
>
>
>Hi Tzachi,
>
>I just committed a small change that filters out adapters from 
>the local IP list results if the adapter's packet filter is 
>zero.  That is, only IP addresses for adapters whose packet 
>filter is non-zero are returned.
>
>I had to do this because the usermode network interface event 
>fires before the adapter is actually disabled, but after NDIS 
>sets the packet filter to zero (effectively disabling 
>receives).  This allows me use the IBAT functionality for IP 
>addresses in WSD.
>
>Hopefully this won't have negative ramifications on your usage.
>
>Note that I found that if the last IPoIB instance is disabled 
>while the IBAT device is open, the unload handler for IPoIB 
>isn't called even if that device handle is closed.  I will be 
>following up with Microsoft on this, but there doesn't appear 
>to be a bug in our code.
>
I'm not sure that we really have to talk with MS about this issue, as it
has a simple (?) work around. The text in the help for
NdisMRegisterDevice says: "Note that, if a handle to the device object
created with NdisMRegisterDevice is open, the driver that created the
device object cannot be unloaded. Before opening a handle to the device
object, a user-mode application should therefore register for device
event notification, specifying GUID_NDIS_LAN_CLASS as the interface
class GUID. On receiving a DBT_DEVICEQUERYREMOVE device event for the
device object, the application should close the handle. For more
information about processing a request to remove a device, see the
Platform SDK documentation."

I have being playing with this things a little bit, and came to the
conclusion, that one indeed gets a notification each time an interface
is enabled or disabled. It is not simple to tell if this is an
InfiniBand device or not, but I believe that if you will ask for a
notification and on each change, ask the IPOIB to tell you how many
devices it has, you should be fine. 
I also came to conclusion that src\general\toaster\toastmon\toastmon.c
is a good example of how to use this functionality (from kernel). Of
course, there might be other samples, as things are not very clear. I
never completed my tries to be commercial working code.

So you can either wait for a response from MS, or try to follow the
method that I mentioned.

Thanks
Tzachi

>- Fab
>



More information about the ofw mailing list