On Wed, Sep 29, 2021 at 01:16:37PM +0300, Leon Romanovsky wrote: > +void devlink_set_ops(struct devlink *devlink, struct devlink_ops *ops) > +{ > + struct devlink_ops *dev_ops = devlink->ops; > + > + WARN_ON(!devlink_reload_actions_valid(ops)); > + > +#define SET_DEVICE_OP(ptr, name) \ > + do { \ > + if (ops->name) \ Could you make "ops" a parameter of the macro instead of hard coding it? regards, dan carpenter > + if (!((ptr)->name)) \ > + (ptr)->name = ops->name; \ > + } while (0) > + > + /* Keep sorted */ > + SET_DEVICE_OP(dev_ops, reload_actions); > + SET_DEVICE_OP(dev_ops, reload_down); > + SET_DEVICE_OP(dev_ops, reload_limits); > + SET_DEVICE_OP(dev_ops, reload_up); > + > +#undef SET_DEVICE_OP > +} > +EXPORT_SYMBOL_GPL(devlink_set_ops);