Statistics
| Branch: | Revision:

root / hw / virtio-net.c @ 03c63b94

History | View | Annotate | Download (25.1 kB)

# Date Author Comment
22c253d9 01/14/2010 01:14 am Amit Shah

virtio: net: remove dead assignment

clang-analyzer points out value assigned to 'len' is not used.

Signed-off-by: Amit Shah <>
Signed-off-by: Anthony Liguori <>

c9f79a3f 01/12/2010 10:32 pm Michael S. Tsirkin

virtio-net: mac property is mandatory

Mac feature bit isn't going to work as all network cards already have a
'mac' property to set the mac address. Remove it from mask and add in
get_features.

Reported-by: Gerd Hoffmann <>
Signed-off-by: Michael S. Tsirkin <>...

704a76fc 01/11/2010 09:40 pm Michael S. Tsirkin

virtio: rename features -> guest_features

Rename features->guest_features. This is
what they are, avoid confusion with
host features which we also need to keep around.

Signed-off-by: Michael S. Tsirkin <>
Signed-off-by: Anthony Liguori <>

8172539d 01/11/2010 09:40 pm Michael S. Tsirkin

virtio: add features as qdev properties

Add feature bits as properties to virtio. This makes it possible to e.g. define
machine without indirect buffer support, which is required for 0.10
compatibility, or without hardware checksum support, which is required for 0.11...

665a3b07 12/03/2009 05:41 pm Mark McLoughlin

net: remove VLANClientState members now in NetClientInfo

Add a NetClientInfo pointer to VLANClientState and use that
for the typecode and function pointers.

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

eb6b6c12 12/03/2009 05:41 pm Mark McLoughlin

net: convert virtio to NICState

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

184bd048 11/09/2009 04:43 pm Dustin Kirkland

whitelist host virtio networking features

This patch is a followup to 8eca6b1bc770982595db2f7207c65051572436cb,
fixing crashes when guests with 2.6.25 virtio drivers have saturated
virtio network connections.

https://bugs.edge.launchpad.net/ubuntu/+source/qemu-kvm/+bug/458521...

cdd5cc12 11/09/2009 04:43 pm Mark McLoughlin

virtio-net: split the has_buffers() logic from can_receive()

We should only return zero from receive() for a condition which we'll
get notification of when it changes. Currently, we're returning zero
if the guest driver is not ready, but we won't ever flush our queue...

3cbe04c4 10/30/2009 04:42 pm Mark McLoughlin

virtio-net: fix macaddr config regression

This commit:

commit 97b15621
virtio: use qdev properties for configuration.
Signed-off-by: Gerd Hoffmann &lt;&gt;
Signed-off-by: Anthony Liguori &lt;&gt;

makes a guest using virtio-net see an empty macaddr because we never...

a8ed73f7 10/30/2009 03:39 pm Mark McLoughlin

net: move more stuff into net/tap-win32.c, add net/tap.h

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

7200ac3c 10/30/2009 03:39 pm Mark McLoughlin

net: move net-checksum.c under net/

Also add a new net/checksum.h header

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

0ce0e8f4 10/27/2009 07:29 pm Mark McLoughlin

virtio-net: add tap_has_ufo flag to saved state

If we tell the guest we support UFO and then migrate to host which
doesn't support it, we will find ourselves in grave difficulties.

Prevent this scenario by adding a flag to virtio-net's savevm format
which indicates whether the device requires host UFO support....

1d41b0c1 10/27/2009 07:29 pm Anthony Liguori

Work around dhclient brokenness

With the latest GSO/csum offload patches, any guest using an unpatched version
of dhclient (any Ubuntu guest, for instance), will no longer be able to get
a DHCP address.

dhclient is actually at fault here. It uses AF_PACKET to receive DHCP responses...

6c9f58ba 10/27/2009 07:29 pm Sridhar Samudrala

Enable UFO on virtio-net and tap devices

Enable UFO on the host tap device if supported and allow setting UFO
on virtio-net in the guest.

Signed-off-by: Sridhar Samudrala <>
Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

f5436dd9 10/27/2009 07:29 pm Mark McLoughlin

virtio-net: enable tap offload if guest supports it

We query the guest's feature set to see if it supports offload and,
if so, we enable those features on the tap interface.

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

3a330134 10/27/2009 07:29 pm Mark McLoughlin

virtio-net: add vnet_hdr support

With '-netdev tap,id=foo -nic model=virtio,netdev=foo' virtio-net can
detect that its peer (i.e. the tap backend) supports vnet headers
and advertise to the guest that it can send packets with partial
checksums and/or TSO packets....

97b15621 10/27/2009 07:28 pm Gerd Hoffmann

virtio: use qdev properties for configuration.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>

a61d1f67 07/22/2009 06:58 pm Glauber Costa

notify io_thread at the end of rx handling

This is a backport from qemu-kvm. Just instead of using kvm's specific
notification mechanism, we use qemu_notify_event()

Signed-off-by: Glauber Costa <>
Signed-off-by: Anthony Liguori <>

566e2d3e 06/24/2009 05:09 pm Michael S. Tsirkin

qemu/net: request 3 vectors in virtio-net

Request up to 3 vectors in virtio-net. Actual bindings might supply
less.

Signed-off-by: Michael S. Tsirkin <>
Signed-off-by: Anthony Liguori <>

ffe6370c 06/24/2009 05:09 pm Michael S. Tsirkin

qemu/net: flag to control the number of vectors a nic has

Add an option to specify the number of MSI-X vectors for PCI NIC cards. This
can also be used to disable MSI-X, for compatibility with old qemu. This
option currently only affects virtio cards.

Signed-off-by: Michael S. Tsirkin <>...

6243375f 06/22/2009 06:15 pm Mark McLoughlin

virtio-net: implement async packet sending

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

e16044ef 06/22/2009 06:15 pm Mark McLoughlin

virtio-net: enable mergeable receive buffers

When virtio-net was merged in from qemu-kvm.git, the VNET_HDR related
features were dropped from the code.

However, VIRTIO_NET_F_MRG_RXBUF appears to have accidentally been
dropped too. Re-instate that now.

Reported-by: Michael S. Tsirkin <>...

8aeff62d 06/09/2009 01:38 pm Mark McLoughlin

virtio-net: implement rx packet queueing

If we don't have room to receive a packet, we return zero
from virtio_net_receive() and call qemu_flush_queued_packets()
as soon as space becomes available.

Signed-off-by: Mark McLoughlin <>

6c042c16 06/09/2009 01:38 pm Alex Williamson

virtio-net: Add version_id 7 placeholder for vnet header support

Signed-off-by: Alex Williamson <>
Signed-off-by: Mark McLoughlin <>

f10c592e 06/09/2009 01:38 pm Alex Williamson

virtio-net: Use a byte to store RX mode flags

There's no need to save 4 bytes for promisc and allmulti.
Use one byte each just to avoid the overhead of a bitmap.

Signed-off-by: Alex Williamson <>
Signed-off-by: Mark McLoughlin <>

bbe2f399 06/09/2009 01:38 pm Alex Williamson

virtio-net: reorganize receive_filter()

Reorganize receive_filter to better handle the split between
unicast and multicast filtering. This allows us to skip the
broadcast check on unicast packets and leads to more opportunities
for optimization.

Signed-off-by: Alex Williamson <>...

8fd2a2f1 06/09/2009 01:38 pm Alex Williamson

virtio-net: Fix MAC filter overflow handling

Overloading the promisc and allmulti flags for indicating filter
table overflow makes it difficult to track the actual requested
operating mode. Split these out into separate flags.

Signed-off-by: Alex Williamson <>...

2d9aba39 06/09/2009 01:38 pm Alex Williamson

virtio-net: MAC filter optimization

The MAC filter table is received from the guest as two separate
buffers, one with unicast entries, the other with multicast
entries. If we track the index dividing the two sets, we can
avoid searching the part of the table with the wrong type of...

015cb166 06/09/2009 01:38 pm Alex Williamson

virtio-net: Add new RX filter controls

Add a few new RX modes to better control the receive_filter. These
are all fairly obvious features that hardware could provide.

Signed-off-by: Alex Williamson <>
Signed-off-by: Mark McLoughlin <>

4ffb17f5 06/09/2009 01:38 pm Alex Williamson

virtio-net: Increase filter and control limits

Increase the size of the perfect filter table and control queue depth.
This should give us more headroom in the MAC filter and is known to be
needed by at least one guest user. Increasing the control queue depth...

463af534 06/09/2009 01:38 pm Mark McLoughlin

net: add fd_readv() handler to qemu_new_vlan_client() args

This, apparently, is the style we prefer - all VLANClientState
should be an argument to qemu_new_vlan_client().

Signed-off-by: Mark McLoughlin <>

cda9046b 06/09/2009 01:38 pm Mark McLoughlin

net: re-name vc->fd_read() to vc->receive()

VLANClientState's fd_read() handler doesn't read from file
descriptors, it adds a buffer to the client's receive queue.

Re-name the handlers to make things a little less confusing.

Signed-off-by: Mark McLoughlin <>

e3f5ec2b 06/09/2009 01:38 pm Mark McLoughlin

net: pass VLANClientState* as first arg to receive handlers

Give static type checking a chance to catch errors.

Signed-off-by: Mark McLoughlin <>

4f1c942b 06/09/2009 01:38 pm Mark McLoughlin

net: add return value to packet receive handler

This allows us to handle queue full conditions rather than dropping
the packet on the floor.

Signed-off-by: Mark McLoughlin <>

53c25cea 05/18/2009 08:26 pm Paul Brook

Separate virtio PCI code

Split the PCI host bindings from the VRing transport implementation.

Signed-off-by: Paul Brook <>

cf21e106 05/15/2009 12:35 am Paul Brook

Virtio-net qdev conversion

Signed-off-by: Paul Brook <>

b946a153 04/17/2009 08:11 pm aliguori

Introduce VLANClientState::cleanup() (Mark McLoughlin)

We're currently leaking memory and file descriptors on device
hot-unplug.

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7150 c046a42c-6fe2-441c-8c8c-71466251a162

559a8f45 04/17/2009 08:10 pm aliguori

Remove stray GSO code from virtio_net (Mark McLoughlin)

Obviously merged from kvm-userspace accidentally.

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7142 c046a42c-6fe2-441c-8c8c-71466251a162

3f4cb3d3 04/13/2009 07:31 pm blueswir1

Fix OpenSolaris gcc4 warnings: iovec type mismatches, missing 'static'

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7103 c046a42c-6fe2-441c-8c8c-71466251a162

8eca6b1b 04/05/2009 08:40 pm aliguori

Fix oops on 2.6.25 guest (Rusty Russell)

I believe this is behind the following:
https://bugs.edge.launchpad.net/ubuntu/jaunty/+source/linux/+bug/331128

virtio_pci in 2.6.25 didn't do feature negotiation correctly: it acked every
bit. Fortunately, we can detect this....

c6bb9a32 03/13/2009 05:04 pm aliguori

qemu:virtio-net: Check return size on the correct sg list (Alex Williamson)

When checking that the size of the control virtqueue return field
is sufficient, use the correct sg list.

Signed-off-by: Alex Williamson <>
Signed-off-by: Anthony Liguori <>...

c6ba7bbc 02/16/2009 05:47 pm aliguori

virtio: Remove malloc failure checks (Jan Kiszka)

No need to check for failing qemu_malloc anymore.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6626 c046a42c-6fe2-441c-8c8c-71466251a162

72da4208 02/11/2009 05:19 pm aliguori

qemu: return PCIDevice on net device init and record devfn (Marcelo Tosatti)

Change the PCI network drivers init functions to return the PCIDev, to
inform which slot has been hot-plugged.

Also record PCIDevice structure on NICInfo to locate for release on...

f21c0ed9 02/06/2009 12:36 am aliguori

qemu:virtio-net: Add VLAN filtering (Alex Williamson)

Use the control virtqueue to allow the guest to enable and manipulate
a VLAN filter table. This allows us to drop more packets the guest
doesn't want to see. We define a new VLAN class for the control...

b6503ed9 02/06/2009 12:36 am aliguori

qemu:virtio-net: Add additional MACs via a filter table (Alex Williamson)

Create a filter table and allow the guest to populate it with the
MAC class control commands. We manage the size and usage of the
filter table including enabling promiscuous and all-multi modes...

3831ab20 02/06/2009 12:36 am aliguori

qemu:virtio-net: Enable filtering based on MAC, promisc, broadcast and allmulti (Alex Williamson)

Make use of the new RX_MODE control virtqueue class by dropping
packets the guest doesn't want to see.

Signed-off-by: Alex Williamson <>...

002437cd 02/06/2009 12:36 am aliguori

qemu:virtio-net: Add promiscuous and all-multicast mode bits (Alex Williamson)

Add a new RX_MODE control virtqueue class with commands PROMISC and
ALLMULTI and usage documented in virtio-net.h allowing the guest to
manipulate packet receiving options. We don't export a feature for...

3d11d36c 02/06/2009 12:36 am aliguori

qemu:virtio-net: Add a virtqueue for control commands from the guest (Alex Williamson)

This will be used for RX mode, MAC table, VLAN table control, etc...

The control transaction consists of one or more "out" sg entries and
one or more "in" sg entries. The first out entry contains a header...

79674068 02/06/2009 12:36 am aliguori

qemu:virtio-net: Define ETH_ALEN for use when manipulating MAC addresses (Alex Williamson)

Makes it much easier to search too.

Signed-off-by: Alex Williamson <>
Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6535 c046a42c-6fe2-441c-8c8c-71466251a162

0f03eca6 02/06/2009 12:36 am aliguori

qemu:virtio-net: Allow setting the MAC address via set_config (Alex Williamson)

Allow the guest to write to the MAC address config space and update
the network info string when it does. Rename get_config for symmetry.

Signed-off-by: Alex Williamson <>...

9d6271b8 02/06/2009 12:36 am aliguori

qemu:virtio-net: Save status and add some save infrastructure (Alex Williamson)

The status register should probably be saved since its guest visible.
Also add a little bit if infrastructure for handling various save
revisions.

Signed-off-by: Alex Williamson <>...

173a543b 02/01/2009 09:26 pm blueswir1

Add and use #defines for PCI device classes

This patch adds and uses #defines for PCI device classes and subclases,
using a new pci_config_set_class() function, similar to the recently
added pci_config_set_vendor_id() and pci_config_set_device_id().

Change since v1: fixed compilation of hw/sun4u.c...

99b3718e 01/26/2009 05:22 pm aliguori

Use the default subsystem vendor ID for virtio devices (Mark McLoughlin)

A subsystem vendor ID of zero isn't allowed, so we use our
default ID.

Gerd points out that although the PCI subsystem vendor ID is
treated by the guest as the virtio vendor ID:

/* we use the subsystem vendor/device id as the virtio vendor/device...
a7c4996b 01/26/2009 05:22 pm aliguori

Use macros for virtio-net PCI vendor/device IDs (Mark McLoughlin)

Gerd added these macros a while back.

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6438 c046a42c-6fe2-441c-8c8c-71466251a162

291c6ff9 01/13/2009 11:09 pm aliguori

Make virtio_net_init() return void (Mark McLoughlin)

All PCI NIC init functions return void and nothing uses the
return value from virtio_net_init().

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>...

554c97dd 01/08/2009 09:46 pm aliguori

Implement virtio_net link status (Mark McLoughlin)

Implement the VIRTIO_NET_F_STATUS feature by exposing the link status
through virtio_net_config::status.

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>...

e46cb38f 01/07/2009 07:50 pm aliguori

virtio-net migration fix (Mark McLoughlin)

We are failing to save whether the guest will supply us rx
buffers using the new mergeable format; this can cause a
migrated guest to crash with:

virtio-net header not in first element

Bump the savevm version number and refuse to load v1 saves...

7a9f6e4a 01/07/2009 07:48 pm aliguori

Add a -net name=foo parameter (Mark McLoughlin)

Allow the user to supply a vlan client name on the command line.

This is probably only useful for management tools so that they can
use their own names rather than parsing the output of 'info network'.

Signed-off-by: Mark McLoughlin <>...

96d5e201 01/07/2009 07:47 pm aliguori

add missing MAC address to info_str for some NICs (Mark McLoughlin)

Signed-off-by: Mark McLoughlin <>
Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6219 c046a42c-6fe2-441c-8c8c-71466251a162

bf38c1a0 01/07/2009 07:42 pm aliguori

Add a model string to VLANClientState (Mark McLoughlin)

Don't lose track of what type/model a vlan client is so that we can
e.g. assign a global per-model id to clients.

The entire patch is basically a tedious excercise in making sure the
type/model string gets propagated down to qemu_new_vlan_client()....

4689f4b3 12/17/2008 09:45 pm aliguori

Use saner types for virtio-net

This was spotted by malc

Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6075 c046a42c-6fe2-441c-8c8c-71466251a162

fbe78f4f 12/17/2008 09:13 pm aliguori

virtio-net support

This adds virtio-net support. This is based on the virtio-net driver
that exists in kvm-userspace. This also adds a new qemu_sendv_packet
which virtio-net requires.

Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6073 c046a42c-6fe2-441c-8c8c-71466251a162