s390/qdio: adopt new tasklet API
authorJulian Wiedmann <jwi@linux.ibm.com>
Thu, 1 Oct 2020 07:47:47 +0000 (09:47 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 9 Feb 2021 14:57:04 +0000 (15:57 +0100)
Convert the Output Queue tasklet code to take a tasklet_struct as
parameter. Then initialize the tasklet with tasklet_setup() to indicate
that we follow the new model.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
drivers/s390/cio/qdio.h
drivers/s390/cio/qdio_main.c
drivers/s390/cio/qdio_setup.c

index b4e7152fd5861b552c000140aec905033ce023ac..4889681370f3de812d4824f6b0c8be489d204422 100644 (file)
@@ -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);
index 60ac07742f3da43f7ec2fce990b1f1929fc04030..2cc489c9f98629f0012585e3ceba87e79025df6a 100644 (file)
@@ -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);
index 3571ca62a74c8140726433af9b60c3de416f7427..c8b9620bc6883da43792870c42188a5e38d2a128 100644 (file)
@@ -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);
        }
 }