@@ -19,6 +19,7 @@ enum vdpa_command {
VDPA_CMD_DEV_GET, /* can dump */
VDPA_CMD_DEV_CONFIG_GET, /* can dump */
VDPA_CMD_DEV_VSTATS_GET,
+ VDPA_CMD_DEV_CONFIG_SET,
};
enum vdpa_attr {
@@ -758,6 +758,22 @@ static int cmd_dev_del(struct vdpa *vdpa, int argc, char **argv)
return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL);
}
+static int cmd_dev_set(struct vdpa *vdpa, int argc, char **argv)
+{
+ struct nlmsghdr *nlh;
+ int err;
+
+ nlh = mnlu_gen_socket_cmd_prepare(&vdpa->nlg, VDPA_CMD_DEV_CONFIG_SET,
+ NLM_F_REQUEST | NLM_F_ACK);
+ err = vdpa_argv_parse_put(nlh, vdpa, argc, argv,
+ VDPA_OPT_VDEV_NAME,
+ VDPA_OPT_VDEV_MAC|VDPA_OPT_VDEV_MTU);
+ if (err)
+ return err;
+
+ return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL);
+}
+
static void pr_out_dev_net_config(struct vdpa *vdpa, struct nlattr **tb)
{
SPRINT_BUF(macaddr);
@@ -1028,6 +1044,9 @@ static int cmd_dev(struct vdpa *vdpa, int argc, char **argv)
} else if (!strcmp(*argv, "vstats")) {
return cmd_dev_vstats(vdpa, argc - 1, argv + 1);
}
+ else if (!strcmp(*argv, "set")) {
+ return cmd_dev_set(vdpa, argc - 1, argv + 1);
+ }
fprintf(stderr, "Command \"%s\" not found\n", *argv);
return -ENOENT;
}
Add new function to support the MAC address and MTU from VDPA tool. The kernel now only supports setting the MAC address. The usage is vdpa dev set name vdpa_name mac **:**:**:**:** here is sample: root@L1# vdpa -jp dev config show vdpa0 { "config": { "vdpa0": { "mac": "82:4d:e9:5d:d7:e6", "link ": "up", "link_announce ": false, "mtu": 1500 } } } root@L1# vdpa dev set name vdpa0 mac 00:11:22:33:44:55 root@L1# vdpa -jp dev config show vdpa0 { "config": { "vdpa0": { "mac": "00:11:22:33:44:55", "link ": "up", "link_announce ": false, "mtu": 1500 } } } Signed-off-by: Cindy Lu <lulu@redhat.com> --- vdpa/include/uapi/linux/vdpa.h | 1 + vdpa/vdpa.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+)