Revision: 561
http://sourceforge.net/p/vde/svn/561
Author: rd235
Date: 2013-07-04 15:53:30 +0000 (Thu, 04 Jul 2013)
Log Message:
-----------
Linux >= 3.9 compatibility issue fixed: hlist_for_each_entry has 3 args now
Modified Paths:
--------------
trunk/ipn/af_ipn.c
trunk/ipn/kvde_switch/ipn_hash.c
Modified: trunk/ipn/af_ipn.c
===================================================================
--- trunk/ipn/af_ipn.c 2013-05-26 19:12:24 UTC (rev 560)
+++ trunk/ipn/af_ipn.c 2013-07-04 15:53:30 UTC (rev 561)
@@ -59,6 +59,9 @@
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)
#define IPN_PRE310
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
+#define IPN_PRE390
+#endif
/*extension of RCV_SHUTDOWN defined in include/net/sock.h
* when the bit is set recv fails */
@@ -135,10 +138,16 @@
static struct ipn_network *ipn_find_network_byinode(struct inode *i)
{
struct ipn_network *ipnn;
+#ifdef PRE390
struct hlist_node *node;
hlist_for_each_entry(ipnn, node,
- &ipn_network_table[i->i_ino & (IPN_HASH_SIZE - 1)],
hnode) {
+ &ipn_network_table[i->i_ino & (IPN_HASH_SIZE - 1)],
hnode)
+#else
+ hlist_for_each_entry(ipnn,
+ &ipn_network_table[i->i_ino & (IPN_HASH_SIZE - 1)],
hnode)
+#endif
+ {
struct dentry *dentry = ipnn->dentry;
if(dentry && dentry->d_inode == i)
@@ -151,11 +160,17 @@
int (*fun)(struct ipn_network *,void *),void *funarg)
{
struct ipn_network *ipnn;
- struct hlist_node *node;
int ipn_table_scan;
for (ipn_table_scan=0;ipn_table_scan<IPN_HASH_SIZE;ipn_table_scan++) {
- hlist_for_each_entry(ipnn, node,
&ipn_network_table[ipn_table_scan], hnode) {
+#ifdef PRE390
+ struct hlist_node *node;
+ hlist_for_each_entry(ipnn, node,
&ipn_network_table[ipn_table_scan], hnode)
+#else
+ hlist_for_each_entry(ipnn, &ipn_network_table[ipn_table_scan],
hnode)
+#endif
+
+ {
if(fun(ipnn,funarg))
return ipnn;
}
Modified: trunk/ipn/kvde_switch/ipn_hash.c
===================================================================
--- trunk/ipn/kvde_switch/ipn_hash.c 2013-05-26 19:12:24 UTC (rev 560)
+++ trunk/ipn/kvde_switch/ipn_hash.c 2013-07-04 15:53:30 UTC (rev 561)
@@ -32,6 +32,10 @@
MODULE_AUTHOR("VIEW-OS TEAM");
MODULE_DESCRIPTION("Ethernet hash table Kernel Module");
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
+#define IPN_PRE390
+#endif
+
#undef IPN_DEBUG
static struct kmem_cache *ipn_hash_elem_cache;
@@ -182,12 +186,18 @@
void ipn_hash_add(struct ipn_hash *vdeh,u16 *key,u16 vlan,int port)
{
struct ipn_hash_elem *elem=NULL;
- struct hlist_node *node;
int hashvalue=hashfun(key,vlan,vdeh->mask);
int found=0;
spin_lock(&vdeh->hashlock);
+#ifdef PRE390
+ struct hlist_node *node;
hlist_for_each_entry(elem, node,
- &vdeh->hashtable[hashvalue], hashnode) {
+ &vdeh->hashtable[hashvalue], hashnode)
+#else
+ hlist_for_each_entry(elem,
+ &vdeh->hashtable[hashvalue], hashnode)
+#endif
+ {
if (elem->key[0]==key[0] && elem->key[1]==key[1] &&
elem->key[2]==key[2] && elem->key[3]==vlan) {
found=1;
@@ -224,7 +234,6 @@
int ipn_hash_find(struct ipn_hash *vdeh,u16 *key,u16 vlan)
{
struct ipn_hash_elem *elem;
- struct hlist_node *node;
int rv=-1;
int hashvalue=hashfun(key,vlan,vdeh->mask);
@@ -232,8 +241,15 @@
#ifdef IPN_DEBUG
printk("SEARCH HASH %x %x %x %x \n", key[0], key[1], key[2], vlan);
#endif
+#ifdef PRE390
+ struct hlist_node *node;
hlist_for_each_entry(elem, node,
- &vdeh->hashtable[hashvalue], hashnode) {
+ &vdeh->hashtable[hashvalue], hashnode)
+#else
+ hlist_for_each_entry(elem,
+ &vdeh->hashtable[hashvalue], hashnode)
+#endif
+ {
if (elem->key[0]==key[0] && elem->key[1]==key[1] &&
elem->key[2]==key[2] && elem->key[3]==vlan) {
rv=elem->port;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
vde-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vde-users