It sounds like you didn’t do the research I suggested a month ago.
You say your product is a custom card for doing storage over Infiniband. So what higher level storage protocol do you expect to be supporting. Alternatives might be SMBDirect, which can be used by the standard Windows file sharing protocols, and can deliver block storage protocol like performance but with all the good things of file sharing, like access control lists. Supporting SMBDirect would require you creating a NDIS miniport that supports the RDMA provider interface. There also are some RDMA specific storage protocols, like SRP, which is pretty unsupported by Windows. You could make a storport miniport that used an underlying Infiniband transport, which to the OS looked like a a lot like a storage (SAS/FC) controller, and the OS does not care what the underlying protocol is.
Until you fully understand what protocols you will use, and what kinds of interfaces you want to present to the OS, writing any code is probably premature (except for some generic hardware experimentation). A NDIS miniport that supports the RDMA provider interface is a drastically different driver than a hybrid storport miniport that runs some custom storage protocol. A generic PCIe device driver would be written as a KMDF driver nowadays, and is a drastically different driver than either an NDIS or storport miniport.
Another option is to implement a KMDF virtual bus driver that interfaces with the HCA hardware, and then have a virtual NDIS miniport and/or storport miniport, to implement interfaces the OS knows how to talk to. This has not been an uncommon architecture for “unified wire” controller devices, although the more recent strategy is often device firmware implements the virtual bus function, presenting configurable PCIe physical devices, which have physical hardware network or storage miniports. This get’s deeply connected with your hardware design, and moving much of the device control into firmware can make the OS drivers simpler, although I suppose makes the firmware more complex (although potentially identical between Windows and Linux). Firmware is in a much better position to respond with real-time constraints than the OS driver does.
What needs clarification is what the higher level storage protocol will be?
There is no Infinband HCA template driver you can just clone and adjust to your specific hardware. Mellanox’s production code base is not public, and a quick look at Intel, the only other Infiniband HCA vendor I know of, doesn’t even list any Windows drivers for download. There are other unified wire network adapters that support RDMA (using protocols other than Infiniband/RoCE), like for example the Chelsio cards.
Like I said a month ago, the driver software to make RDMA work on Windows is pretty complex and for the most part proprietary. Microsoft does provide a public RDMA provider interface specification, which is an extension of the NDIS miniport specification. I see the current WinOFED 3.2 release says it’s the last release (https://www.openfabrics.org/downloads/Windows/README) so going forward it sounds like new HCAs depending on WinOFED is a bad idea.
Jan
From: Mujeeb Shaik >
Reply-To: Windows List >
Date: Wednesday, December 31, 2014 at 11:09 PM
To: Windows List >
Subject: Re: [ntdev] HCA driver
This will using in storage servers,its Custom Card,Infiniband
On Thu, Jan 1, 2015 at 11:32 AM, Doron Holan > wrote:
What type of device is it? Networking, storage, or custom?
d
Bent from my phone
________________________________
From: Mujeeb Shaikmailto:xxxxx
Sent: 12/31/2014 9:40 PM
To: Windows System Software Devs Interest Listmailto:xxxxx
Subject: Re: [ntdev] HCA driver
Hi Tim Roberts,
Thanks for your reply,
Yes what you said is exactly correct,register settings are specific to hardware which we are using.
But my problem is to reach to that from DriverEntry function how can i proceed that i want to know,cause i am new to windows Driver Development so please if you have any samples to achieve this share else if you have any links please refer i will go through that,
Once again thanks for your reply and Happy New Year.
On Wed, Dec 31, 2014 at 11:08 PM, Tim Roberts > wrote:
xxxxx@gmail.commailto:xxxxx wrote:
> I have to write HCA(Host Channel Adapter Driver) ,
> which is connected through the PCIe,please suggest me the way to do hardware initialization,if any one have template(sample code) for that please share else if any online link route me to that link.
This is a somewhat odd request. YOU are the one who knows the register
set for your hardware. There are certainly lots of samples that show
how to get your hardware’s resources in EvtPrepareHardware, and how to
map your BAR into virtual memory, and how to use READ_REGISTER_ULONG and
WRITE_REGISTER_ULONG to access those registers, but none of us know what
values need to be placed in which registers.
–
Tim Roberts, xxxxx@probo.commailto:xxxxx
Providenza & Boekelheide, Inc.
—
NTDEV is sponsored by OSR
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
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
–
Thanks & Regards,
Shaik Mujeeb,
+91 9963056414tel:.
If you don’t Like a Rule Follow it …Reach the top and then Change it…
— NTDEV is sponsored by OSR Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev OSR is HIRING!! See http://www.osr.com/careers 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
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
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
–
Thanks & Regards,
Shaik Mujeeb,
+91 9963056414.
If you don’t Like a Rule Follow it …Reach the top and then Change it…
— NTDEV is sponsored by OSR Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev OSR is HIRING!! See http://www.osr.com/careers 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</tel:></mailto:xxxxx></mailto:xxxxx></mailto:xxxxx></mailto:xxxxx>