Subject: Re: [PATCH net-next v2 4/7] devlink: allow subports on devlink PCI ports

From: Jiri Pirko <[email-masked]>
Date: Thu, 21 Mar 2019 17:14:21 +0100

Thu, Mar 21, 2019 at 04:14:53PM CET, [email-masked] wrote:
>
>
>> -----Original Message-----
>> From: Jiri Pirko <[email-masked]>
>> Sent: Thursday, March 21, 2019 3:45 AM
>> To: Jakub Kicinski <[email-masked]>
>> Cc: Parav Pandit <[email-masked]>; Samudrala, Sridhar
>> <[email-masked]>; [email-masked];
>> [email-masked]; [email-masked]
>> Subject: Re: [PATCH net-next v2 4/7] devlink: allow subports on devlink PCI
>> ports
>> 
>> Mon, Mar 18, 2019 at 08:16:42PM CET, [email-masked]
>> wrote:
>> >On Mon, 18 Mar 2019 13:11:54 +0100, Jiri Pirko wrote:
>> >> >> >2. flavour should not be vf/pf, flavour should be hostport, switchport.
>> >> >> >Because switch is flat and agnostic of pf/vf/mdev.
>> >> >>
>> >> >> Not sure. It's good to have this kind of visibility.
>> >> >
>> >> >Yes, this subthread honestly makes me go from 60% sure to 95% sure
>> >> >we shouldn't do the dual object thing :(  Seems like Parav is
>> >> >already confused by it and suggests host port can exist without
>> >> >switch port :(
>> >>
>> >> Although I understand your hesitation, the host ports are also
>> >> associated with the asic and should be under the devlink instance.
>> >> It is just a matter of proper documentation and clear code to avoid
>> >> confusions.
>> >
>> >They are certainly a part and belong to the ASIC, the question in my
>> >mind is more along the lines of do we want "one pipe/one port" or is it
>> >okay to have multiple software objects of the same kind for those
>> >objects.
>> >
>> >To put it differently - do want a port object for each port of the ASIC
>> >or do we want a port object for each netdev..
>> 
>> Perhaps "port" name of the object is misleading. From the beginning, I ment
>> to have it for both switch ports and host ports. I admit that "host port" is a
>> bit misleading, as it is not really a port of eswitch, but the counter part. But
>> if we introduce another object for that purpose in devlink (like "partititon"),
>> it would be a lot of duplication I think.
>> 
>> Question is, do we need the "host port"? Can't we just put a relation to host
>> netdev in the eswitch port.
>> 
>Can you please explain how does it work for rdma for non sriov use case?
>Do we have to create a fake eswitch object?

Could you please provide details on "rdma for non sriov use case"?

>
>> So as you suggest, we would have
>> devlink_port -+-- switch netdev/ibdev
>>               |
>> 	      +-- host netdev/ibdev
>>
>
>How does this work for rdma to program single node_guid for dual port ibdev?
>Did you actually read the recent example I showed in [1]?
>[1] https://marc.info/?l=linux-netdev&m=155312521817191&w=2
>And why it doesn't address all the use cases of pf/vf/mdev, ibdev, netdev?
>
>> So the "weights" of both switch/host netdev/ibdev to devlink_port relations
>> would be equivalent.
>> 
>> Then, the devlink_port would represent the whole "pipe" with both ends.
>> 
>> More I think about it, the more it makes sense to me...