This patch makes frontend drivers being shutdown when devices_shutdown()
is called and walks down the device tree. Most of it is handled by the
xenbus core, which got a new function for the bus->shutdown callback.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
Driver changes: Make backend drivers check it when entering Closed
state, only unregister devices when the "online" node is either "0" or
not present. The later maintains backward compatibility.
Tools changes: Update "online" node when creating and hot-unplugging
devices.
Background: When kexec'ing a new kernel, the old kernel's frontend
driver will shutdown, but the backend device should *NOT* disappear
due to that, so the new kernel instance can reconnect.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
open_netdev is called as very last thing in netdev_probe.
This closes at least one initialization race: uninitialized
mac address is visible for a short time in
/sys/class/net/${if}/address
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
This will allow the tools management to be revised independently
of dom0 kernel interfaces. Currently tools cannot be 'smarter'
than the kernel in terms of hypercalls they know about, because
the kernel disallows access to any hypercalls it does not know
about.
Signed-off-by: Keir Fraser <keir@xensource.com>
Again needed for domU kexec, so the next kernel instance can register
watches without running into -EBUSY.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
and handle frontend state transition from "Closing" to "Initialising".
Instead of destroying the backend device then they wait for a
reconnect from the frontend. Needed for domU kexec support, to hand over
devices from one kernel instance to the next.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
* move function prototypes to the top of the file.
* uses the "struct bus_type" function pointers instead
of overwriting the "struct device_driver" ones for
xenbus_dev_probe() and xenbus_dev_remove().
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
have extended checksum-offload info fields in teh skbuff structure.
Based on a patch from Steven Smith <ssmith@xensource.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
The first fragment is used to store the pending_idx of the leading
txreq if it doesn't fit in the head area. When it does fit into
the head we need to ensure that the first fragment contains a value
that is not equal to pending_idx as that's what we use to distinguish
between the two cases in a a number of places.
This patch sets the first fragment to ~0 which is not equal to any
valid pending_idx. Without this initialisation, we may double-free
a pending_idx if the first fragment happened to contain a value
equal to it (this usually happened with pending_idx 0).
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
is slightly more informative and mirrors the 'feature-rx-copy' name
which communicates the feature in the other direction (back->front).
Signed-off-by: Keir Fraser <keir@xensource.com>
When the netfront driver is resumed the features are renegotiated with
the backend. However, I forgot take into account the status of the TX
checksum setting. When TX checksum is disabled by the user, we cannot
enable SG or TSO since both require checksum offload. This patch
makes
xennet check the checksum setting before renegotiating SG or TSO.
This bug was fixed thanks to a report from Anton Burtsev.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Some drivers (ie the e1000) hand up packets with the header in
the main area and the data in a fragment. Unless there are
multiple references on any of the data, we don't need to
make a full copy of those packets.
Signed-off-by: Emmanuel Ackaouy <ack@xensource.com>
By replacing dev_alloc_skb with alloc_skb we need to do the 16-byte
reservation ourselves. Also, it's unnecessary to align the size
when calling alloc_skb since the alignment is an implementation
detail of alloc_skb and it already takes care of it for us.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Thsi fixes problems where a driver is loaded from a script, and the
following parts of the script depend on devices having connected
by the time the modprobe/insmod returns.
Based on a tested patch from Rik van Riel at Red Hat.
Signed-off-by: Keir Fraser <keir@xensource.com>