diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h index b4e7152fd586..4889681370f3 100644 --- a/drivers/s390/cio/qdio.h +++ b/drivers/s390/cio/qdio.h @@ -370,7 +370,7 @@ void qdio_thinint_exit(void); int test_nonshared_ind(struct qdio_irq *); /* prototypes for setup */ -void qdio_outbound_processing(unsigned long data); +void qdio_outbound_tasklet(struct tasklet_struct *t); void qdio_outbound_timer(struct timer_list *t); void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm, struct irb *irb); diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c index 60ac07742f3d..2cc489c9f986 100644 --- a/drivers/s390/cio/qdio_main.c +++ b/drivers/s390/cio/qdio_main.c @@ -716,8 +716,10 @@ retry: return cc; } -static void __qdio_outbound_processing(struct qdio_q *q) +void qdio_outbound_tasklet(struct tasklet_struct *t) { + struct qdio_output_q *out_q = from_tasklet(out_q, t, tasklet); + struct qdio_q *q = container_of(out_q, struct qdio_q, u.out); unsigned int start = q->first_to_check; int count; @@ -754,13 +756,6 @@ sched: qdio_tasklet_schedule(q); } -/* outbound tasklet */ -void qdio_outbound_processing(unsigned long data) -{ - struct qdio_q *q = (struct qdio_q *)data; - __qdio_outbound_processing(q); -} - void qdio_outbound_timer(struct timer_list *t) { struct qdio_q *q = from_timer(q, t, u.out.timer); diff --git a/drivers/s390/cio/qdio_setup.c b/drivers/s390/cio/qdio_setup.c index 3571ca62a74c..c8b9620bc688 100644 --- a/drivers/s390/cio/qdio_setup.c +++ b/drivers/s390/cio/qdio_setup.c @@ -272,8 +272,7 @@ static void setup_queues(struct qdio_irq *irq_ptr, setup_storage_lists(q, irq_ptr, qdio_init->output_sbal_addr_array[i], i); - tasklet_init(&q->u.out.tasklet, qdio_outbound_processing, - (unsigned long) q); + tasklet_setup(&q->u.out.tasklet, qdio_outbound_tasklet); timer_setup(&q->u.out.timer, qdio_outbound_timer, 0); } }