> -----Original Message----- > From: Jiri Pirko <jiri@xxxxxxxxxxx> > Sent: Friday, November 8, 2019 10:23 AM > To: Parav Pandit <parav@xxxxxxxxxxxx> > Cc: alex.williamson@xxxxxxxxxx; davem@xxxxxxxxxxxxx; > kvm@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; Saeed Mahameed > <saeedm@xxxxxxxxxxxx>; kwankhede@xxxxxxxxxx; leon@xxxxxxxxxx; > cohuck@xxxxxxxxxx; Jiri Pirko <jiri@xxxxxxxxxxxx>; linux- > rdma@xxxxxxxxxxxxxxx; Vu Pham <vuhuong@xxxxxxxxxxxx> > Subject: Re: [PATCH net-next 06/19] net/mlx5: Add support for mediated > devices in switchdev mode > > Fri, Nov 08, 2019 at 05:03:13PM CET, parav@xxxxxxxxxxxx wrote: > > > > > >> -----Original Message----- > >> From: Jiri Pirko <jiri@xxxxxxxxxxx> > >> Sent: Friday, November 8, 2019 4:33 AM > >> To: Parav Pandit <parav@xxxxxxxxxxxx> > >> Cc: alex.williamson@xxxxxxxxxx; davem@xxxxxxxxxxxxx; > >> kvm@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; Saeed Mahameed > >> <saeedm@xxxxxxxxxxxx>; kwankhede@xxxxxxxxxx; leon@xxxxxxxxxx; > >> cohuck@xxxxxxxxxx; Jiri Pirko <jiri@xxxxxxxxxxxx>; linux- > >> rdma@xxxxxxxxxxxxxxx; Vu Pham <vuhuong@xxxxxxxxxxxx> > >> Subject: Re: [PATCH net-next 06/19] net/mlx5: Add support for > >> mediated devices in switchdev mode > >> > >> Thu, Nov 07, 2019 at 05:08:21PM CET, parav@xxxxxxxxxxxx wrote: > >> >From: Vu Pham <vuhuong@xxxxxxxxxxxx> > >> > >> [...] > >> > >> > >> >+static ssize_t > >> >+max_mdevs_show(struct kobject *kobj, struct device *dev, char *buf) { > >> >+ struct pci_dev *pdev = to_pci_dev(dev); > >> >+ struct mlx5_core_dev *coredev; > >> >+ struct mlx5_mdev_table *table; > >> >+ u16 max_sfs; > >> >+ > >> >+ coredev = pci_get_drvdata(pdev); > >> >+ table = coredev->priv.eswitch->mdev_table; > >> >+ max_sfs = mlx5_core_max_sfs(coredev, &table->sf_table); > >> >+ > >> >+ return sprintf(buf, "%d\n", max_sfs); } static > >> >+MDEV_TYPE_ATTR_RO(max_mdevs); > >> >+ > >> >+static ssize_t > >> >+available_instances_show(struct kobject *kobj, struct device *dev, > >> >+char *buf) { > >> >+ struct pci_dev *pdev = to_pci_dev(dev); > >> >+ struct mlx5_core_dev *coredev; > >> >+ struct mlx5_mdev_table *table; > >> >+ u16 free_sfs; > >> >+ > >> >+ coredev = pci_get_drvdata(pdev); > >> >+ table = coredev->priv.eswitch->mdev_table; > >> >+ free_sfs = mlx5_get_free_sfs(coredev, &table->sf_table); > >> >+ return sprintf(buf, "%d\n", free_sfs); } static > >> >+MDEV_TYPE_ATTR_RO(available_instances); > >> > >> These 2 arbitrary sysfs files are showing resource size/usage for the > >> whole eswitch/asic. That is a job for "devlink resource". Please implement > that. > >> > >Jiri, > >This series is already too long. I will implement it as follow on. It is already > in plan. > >However, available_instances file is needed regardless of devlink resource, > as its read by the userspace for all mdev drivers. > > If that is the case, why isn't that implemented in mdev code rather than > individual drivers? I don't understand. > It should be. It isn't yet. It is similar to how phys_port_name preparation was done in legacy way in individual drivers and later on moved to devlink.c So some other time, can move this to mdev core. > > > > >> > >> >+ > >> >+static struct attribute *mdev_dev_attrs[] = { > >> >+ &mdev_type_attr_max_mdevs.attr, > >> >+ &mdev_type_attr_available_instances.attr, > >> >+ NULL, > >> >+}; > >> >+ > >> >+static struct attribute_group mdev_mgmt_group = { > >> >+ .name = "local", > >> >+ .attrs = mdev_dev_attrs, > >> >+}; > >> >+ > >> >+static struct attribute_group *mlx5_meddev_groups[] = { > >> >+ &mdev_mgmt_group, > >> >+ NULL, > >> >+}; > >> > >> [...]