(Gerd, I wasn't able to get gmail to quote your email, so I have just copy pasted the relavant parts.) > Yes. net_conf is common config (backend, mac address, maybe more) for > network devices. For sound devices that would audiodev (link the device > to a backend which then handles alsa/pulse/jack/oss/sdl/whatever). Ah I see, so the net_conf corresponds to audiodev? I thought it would correspond to `virtio_snd_conf`. So as alex said, `virtio_snd_conf` is the front end configuration. > Configuration can be done either using device properties, or by having > different devices. Using device properties is probably the easier way > to go. An example for the latter are the qemu hda codecs. We have > three different devices: > (1) hda-output: playback-only, offering a virtual line-out. > (2) hda-duplex: record/playback, offering line-in and line-out. > (3) hda-micro: record/playback, offering microphone and speaker. > The difference between (2) and (3) is just the jack labeling, otherwise > the behavior is 100% identical (and they share the emulation code of > course). But some windows VoIP apps didn't like the line-in and > complained about a missing microphone, so we added that ... >> The thing is I do not understand `net` devices all that well so I get a bit >> confused with >> what is specific to a net device and what should I actually be worried >> about :) > The only thing really required is the audiodev property. Everything > else can be hard-coded initially, and once the basics are working > refined (like adding properties for jack labels, ...). So in the realize function I set up the audiodev, right? Also in that case why the difference between the net and sound devices? In the net device we set up the common config in net_conf. Does the net_conf somehow later sets up NetDev too? And what is a NetClientState? Is the NetClient the emulated guest? This confuses me a lot. I can't understand what will be the parellel audio device property. Also I can't seem to find where we parse the command line options passed to qemu. The code structure is a bit different from what I had expected. In virtio_net_device_realize we set duplex to half or full depending on the value of the net_conf.duplex_str. But I couldn't find where we actually set it. cc Alex -- Shreyansh