Commit e92f1d60 authored by Frank Pavlic's avatar Frank Pavlic Committed by Linus Torvalds

[PATCH] s390: lcs network driver

lcs network driver changes:
 - Allocate the reply structure instead of taking it from the stack.
 - Use del_timer_sync instead of del_timer.
 - Clean up helper threads creation/shutdown.
 - Split lcs_register_mc_addresses to make it readable again.
 - Free multicast list entries when device is going down.
 - Retransmit multicast list in device recovery.
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 c3b4df71
This diff is collapsed.
...@@ -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.17 $" #define VERSION_LCS_H "$Revision: 1.18 $"
#define LCS_DBF_TEXT(level, name, text) \ #define LCS_DBF_TEXT(level, name, text) \
do { \ do { \
...@@ -152,6 +152,12 @@ enum lcs_dev_states { ...@@ -152,6 +152,12 @@ enum lcs_dev_states {
DEV_STATE_RECOVER, DEV_STATE_RECOVER,
}; };
enum lcs_threads {
LCS_SET_MC_THREAD = 1,
LCS_STARTLAN_THREAD = 2,
LCS_STOPLAN_THREAD = 4,
LCS_STARTUP_THREAD = 8,
};
/** /**
* LCS struct declarations * LCS struct declarations
*/ */
...@@ -247,9 +253,11 @@ struct lcs_buffer { ...@@ -247,9 +253,11 @@ struct lcs_buffer {
struct lcs_reply { struct lcs_reply {
struct list_head list; struct list_head list;
__u16 sequence_no; __u16 sequence_no;
atomic_t refcnt;
/* Callback for completion notification. */ /* Callback for completion notification. */
void (*callback)(struct lcs_card *, struct lcs_cmd *); void (*callback)(struct lcs_card *, struct lcs_cmd *);
wait_queue_head_t wait_q; wait_queue_head_t wait_q;
struct lcs_card *card;
int received; int received;
int rc; int rc;
}; };
...@@ -268,6 +276,7 @@ struct lcs_channel { ...@@ -268,6 +276,7 @@ struct lcs_channel {
int buf_idx; int buf_idx;
}; };
/** /**
* definition of the lcs card * definition of the lcs card
*/ */
...@@ -287,7 +296,11 @@ struct lcs_card { ...@@ -287,7 +296,11 @@ struct lcs_card {
int lancmd_timeout; int lancmd_timeout;
struct work_struct kernel_thread_starter; struct work_struct kernel_thread_starter;
unsigned long thread_mask; spinlock_t mask_lock;
unsigned long thread_start_mask;
unsigned long thread_running_mask;
unsigned long thread_allowed_mask;
wait_queue_head_t wait_q;
#ifdef CONFIG_IP_MULTICAST #ifdef CONFIG_IP_MULTICAST
struct list_head ipm_list; struct list_head ipm_list;
......
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