24/01/2018 16:04, Yuanhan Liu: > On Wed, Jan 24, 2018 at 11:37:31AM +0100, Thomas Monjalon wrote: > > 24/01/2018 11:36, Yuanhan Liu: > > > On Wed, Jan 24, 2018 at 11:21:44AM +0100, Thomas Monjalon wrote: > > > > 24/01/2018 10:28, Yuanhan Liu: > > > > > On Wed, Jan 24, 2018 at 09:19:10AM +0100, Thomas Monjalon wrote: > > > > > > 24/01/2018 07:43, Yuanhan Liu: > > > > > > > On Tue, Jan 23, 2018 at 03:29:34PM +0100, Thomas Monjalon wrote: > > > > > > > > 23/01/2018 13:46, Yuanhan Liu: > > > > > > > > > If port not found, then the whole string will be used for dev > > > > > > > > > attachment. > > > > > > > > > It means we are attaching a port with PCI BDF == 04.00.0 AND > > > > > > > > > port == 0 (the 2nd port will not be attached). > > > > > > > > > > > > > > > > > > > > > > > > > > > And here is how the devargs would look like if > > > > > > > > > "matching;settings" is > > > > > > > > > being used: > > > > > > > > > > > > > > > > > > > > > > > > > > > bus=pci,id=04:00.0/class=eth,port=0;bus=pci,id=04:00.0/class=eth,port=0/driver=mlx4,mlx4_arg_A=val,... > > > > > > > > > > > > > > > > > > The part before ";" will be used for lookup and the later > > > > > > > > > part will be > > > > > > > > > used for attachment. It should work. It just looks redundant. > > > > > > > > > > > > > > > > It does not have to be redundant. > > > > > > > > It can be: > > > > > > > > > > > > > > > > bus=pci,id=04:00.0/class=eth,port=0;driver=mlx4,mlx4_arg1=settings1,... > > > > > > > > > > > > > > I knew you would make such reply :) > > > > > > > Then there is a contradiction. According your suggestion, the > > > > > > > "port=0" belongs > > > > > > > to the matching section, but it also has to be used in the > > > > > > > settings section. > > > > > > > > > > > > If port=0 is matched, it is already set, right? > > > > > > > > > > Yes. > > > > > > > > > > > Why it needs to be in settings? > > > > > > > > > > But I was talking the case it's not matched, say it's not probed and > > > > > here > > > > > we do hotplug. > > > > > > > > I don't understand. > > > > Anyway, the port property should be read-only. > > > > > > All proberties should be read-only. > > > > > > > Are we talking about the dev_port from the Linux kernel? > > > > > > Yes. And it can be used for probing one port only (out of 2 ports in a > > > NIC) > > > at probe stage. So, at this stage, it's a setting but not a match. > > > > No it's a match! > > > > A settings is changing data in the port. > > So I see that's your definition about the "settings". What I think is > everything needed for driver initiation are settings. > > For example, one proposed interface for VF rep is the "vf_id" property, > Similar to "port" property we have just discussed above, it's used for > probing one specific VR rep for the given VF id. > > You can say it's a match here, just like the "port" property. > > But note that "vf_id" could be a range, to enable multiple VF reps. > The semantics looks like "setting" more than "match".
Not sure why it would look like settings. > Another example is from the failsafe PMD that Gaetan had mentioned: > > driver=failsafe,dev(bus=pci,id=00:02.0),fd(/some/file/) > > They (dev and fd) should belong the "setting" section, for 2 reasons: > > - they should not be used for matching > - they are used for failsafe PMD initiation Yes these ones are settings. > But it belongs "match", according to your definition about "settings", > because it doesn't change data in the port. No, it changes data, dev() is adding a slave, and fd() is adding a file descriptor. So we agree these are settings. > That also means, the word "settings" might not be well named. It's > probably better to name it "drvargs". I disagree. But it's only naming. Settings can be class settings, not only driver settings. And driver properties can be matching or settings. So "drvargs" does not make sense.