[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