Commit 983f27d3 authored by Jeff Garzik's avatar Jeff Garzik

Merge branch 'upstream-fixes' into upstream

Conflicts:

	drivers/s390/net/ctctty.c
parents de1e938e e82b0f2c
...@@ -1481,13 +1481,13 @@ ch_action_iofatal(fsm_instance * fi, int event, void *arg) ...@@ -1481,13 +1481,13 @@ ch_action_iofatal(fsm_instance * fi, int event, void *arg)
} }
} }
static void static void
ch_action_reinit(fsm_instance *fi, int event, void *arg) ch_action_reinit(fsm_instance *fi, int event, void *arg)
{ {
struct channel *ch = (struct channel *)arg; struct channel *ch = (struct channel *)arg;
struct net_device *dev = ch->netdev; struct net_device *dev = ch->netdev;
struct ctc_priv *privptr = dev->priv; struct ctc_priv *privptr = dev->priv;
DBF_TEXT(trace, 4, __FUNCTION__); DBF_TEXT(trace, 4, __FUNCTION__);
ch_action_iofatal(fi, event, arg); ch_action_iofatal(fi, event, arg);
fsm_addtimer(&privptr->restart_timer, 1000, DEV_EVENT_RESTART, dev); fsm_addtimer(&privptr->restart_timer, 1000, DEV_EVENT_RESTART, dev);
...@@ -1619,7 +1619,7 @@ less_than(char *id1, char *id2) ...@@ -1619,7 +1619,7 @@ less_than(char *id1, char *id2)
} }
dev1 = simple_strtoul(id1, &id1, 16); dev1 = simple_strtoul(id1, &id1, 16);
dev2 = simple_strtoul(id2, &id2, 16); dev2 = simple_strtoul(id2, &id2, 16);
return (dev1 < dev2); return (dev1 < dev2);
} }
...@@ -1890,7 +1890,7 @@ ctc_irq_handler(struct ccw_device *cdev, unsigned long intparm, struct irb *irb) ...@@ -1890,7 +1890,7 @@ ctc_irq_handler(struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
irb->scsw.dstat); irb->scsw.dstat);
return; return;
} }
priv = ((struct ccwgroup_device *)cdev->dev.driver_data) priv = ((struct ccwgroup_device *)cdev->dev.driver_data)
->dev.driver_data; ->dev.driver_data;
...@@ -1904,7 +1904,7 @@ ctc_irq_handler(struct ccw_device *cdev, unsigned long intparm, struct irb *irb) ...@@ -1904,7 +1904,7 @@ ctc_irq_handler(struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
"device %s\n", cdev->dev.bus_id); "device %s\n", cdev->dev.bus_id);
return; return;
} }
dev = (struct net_device *) (ch->netdev); dev = (struct net_device *) (ch->netdev);
if (dev == NULL) { if (dev == NULL) {
ctc_pr_crit("ctc: ctc_irq_handler dev=NULL bus_id=%s, ch=0x%p\n", ctc_pr_crit("ctc: ctc_irq_handler dev=NULL bus_id=%s, ch=0x%p\n",
...@@ -2003,12 +2003,12 @@ dev_action_stop(fsm_instance * fi, int event, void *arg) ...@@ -2003,12 +2003,12 @@ dev_action_stop(fsm_instance * fi, int event, void *arg)
fsm_event(ch->fsm, CH_EVENT_STOP, ch); fsm_event(ch->fsm, CH_EVENT_STOP, ch);
} }
} }
static void static void
dev_action_restart(fsm_instance *fi, int event, void *arg) dev_action_restart(fsm_instance *fi, int event, void *arg)
{ {
struct net_device *dev = (struct net_device *)arg; struct net_device *dev = (struct net_device *)arg;
struct ctc_priv *privptr = dev->priv; struct ctc_priv *privptr = dev->priv;
DBF_TEXT(trace, 3, __FUNCTION__); DBF_TEXT(trace, 3, __FUNCTION__);
ctc_pr_debug("%s: Restarting\n", dev->name); ctc_pr_debug("%s: Restarting\n", dev->name);
dev_action_stop(fi, event, arg); dev_action_stop(fi, event, arg);
...@@ -2179,7 +2179,7 @@ transmit_skb(struct channel *ch, struct sk_buff *skb) ...@@ -2179,7 +2179,7 @@ transmit_skb(struct channel *ch, struct sk_buff *skb)
DBF_TEXT(trace, 5, __FUNCTION__); DBF_TEXT(trace, 5, __FUNCTION__);
/* we need to acquire the lock for testing the state /* we need to acquire the lock for testing the state
* otherwise we can have an IRQ changing the state to * otherwise we can have an IRQ changing the state to
* TXIDLE after the test but before acquiring the lock. * TXIDLE after the test but before acquiring the lock.
*/ */
spin_lock_irqsave(&ch->collect_lock, saveflags); spin_lock_irqsave(&ch->collect_lock, saveflags);
...@@ -2379,7 +2379,7 @@ ctc_tx(struct sk_buff *skb, struct net_device * dev) ...@@ -2379,7 +2379,7 @@ ctc_tx(struct sk_buff *skb, struct net_device * dev)
/** /**
* If channels are not running, try to restart them * If channels are not running, try to restart them
* and throw away packet. * and throw away packet.
*/ */
if (fsm_getstate(privptr->fsm) != DEV_STATE_RUNNING) { if (fsm_getstate(privptr->fsm) != DEV_STATE_RUNNING) {
fsm_event(privptr->fsm, DEV_EVENT_START, dev); fsm_event(privptr->fsm, DEV_EVENT_START, dev);
...@@ -2717,7 +2717,7 @@ ctc_remove_files(struct device *dev) ...@@ -2717,7 +2717,7 @@ ctc_remove_files(struct device *dev)
/** /**
* Add ctc specific attributes. * Add ctc specific attributes.
* Add ctc private data. * Add ctc private data.
* *
* @param cgdev pointer to ccwgroup_device just added * @param cgdev pointer to ccwgroup_device just added
* *
* @returns 0 on success, !0 on failure. * @returns 0 on success, !0 on failure.
...@@ -2848,7 +2848,7 @@ ctc_new_device(struct ccwgroup_device *cgdev) ...@@ -2848,7 +2848,7 @@ ctc_new_device(struct ccwgroup_device *cgdev)
DBF_TEXT(setup, 3, buffer); DBF_TEXT(setup, 3, buffer);
type = get_channel_type(&cgdev->cdev[0]->id); type = get_channel_type(&cgdev->cdev[0]->id);
snprintf(read_id, CTC_ID_SIZE, "ch-%s", cgdev->cdev[0]->dev.bus_id); snprintf(read_id, CTC_ID_SIZE, "ch-%s", cgdev->cdev[0]->dev.bus_id);
snprintf(write_id, CTC_ID_SIZE, "ch-%s", cgdev->cdev[1]->dev.bus_id); snprintf(write_id, CTC_ID_SIZE, "ch-%s", cgdev->cdev[1]->dev.bus_id);
...@@ -2883,7 +2883,7 @@ ctc_new_device(struct ccwgroup_device *cgdev) ...@@ -2883,7 +2883,7 @@ ctc_new_device(struct ccwgroup_device *cgdev)
channel_get(type, direction == READ ? read_id : write_id, channel_get(type, direction == READ ? read_id : write_id,
direction); direction);
if (privptr->channel[direction] == NULL) { if (privptr->channel[direction] == NULL) {
if (direction == WRITE) if (direction == WRITE)
channel_free(privptr->channel[READ]); channel_free(privptr->channel[READ]);
ctc_free_netdevice(dev, 1); ctc_free_netdevice(dev, 1);
...@@ -2931,7 +2931,7 @@ ctc_shutdown_device(struct ccwgroup_device *cgdev) ...@@ -2931,7 +2931,7 @@ ctc_shutdown_device(struct ccwgroup_device *cgdev)
{ {
struct ctc_priv *priv; struct ctc_priv *priv;
struct net_device *ndev; struct net_device *ndev;
DBF_TEXT(setup, 3, __FUNCTION__); DBF_TEXT(setup, 3, __FUNCTION__);
pr_debug("%s() called\n", __FUNCTION__); pr_debug("%s() called\n", __FUNCTION__);
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/err.h> #include <linux/err.h>
...@@ -77,7 +77,7 @@ group_write(struct device_driver *drv, const char *buf, size_t count) ...@@ -77,7 +77,7 @@ group_write(struct device_driver *drv, const char *buf, size_t count)
int len; int len;
if (!(end = strchr(start, delim[i]))) if (!(end = strchr(start, delim[i])))
return count; return -EINVAL;
len = min_t(ptrdiff_t, BUS_ID_SIZE, end - start + 1); len = min_t(ptrdiff_t, BUS_ID_SIZE, end - start + 1);
strlcpy (bus_ids[i], start, len); strlcpy (bus_ids[i], start, len);
argv[i] = bus_ids[i]; argv[i] = bus_ids[i];
...@@ -94,7 +94,7 @@ static DRIVER_ATTR(group, 0200, NULL, group_write); ...@@ -94,7 +94,7 @@ static DRIVER_ATTR(group, 0200, NULL, group_write);
/* Register-unregister for ctc&lcs */ /* Register-unregister for ctc&lcs */
int int
register_cu3088_discipline(struct ccwgroup_driver *dcp) register_cu3088_discipline(struct ccwgroup_driver *dcp)
{ {
int rc; int rc;
...@@ -109,7 +109,7 @@ register_cu3088_discipline(struct ccwgroup_driver *dcp) ...@@ -109,7 +109,7 @@ register_cu3088_discipline(struct ccwgroup_driver *dcp)
rc = driver_create_file(&dcp->driver, &driver_attr_group); rc = driver_create_file(&dcp->driver, &driver_attr_group);
if (rc) if (rc)
ccwgroup_driver_unregister(dcp); ccwgroup_driver_unregister(dcp);
return rc; return rc;
} }
...@@ -137,7 +137,7 @@ static int __init ...@@ -137,7 +137,7 @@ static int __init
cu3088_init (void) cu3088_init (void)
{ {
int rc; int rc;
cu3088_root_dev = s390_root_dev_register("cu3088"); cu3088_root_dev = s390_root_dev_register("cu3088");
if (IS_ERR(cu3088_root_dev)) if (IS_ERR(cu3088_root_dev))
return PTR_ERR(cu3088_root_dev); return PTR_ERR(cu3088_root_dev);
......
/* /*
* IUCV network driver * IUCV network driver
* *
* Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
*/ */
/* #define DEBUG */ /* #define DEBUG */
#include <linux/module.h> #include <linux/module.h>
...@@ -81,7 +81,7 @@ iucv_bus_match (struct device *dev, struct device_driver *drv) ...@@ -81,7 +81,7 @@ iucv_bus_match (struct device *dev, struct device_driver *drv)
struct bus_type iucv_bus = { struct bus_type iucv_bus = {
.name = "iucv", .name = "iucv",
.match = iucv_bus_match, .match = iucv_bus_match,
}; };
struct device *iucv_root; struct device *iucv_root;
...@@ -297,7 +297,7 @@ MODULE_LICENSE("GPL"); ...@@ -297,7 +297,7 @@ MODULE_LICENSE("GPL");
/* /*
* Debugging stuff * Debugging stuff
*******************************************************************************/ *******************************************************************************/
#ifdef DEBUG #ifdef DEBUG
static int debuglevel = 0; static int debuglevel = 0;
...@@ -344,7 +344,7 @@ do { \ ...@@ -344,7 +344,7 @@ do { \
/* /*
* Internal functions * Internal functions
*******************************************************************************/ *******************************************************************************/
/** /**
* print start banner * print start banner
*/ */
...@@ -810,7 +810,7 @@ iucv_register_program (__u8 pgmname[16], ...@@ -810,7 +810,7 @@ iucv_register_program (__u8 pgmname[16],
sizeof (new_handler->id.userid)); sizeof (new_handler->id.userid));
EBC_TOUPPER (new_handler->id.userid, EBC_TOUPPER (new_handler->id.userid,
sizeof (new_handler->id.userid)); sizeof (new_handler->id.userid));
if (pgmmask) { if (pgmmask) {
memcpy (new_handler->id.mask, pgmmask, memcpy (new_handler->id.mask, pgmmask,
sizeof (new_handler->id.mask)); sizeof (new_handler->id.mask));
...@@ -1229,7 +1229,7 @@ iucv_purge (__u16 pathid, __u32 msgid, __u32 srccls, __u32 *audit) ...@@ -1229,7 +1229,7 @@ iucv_purge (__u16 pathid, __u32 msgid, __u32 srccls, __u32 *audit)
/* parm->ipaudit has only 3 bytes */ /* parm->ipaudit has only 3 bytes */
*audit >>= 8; *audit >>= 8;
} }
release_param(parm); release_param(parm);
iucv_debug(1, "b2f0_result = %ld", b2f0_result); iucv_debug(1, "b2f0_result = %ld", b2f0_result);
...@@ -2330,14 +2330,14 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf) ...@@ -2330,14 +2330,14 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
temp_buff1[j] &= (h->id.mask)[j]; temp_buff1[j] &= (h->id.mask)[j];
temp_buff2[j] &= (h->id.mask)[j]; temp_buff2[j] &= (h->id.mask)[j];
} }
iucv_dumpit("temp_buff1:", iucv_dumpit("temp_buff1:",
temp_buff1, sizeof(temp_buff1)); temp_buff1, sizeof(temp_buff1));
iucv_dumpit("temp_buff2", iucv_dumpit("temp_buff2",
temp_buff2, sizeof(temp_buff2)); temp_buff2, sizeof(temp_buff2));
if (!memcmp (temp_buff1, temp_buff2, 24)) { if (!memcmp (temp_buff1, temp_buff2, 24)) {
iucv_debug(2, iucv_debug(2,
"found a matching handler"); "found a matching handler");
break; break;
...@@ -2368,7 +2368,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf) ...@@ -2368,7 +2368,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
} else } else
iucv_sever(int_buf->ippathid, no_listener); iucv_sever(int_buf->ippathid, no_listener);
break; break;
case 0x02: /*connection complete */ case 0x02: /*connection complete */
if (messagesDisabled) { if (messagesDisabled) {
iucv_setmask(~0); iucv_setmask(~0);
...@@ -2387,7 +2387,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf) ...@@ -2387,7 +2387,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
} else } else
iucv_sever(int_buf->ippathid, no_listener); iucv_sever(int_buf->ippathid, no_listener);
break; break;
case 0x03: /* connection severed */ case 0x03: /* connection severed */
if (messagesDisabled) { if (messagesDisabled) {
iucv_setmask(~0); iucv_setmask(~0);
...@@ -2398,13 +2398,13 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf) ...@@ -2398,13 +2398,13 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
interrupt->ConnectionSevered( interrupt->ConnectionSevered(
(iucv_ConnectionSevered *)int_buf, (iucv_ConnectionSevered *)int_buf,
h->pgm_data); h->pgm_data);
else else
iucv_sever (int_buf->ippathid, no_listener); iucv_sever (int_buf->ippathid, no_listener);
} else } else
iucv_sever(int_buf->ippathid, no_listener); iucv_sever(int_buf->ippathid, no_listener);
break; break;
case 0x04: /* connection quiesced */ case 0x04: /* connection quiesced */
if (messagesDisabled) { if (messagesDisabled) {
iucv_setmask(~0); iucv_setmask(~0);
...@@ -2420,7 +2420,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf) ...@@ -2420,7 +2420,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
"ConnectionQuiesced not called"); "ConnectionQuiesced not called");
} }
break; break;
case 0x05: /* connection resumed */ case 0x05: /* connection resumed */
if (messagesDisabled) { if (messagesDisabled) {
iucv_setmask(~0); iucv_setmask(~0);
...@@ -2436,7 +2436,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf) ...@@ -2436,7 +2436,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
"ConnectionResumed not called"); "ConnectionResumed not called");
} }
break; break;
case 0x06: /* priority message complete */ case 0x06: /* priority message complete */
case 0x07: /* nonpriority message complete */ case 0x07: /* nonpriority message complete */
if (h) { if (h) {
...@@ -2449,7 +2449,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf) ...@@ -2449,7 +2449,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
"MessageComplete not called"); "MessageComplete not called");
} }
break; break;
case 0x08: /* priority message pending */ case 0x08: /* priority message pending */
case 0x09: /* nonpriority message pending */ case 0x09: /* nonpriority message pending */
if (h) { if (h) {
...@@ -2467,7 +2467,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf) ...@@ -2467,7 +2467,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
__FUNCTION__); __FUNCTION__);
break; break;
} /* end switch */ } /* end switch */
iucv_debug(2, "exiting pathid %d, type %02X", iucv_debug(2, "exiting pathid %d, type %02X",
int_buf->ippathid, int_buf->iptype); int_buf->ippathid, int_buf->iptype);
......
This diff is collapsed.
This diff is collapsed.
...@@ -73,13 +73,17 @@ do { \ ...@@ -73,13 +73,17 @@ do { \
/** /**
* LCS sense byte definitions * LCS sense byte definitions
*/ */
#define LCS_SENSE_BYTE_0 0
#define LCS_SENSE_BYTE_1 1
#define LCS_SENSE_BYTE_2 2
#define LCS_SENSE_BYTE_3 3
#define LCS_SENSE_INTERFACE_DISCONNECT 0x01 #define LCS_SENSE_INTERFACE_DISCONNECT 0x01
#define LCS_SENSE_EQUIPMENT_CHECK 0x10 #define LCS_SENSE_EQUIPMENT_CHECK 0x10
#define LCS_SENSE_BUS_OUT_CHECK 0x20 #define LCS_SENSE_BUS_OUT_CHECK 0x20
#define LCS_SENSE_INTERVENTION_REQUIRED 0x40 #define LCS_SENSE_INTERVENTION_REQUIRED 0x40
#define LCS_SENSE_CMD_REJECT 0x80 #define LCS_SENSE_CMD_REJECT 0x80
#define LCS_SENSE_RESETTING_EVENT 0x0080 #define LCS_SENSE_RESETTING_EVENT 0x80
#define LCS_SENSE_DEVICE_ONLINE 0x0020 #define LCS_SENSE_DEVICE_ONLINE 0x20
/** /**
* LCS packet type definitions * LCS packet type definitions
...@@ -152,10 +156,9 @@ enum lcs_dev_states { ...@@ -152,10 +156,9 @@ enum lcs_dev_states {
enum lcs_threads { enum lcs_threads {
LCS_SET_MC_THREAD = 1, LCS_SET_MC_THREAD = 1,
LCS_STARTLAN_THREAD = 2, LCS_RECOVERY_THREAD = 2,
LCS_STOPLAN_THREAD = 4,
LCS_STARTUP_THREAD = 8,
}; };
/** /**
* LCS struct declarations * LCS struct declarations
*/ */
...@@ -286,6 +289,7 @@ struct lcs_card { ...@@ -286,6 +289,7 @@ struct lcs_card {
struct net_device_stats stats; struct net_device_stats stats;
unsigned short (*lan_type_trans)(struct sk_buff *skb, unsigned short (*lan_type_trans)(struct sk_buff *skb,
struct net_device *dev); struct net_device *dev);
struct ccwgroup_device *gdev;
struct lcs_channel read; struct lcs_channel read;
struct lcs_channel write; struct lcs_channel write;
struct lcs_buffer *tx_buffer; struct lcs_buffer *tx_buffer;
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
*/ */
#undef DEBUG #undef DEBUG
#include <linux/module.h> #include <linux/module.h>
...@@ -65,7 +65,7 @@ MODULE_AUTHOR ...@@ -65,7 +65,7 @@ MODULE_AUTHOR
("(C) 2001 IBM Corporation by Fritz Elfert (felfert@millenux.com)"); ("(C) 2001 IBM Corporation by Fritz Elfert (felfert@millenux.com)");
MODULE_DESCRIPTION ("Linux for S/390 IUCV network driver"); MODULE_DESCRIPTION ("Linux for S/390 IUCV network driver");
#define PRINTK_HEADER " iucv: " /* for debugging */ #define PRINTK_HEADER " iucv: " /* for debugging */
static struct device_driver netiucv_driver = { static struct device_driver netiucv_driver = {
...@@ -202,7 +202,7 @@ netiucv_printname(char *name) ...@@ -202,7 +202,7 @@ netiucv_printname(char *name)
*p = '\0'; *p = '\0';
return tmp; return tmp;
} }
/** /**
* States of the interface statemachine. * States of the interface statemachine.
*/ */
...@@ -244,7 +244,7 @@ static const char *dev_event_names[] = { ...@@ -244,7 +244,7 @@ static const char *dev_event_names[] = {
"Connection up", "Connection up",
"Connection down", "Connection down",
}; };
/** /**
* Events of the connection statemachine * Events of the connection statemachine
*/ */
...@@ -364,7 +364,7 @@ static const char *conn_state_names[] = { ...@@ -364,7 +364,7 @@ static const char *conn_state_names[] = {
"Connect error", "Connect error",
}; };
/** /**
* Debug Facility Stuff * Debug Facility Stuff
*/ */
...@@ -516,7 +516,7 @@ static void ...@@ -516,7 +516,7 @@ static void
fsm_action_nop(fsm_instance *fi, int event, void *arg) fsm_action_nop(fsm_instance *fi, int event, void *arg)
{ {
} }
/** /**
* Actions of the connection statemachine * Actions of the connection statemachine
*****************************************************************************/ *****************************************************************************/
...@@ -993,7 +993,7 @@ static const fsm_node conn_fsm[] = { ...@@ -993,7 +993,7 @@ static const fsm_node conn_fsm[] = {
static const int CONN_FSM_LEN = sizeof(conn_fsm) / sizeof(fsm_node); static const int CONN_FSM_LEN = sizeof(conn_fsm) / sizeof(fsm_node);
/** /**
* Actions for interface - statemachine. * Actions for interface - statemachine.
*****************************************************************************/ *****************************************************************************/
...@@ -1182,7 +1182,7 @@ netiucv_transmit_skb(struct iucv_connection *conn, struct sk_buff *skb) { ...@@ -1182,7 +1182,7 @@ netiucv_transmit_skb(struct iucv_connection *conn, struct sk_buff *skb) {
fsm_newstate(conn->fsm, CONN_STATE_TX); fsm_newstate(conn->fsm, CONN_STATE_TX);
conn->prof.send_stamp = xtime; conn->prof.send_stamp = xtime;
rc = iucv_send(conn->pathid, NULL, 0, 0, 1 /* single_flag */, rc = iucv_send(conn->pathid, NULL, 0, 0, 1 /* single_flag */,
0, nskb->data, nskb->len); 0, nskb->data, nskb->len);
/* Shut up, gcc! nskb is always below 2G. */ /* Shut up, gcc! nskb is always below 2G. */
...@@ -1220,7 +1220,7 @@ netiucv_transmit_skb(struct iucv_connection *conn, struct sk_buff *skb) { ...@@ -1220,7 +1220,7 @@ netiucv_transmit_skb(struct iucv_connection *conn, struct sk_buff *skb) {
return rc; return rc;
} }
/** /**
* Interface API for upper network layers * Interface API for upper network layers
*****************************************************************************/ *****************************************************************************/
...@@ -1291,7 +1291,7 @@ static int netiucv_tx(struct sk_buff *skb, struct net_device *dev) ...@@ -1291,7 +1291,7 @@ static int netiucv_tx(struct sk_buff *skb, struct net_device *dev)
/** /**
* If connection is not running, try to restart it * If connection is not running, try to restart it
* and throw away packet. * and throw away packet.
*/ */
if (fsm_getstate(privptr->fsm) != DEV_STATE_RUNNING) { if (fsm_getstate(privptr->fsm) != DEV_STATE_RUNNING) {
fsm_event(privptr->fsm, DEV_EVENT_START, dev); fsm_event(privptr->fsm, DEV_EVENT_START, dev);
...@@ -1538,7 +1538,7 @@ static ssize_t ...@@ -1538,7 +1538,7 @@ static ssize_t
maxcq_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) maxcq_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{ {
struct netiucv_priv *priv = dev->driver_data; struct netiucv_priv *priv = dev->driver_data;
IUCV_DBF_TEXT(trace, 4, __FUNCTION__); IUCV_DBF_TEXT(trace, 4, __FUNCTION__);
priv->conn->prof.maxcqueue = 0; priv->conn->prof.maxcqueue = 0;
return count; return count;
...@@ -1559,7 +1559,7 @@ static ssize_t ...@@ -1559,7 +1559,7 @@ static ssize_t
sdoio_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) sdoio_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{ {
struct netiucv_priv *priv = dev->driver_data; struct netiucv_priv *priv = dev->driver_data;
IUCV_DBF_TEXT(trace, 4, __FUNCTION__); IUCV_DBF_TEXT(trace, 4, __FUNCTION__);
priv->conn->prof.doios_single = 0; priv->conn->prof.doios_single = 0;
return count; return count;
...@@ -1580,7 +1580,7 @@ static ssize_t ...@@ -1580,7 +1580,7 @@ static ssize_t
mdoio_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) mdoio_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{ {
struct netiucv_priv *priv = dev->driver_data; struct netiucv_priv *priv = dev->driver_data;
IUCV_DBF_TEXT(trace, 5, __FUNCTION__); IUCV_DBF_TEXT(trace, 5, __FUNCTION__);
priv->conn->prof.doios_multi = 0; priv->conn->prof.doios_multi = 0;
return count; return count;
...@@ -1601,7 +1601,7 @@ static ssize_t ...@@ -1601,7 +1601,7 @@ static ssize_t
txlen_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) txlen_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{ {
struct netiucv_priv *priv = dev->driver_data; struct netiucv_priv *priv = dev->driver_data;
IUCV_DBF_TEXT(trace, 4, __FUNCTION__); IUCV_DBF_TEXT(trace, 4, __FUNCTION__);
priv->conn->prof.txlen = 0; priv->conn->prof.txlen = 0;
return count; return count;
...@@ -1622,7 +1622,7 @@ static ssize_t ...@@ -1622,7 +1622,7 @@ static ssize_t
txtime_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) txtime_write (struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{ {
struct netiucv_priv *priv = dev->driver_data; struct netiucv_priv *priv = dev->driver_data;
IUCV_DBF_TEXT(trace, 4, __FUNCTION__); IUCV_DBF_TEXT(trace, 4, __FUNCTION__);
priv->conn->prof.tx_time = 0; priv->conn->prof.tx_time = 0;
return count; return count;
...@@ -2000,7 +2000,7 @@ conn_write(struct device_driver *drv, const char *buf, size_t count) ...@@ -2000,7 +2000,7 @@ conn_write(struct device_driver *drv, const char *buf, size_t count)
} }
PRINT_INFO("%s: '%s'\n", dev->name, netiucv_printname(username)); PRINT_INFO("%s: '%s'\n", dev->name, netiucv_printname(username));
return count; return count;
out_free_ndev: out_free_ndev:
...@@ -2099,7 +2099,7 @@ static int __init ...@@ -2099,7 +2099,7 @@ static int __init
netiucv_init(void) netiucv_init(void)
{ {
int ret; int ret;
ret = iucv_register_dbf_views(); ret = iucv_register_dbf_views();
if (ret) { if (ret) {
PRINT_WARN("netiucv_init failed, " PRINT_WARN("netiucv_init failed, "
...@@ -2128,7 +2128,7 @@ netiucv_init(void) ...@@ -2128,7 +2128,7 @@ netiucv_init(void)
} }
return ret; return ret;
} }
module_init(netiucv_init); module_init(netiucv_init);
module_exit(netiucv_exit); module_exit(netiucv_exit);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -376,7 +376,7 @@ struct qeth_hdr_osn { ...@@ -376,7 +376,7 @@ struct qeth_hdr_osn {
__u8 reserved3[18]; __u8 reserved3[18];
__u32 ccid; __u32 ccid;
} __attribute__ ((packed)); } __attribute__ ((packed));
struct qeth_hdr { struct qeth_hdr {
union { union {
struct qeth_hdr_layer2 l2; struct qeth_hdr_layer2 l2;
...@@ -825,7 +825,7 @@ struct qeth_card { ...@@ -825,7 +825,7 @@ struct qeth_card {
int use_hard_stop; int use_hard_stop;
int (*orig_hard_header)(struct sk_buff *,struct net_device *, int (*orig_hard_header)(struct sk_buff *,struct net_device *,
unsigned short,void *,void *,unsigned); unsigned short,void *,void *,unsigned);
struct qeth_osn_info osn_info; struct qeth_osn_info osn_info;
}; };
struct qeth_card_list_struct { struct qeth_card_list_struct {
...@@ -944,7 +944,7 @@ qeth_get_netdev_flags(struct qeth_card *card) ...@@ -944,7 +944,7 @@ qeth_get_netdev_flags(struct qeth_card *card)
return 0; return 0;
switch (card->info.type) { switch (card->info.type) {
case QETH_CARD_TYPE_IQD: case QETH_CARD_TYPE_IQD:
case QETH_CARD_TYPE_OSN: case QETH_CARD_TYPE_OSN:
return IFF_NOARP; return IFF_NOARP;
#ifdef CONFIG_QETH_IPV6 #ifdef CONFIG_QETH_IPV6
default: default:
...@@ -981,7 +981,7 @@ static inline int ...@@ -981,7 +981,7 @@ static inline int
qeth_get_max_mtu_for_card(int cardtype) qeth_get_max_mtu_for_card(int cardtype)
{ {
switch (cardtype) { switch (cardtype) {
case QETH_CARD_TYPE_UNKNOWN: case QETH_CARD_TYPE_UNKNOWN:
case QETH_CARD_TYPE_OSAE: case QETH_CARD_TYPE_OSAE:
case QETH_CARD_TYPE_OSN: case QETH_CARD_TYPE_OSN:
...@@ -1097,9 +1097,9 @@ qeth_string_to_ipaddr4(const char *buf, __u8 *addr) ...@@ -1097,9 +1097,9 @@ qeth_string_to_ipaddr4(const char *buf, __u8 *addr)
int count = 0, rc = 0; int count = 0, rc = 0;
int in[4]; int in[4];
rc = sscanf(buf, "%d.%d.%d.%d%n", rc = sscanf(buf, "%d.%d.%d.%d%n",
&in[0], &in[1], &in[2], &in[3], &count); &in[0], &in[1], &in[2], &in[3], &count);
if (rc != 4 || count) if (rc != 4 || count<=0)
return -EINVAL; return -EINVAL;
for (count = 0; count < 4; count++) { for (count = 0; count < 4; count++) {
if (in[count] > 255) if (in[count] > 255)
...@@ -1131,7 +1131,7 @@ qeth_string_to_ipaddr6(const char *buf, __u8 *addr) ...@@ -1131,7 +1131,7 @@ qeth_string_to_ipaddr6(const char *buf, __u8 *addr)
cnt = out = found = save_cnt = num2 = 0; cnt = out = found = save_cnt = num2 = 0;
end = start = (char *) buf; end = start = (char *) buf;
in = (__u16 *) addr; in = (__u16 *) addr;
memset(in, 0, 16); memset(in, 0, 16);
while (end) { while (end) {
end = strchr(end,':'); end = strchr(end,':');
...@@ -1139,7 +1139,7 @@ qeth_string_to_ipaddr6(const char *buf, __u8 *addr) ...@@ -1139,7 +1139,7 @@ qeth_string_to_ipaddr6(const char *buf, __u8 *addr)
end = (char *)buf + (strlen(buf)); end = (char *)buf + (strlen(buf));
out = 1; out = 1;
} }
if ((end - start)) { if ((end - start)) {
memset(num, 0, 5); memset(num, 0, 5);
memcpy(num, start, end - start); memcpy(num, start, end - start);
if (!qeth_isxdigit(num)) if (!qeth_isxdigit(num))
...@@ -1241,5 +1241,5 @@ qeth_osn_register(unsigned char *read_dev_no, ...@@ -1241,5 +1241,5 @@ qeth_osn_register(unsigned char *read_dev_no,
extern void extern void
qeth_osn_deregister(struct net_device *); qeth_osn_deregister(struct net_device *);
#endif /* __QETH_H__ */ #endif /* __QETH_H__ */
...@@ -81,7 +81,7 @@ void ...@@ -81,7 +81,7 @@ void
qeth_eddp_buf_release_contexts(struct qeth_qdio_out_buffer *buf) qeth_eddp_buf_release_contexts(struct qeth_qdio_out_buffer *buf)
{ {
struct qeth_eddp_context_reference *ref; struct qeth_eddp_context_reference *ref;
QETH_DBF_TEXT(trace, 6, "eddprctx"); QETH_DBF_TEXT(trace, 6, "eddprctx");
while (!list_empty(&buf->ctx_list)){ while (!list_empty(&buf->ctx_list)){
ref = list_entry(buf->ctx_list.next, ref = list_entry(buf->ctx_list.next,
...@@ -135,7 +135,7 @@ qeth_eddp_fill_buffer(struct qeth_qdio_out_q *queue, ...@@ -135,7 +135,7 @@ qeth_eddp_fill_buffer(struct qeth_qdio_out_q *queue,
"buffer!\n"); "buffer!\n");
goto out; goto out;
} }
} }
/* check if the whole next skb fits into current buffer */ /* check if the whole next skb fits into current buffer */
if ((QETH_MAX_BUFFER_ELEMENTS(queue->card) - if ((QETH_MAX_BUFFER_ELEMENTS(queue->card) -
buf->next_element_to_fill) buf->next_element_to_fill)
...@@ -148,7 +148,7 @@ qeth_eddp_fill_buffer(struct qeth_qdio_out_q *queue, ...@@ -148,7 +148,7 @@ qeth_eddp_fill_buffer(struct qeth_qdio_out_q *queue,
* and increment ctx's refcnt */ * and increment ctx's refcnt */
must_refcnt = 1; must_refcnt = 1;
continue; continue;
} }
if (must_refcnt){ if (must_refcnt){
must_refcnt = 0; must_refcnt = 0;
if (qeth_eddp_buf_ref_context(buf, ctx)){ if (qeth_eddp_buf_ref_context(buf, ctx)){
...@@ -266,7 +266,7 @@ qeth_eddp_copy_data_tcp(char *dst, struct qeth_eddp_data *eddp, int len, ...@@ -266,7 +266,7 @@ qeth_eddp_copy_data_tcp(char *dst, struct qeth_eddp_data *eddp, int len,
int left_in_frag; int left_in_frag;
int copy_len; int copy_len;
u8 *src; u8 *src;
QETH_DBF_TEXT(trace, 5, "eddpcdtc"); QETH_DBF_TEXT(trace, 5, "eddpcdtc");
if (skb_shinfo(eddp->skb)->nr_frags == 0) { if (skb_shinfo(eddp->skb)->nr_frags == 0) {
memcpy(dst, eddp->skb->data + eddp->skb_offset, len); memcpy(dst, eddp->skb->data + eddp->skb_offset, len);
...@@ -408,7 +408,7 @@ __qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, ...@@ -408,7 +408,7 @@ __qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx,
struct tcphdr *tcph; struct tcphdr *tcph;
int data_len; int data_len;
u32 hcsum; u32 hcsum;
QETH_DBF_TEXT(trace, 5, "eddpftcp"); QETH_DBF_TEXT(trace, 5, "eddpftcp");
eddp->skb_offset = sizeof(struct qeth_hdr) + eddp->nhl + eddp->thl; eddp->skb_offset = sizeof(struct qeth_hdr) + eddp->nhl + eddp->thl;
if (eddp->qh.hdr.l2.id == QETH_HEADER_TYPE_LAYER2) { if (eddp->qh.hdr.l2.id == QETH_HEADER_TYPE_LAYER2) {
...@@ -465,13 +465,13 @@ __qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, ...@@ -465,13 +465,13 @@ __qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx,
eddp->th.tcp.h.seq += data_len; eddp->th.tcp.h.seq += data_len;
} }
} }
static inline int static inline int
qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx,
struct sk_buff *skb, struct qeth_hdr *qhdr) struct sk_buff *skb, struct qeth_hdr *qhdr)
{ {
struct qeth_eddp_data *eddp = NULL; struct qeth_eddp_data *eddp = NULL;
QETH_DBF_TEXT(trace, 5, "eddpficx"); QETH_DBF_TEXT(trace, 5, "eddpficx");
/* create our segmentation headers and copy original headers */ /* create our segmentation headers and copy original headers */
if (skb->protocol == ETH_P_IP) if (skb->protocol == ETH_P_IP)
...@@ -512,7 +512,7 @@ qeth_eddp_calc_num_pages(struct qeth_eddp_context *ctx, struct sk_buff *skb, ...@@ -512,7 +512,7 @@ qeth_eddp_calc_num_pages(struct qeth_eddp_context *ctx, struct sk_buff *skb,
int hdr_len) int hdr_len)
{ {
int skbs_per_page; int skbs_per_page;
QETH_DBF_TEXT(trace, 5, "eddpcanp"); QETH_DBF_TEXT(trace, 5, "eddpcanp");
/* can we put multiple skbs in one page? */ /* can we put multiple skbs in one page? */
skbs_per_page = PAGE_SIZE / (skb_shinfo(skb)->tso_size + hdr_len); skbs_per_page = PAGE_SIZE / (skb_shinfo(skb)->tso_size + hdr_len);
...@@ -588,7 +588,7 @@ qeth_eddp_create_context_tcp(struct qeth_card *card, struct sk_buff *skb, ...@@ -588,7 +588,7 @@ qeth_eddp_create_context_tcp(struct qeth_card *card, struct sk_buff *skb,
struct qeth_hdr *qhdr) struct qeth_hdr *qhdr)
{ {
struct qeth_eddp_context *ctx = NULL; struct qeth_eddp_context *ctx = NULL;
QETH_DBF_TEXT(trace, 5, "creddpct"); QETH_DBF_TEXT(trace, 5, "creddpct");
if (skb->protocol == ETH_P_IP) if (skb->protocol == ETH_P_IP)
ctx = qeth_eddp_create_context_generic(card, skb, ctx = qeth_eddp_create_context_generic(card, skb,
......
...@@ -42,7 +42,7 @@ qeth_create_device_attributes_osn(struct device *dev); ...@@ -42,7 +42,7 @@ qeth_create_device_attributes_osn(struct device *dev);
extern void extern void
qeth_remove_device_attributes_osn(struct device *dev); qeth_remove_device_attributes_osn(struct device *dev);
extern int extern int
qeth_create_driver_attributes(void); qeth_create_driver_attributes(void);
......
This diff is collapsed.
...@@ -445,7 +445,7 @@ enum qeth_ipa_arp_return_codes { ...@@ -445,7 +445,7 @@ enum qeth_ipa_arp_return_codes {
/* Helper functions */ /* Helper functions */
#define IS_IPA_REPLY(cmd) ((cmd->hdr.initiator == IPA_CMD_INITIATOR_HOST) || \ #define IS_IPA_REPLY(cmd) ((cmd->hdr.initiator == IPA_CMD_INITIATOR_HOST) || \
(cmd->hdr.initiator == IPA_CMD_INITIATOR_OSA_REPLY)) (cmd->hdr.initiator == IPA_CMD_INITIATOR_OSA_REPLY))
/*****************************************************************************/ /*****************************************************************************/
/* END OF IP Assist related definitions */ /* END OF IP Assist related definitions */
/*****************************************************************************/ /*****************************************************************************/
...@@ -490,7 +490,7 @@ extern unsigned char ULP_ENABLE[]; ...@@ -490,7 +490,7 @@ extern unsigned char ULP_ENABLE[];
/* Layer 2 defintions */ /* Layer 2 defintions */
#define QETH_PROT_LAYER2 0x08 #define QETH_PROT_LAYER2 0x08
#define QETH_PROT_TCPIP 0x03 #define QETH_PROT_TCPIP 0x03
#define QETH_PROT_OSN2 0x0a #define QETH_PROT_OSN2 0x0a
#define QETH_ULP_ENABLE_PROT_TYPE(buffer) (buffer+0x50) #define QETH_ULP_ENABLE_PROT_TYPE(buffer) (buffer+0x50)
#define QETH_IPA_CMD_PROT_TYPE(buffer) (buffer+0x19) #define QETH_IPA_CMD_PROT_TYPE(buffer) (buffer+0x19)
......
...@@ -36,7 +36,7 @@ qeth_procfile_seq_start(struct seq_file *s, loff_t *offset) ...@@ -36,7 +36,7 @@ qeth_procfile_seq_start(struct seq_file *s, loff_t *offset)
{ {
struct device *dev = NULL; struct device *dev = NULL;
loff_t nr = 0; loff_t nr = 0;
down_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem); down_read(&qeth_ccwgroup_driver.driver.bus->subsys.rwsem);
if (*offset == 0) if (*offset == 0)
return SEQ_START_TOKEN; return SEQ_START_TOKEN;
...@@ -60,8 +60,8 @@ static void * ...@@ -60,8 +60,8 @@ static void *
qeth_procfile_seq_next(struct seq_file *s, void *it, loff_t *offset) qeth_procfile_seq_next(struct seq_file *s, void *it, loff_t *offset)
{ {
struct device *prev, *next; struct device *prev, *next;
if (it == SEQ_START_TOKEN) if (it == SEQ_START_TOKEN)
prev = NULL; prev = NULL;
else else
prev = (struct device *) it; prev = (struct device *) it;
...@@ -180,7 +180,7 @@ qeth_perf_procfile_seq_show(struct seq_file *s, void *it) ...@@ -180,7 +180,7 @@ qeth_perf_procfile_seq_show(struct seq_file *s, void *it)
struct device *device; struct device *device;
struct qeth_card *card; struct qeth_card *card;
if (it == SEQ_START_TOKEN) if (it == SEQ_START_TOKEN)
return 0; return 0;
......
...@@ -785,7 +785,7 @@ qeth_dev_large_send_store(struct device *dev, struct device_attribute *attr, con ...@@ -785,7 +785,7 @@ qeth_dev_large_send_store(struct device *dev, struct device_attribute *attr, con
} }
if (card->options.large_send == type) if (card->options.large_send == type)
return count; return count;
if ((rc = qeth_set_large_send(card, type))) if ((rc = qeth_set_large_send(card, type)))
return rc; return rc;
return count; return count;
} }
...@@ -1682,7 +1682,7 @@ qeth_create_device_attributes(struct device *dev) ...@@ -1682,7 +1682,7 @@ qeth_create_device_attributes(struct device *dev)
if (card->info.type == QETH_CARD_TYPE_OSN) if (card->info.type == QETH_CARD_TYPE_OSN)
return sysfs_create_group(&dev->kobj, return sysfs_create_group(&dev->kobj,
&qeth_osn_device_attr_group); &qeth_osn_device_attr_group);
if ((ret = sysfs_create_group(&dev->kobj, &qeth_device_attr_group))) if ((ret = sysfs_create_group(&dev->kobj, &qeth_device_attr_group)))
return ret; return ret;
if ((ret = sysfs_create_group(&dev->kobj, &qeth_device_ipato_group))){ if ((ret = sysfs_create_group(&dev->kobj, &qeth_device_ipato_group))){
...@@ -1713,7 +1713,7 @@ qeth_remove_device_attributes(struct device *dev) ...@@ -1713,7 +1713,7 @@ qeth_remove_device_attributes(struct device *dev)
if (card->info.type == QETH_CARD_TYPE_OSN) if (card->info.type == QETH_CARD_TYPE_OSN)
return sysfs_remove_group(&dev->kobj, return sysfs_remove_group(&dev->kobj,
&qeth_osn_device_attr_group); &qeth_osn_device_attr_group);
sysfs_remove_group(&dev->kobj, &qeth_device_attr_group); sysfs_remove_group(&dev->kobj, &qeth_device_attr_group);
sysfs_remove_group(&dev->kobj, &qeth_device_ipato_group); sysfs_remove_group(&dev->kobj, &qeth_device_ipato_group);
sysfs_remove_group(&dev->kobj, &qeth_device_vipa_group); sysfs_remove_group(&dev->kobj, &qeth_device_vipa_group);
......
...@@ -117,11 +117,11 @@ __qeth_fill_buffer_frag(struct sk_buff *skb, struct qdio_buffer *buffer, ...@@ -117,11 +117,11 @@ __qeth_fill_buffer_frag(struct sk_buff *skb, struct qdio_buffer *buffer,
int fragno; int fragno;
unsigned long addr; unsigned long addr;
int element, cnt, dlen; int element, cnt, dlen;
fragno = skb_shinfo(skb)->nr_frags; fragno = skb_shinfo(skb)->nr_frags;
element = *next_element_to_fill; element = *next_element_to_fill;
dlen = 0; dlen = 0;
if (is_tso) if (is_tso)
buffer->element[element].flags = buffer->element[element].flags =
SBAL_FLAGS_MIDDLE_FRAG; SBAL_FLAGS_MIDDLE_FRAG;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment