aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/io_sch.h
diff options
context:
space:
mode:
authorPeter Oberparleiter <peter.oberparleiter@de.ibm.com>2009-12-07 06:51:19 -0500
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2009-12-07 06:51:30 -0500
commit37de53bb52908726c18fc84515792a5b2f454532 (patch)
treec372eb1065e393a5fccb8e3db1609ae2fbe5a098 /drivers/s390/cio/io_sch.h
parent390935acac21f3ea1a130bdca8eb9397cb293643 (diff)
[S390] cio: introduce ccw device todos
Introduce a central mechanism for performing delayed ccw device work to ensure that different types of work do not overwrite each other. Prioritization ensures that the most important work is always performed while less important tasks are either obsoleted or repeated later. Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/io_sch.h')
-rw-r--r--drivers/s390/cio/io_sch.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/s390/cio/io_sch.h b/drivers/s390/cio/io_sch.h
index 0b8f381bd20..b770e420213 100644
--- a/drivers/s390/cio/io_sch.h
+++ b/drivers/s390/cio/io_sch.h
@@ -82,6 +82,15 @@ struct senseid {
82 struct ciw ciw[MAX_CIWS]; /* variable # of CIWs */ 82 struct ciw ciw[MAX_CIWS]; /* variable # of CIWs */
83} __attribute__ ((packed, aligned(4))); 83} __attribute__ ((packed, aligned(4)));
84 84
85enum cdev_todo {
86 CDEV_TODO_NOTHING,
87 CDEV_TODO_ENABLE_CMF,
88 CDEV_TODO_REBIND,
89 CDEV_TODO_REGISTER,
90 CDEV_TODO_UNREG,
91 CDEV_TODO_UNREG_EVAL,
92};
93
85struct ccw_device_private { 94struct ccw_device_private {
86 struct ccw_device *cdev; 95 struct ccw_device *cdev;
87 struct subchannel *sch; 96 struct subchannel *sch;
@@ -115,7 +124,8 @@ struct ccw_device_private {
115 struct senseid senseid; /* SenseID info */ 124 struct senseid senseid; /* SenseID info */
116 struct pgid pgid[8]; /* path group IDs per chpid*/ 125 struct pgid pgid[8]; /* path group IDs per chpid*/
117 struct ccw1 iccws[2]; /* ccws for SNID/SID/SPGID commands */ 126 struct ccw1 iccws[2]; /* ccws for SNID/SID/SPGID commands */
118 struct work_struct kick_work; 127 struct work_struct todo_work;
128 enum cdev_todo todo;
119 wait_queue_head_t wait_q; 129 wait_queue_head_t wait_q;
120 struct timer_list timer; 130 struct timer_list timer;
121 void *cmb; /* measurement information */ 131 void *cmb; /* measurement information */