On Mon, May 13, 2024 at 01:04:23PM +0200, Jiri Pirko wrote: > Mon, May 13, 2024 at 10:37:23AM CEST, [email protected] > wrote: > > [...] > > > > >+int ice_devlink_create_sf_port(struct ice_dynamic_port *dyn_port) > >+{ > >+ struct devlink_port_attrs attrs = {}; > >+ struct devlink_port *devlink_port; > >+ struct devlink *devlink; > >+ struct ice_vsi *vsi; > >+ struct device *dev; > >+ struct ice_pf *pf; > >+ int err; > >+ > >+ vsi = dyn_port->vsi; > >+ pf = dyn_port->pf; > >+ dev = ice_pf_to_dev(pf); > >+ > >+ devlink_port = &dyn_port->devlink_port; > >+ > >+ attrs.flavour = DEVLINK_PORT_FLAVOUR_PCI_SF; > >+ attrs.pci_sf.pf = pf->hw.bus.func; > >+ attrs.pci_sf.sf = dyn_port->sfnum; > >+ > >+ devlink_port_attrs_set(devlink_port, &attrs); > >+ devlink = priv_to_devlink(pf); > >+ > >+ err = devl_port_register_with_ops(devlink, devlink_port, vsi->idx, > >+ &ice_devlink_port_sf_ops); > >+ if (err) { > >+ dev_err(dev, "Failed to create devlink port for Subfunction %d", > >+ vsi->idx); > > Either use extack or avoid this error message entirely. Could you please > double you don't write dmesg error messages in case you have extack > available in the rest of this patchset? > >
Sure, I can avoid, as this is called from port representor creeation function. I don't want to pass extack there (code is generic for VF and SF, and VF call doesn't have extack). We have this pattern in few place in code (using dev_err even extack can be passed). Is it recommended to pass extact to all functions which probably want to write some message in case of error (assuming the call context has the extack)? > >+ return err; > >+ } > >+ > >+ return 0; > >+} > >+ > > [...]
