[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] Add version number to API between netfront and accel plugin.
# HG changeset patch # User Keir Fraser <keir@xxxxxxxxxxxxx> # Date 1191420090 -3600 # Node ID e7a3f045cb60f2db1e38f65d9cca5934e4234f53 # Parent df158d6b9e579730ac3868e291ccbb6570980442 Add version number to API between netfront and accel plugin. Signed-off-by: Kieran Mansley <kmansley@xxxxxxxxxxxxxx> --- drivers/xen/netfront/accel.c | 17 ++++++++++++++++- drivers/xen/netfront/netfront.h | 13 +++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff -r df158d6b9e57 -r e7a3f045cb60 drivers/xen/netfront/accel.c --- a/drivers/xen/netfront/accel.c Wed Oct 03 15:00:42 2007 +0100 +++ b/drivers/xen/netfront/accel.c Wed Oct 03 15:01:30 2007 +0100 @@ -406,11 +406,26 @@ accelerator_probe_vifs_on_load(struct ne /* * Called by the netfront accelerator plugin module when it has loaded */ -int netfront_accelerator_loaded(const char *frontend, +int netfront_accelerator_loaded(int version, const char *frontend, struct netfront_accel_hooks *hooks) { struct netfront_accelerator *accelerator; unsigned flags; + + if (version != NETFRONT_ACCEL_VERSION) { + if (version > NETFRONT_ACCEL_VERSION) { + /* Caller has higher version number, leave it + up to them to decide whether to continue. + They can re-call with a lower number if + they're happy to be compatible with us */ + return NETFRONT_ACCEL_VERSION; + } else { + /* We have a more recent version than caller. + Currently reject, but may in future be able + to be backwardly compatible */ + return -EPROTO; + } + } spin_lock_irqsave(&accelerators_lock, flags); diff -r df158d6b9e57 -r e7a3f045cb60 drivers/xen/netfront/netfront.h --- a/drivers/xen/netfront/netfront.h Wed Oct 03 15:00:42 2007 +0100 +++ b/drivers/xen/netfront/netfront.h Wed Oct 03 15:01:30 2007 +0100 @@ -98,6 +98,11 @@ struct netfront_accel_hooks { int (*check_busy)(struct net_device *dev); }; + +/* Version of API/protocol for communication between netfront and + acceleration plugin supported */ +#define NETFRONT_ACCEL_VERSION 0x00010000 + /* * Per-netfront device state for the accelerator. This is used to * allow efficient per-netfront device access to the accelerator @@ -221,8 +226,12 @@ struct netfront_info { * * frontend: the string describing the accelerator, currently the module name * hooks: the hooks for netfront to use to call into the accelerator - */ -extern int netfront_accelerator_loaded(const char *frontend, + * version: the version of API between frontend and plugin requested + * + * return: 0 on success, <0 on error, >0 (with version supported) on + * version mismatch + */ +extern int netfront_accelerator_loaded(int version, const char *frontend, struct netfront_accel_hooks *hooks); /* _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |