#include <linux/workqueue.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) \
do { \
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
*/
struct lcs_reply {
struct list_head list;
__u16 sequence_no;
+ atomic_t refcnt;
/* Callback for completion notification. */
void (*callback)(struct lcs_card *, struct lcs_cmd *);
wait_queue_head_t wait_q;
+ struct lcs_card *card;
int received;
int rc;
};
int buf_idx;
};
+
/**
* definition of the lcs card
*/
int lancmd_timeout;
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
struct list_head ipm_list;