Commit 6e955f71 authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Linus Torvalds

[PATCH] s390: network driver changes

From: Ursula Braun-Krahl <braunu@de.ibm.com>
From: Frank Pavlic <pavlic@de.ibm.com>
From: Thomas Spatzier <tspat@de.ibm.com>
From: Peter Tiedemann <ptiedem@de.ibm.com>

s390 network driver changes:
 - ctc: replace snprintf by strlcpy.
 - lcs: change info text for lcs cards from "OSA2 card" to "OSA LCS card".
 - lcs: fix alignment of lcs_cmd structure to get multicast pings working.
 - lcs: first call in_dev_put then register multicast addresses.
 - netiucv: remove unused device timer and unused flags field.
 - netiucv: include interrupt type in pathid mismatch message.
 - qeth: don't start a new kernel thread for every new ip address.
 - qeth: fix IP assist command sequence numbers.
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 30257457
/* /*
* $Id: ctcmain.c,v 1.59 2004/04/21 17:10:13 ptiedem Exp $ * $Id: ctcmain.c,v 1.60 2004/06/18 15:13:51 ptiedem Exp $
* *
* CTC / ESCON network driver * CTC / ESCON network driver
* *
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
* RELEASE-TAG: CTC/ESCON network driver $Revision: 1.59 $ * RELEASE-TAG: CTC/ESCON network driver $Revision: 1.60 $
* *
*/ */
...@@ -319,7 +319,7 @@ static void ...@@ -319,7 +319,7 @@ static void
print_banner(void) print_banner(void)
{ {
static int printed = 0; static int printed = 0;
char vbuf[] = "$Revision: 1.59 $"; char vbuf[] = "$Revision: 1.60 $";
char *version = vbuf; char *version = vbuf;
if (printed) if (printed)
...@@ -3052,9 +3052,9 @@ ctc_new_device(struct ccwgroup_device *cgdev) ...@@ -3052,9 +3052,9 @@ ctc_new_device(struct ccwgroup_device *cgdev)
} }
if (privptr->protocol == CTC_PROTO_LINUX_TTY) if (privptr->protocol == CTC_PROTO_LINUX_TTY)
snprintf(dev->name, 8, "ctctty%%d"); strlcpy(dev->name, "ctctty%d", IFNAMSIZ);
else else
snprintf(dev->name, 8, "ctc%%d"); strlcpy(dev->name, "ctc%d", IFNAMSIZ);
for (direction = READ; direction <= WRITE; direction++) { for (direction = READ; direction <= WRITE; direction++) {
privptr->channel[direction] = privptr->channel[direction] =
......
/* /*
* $Id: cu3088.c,v 1.33 2003/10/14 12:10:19 cohuck Exp $ * $Id: cu3088.c,v 1.34 2004/06/15 13:16:27 pavlic Exp $
* *
* CTC / LCS ccw_device driver * CTC / LCS ccw_device driver
* *
...@@ -38,7 +38,7 @@ const char *cu3088_type[] = { ...@@ -38,7 +38,7 @@ const char *cu3088_type[] = {
"ESCON channel", "ESCON channel",
"FICON channel", "FICON channel",
"P390 LCS card", "P390 LCS card",
"OSA2 card", "OSA LCS card",
"unknown channel type", "unknown channel type",
"unsupported channel type", "unsupported channel type",
}; };
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
* Frank Pavlic (pavlic@de.ibm.com) and * Frank Pavlic (pavlic@de.ibm.com) and
* Martin Schwidefsky <schwidefsky@de.ibm.com> * Martin Schwidefsky <schwidefsky@de.ibm.com>
* *
* $Revision: 1.81 $ $Date: 2004/05/14 13:54:33 $ * $Revision: 1.83 $ $Date: 2004/06/30 12:48:14 $
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
/** /**
* initialization string for output * initialization string for output
*/ */
#define VERSION_LCS_C "$Revision: 1.81 $" #define VERSION_LCS_C "$Revision: 1.83 $"
static char version[] __initdata = "LCS driver ("VERSION_LCS_C "/" VERSION_LCS_H ")"; static char version[] __initdata = "LCS driver ("VERSION_LCS_C "/" VERSION_LCS_H ")";
static char debug_buffer[255]; static char debug_buffer[255];
...@@ -1046,8 +1046,8 @@ lcs_register_mc_addresses(void *data) ...@@ -1046,8 +1046,8 @@ lcs_register_mc_addresses(void *data)
} }
spin_unlock(&card->ipm_lock); spin_unlock(&card->ipm_lock);
read_unlock(&in4_dev->lock); read_unlock(&in4_dev->lock);
lcs_fix_multicast_list(card);
in_dev_put(in4_dev); in_dev_put(in4_dev);
lcs_fix_multicast_list(card);
return 0; return 0;
} }
/** /**
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <asm/ccwdev.h> #include <asm/ccwdev.h>
#define VERSION_LCS_H "$Revision: 1.16 $" #define VERSION_LCS_H "$Revision: 1.17 $"
#define LCS_DBF_TEXT(level, name, text) \ #define LCS_DBF_TEXT(level, name, text) \
do { \ do { \
...@@ -221,8 +221,8 @@ struct lcs_cmd { ...@@ -221,8 +221,8 @@ struct lcs_cmd {
struct lcs_ip_mac_pair struct lcs_ip_mac_pair
ip_mac_pair[32]; ip_mac_pair[32];
__u32 response_data; __u32 response_data;
} lcs_ipass_ctlmsg; } lcs_ipass_ctlmsg __attribute ((packed));
} lcs_qipassist; } lcs_qipassist __attribute__ ((packed));
#endif /*CONFIG_IP_MULTICAST */ #endif /*CONFIG_IP_MULTICAST */
} cmd __attribute__ ((packed)); } cmd __attribute__ ((packed));
} __attribute__ ((packed)); } __attribute__ ((packed));
......
/* /*
* $Id: netiucv.c,v 1.54 2004/05/28 08:04:14 braunu Exp $ * $Id: netiucv.c,v 1.57 2004/06/30 09:26:40 braunu Exp $
* *
* IUCV network driver * IUCV network driver
* *
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
* RELEASE-TAG: IUCV network driver $Revision: 1.54 $ * RELEASE-TAG: IUCV network driver $Revision: 1.57 $
* *
*/ */
...@@ -98,7 +98,6 @@ struct iucv_connection { ...@@ -98,7 +98,6 @@ struct iucv_connection {
spinlock_t collect_lock; spinlock_t collect_lock;
int collect_len; int collect_len;
int max_buffsize; int max_buffsize;
int flags;
fsm_timer timer; fsm_timer timer;
fsm_instance *fsm; fsm_instance *fsm;
struct net_device *netdev; struct net_device *netdev;
...@@ -106,8 +105,6 @@ struct iucv_connection { ...@@ -106,8 +105,6 @@ struct iucv_connection {
char userid[9]; char userid[9];
}; };
#define CONN_FLAGS_BUFSIZE_CHANGED 1
/** /**
* Linked list of all connection structs. * Linked list of all connection structs.
*/ */
...@@ -131,7 +128,6 @@ struct netiucv_priv { ...@@ -131,7 +128,6 @@ struct netiucv_priv {
fsm_instance *fsm; fsm_instance *fsm;
struct iucv_connection *conn; struct iucv_connection *conn;
struct device *dev; struct device *dev;
fsm_timer timer;
}; };
/** /**
...@@ -232,7 +228,6 @@ enum dev_events { ...@@ -232,7 +228,6 @@ enum dev_events {
DEV_EVENT_STOP, DEV_EVENT_STOP,
DEV_EVENT_CONUP, DEV_EVENT_CONUP,
DEV_EVENT_CONDOWN, DEV_EVENT_CONDOWN,
DEV_EVENT_TIMER,
/** /**
* MUST be always the last element!! * MUST be always the last element!!
*/ */
...@@ -244,7 +239,6 @@ static const char *dev_event_names[] = { ...@@ -244,7 +239,6 @@ static const char *dev_event_names[] = {
"Stop", "Stop",
"Connection up", "Connection up",
"Connection down", "Connection down",
"Timer",
}; };
/** /**
...@@ -701,7 +695,7 @@ conn_action_connreject(fsm_instance *fi, int event, void *arg) ...@@ -701,7 +695,7 @@ conn_action_connreject(fsm_instance *fi, int event, void *arg)
iucv_sever(eib->ippathid, udata); iucv_sever(eib->ippathid, udata);
if (eib->ippathid != conn->pathid) { if (eib->ippathid != conn->pathid) {
printk(KERN_INFO printk(KERN_INFO
"%s: IR pathid %d does not match original pathid %d\n", "%s: IR Connection Pending; pathid %d does not match original pathid %d\n",
netdev->name, eib->ippathid, conn->pathid); netdev->name, eib->ippathid, conn->pathid);
iucv_sever(conn->pathid, udata); iucv_sever(conn->pathid, udata);
} }
...@@ -722,7 +716,7 @@ conn_action_connack(fsm_instance *fi, int event, void *arg) ...@@ -722,7 +716,7 @@ conn_action_connack(fsm_instance *fi, int event, void *arg)
fsm_newstate(fi, CONN_STATE_IDLE); fsm_newstate(fi, CONN_STATE_IDLE);
if (eib->ippathid != conn->pathid) { if (eib->ippathid != conn->pathid) {
printk(KERN_INFO printk(KERN_INFO
"%s: IR pathid %d does not match original pathid %d\n", "%s: IR Connection Complete; pathid %d does not match original pathid %d\n",
netdev->name, eib->ippathid, conn->pathid); netdev->name, eib->ippathid, conn->pathid);
conn->pathid = eib->ippathid; conn->pathid = eib->ippathid;
} }
...@@ -1372,7 +1366,6 @@ buffer_write (struct device *dev, const char *buf, size_t count) ...@@ -1372,7 +1366,6 @@ buffer_write (struct device *dev, const char *buf, size_t count)
priv->conn->max_buffsize = bs1; priv->conn->max_buffsize = bs1;
if (!(ndev->flags & IFF_RUNNING)) if (!(ndev->flags & IFF_RUNNING))
ndev->mtu = bs1 - NETIUCV_HDRLEN - NETIUCV_HDRLEN; ndev->mtu = bs1 - NETIUCV_HDRLEN - NETIUCV_HDRLEN;
priv->conn->flags |= CONN_FLAGS_BUFSIZE_CHANGED;
return count; return count;
...@@ -1756,8 +1749,6 @@ netiucv_free_netdevice(struct net_device *dev) ...@@ -1756,8 +1749,6 @@ netiucv_free_netdevice(struct net_device *dev)
privptr = (struct netiucv_priv *)dev->priv; privptr = (struct netiucv_priv *)dev->priv;
if (privptr) { if (privptr) {
if (privptr->fsm)
fsm_deltimer(&privptr->timer);
if (privptr->conn) if (privptr->conn)
netiucv_remove_connection(privptr->conn); netiucv_remove_connection(privptr->conn);
if (privptr->fsm) if (privptr->fsm)
...@@ -1819,7 +1810,6 @@ netiucv_init_netdevice(char *username) ...@@ -1819,7 +1810,6 @@ netiucv_init_netdevice(char *username)
free_netdev(dev); free_netdev(dev);
return NULL; return NULL;
} }
fsm_settimer(privptr->fsm, &privptr->timer);
fsm_newstate(privptr->fsm, DEV_STATE_STOPPED); fsm_newstate(privptr->fsm, DEV_STATE_STOPPED);
return dev; return dev;
...@@ -1949,7 +1939,7 @@ static struct device_driver netiucv_driver = { ...@@ -1949,7 +1939,7 @@ static struct device_driver netiucv_driver = {
static void static void
netiucv_banner(void) netiucv_banner(void)
{ {
char vbuf[] = "$Revision: 1.54 $"; char vbuf[] = "$Revision: 1.57 $";
char *version = vbuf; char *version = vbuf;
if ((version = strchr(version, ':'))) { if ((version = strchr(version, ':'))) {
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include "qeth_mpc.h" #include "qeth_mpc.h"
#define VERSION_QETH_H "$Revision: 1.110 $" #define VERSION_QETH_H "$Revision: 1.111 $"
#ifdef CONFIG_QETH_IPV6 #ifdef CONFIG_QETH_IPV6
#define QETH_VERSION_IPV6 ":IPv6" #define QETH_VERSION_IPV6 ":IPv6"
...@@ -610,14 +610,14 @@ struct qeth_seqno { ...@@ -610,14 +610,14 @@ struct qeth_seqno {
__u32 trans_hdr; __u32 trans_hdr;
__u32 pdu_hdr; __u32 pdu_hdr;
__u32 pdu_hdr_ack; __u32 pdu_hdr_ack;
__u32 ipa; __u16 ipa;
}; };
struct qeth_reply { struct qeth_reply {
struct list_head list; struct list_head list;
wait_queue_head_t wait_q; wait_queue_head_t wait_q;
int (*callback)(struct qeth_card *,struct qeth_reply *,unsigned long); int (*callback)(struct qeth_card *,struct qeth_reply *,unsigned long);
int seqno; u32 seqno;
unsigned long offset; unsigned long offset;
int received; int received;
int rc; int rc;
......
/* /*
* *
* linux/drivers/s390/net/qeth_main.c ($Revision: 1.121 $) * linux/drivers/s390/net/qeth_main.c ($Revision: 1.125 $)
* *
* Linux on zSeries OSA Express and HiperSockets support * Linux on zSeries OSA Express and HiperSockets support
* *
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
* Frank Pavlic (pavlic@de.ibm.com) and * Frank Pavlic (pavlic@de.ibm.com) and
* Thomas Spatzier <tspat@de.ibm.com> * Thomas Spatzier <tspat@de.ibm.com>
* *
* $Revision: 1.121 $ $Date: 2004/06/11 16:32:15 $ * $Revision: 1.125 $ $Date: 2004/06/29 17:28:24 $
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -78,7 +78,7 @@ qeth_eyecatcher(void) ...@@ -78,7 +78,7 @@ qeth_eyecatcher(void)
#include "qeth_mpc.h" #include "qeth_mpc.h"
#include "qeth_fs.h" #include "qeth_fs.h"
#define VERSION_QETH_C "$Revision: 1.121 $" #define VERSION_QETH_C "$Revision: 1.125 $"
static const char *version = "qeth S/390 OSA-Express driver"; static const char *version = "qeth S/390 OSA-Express driver";
/** /**
...@@ -818,14 +818,20 @@ static void qeth_add_multicast_ipv4(struct qeth_card *); ...@@ -818,14 +818,20 @@ static void qeth_add_multicast_ipv4(struct qeth_card *);
static void qeth_add_multicast_ipv6(struct qeth_card *); static void qeth_add_multicast_ipv6(struct qeth_card *);
#endif #endif
static void static inline int
qeth_set_thread_start_bit(struct qeth_card *card, unsigned long thread) qeth_set_thread_start_bit(struct qeth_card *card, unsigned long thread)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&card->thread_mask_lock, flags); spin_lock_irqsave(&card->thread_mask_lock, flags);
if ( !(card->thread_allowed_mask & thread) ||
(card->thread_start_mask & thread) ) {
spin_unlock_irqrestore(&card->thread_mask_lock, flags);
return -EPERM;
}
card->thread_start_mask |= thread; card->thread_start_mask |= thread;
spin_unlock_irqrestore(&card->thread_mask_lock, flags); spin_unlock_irqrestore(&card->thread_mask_lock, flags);
return 0;
} }
static void static void
...@@ -952,8 +958,8 @@ qeth_schedule_recovery(struct qeth_card *card) ...@@ -952,8 +958,8 @@ qeth_schedule_recovery(struct qeth_card *card)
{ {
QETH_DBF_TEXT(trace,2,"startrec"); QETH_DBF_TEXT(trace,2,"startrec");
qeth_set_thread_start_bit(card, QETH_RECOVER_THREAD); if (qeth_set_thread_start_bit(card, QETH_RECOVER_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
} }
static int static int
...@@ -1568,9 +1574,9 @@ qeth_reset_ip_addresses(struct qeth_card *card) ...@@ -1568,9 +1574,9 @@ qeth_reset_ip_addresses(struct qeth_card *card)
QETH_DBF_TEXT(trace, 2, "rstipadd"); QETH_DBF_TEXT(trace, 2, "rstipadd");
qeth_clear_ip_list(card, 0, 1); qeth_clear_ip_list(card, 0, 1);
qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD); if ( (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) ||
qeth_set_thread_start_bit(card, QETH_SET_MC_THREAD); (qeth_set_thread_start_bit(card, QETH_SET_MC_THREAD) == 0) )
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
} }
static struct qeth_ipa_cmd * static struct qeth_ipa_cmd *
...@@ -4718,10 +4724,9 @@ qeth_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) ...@@ -4718,10 +4724,9 @@ qeth_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
if (card->vlangrp) if (card->vlangrp)
card->vlangrp->vlan_devices[vid] = NULL; card->vlangrp->vlan_devices[vid] = NULL;
spin_unlock_irqrestore(&card->vlanlock, flags); spin_unlock_irqrestore(&card->vlanlock, flags);
qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD); if ( (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0) ||
/* delete mc addresses for this vlan dev */ (qeth_set_thread_start_bit(card, QETH_SET_MC_THREAD) == 0) )
qeth_set_thread_start_bit(card, QETH_SET_MC_THREAD); schedule_work(&card->kernel_thread_starter);
schedule_work(&card->kernel_thread_starter);
} }
#endif #endif
...@@ -4950,8 +4955,8 @@ qeth_set_multicast_list(struct net_device *dev) ...@@ -4950,8 +4955,8 @@ qeth_set_multicast_list(struct net_device *dev)
QETH_DBF_TEXT(trace,3,"setmulti"); QETH_DBF_TEXT(trace,3,"setmulti");
card = (struct qeth_card *) dev->priv; card = (struct qeth_card *) dev->priv;
qeth_set_thread_start_bit(card, QETH_SET_MC_THREAD); if (qeth_set_thread_start_bit(card, QETH_SET_MC_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
} }
static void static void
...@@ -6422,8 +6427,8 @@ qeth_start_again(struct qeth_card *card) ...@@ -6422,8 +6427,8 @@ qeth_start_again(struct qeth_card *card)
rtnl_lock(); rtnl_lock();
dev_open(card->dev); dev_open(card->dev);
rtnl_unlock(); rtnl_unlock();
qeth_set_thread_start_bit(card, QETH_SET_MC_THREAD); if (qeth_set_thread_start_bit(card, QETH_SET_MC_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
} }
static int static int
...@@ -6809,8 +6814,8 @@ qeth_add_vipa(struct qeth_card *card, enum qeth_prot_versions proto, ...@@ -6809,8 +6814,8 @@ qeth_add_vipa(struct qeth_card *card, enum qeth_prot_versions proto,
} }
if (!qeth_add_ip(card, ipaddr)) if (!qeth_add_ip(card, ipaddr))
kfree(ipaddr); kfree(ipaddr);
qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD); if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
return rc; return rc;
} }
...@@ -6838,8 +6843,8 @@ qeth_del_vipa(struct qeth_card *card, enum qeth_prot_versions proto, ...@@ -6838,8 +6843,8 @@ qeth_del_vipa(struct qeth_card *card, enum qeth_prot_versions proto,
return; return;
if (!qeth_delete_ip(card, ipaddr)) if (!qeth_delete_ip(card, ipaddr))
kfree(ipaddr); kfree(ipaddr);
qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD); if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
} }
/* /*
...@@ -6882,8 +6887,8 @@ qeth_add_rxip(struct qeth_card *card, enum qeth_prot_versions proto, ...@@ -6882,8 +6887,8 @@ qeth_add_rxip(struct qeth_card *card, enum qeth_prot_versions proto,
} }
if (!qeth_add_ip(card, ipaddr)) if (!qeth_add_ip(card, ipaddr))
kfree(ipaddr); kfree(ipaddr);
qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD); if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
return 0; return 0;
} }
...@@ -6911,8 +6916,8 @@ qeth_del_rxip(struct qeth_card *card, enum qeth_prot_versions proto, ...@@ -6911,8 +6916,8 @@ qeth_del_rxip(struct qeth_card *card, enum qeth_prot_versions proto,
return; return;
if (!qeth_delete_ip(card, ipaddr)) if (!qeth_delete_ip(card, ipaddr))
kfree(ipaddr); kfree(ipaddr);
qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD); if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
} }
/** /**
...@@ -6952,8 +6957,8 @@ qeth_ip_event(struct notifier_block *this, ...@@ -6952,8 +6957,8 @@ qeth_ip_event(struct notifier_block *this,
default: default:
break; break;
} }
qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD); if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
out: out:
return NOTIFY_DONE; return NOTIFY_DONE;
} }
...@@ -7005,8 +7010,8 @@ qeth_ip6_event(struct notifier_block *this, ...@@ -7005,8 +7010,8 @@ qeth_ip6_event(struct notifier_block *this,
default: default:
break; break;
} }
qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD); if (qeth_set_thread_start_bit(card, QETH_SET_IP_THREAD) == 0)
schedule_work(&card->kernel_thread_starter); schedule_work(&card->kernel_thread_starter);
out: out:
return NOTIFY_DONE; return NOTIFY_DONE;
} }
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include <asm/qeth.h> #include <asm/qeth.h>
#define VERSION_QETH_MPC_H "$Revision: 1.35 $" #define VERSION_QETH_MPC_H "$Revision: 1.36 $"
extern const char *VERSION_QETH_MPC_C; extern const char *VERSION_QETH_MPC_C;
...@@ -36,7 +36,7 @@ extern unsigned char IPA_PDU_HEADER[]; ...@@ -36,7 +36,7 @@ extern unsigned char IPA_PDU_HEADER[];
#define QETH_TIMEOUT (10 * HZ) #define QETH_TIMEOUT (10 * HZ)
#define QETH_IPA_TIMEOUT (45 * HZ) #define QETH_IPA_TIMEOUT (45 * HZ)
#define QETH_IDX_COMMAND_SEQNO -1 #define QETH_IDX_COMMAND_SEQNO 0xffff0000
#define SR_INFO_LEN 16 #define SR_INFO_LEN 16
#define QETH_CLEAR_CHANNEL_PARM -10 #define QETH_CLEAR_CHANNEL_PARM -10
......
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