mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-26 15:31:35 +00:00
dm:change virtio-net parameters for cmdline
Remove device name requirement for “tap” and "vmnet", change the parameter format like: "-s 4,virtio-net,tap/vmnet=dev_name". Tracked-On: #6690 Acked-by: Yu1 Wang <yu1.wang@intel.com> Signed-off-by: Chenli Wei <chenli.wei@linux.intel.com>
This commit is contained in:
parent
cbd593e6c0
commit
d755205c8d
@ -341,6 +341,10 @@ pci_parse_slot(char *opt)
|
||||
/* saved fi param in case reboot */
|
||||
si->si_funcs[fnum].fi_param_saved = config;
|
||||
|
||||
if (strcmp("virtio-net", emul) == 0) {
|
||||
si->si_funcs[fnum].fi_param_saved = cp;
|
||||
}
|
||||
|
||||
if (b != NULL) {
|
||||
if ((strcmp("virtio-blk", emul) == 0) && (b != NULL) &&
|
||||
(strchr(b, 'b') != NULL)) {
|
||||
|
@ -817,7 +817,11 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
|
||||
char nstr[80];
|
||||
char tname[MAXCOMLEN + 1];
|
||||
struct virtio_net *net;
|
||||
char *devname = NULL;
|
||||
char fname[IFNAMSIZ];
|
||||
char *devopts = NULL;
|
||||
char *name = NULL;
|
||||
char *type = NULL;
|
||||
char *tmp;
|
||||
char *vtopts;
|
||||
char *opt;
|
||||
int mac_provided;
|
||||
@ -852,8 +856,8 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
|
||||
if (opts != NULL) {
|
||||
int err;
|
||||
|
||||
devname = vtopts = strdup(opts);
|
||||
if (!devname) {
|
||||
devopts = vtopts = strdup(opts);
|
||||
if (!devopts) {
|
||||
WPRINTF(("virtio_net: strdup returns NULL\n"));
|
||||
free(net);
|
||||
return -1;
|
||||
@ -868,7 +872,7 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
|
||||
err = virtio_net_parsemac(opt,
|
||||
net->config.mac);
|
||||
if (err != 0) {
|
||||
free(devname);
|
||||
free(devopts);
|
||||
free(net);
|
||||
return err;
|
||||
}
|
||||
@ -896,17 +900,27 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
|
||||
*/
|
||||
net->tapfd = -1;
|
||||
|
||||
if (!devname) {
|
||||
WPRINTF(("virtio_net: devname NULL\n"));
|
||||
if (!devopts) {
|
||||
WPRINTF(("virtio_net: invalid optional argument\n"));
|
||||
free(net);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((strstr(devname, "tap") != NULL) ||
|
||||
(strncmp(devname, "vmnet", 5) == 0))
|
||||
virtio_net_tap_setup(net, devname);
|
||||
vtopts = tmp = strdup(opts);
|
||||
if ((strstr(tmp, "tap") != NULL)
|
||||
|| (strncmp(tmp, "vmnet",5) == 0)) {
|
||||
type = strsep(&tmp, "=");
|
||||
name = strsep(&tmp, ",");
|
||||
}
|
||||
|
||||
free(devname);
|
||||
if ((type != NULL) && (name != NULL)) {
|
||||
snprintf(fname, IFNAMSIZ, "%s_%s", type, name);
|
||||
|
||||
if ((strstr(type, "tap") != NULL) ||
|
||||
(strncmp(type, "vmnet", 5) == 0)){
|
||||
virtio_net_tap_setup(net, fname);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The default MAC address is the standard NetApp OUI of 00-a0-98,
|
||||
@ -928,6 +942,9 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
|
||||
net->config.mac[5] = digest[2];
|
||||
}
|
||||
|
||||
free(vtopts);
|
||||
free(devopts);
|
||||
|
||||
/* initialize config space */
|
||||
pci_set_cfgdata16(dev, PCIR_DEVICE, VIRTIO_DEV_NET);
|
||||
pci_set_cfgdata16(dev, PCIR_VENDOR, VIRTIO_VENDOR);
|
||||
|
Loading…
Reference in New Issue
Block a user