Re: [PATCH rdma-next 00/13] Elastic Fabric Adapter (EFA) driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06-Dec-18 04:37, Parav Pandit wrote:
> 
> 
>> -----Original Message-----
>> From: Jason Gunthorpe <jgg@xxxxxxxx>
>> Sent: Wednesday, December 5, 2018 5:13 PM
>> To: Hefty, Sean <sean.hefty@xxxxxxxxx>
>> Cc: Parav Pandit <parav@xxxxxxxxxxxx>; Dalessandro, Dennis
>> <dennis.dalessandro@xxxxxxxxx>; Gal Pressman <galpress@xxxxxxxxxx>;
>> Doug Ledford <dledford@xxxxxxxxxx>; Alexander Matushevsky
>> <matua@xxxxxxxxxx>; Yossi Leybovich <sleybo@xxxxxxxxxx>; linux-
>> rdma@xxxxxxxxxxxxxxx; Tom Tucker <tom@xxxxxxxxxxxxxxxxxxxxx>
>> Subject: Re: [PATCH rdma-next 00/13] Elastic Fabric Adapter (EFA) driver
>>
>> On Wed, Dec 05, 2018 at 10:37:08PM +0000, 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.
>>
>> It has a 16 byte opaque blob for the address (see struct
>> efa_admin_create_ah_cmd) - who knows what is in there.
>>
>> If it includes a MAC address then this driver needs CAP_NET_RAW.
>>
>> If it includes an IP address, and the MAC address is shared with a netdev in
>> the system, then it also needs CAP_NET_RAW.
>>
>> Who knows what the format of the UD WR's are, maybe they wrongly
>> include headers to transmit.
>>
> 
> efa_port_link_layer() need to return more appropriate link layer that reflects the addresses defined in ah.
> 

We can add a new EFA link layer if it makes sense, the address format is
proprietary (does not match existing link types).

>  
>> And the same questions belatedly apply to usnic.
>>
>>> 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.
>>
>> The admin mailboxes are passing around a PD #, so to me it looks like there
>> is no HW object backing the PD but the HW has all the information to do
>> required per-PD security enforcement..
>>
>>> Adding a new QP type looks sensible.
>>
>> We are absolutely not adding new things to common verbs that are not well
>> specified to the level that someone else can implement them (let alone use
>> them). I've been adament about this point for a long, long time now.
>>
>>> 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.
>>
>> The QP type value specifies the API contract to the verbs consumer. UD, RC,
>> etc all have well defined semantics that must be adhered to. IIRC usnic broke
>> this too by using a UD QP type that did not meet all the requirements.
>>
>> Like usnic, I have no idea if EFA follows the contract for UD or not. There is
>> no documentation and no verbs provider to inspect.
>>
>> Yes, the wire protocol behind the API contract cannot be specified with
>> existing verbs, that need has yet to come up, and could be met someday
>> with a create_qp extension.
>>
>> At least in all present cases the various wire protocols are so different as to
>> need a different 'struct ib_device' anyhow.
>>
>> Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux