Hi Doron,
When I say bus filter, I mean a filter on a lower FDO that is NOT a bus.
Actually, the lower device is a standard Ethernet NIC, and there would be an
NDIS protocol interface used to get packets to/from the virtual NIC’s tp the
lower physical NIC. The reason we want this architecture over an IM driver
is so we can get things like iSCSI booting or software FCoE to work for the
child devices. An IM driver seemed problematic for boot and potentially
things like RDMA which I assume will need the DMA adapter address mapping
interface to work. In an IM driver the virtual NICs are all root enumerated,
so their PnP hierarchy is bogus.
I understand from our past conversations that KMDF can’t be used for a
filter on a lower bus, filtering the PDO’s. Are there official names for the
two flavors of bus filter?
Thanks.
Jan
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Tuesday, December 06, 2011 11:20 PM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] Virtual NIC and virtual bus using KMDF+NDIS vs WDM+NDIS
When you say bus filter, what exactly do you mean functionally? Classic
“viral” bus filters that filter at the root and dynamically attach to PDOs
enumerated via QDR, thus adding themselves deeper in the stack at runtime is
not supported by KMDF. OTOH, if you write an NDIS-WDM driver, KMDF adds
value if you are talking to a usb nic (not this instance) or your IO
interface to the PDO is irp based and you have to track sent IO, in which
case WDFIOTARGETs are very very useful
d
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Jan Bottorff
Sent: Tuesday, December 06, 2011 11:15 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Virtual NIC and virtual bus using KMDF+NDIS vs WDM+NDIS
The team I’m on is doing an NDIS 6.2 virtual NIC driver on a virtual bus. On
checking the winqual site, it says a NIC driver can ONLY make calls to NDIS
or WDF. Another team member has expressed the view that in the past he wrote
virtual NIC’s that called WDM API’s, and there is no advantage to using WDF.
This product also has a virtual bus, which I personally think we should use
KDMF for (it would likely be a bus filter, not unlike the KMDF kbfiltr
sample in the WDK), and the other developer’s view is the old tried and true
way of doing a bus driver in WDM is fine. In the past I too have written
virtual NIC and busses using the WDM API, and my experience was it was a lot
of tough debugging and testing to actually get this to work correctly. All
the PnP and power management states are no exactly perfectly documented, and
you need to have a QA group that can exercise the PnP/Power nooks and
crannies.
As this list has an excellent group of highly experienced developer,
including folks from Microsoft like Doron and Jake, I’m interested in
people’s opinions. I do know a virtual NIC and bus driver can be done
without KDMF, but with KMDF being a pretty mature product now, it seems like
the optimal choice from a stability and development efficiency viewpoint
would be to use KMDF where possible. I’d also hate to get the product
written, and find we can’t pass WHQL certification because our virtual NIC
makes other than NDIS or WDF calls, a risk easily avoided.
Basically my manger (not a developer) needs input to decide which of her two
highly experienced Windows developers she should side with.
Your feedback is appreciated!
Jan
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer