Re: [RFC PATCH 1/5] IB/core: Add Core Capability flags to ib_device

Dave Goodell (dgoodell)
2015-05-04T20:21:57Z

On May 4, 2015, at 1:26 PM, Hefty, Sean <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:

>> I thought USNIC_UDP had an embedded USNIC protocol header inside the UDP
>> header. That would make it a UDP_ENCAP protocol.
>
> Someone from Cisco can correct me, but USNIC supports 2 protocols. Just plain UDP, and a proprietary protocol that runs over Ethernet, but uses the same EtherType as RoCE. I thought these could both be active on the same port at the same time.

Sean's statements above are correct. "USNIC_UDP" in today's code really is plain-old-UDP (over IP over Ethernet).

>>> And the core layer
>>> should not assume that a device is limited to supporting only one
>>> protocol, especially at the network and transport levels.
>>
>> Given that this is a per port thing, there is no assumption about a
>> device only supporting a single protocol.
>
> Device, no, but we are assuming this per port. I don't think this is true for USNIC.

Correct, usNIC devices and ports can speak either format concurrently, IIRC even for different QPs in the same context/PD/etc.

Incidentally, usNIC devices only ever have a single port right now, but there's no reason that has to remain true.

> For that matter, it's entirely possible for a RoCEv2 device to expose UDP directly to user space, same as USNIC. (I'd actually be surprised if no devices have this capability, if for debugging capabilities, even if for nothing else.) What are we going to do if there's a device that supports both iWarp and RoCEv2? That's easily doable today through software.

+1

-Dave