23/01/2018 13:46, Yuanhan Liu: > On Thu, Jan 18, 2018 at 10:46:23AM +0100, Gaëtan Rivet wrote: > > On Thu, Jan 18, 2018 at 09:46:29AM +0100, Thomas Monjalon wrote: > > > 18/01/2018 08:35, Yuanhan Liu: > > > > On Wed, Jan 17, 2018 at 12:34:08PM +0000, Ferruh Yigit wrote: > > > > > So does it make sense to separate them logically? Perhaps as "device > > > > > identifier" > > > > > and "device args". > > > > > > > > Then I think it returns back to the old issue: how could we identify a > > > > port when the bus id (say BDF for PCI bus) is not enough for identifying > > > > a port? Such case could happen when a single NIC has 2 ports sharing > > > > the same BDF. It could also happen with the VF representors that will > > > > be introduced shortly. > > > > > > Yes, the device matching syntax must include bus category, class category > > > and driver category. So any device can be identified in future. > > > > > > But I think Ferruh is talking about separating device matching > > > (which is described in this proposal) and device settings > > > (which are usually mixed in -w and --vdev options). > > > I agree there are different things and may be separate. > > > They could share the same syntax (bus/class/driver) but be separate > > > with a semicolon: > > > matching;settings > > > > Can you give an example? > > Let's take port addition in OVS-DPDK as an example. It happens in 2 > steps: > - port lookup (if port is already probed) > - dev attachment (if lookup fails) > > And also let's assume we need probe a ConnectX-3 port. Note that for > ConnectX-3, there are 2 ports sharing the same PCI addr. Thus, PCI > BDF is not enough. And let's assume we use another extra property > "port". > > If the proposal described in this patch is being used, the devarg > would look like following: > > bus=pci,id=04:00.0/class=eth,port=0/driver=mlx4,mlx4_arg_A=val,... > > Then "bus=pci,id=04:00.0/class=eth,port=0" will be used for lookup, > It means we are looking for a port with PCI BDF == 04:00.0 AND > port == 0 (the first port of the 2 ports). > > Note that in my proposal the driver category is not intended for lookup. > If any properties needed be looked in the driver category, they would > probably need be elevated to the class category.
It is not my thought. I think we should be able to use bus, class and driver properties for lookup. We can imagine doing a lookup on a driver specific id, which is not candidate to elevation to the class category. > 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,... Another example, setting the MAC address: bus=pci,id=04:00.0/class=eth,port=0;class=eth,mac=00:11:22:33:44:55