Add extack argument to reload, port_split and port_unsplit operations.
Signed-off-by: David Ahern <dsahern@gmail.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 
 static int mlxsw_devlink_port_split(struct devlink *devlink,
                                    unsigned int port_index,
-                                   unsigned int count)
+                                   unsigned int count,
+                                   struct netlink_ext_ack *extack)
 {
        struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
 
 }
 
 static int mlxsw_devlink_port_unsplit(struct devlink *devlink,
-                                     unsigned int port_index)
+                                     unsigned int port_index,
+                                     struct netlink_ext_ack *extack)
 {
        struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
 
                                                     pool_type, p_cur, p_max);
 }
 
-static int mlxsw_devlink_core_bus_device_reload(struct devlink *devlink)
+static int mlxsw_devlink_core_bus_device_reload(struct devlink *devlink,
+                                               struct netlink_ext_ack *extack)
 {
        struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
        int err;
 
 
 static int
 nfp_devlink_port_split(struct devlink *devlink, unsigned int port_index,
-                      unsigned int count)
+                      unsigned int count, struct netlink_ext_ack *extack)
 {
        struct nfp_pf *pf = devlink_priv(devlink);
        struct nfp_eth_table_port eth_port;
 }
 
 static int
-nfp_devlink_port_unsplit(struct devlink *devlink, unsigned int port_index)
+nfp_devlink_port_unsplit(struct devlink *devlink, unsigned int port_index,
+                        struct netlink_ext_ack *extack)
 {
        struct nfp_pf *pf = devlink_priv(devlink);
        struct nfp_eth_table_port eth_port;
 
        return err;
 }
 
-static int nsim_devlink_reload(struct devlink *devlink)
+static int nsim_devlink_reload(struct devlink *devlink,
+                              struct netlink_ext_ack *extack)
 {
        enum nsim_resource_id res_ids[] = {
                NSIM_RESOURCE_IPV4_FIB, NSIM_RESOURCE_IPV4_FIB_RULES,
 
 #define DEVLINK_RESOURCE_ID_PARENT_TOP 0
 
 struct devlink_ops {
-       int (*reload)(struct devlink *devlink);
+       int (*reload)(struct devlink *devlink, struct netlink_ext_ack *extack);
        int (*port_type_set)(struct devlink_port *devlink_port,
                             enum devlink_port_type port_type);
        int (*port_split)(struct devlink *devlink, unsigned int port_index,
-                         unsigned int count);
-       int (*port_unsplit)(struct devlink *devlink, unsigned int port_index);
+                         unsigned int count, struct netlink_ext_ack *extack);
+       int (*port_unsplit)(struct devlink *devlink, unsigned int port_index,
+                           struct netlink_ext_ack *extack);
        int (*sb_pool_get)(struct devlink *devlink, unsigned int sb_index,
                           u16 pool_index,
                           struct devlink_sb_pool_info *pool_info);
 
        return 0;
 }
 
-static int devlink_port_split(struct devlink *devlink,
-                             u32 port_index, u32 count)
+static int devlink_port_split(struct devlink *devlink, u32 port_index,
+                             u32 count, struct netlink_ext_ack *extack)
 
 {
        if (devlink->ops && devlink->ops->port_split)
-               return devlink->ops->port_split(devlink, port_index, count);
+               return devlink->ops->port_split(devlink, port_index, count,
+                                               extack);
        return -EOPNOTSUPP;
 }
 
 
        port_index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]);
        count = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_SPLIT_COUNT]);
-       return devlink_port_split(devlink, port_index, count);
+       return devlink_port_split(devlink, port_index, count, info->extack);
 }
 
-static int devlink_port_unsplit(struct devlink *devlink, u32 port_index)
+static int devlink_port_unsplit(struct devlink *devlink, u32 port_index,
+                               struct netlink_ext_ack *extack)
 
 {
        if (devlink->ops && devlink->ops->port_unsplit)
-               return devlink->ops->port_unsplit(devlink, port_index);
+               return devlink->ops->port_unsplit(devlink, port_index, extack);
        return -EOPNOTSUPP;
 }
 
                return -EINVAL;
 
        port_index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]);
-       return devlink_port_unsplit(devlink, port_index);
+       return devlink_port_unsplit(devlink, port_index, info->extack);
 }
 
 static int devlink_nl_sb_fill(struct sk_buff *msg, struct devlink *devlink,
                NL_SET_ERR_MSG_MOD(info->extack, "resources size validation failed");
                return err;
        }
-       return devlink->ops->reload(devlink);
+       return devlink->ops->reload(devlink, info->extack);
 }
 
 static const struct nla_policy devlink_nl_policy[DEVLINK_ATTR_MAX + 1] = {