WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 3/6] Network acceleration improvements

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 3/6] Network acceleration improvements
From: Kieran Mansley <kmansley@xxxxxxxxxxxxxx>
Date: Wed, 03 Oct 2007 14:18:28 +0100
Delivery-date: Wed, 03 Oct 2007 06:21:55 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Signed-off-by: Kieran Mansley <kmansley@xxxxxxxxxxxxxx> 

Add version number to API between netback and accel plugin

diff -r 330deb0c6935 drivers/xen/netback/accel.c
--- a/drivers/xen/netback/accel.c       Wed Oct 03 13:30:20 2007 +0100
+++ b/drivers/xen/netback/accel.c       Wed Oct 03 13:32:27 2007 +0100
@@ -103,18 +103,35 @@ static int netback_accelerator_tell_back
  * Entry point for an netback accelerator plugin module.  Called to
  * advertise its presence, and connect to any suitable backends.
  */
-void netback_connect_accelerator(int id, const char *eth_name, 
-                                struct netback_accel_hooks *hooks)
-{
-       struct netback_accelerator *new_accelerator = 
+int netback_connect_accelerator(unsigned version, int id, const char 
*eth_name, 
+                               struct netback_accel_hooks *hooks)
+{
+       struct netback_accelerator *new_accelerator;
+       unsigned eth_name_len, flags;
+
+       if (version != NETBACK_ACCEL_VERSION) {
+               if (version > NETBACK_ACCEL_VERSION) {
+                       /* Caller has higher version number, leave it
+                          up to them to decide whether to continue.
+                          They can recall with a lower number if
+                          they're happy to be compatible with us */
+                       return NETBACK_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;
+               }
+       }
+
+       new_accelerator = 
                kmalloc(sizeof(struct netback_accelerator), GFP_KERNEL);
-       unsigned eth_name_len, flags;
-
        if (!new_accelerator) {
                DPRINTK("%s: failed to allocate memory for accelerator\n",
                        __FUNCTION__);
-               return;
-       }
+               return -ENOMEM;
+       }
+
 
        new_accelerator->id = id;
        
@@ -124,7 +141,7 @@ void netback_connect_accelerator(int id,
                DPRINTK("%s: failed to allocate memory for eth_name string\n",
                        __FUNCTION__);
                kfree(new_accelerator);
-               return;
+               return -ENOMEM;
        }
        strlcpy(new_accelerator->eth_name, eth_name, eth_name_len);
        
@@ -139,6 +156,8 @@ void netback_connect_accelerator(int id,
        /* tell existing backends about new plugin */
        xenbus_for_each_backend(new_accelerator, 
                                netback_accelerator_tell_backend);
+
+       return 0;
 
 }
 EXPORT_SYMBOL_GPL(netback_connect_accelerator);
diff -r 330deb0c6935 drivers/xen/netback/common.h
--- a/drivers/xen/netback/common.h      Wed Oct 03 13:30:20 2007 +0100
+++ b/drivers/xen/netback/common.h      Wed Oct 03 13:36:10 2007 +0100
@@ -149,9 +149,16 @@ struct backend_info {
        struct netback_accelerator *accelerator;
 };
 
-/* Connect an accelerator plugin module to netback */
-extern void netback_connect_accelerator(int id, const char *eth_name, 
-                                       struct netback_accel_hooks *hooks);
+#define NETBACK_ACCEL_VERSION 0x00010000
+
+/* 
+ * Connect an accelerator plugin module to netback.  Returns zero on
+ * success, < 0 on error, > 0 (with highest version number supported)
+ * if version mismatch.
+ */
+extern int netback_connect_accelerator(unsigned version,
+                                      int id, const char *eth_name, 
+                                      struct netback_accel_hooks *hooks);
 /* Disconnect a previously connected accelerator plugin module */
 extern void netback_disconnect_accelerator(int id, const char *eth_name);
 

Attachment: netback_version
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH 3/6] Network acceleration improvements, Kieran Mansley <=