Discussion:
[ofw] New Developer
Scott Kreel
2012-06-12 21:14:10 UTC
Permalink
Where should a new developer start in order to get familiar with the code
base and the directory structure?
Fab Tillier
2012-06-12 21:29:10 UTC
Permalink
Hi Scott,

Welcome!

Scott Kreel wrote on Tue, 12 Jun 2012 at 14:14:10
Post by Scott Kreel
Where should a new developer start in order to get familiar with the
code base and the directory structure?
That's a tough question. Generally, the codebase is architected as:
- core: all process management, IOCTL handling, anything non-HW specific. The drivers here are generally loaded as filter drivers above the HW driver.
- hw: HW specific driver, makes the device work.
- ulp: Upper Level Protocols, the various drivers and DLLs that let you actually do something with the driver stack. E.g. OpenSM, IPoIB, NetworkDirect provider

If you can say what you are interested in, it will be easier to give you more specific guidance.

Cheers,
-Fab
Scott Kreel
2012-06-12 21:53:22 UTC
Permalink
Wow, thanks for the quick response Fab!

I have a bunch of Mellanox Infinihost III Ex cards (all MHEA28-XTC) and I'd
like to be able to see if I can get SMB Direct to work over them.
I've relatively new to Windows driver development and I thought that
trying to add kRDMA support to these old cards would be a great way to
learn. Assuming there isn't some hardware limitation that is preventing
these older cards from working? Again, I'm new but I'm thinking I would
need to update the NDIS miniport in the existing ofed code base to support
the new NDIS 6.3 API? Any guidance and help is appreciated!

Thanks!
Scott
Post by Fab Tillier
Hi Scott,
Welcome!
Scott Kreel wrote on Tue, 12 Jun 2012 at 14:14:10
Post by Scott Kreel
Where should a new developer start in order to get familiar with the
code base and the directory structure?
- core: all process management, IOCTL handling, anything non-HW specific.
The drivers here are generally loaded as filter drivers above the HW
driver.
- hw: HW specific driver, makes the device work.
- ulp: Upper Level Protocols, the various drivers and DLLs that let you
actually do something with the driver stack. E.g. OpenSM, IPoIB,
NetworkDirect provider
If you can say what you are interested in, it will be easier to give you
more specific guidance.
Cheers,
-Fab
Fab Tillier
2012-06-13 05:10:40 UTC
Permalink
Hi Scott,

Ah, so you're going to run into some problems right off the bat:
- The NDK provider to enable SMB Direct isn't in the source tree
- The InfiniHost III cards are past end-of-life from Mellanox's perspective
- The HW capabilities aren't there in those HCAs, in fact some earlier versions of ConnectX HCAs aren't supported either.

Sorry to be the bearer of bad news. :(

-Fab

Scott Kreel wrote on Tue, 12 Jun 2012 at 14:53:22
Post by Scott Kreel
Wow, thanks for the quick response Fab!
I have a bunch of Mellanox Infinihost III Ex cards (all MHEA28-XTC) and
I'd like to be able to see if I can get SMB Direct to work over them.
I've relatively new to Windows driver development and I thought that
trying to add kRDMA support to these old cards would be a great way to
learn. Assuming there isn't some hardware limitation that is preventing
these older cards from working? Again, I'm new but I'm thinking I would
need to update the NDIS miniport in the existing ofed code base to
support the new NDIS 6.3 API? Any guidance and help is appreciated!
Thanks!
Scott
Hi Scott,
Welcome!
Scott Kreel wrote on Tue, 12 Jun 2012 at 14:14:10
Post by Scott Kreel
Where should a new developer start in order to get familiar with the
code base and the directory structure?
- core: all process management, IOCTL handling, anything non-HW
specific. The drivers here are generally loaded as filter drivers above
the HW driver.
- hw: HW specific driver, makes the device work.
- ulp: Upper Level Protocols, the various drivers and DLLs that let you
actually do something with the driver stack. E.g. OpenSM, IPoIB,
NetworkDirect provider
If you can say what you are interested in, it will be easier to give you
more specific guidance.
Cheers,
-Fab
Scott Kreel
2012-06-13 13:39:38 UTC
Permalink
Thanks again for the response Fab!

I understand the cards are EOL and you don't work for Mellanox, but do
you know what specific HW capabilities aren't there that would prevent
me from getting it to work? Even if it's not the most performant. The
cards perform RDMA operations... I figured that since they're EOL,
that's the reason Mellanox didn't spend the resources to support SMB
direct in Windows Server 2012 with them...

So I would need to create a NDK provider (which appears to be somewhat
documented on MSDN?) and modify the NDIS miniport in the OFED code to
make it NDK-enabled...
Post by Fab Tillier
Hi Scott,
- The NDK provider to enable SMB Direct isn't in the source tree
- The InfiniHost III cards are past end-of-life from Mellanox's perspective
- The HW capabilities aren't there in those HCAs, in fact some earlier versions of ConnectX HCAs aren't supported either.
Sorry to be the bearer of bad news. :(
-Fab
Scott Kreel wrote on Tue, 12 Jun 2012 at 14:53:22
Post by Scott Kreel
Wow, thanks for the quick response Fab!
I have a bunch of Mellanox Infinihost III Ex cards (all MHEA28-XTC) and
I'd like to be able to see if I can get SMB Direct to work over them.
I've relatively new to Windows driver development and I thought that
trying to add kRDMA support to these old cards would be a great way to
learn. Assuming there isn't some hardware limitation that is preventing
these older cards from working? Again, I'm new but I'm thinking I would
need to update the NDIS miniport in the existing ofed code base to
support the new NDIS 6.3 API? Any guidance and help is appreciated!
Thanks!
Scott
Hi Scott,
Welcome!
Scott Kreel wrote on Tue, 12 Jun 2012 at 14:14:10
Post by Scott Kreel
Where should a new developer start in order to get familiar with the
code base and the directory structure?
- core: all process management, IOCTL handling, anything non-HW
specific. The drivers here are generally loaded as filter drivers above
the HW driver.
- hw: HW specific driver, makes the device work.
- ulp: Upper Level Protocols, the various drivers and DLLs that let you
actually do something with the driver stack. E.g. OpenSM, IPoIB,
NetworkDirect provider
If you can say what you are interested in, it will be easier to give you
more specific guidance.
Cheers,
-Fab
Continue reading on narkive:
Loading...