On 06-Dec-18 00:37, Hefty, Sean wrote: >> Ethernet link layer has well defined L2 headers. >> So there is intention to create such headers in user space without >> actually netdev->ifindex attached to UD or SRC QP, CAP_NET_RAW must be >> added. > > I haven't seen anything in the reviews that indicate that user space is able to create its own headers over Ethernet. It looks like it uses a proprietary addressing scheme with one address per device, and my guess is it relies on the SRD/UD QP to generate the headers. Correct. > >>> This is what I mean when I talked about evolution earlier. If want >> to >>> do non- verbs then do it right, not as a special QP hack like usnic >> did. > > These are the verbs that EFA appears to support based on what is actually being passed to the HW: > > Create/destroy QP > Create/destroy CQ > Create/destroy MR > Create/destroy AH > > It supports PD calls, but I'm unsure if that's really a thing. On the surface it looks like EFA is a simplified verbs-like device that supports a proprietary transport, somewhat equivalent to an IB/RoCE device that only supports UD QPs. Adding a new QP type looks sensible. PD number is allocated by the driver and enforced by the device. I think that adding a new QP type makes sense as well, but we can use the driver specific QP type if that's the preferred way. > > I think the mistake in the tree is either having different protocols map to the same QP type value, or not having a separate protocol field provided as part of create QP. > > - Sean >