git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
s390
/
net
/
iucv.c
diff --git
a/drivers/s390/net/iucv.c
b/drivers/s390/net/iucv.c
index
e08e74e
..
e0c7deb
100644
(file)
--- a/
drivers/s390/net/iucv.c
+++ b/
drivers/s390/net/iucv.c
@@
-1,6
+1,4
@@
-/*
- * $Id: iucv.c,v 1.45 2005/04/26 22:59:06 braunu Exp $
- *
+/*
* IUCV network driver
*
* Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
* IUCV network driver
*
* Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
@@
-29,10
+27,8
@@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * RELEASE-TAG: IUCV lowlevel driver $Revision: 1.45 $
- *
*/
*/
-
\f
+
/* #define DEBUG */
#include <linux/module.h>
/* #define DEBUG */
#include <linux/module.h>
@@
-54,7
+50,7
@@
#include <asm/s390_ext.h>
#include <asm/ebcdic.h>
#include <asm/smp.h>
#include <asm/s390_ext.h>
#include <asm/ebcdic.h>
#include <asm/smp.h>
-#include <asm/
ccwdev.h> //for root device stuff
+#include <asm/
s390_rdev.h>
/* FLAGS:
* All flags are defined in the field IPFLAGS1 of each function
/* FLAGS:
* All flags are defined in the field IPFLAGS1 of each function
@@
-85,7
+81,7
@@
iucv_bus_match (struct device *dev, struct device_driver *drv)
struct bus_type iucv_bus = {
.name = "iucv",
.match = iucv_bus_match,
struct bus_type iucv_bus = {
.name = "iucv",
.match = iucv_bus_match,
-};
+};
struct device *iucv_root;
struct device *iucv_root;
@@
-301,7
+297,7
@@
MODULE_LICENSE("GPL");
/*
* Debugging stuff
*******************************************************************************/
/*
* Debugging stuff
*******************************************************************************/
-
\f
+
#ifdef DEBUG
static int debuglevel = 0;
#ifdef DEBUG
static int debuglevel = 0;
@@
-348,24
+344,14
@@
do { \
/*
* Internal functions
*******************************************************************************/
/*
* Internal functions
*******************************************************************************/
-
\f
+
/**
* print start banner
*/
static void
iucv_banner(void)
{
/**
* print start banner
*/
static void
iucv_banner(void)
{
- char vbuf[] = "$Revision: 1.45 $";
- char *version = vbuf;
-
- if ((version = strchr(version, ':'))) {
- char *p = strchr(version + 1, '$');
- if (p)
- *p = '\0';
- } else
- version = " ??? ";
- printk(KERN_INFO
- "IUCV lowlevel driver Version%s initialized\n", version);
+ printk(KERN_INFO "IUCV lowlevel driver initialized\n");
}
/**
}
/**
@@
-400,7
+386,7
@@
iucv_init(void)
}
/* Note: GFP_DMA used used to get memory below 2G */
}
/* Note: GFP_DMA used used to get memory below 2G */
- iucv_external_int_buffer = k
m
alloc(sizeof(iucv_GeneralInterrupt),
+ iucv_external_int_buffer = k
z
alloc(sizeof(iucv_GeneralInterrupt),
GFP_KERNEL|GFP_DMA);
if (!iucv_external_int_buffer) {
printk(KERN_WARNING
GFP_KERNEL|GFP_DMA);
if (!iucv_external_int_buffer) {
printk(KERN_WARNING
@@
-410,10
+396,9
@@
iucv_init(void)
bus_unregister(&iucv_bus);
return -ENOMEM;
}
bus_unregister(&iucv_bus);
return -ENOMEM;
}
- memset(iucv_external_int_buffer, 0, sizeof(iucv_GeneralInterrupt));
/* Initialize parameter pool */
/* Initialize parameter pool */
- iucv_param_pool = k
m
alloc(sizeof(iucv_param) * PARAM_POOL_SIZE,
+ iucv_param_pool = k
z
alloc(sizeof(iucv_param) * PARAM_POOL_SIZE,
GFP_KERNEL|GFP_DMA);
if (!iucv_param_pool) {
printk(KERN_WARNING "%s: Could not allocate param pool\n",
GFP_KERNEL|GFP_DMA);
if (!iucv_param_pool) {
printk(KERN_WARNING "%s: Could not allocate param pool\n",
@@
-424,7
+409,6
@@
iucv_init(void)
bus_unregister(&iucv_bus);
return -ENOMEM;
}
bus_unregister(&iucv_bus);
return -ENOMEM;
}
- memset(iucv_param_pool, 0, sizeof(iucv_param) * PARAM_POOL_SIZE);
/* Initialize irq queue */
INIT_LIST_HEAD(&iucv_irq_queue);
/* Initialize irq queue */
INIT_LIST_HEAD(&iucv_irq_queue);
@@
-447,14
+431,10
@@
static void
iucv_exit(void)
{
iucv_retrieve_buffer();
iucv_exit(void)
{
iucv_retrieve_buffer();
- if (iucv_external_int_buffer) {
- kfree(iucv_external_int_buffer);
- iucv_external_int_buffer = NULL;
- }
- if (iucv_param_pool) {
- kfree(iucv_param_pool);
- iucv_param_pool = NULL;
- }
+ kfree(iucv_external_int_buffer);
+ iucv_external_int_buffer = NULL;
+ kfree(iucv_param_pool);
+ iucv_param_pool = NULL;
s390_root_dev_unregister(iucv_root);
bus_unregister(&iucv_bus);
printk(KERN_INFO "IUCV lowlevel driver unloaded\n");
s390_root_dev_unregister(iucv_root);
bus_unregister(&iucv_bus);
printk(KERN_INFO "IUCV lowlevel driver unloaded\n");
@@
-481,7
+461,7
@@
grab_param(void)
ptr++;
if (ptr >= iucv_param_pool + PARAM_POOL_SIZE)
ptr = iucv_param_pool;
ptr++;
if (ptr >= iucv_param_pool + PARAM_POOL_SIZE)
ptr = iucv_param_pool;
- } while (atomic_c
ompare_and_swap(0, 1, &ptr->in_use)
);
+ } while (atomic_c
mpxchg(&ptr->in_use, 0, 1) != 0
);
hint = ptr - iucv_param_pool;
memset(&ptr->param, 0, sizeof(ptr->param));
hint = ptr - iucv_param_pool;
memset(&ptr->param, 0, sizeof(ptr->param));
@@
-811,15
+791,14
@@
iucv_register_program (__u8 pgmname[16],
}
max_connections = iucv_query_maxconn();
}
max_connections = iucv_query_maxconn();
- iucv_pathid_table = k
malloc(max_connections *
sizeof(handler *),
- GFP_ATOMIC);
+ iucv_pathid_table = k
calloc(max_connections,
sizeof(handler *),
+
GFP_ATOMIC);
if (iucv_pathid_table == NULL) {
printk(KERN_WARNING "%s: iucv_pathid_table storage "
"allocation failed\n", __FUNCTION__);
kfree(new_handler);
return NULL;
}
if (iucv_pathid_table == NULL) {
printk(KERN_WARNING "%s: iucv_pathid_table storage "
"allocation failed\n", __FUNCTION__);
kfree(new_handler);
return NULL;
}
- memset (iucv_pathid_table, 0, max_connections * sizeof(handler *));
}
memset(new_handler, 0, sizeof (handler));
memcpy(new_handler->id.user_data, pgmname,
}
memset(new_handler, 0, sizeof (handler));
memcpy(new_handler->id.user_data, pgmname,
@@
-831,7
+810,7
@@
iucv_register_program (__u8 pgmname[16],
sizeof (new_handler->id.userid));
EBC_TOUPPER (new_handler->id.userid,
sizeof (new_handler->id.userid));
sizeof (new_handler->id.userid));
EBC_TOUPPER (new_handler->id.userid,
sizeof (new_handler->id.userid));
-
+
if (pgmmask) {
memcpy (new_handler->id.mask, pgmmask,
sizeof (new_handler->id.mask));
if (pgmmask) {
memcpy (new_handler->id.mask, pgmmask,
sizeof (new_handler->id.mask));
@@
-1250,7
+1229,7
@@
iucv_purge (__u16 pathid, __u32 msgid, __u32 srccls, __u32 *audit)
/* parm->ipaudit has only 3 bytes */
*audit >>= 8;
}
/* parm->ipaudit has only 3 bytes */
*audit >>= 8;
}
-
+
release_param(parm);
iucv_debug(1, "b2f0_result = %ld", b2f0_result);
release_param(parm);
iucv_debug(1, "b2f0_result = %ld", b2f0_result);
@@
-2351,14
+2330,14
@@
iucv_do_int(iucv_GeneralInterrupt * int_buf)
temp_buff1[j] &= (h->id.mask)[j];
temp_buff2[j] &= (h->id.mask)[j];
}
temp_buff1[j] &= (h->id.mask)[j];
temp_buff2[j] &= (h->id.mask)[j];
}
-
+
iucv_dumpit("temp_buff1:",
temp_buff1, sizeof(temp_buff1));
iucv_dumpit("temp_buff2",
temp_buff2, sizeof(temp_buff2));
iucv_dumpit("temp_buff1:",
temp_buff1, sizeof(temp_buff1));
iucv_dumpit("temp_buff2",
temp_buff2, sizeof(temp_buff2));
-
+
if (!memcmp (temp_buff1, temp_buff2, 24)) {
if (!memcmp (temp_buff1, temp_buff2, 24)) {
-
+
iucv_debug(2,
"found a matching handler");
break;
iucv_debug(2,
"found a matching handler");
break;
@@
-2389,7
+2368,7
@@
iucv_do_int(iucv_GeneralInterrupt * int_buf)
} else
iucv_sever(int_buf->ippathid, no_listener);
break;
} else
iucv_sever(int_buf->ippathid, no_listener);
break;
-
+
case 0x02: /*connection complete */
if (messagesDisabled) {
iucv_setmask(~0);
case 0x02: /*connection complete */
if (messagesDisabled) {
iucv_setmask(~0);
@@
-2408,7
+2387,7
@@
iucv_do_int(iucv_GeneralInterrupt * int_buf)
} else
iucv_sever(int_buf->ippathid, no_listener);
break;
} else
iucv_sever(int_buf->ippathid, no_listener);
break;
-
+
case 0x03: /* connection severed */
if (messagesDisabled) {
iucv_setmask(~0);
case 0x03: /* connection severed */
if (messagesDisabled) {
iucv_setmask(~0);
@@
-2419,13
+2398,13
@@
iucv_do_int(iucv_GeneralInterrupt * int_buf)
interrupt->ConnectionSevered(
(iucv_ConnectionSevered *)int_buf,
h->pgm_data);
interrupt->ConnectionSevered(
(iucv_ConnectionSevered *)int_buf,
h->pgm_data);
-
+
else
iucv_sever (int_buf->ippathid, no_listener);
} else
iucv_sever(int_buf->ippathid, no_listener);
break;
else
iucv_sever (int_buf->ippathid, no_listener);
} else
iucv_sever(int_buf->ippathid, no_listener);
break;
-
+
case 0x04: /* connection quiesced */
if (messagesDisabled) {
iucv_setmask(~0);
case 0x04: /* connection quiesced */
if (messagesDisabled) {
iucv_setmask(~0);
@@
-2441,7
+2420,7
@@
iucv_do_int(iucv_GeneralInterrupt * int_buf)
"ConnectionQuiesced not called");
}
break;
"ConnectionQuiesced not called");
}
break;
-
+
case 0x05: /* connection resumed */
if (messagesDisabled) {
iucv_setmask(~0);
case 0x05: /* connection resumed */
if (messagesDisabled) {
iucv_setmask(~0);
@@
-2457,7
+2436,7
@@
iucv_do_int(iucv_GeneralInterrupt * int_buf)
"ConnectionResumed not called");
}
break;
"ConnectionResumed not called");
}
break;
-
+
case 0x06: /* priority message complete */
case 0x07: /* nonpriority message complete */
if (h) {
case 0x06: /* priority message complete */
case 0x07: /* nonpriority message complete */
if (h) {
@@
-2470,7
+2449,7
@@
iucv_do_int(iucv_GeneralInterrupt * int_buf)
"MessageComplete not called");
}
break;
"MessageComplete not called");
}
break;
-
+
case 0x08: /* priority message pending */
case 0x09: /* nonpriority message pending */
if (h) {
case 0x08: /* priority message pending */
case 0x09: /* nonpriority message pending */
if (h) {
@@
-2488,7
+2467,7
@@
iucv_do_int(iucv_GeneralInterrupt * int_buf)
__FUNCTION__);
break;
} /* end switch */
__FUNCTION__);
break;
} /* end switch */
-
+
iucv_debug(2, "exiting pathid %d, type %02X",
int_buf->ippathid, int_buf->iptype);
iucv_debug(2, "exiting pathid %d, type %02X",
int_buf->ippathid, int_buf->iptype);