Commit d4602a9f authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller

net: devlink: region: Pass the region ops to the snapshot function

Pass the region to be snapshotted to the function performing the
snapshot. This allows one function to operate on numerous regions.

v4:
Add missing kerneldoc for ICE
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e14e05e7
...@@ -401,6 +401,7 @@ void ice_devlink_destroy_port(struct ice_pf *pf) ...@@ -401,6 +401,7 @@ void ice_devlink_destroy_port(struct ice_pf *pf)
/** /**
* ice_devlink_nvm_snapshot - Capture a snapshot of the Shadow RAM contents * ice_devlink_nvm_snapshot - Capture a snapshot of the Shadow RAM contents
* @devlink: the devlink instance * @devlink: the devlink instance
* @ops: the devlink region being snapshotted
* @extack: extended ACK response structure * @extack: extended ACK response structure
* @data: on exit points to snapshot data buffer * @data: on exit points to snapshot data buffer
* *
...@@ -413,6 +414,7 @@ void ice_devlink_destroy_port(struct ice_pf *pf) ...@@ -413,6 +414,7 @@ void ice_devlink_destroy_port(struct ice_pf *pf)
* error code on failure. * error code on failure.
*/ */
static int ice_devlink_nvm_snapshot(struct devlink *devlink, static int ice_devlink_nvm_snapshot(struct devlink *devlink,
const struct devlink_region_ops *ops,
struct netlink_ext_ack *extack, u8 **data) struct netlink_ext_ack *extack, u8 **data)
{ {
struct ice_pf *pf = devlink_priv(devlink); struct ice_pf *pf = devlink_priv(devlink);
...@@ -456,6 +458,7 @@ static int ice_devlink_nvm_snapshot(struct devlink *devlink, ...@@ -456,6 +458,7 @@ static int ice_devlink_nvm_snapshot(struct devlink *devlink,
/** /**
* ice_devlink_devcaps_snapshot - Capture snapshot of device capabilities * ice_devlink_devcaps_snapshot - Capture snapshot of device capabilities
* @devlink: the devlink instance * @devlink: the devlink instance
* @ops: the devlink region being snapshotted
* @extack: extended ACK response structure * @extack: extended ACK response structure
* @data: on exit points to snapshot data buffer * @data: on exit points to snapshot data buffer
* *
...@@ -468,6 +471,7 @@ static int ice_devlink_nvm_snapshot(struct devlink *devlink, ...@@ -468,6 +471,7 @@ static int ice_devlink_nvm_snapshot(struct devlink *devlink,
*/ */
static int static int
ice_devlink_devcaps_snapshot(struct devlink *devlink, ice_devlink_devcaps_snapshot(struct devlink *devlink,
const struct devlink_region_ops *ops,
struct netlink_ext_ack *extack, u8 **data) struct netlink_ext_ack *extack, u8 **data)
{ {
struct ice_pf *pf = devlink_priv(devlink); struct ice_pf *pf = devlink_priv(devlink);
......
...@@ -40,7 +40,9 @@ static struct dentry *nsim_dev_ddir; ...@@ -40,7 +40,9 @@ static struct dentry *nsim_dev_ddir;
#define NSIM_DEV_DUMMY_REGION_SIZE (1024 * 32) #define NSIM_DEV_DUMMY_REGION_SIZE (1024 * 32)
static int static int
nsim_dev_take_snapshot(struct devlink *devlink, struct netlink_ext_ack *extack, nsim_dev_take_snapshot(struct devlink *devlink,
const struct devlink_region_ops *ops,
struct netlink_ext_ack *extack,
u8 **data) u8 **data)
{ {
void *dummy_data; void *dummy_data;
...@@ -68,7 +70,7 @@ static ssize_t nsim_dev_take_snapshot_write(struct file *file, ...@@ -68,7 +70,7 @@ static ssize_t nsim_dev_take_snapshot_write(struct file *file,
devlink = priv_to_devlink(nsim_dev); devlink = priv_to_devlink(nsim_dev);
err = nsim_dev_take_snapshot(devlink, NULL, &dummy_data); err = nsim_dev_take_snapshot(devlink, NULL, NULL, &dummy_data);
if (err) if (err)
return err; return err;
......
...@@ -566,7 +566,9 @@ struct devlink_info_req; ...@@ -566,7 +566,9 @@ struct devlink_info_req;
struct devlink_region_ops { struct devlink_region_ops {
const char *name; const char *name;
void (*destructor)(const void *data); void (*destructor)(const void *data);
int (*snapshot)(struct devlink *devlink, struct netlink_ext_ack *extack, int (*snapshot)(struct devlink *devlink,
const struct devlink_region_ops *ops,
struct netlink_ext_ack *extack,
u8 **data); u8 **data);
void *priv; void *priv;
}; };
......
...@@ -4347,7 +4347,7 @@ devlink_nl_cmd_region_new(struct sk_buff *skb, struct genl_info *info) ...@@ -4347,7 +4347,7 @@ devlink_nl_cmd_region_new(struct sk_buff *skb, struct genl_info *info)
} }
} }
err = region->ops->snapshot(devlink, info->extack, &data); err = region->ops->snapshot(devlink, region->ops, info->extack, &data);
if (err) if (err)
goto err_snapshot_capture; goto err_snapshot_capture;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment