(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