History | View | Annotate | Download (20.1 kB)
virtio-net: implement rx packet queueing
If we don't have room to receive a packet, we return zerofrom virtio_net_receive() and call qemu_flush_queued_packets()as soon as space becomes available.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
virtio-net: Add version_id 7 placeholder for vnet header support
Signed-off-by: Alex Williamson <alex.williamson@hp.com>Signed-off-by: Mark McLoughlin <markmc@redhat.com>
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.
virtio-net: reorganize receive_filter()
Reorganize receive_filter to better handle the split betweenunicast and multicast filtering. This allows us to skip thebroadcast check on unicast packets and leads to more opportunitiesfor optimization.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>...
virtio-net: Fix MAC filter overflow handling
Overloading the promisc and allmulti flags for indicating filtertable overflow makes it difficult to track the actual requestedoperating mode. Split these out into separate flags.
virtio-net: MAC filter optimization
The MAC filter table is received from the guest as two separatebuffers, one with unicast entries, the other with multicastentries. If we track the index dividing the two sets, we canavoid searching the part of the table with the wrong type of...
virtio-net: Add new RX filter controls
Add a few new RX modes to better control the receive_filter. Theseare all fairly obvious features that hardware could provide.
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 beneeded by at least one guest user. Increasing the control queue depth...
net: add fd_readv() handler to qemu_new_vlan_client() args
This, apparently, is the style we prefer - all VLANClientStateshould be an argument to qemu_new_vlan_client().
net: re-name vc->fd_read() to vc->receive()
VLANClientState's fd_read() handler doesn't read from filedescriptors, it adds a buffer to the client's receive queue.
Re-name the handlers to make things a little less confusing.
net: pass VLANClientState* as first arg to receive handlers
Give static type checking a chance to catch errors.
net: add return value to packet receive handler
This allows us to handle queue full conditions rather than droppingthe packet on the floor.
Separate virtio PCI code
Split the PCI host bindings from the VRing transport implementation.
Signed-off-by: Paul Brook <paul@codesourcery.com>
Virtio-net qdev conversion
Introduce VLANClientState::cleanup() (Mark McLoughlin)
We're currently leaking memory and file descriptors on devicehot-unplug.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7150 c046a42c-6fe2-441c-8c8c-71466251a162
Remove stray GSO code from virtio_net (Mark McLoughlin)
Obviously merged from kvm-userspace accidentally.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7142 c046a42c-6fe2-441c-8c8c-71466251a162
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
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 everybit. Fortunately, we can detect this....
qemu:virtio-net: Check return size on the correct sg list (Alex Williamson)
When checking that the size of the control virtqueue return fieldis sufficient, use the correct sg list.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>...
virtio: Remove malloc failure checks (Jan Kiszka)
No need to check for failing qemu_malloc anymore.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6626 c046a42c-6fe2-441c-8c8c-71466251a162
qemu: return PCIDevice on net device init and record devfn (Marcelo Tosatti)
Change the PCI network drivers init functions to return the PCIDev, toinform which slot has been hot-plugged.
Also record PCIDevice structure on NICInfo to locate for release on...
qemu:virtio-net: Add VLAN filtering (Alex Williamson)
Use the control virtqueue to allow the guest to enable and manipulatea VLAN filter table. This allows us to drop more packets the guestdoesn't want to see. We define a new VLAN class for the control...
qemu:virtio-net: Add additional MACs via a filter table (Alex Williamson)
Create a filter table and allow the guest to populate it with theMAC class control commands. We manage the size and usage of thefilter table including enabling promiscuous and all-multi modes...
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 droppingpackets the guest doesn't want to see.
qemu:virtio-net: Add promiscuous and all-multicast mode bits (Alex Williamson)
Add a new RX_MODE control virtqueue class with commands PROMISC andALLMULTI and usage documented in virtio-net.h allowing the guest tomanipulate packet receiving options. We don't export a feature for...
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 andone or more "in" sg entries. The first out entry contains a header...
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 <alex.williamson@hp.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6535 c046a42c-6fe2-441c-8c8c-71466251a162
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 updatethe network info string when it does. Rename get_config for symmetry.
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 saverevisions.
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 recentlyadded pci_config_set_vendor_id() and pci_config_set_device_id().
Change since v1: fixed compilation of hw/sun4u.c...
Use the default subsystem vendor ID for virtio devices (Mark McLoughlin)
A subsystem vendor ID of zero isn't allowed, so we use ourdefault ID.
Gerd points out that although the PCI subsystem vendor ID istreated by the guest as the virtio vendor ID:
/* we use the subsystem vendor/device id as the virtio vendor/device...
Use macros for virtio-net PCI vendor/device IDs (Mark McLoughlin)
Gerd added these macros a while back.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6438 c046a42c-6fe2-441c-8c8c-71466251a162
Make virtio_net_init() return void (Mark McLoughlin)
All PCI NIC init functions return void and nothing uses thereturn value from virtio_net_init().
Signed-off-by: Mark McLoughlin <markmc@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>...
Implement virtio_net link status (Mark McLoughlin)
Implement the VIRTIO_NET_F_STATUS feature by exposing the link statusthrough virtio_net_config::status.
virtio-net migration fix (Mark McLoughlin)
We are failing to save whether the guest will supply us rxbuffers using the new mergeable format; this can cause amigrated guest to crash with:
virtio-net header not in first element
Bump the savevm version number and refuse to load v1 saves...
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 canuse their own names rather than parsing the output of 'info network'.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>...
add missing MAC address to info_str for some NICs (Mark McLoughlin)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6219 c046a42c-6fe2-441c-8c8c-71466251a162
Add a model string to VLANClientState (Mark McLoughlin)
Don't lose track of what type/model a vlan client is so that we cane.g. assign a global per-model id to clients.
The entire patch is basically a tedious excercise in making sure thetype/model string gets propagated down to qemu_new_vlan_client()....
Use saner types for virtio-net
This was spotted by malc
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6075 c046a42c-6fe2-441c-8c8c-71466251a162
virtio-net support
This adds virtio-net support. This is based on the virtio-net driverthat exists in kvm-userspace. This also adds a new qemu_sendv_packetwhich virtio-net requires.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6073 c046a42c-6fe2-441c-8c8c-71466251a162