diff mbox series

[net-next,v2,6/8] net: sched: convert tasklets to use new tasklet_setup() API

Message ID 20201007101219.356499-7-allen.lkml@gmail.com
State Superseded
Headers show
Series net: convert tasklets to use new | expand

Commit Message

Allen Oct. 7, 2020, 10:12 a.m. UTC
From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 net/sched/sch_atm.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

Comments

Eric Dumazet Oct. 7, 2020, 4:52 p.m. UTC | #1
On 10/7/20 12:12 PM, Allen Pais wrote:
> From: Allen Pais <apais@linux.microsoft.com>

> 

> In preparation for unconditionally passing the

> struct tasklet_struct pointer to all tasklet

> callbacks, switch to using the new tasklet_setup()

> and from_tasklet() to pass the tasklet pointer explicitly.

> 

> Signed-off-by: Romain Perier <romain.perier@gmail.com>

> Signed-off-by: Allen Pais <apais@linux.microsoft.com>

> ---

>  net/sched/sch_atm.c | 9 +++++----

>  1 file changed, 5 insertions(+), 4 deletions(-)

> 

> diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c

> index 1c281cc81..0a4452178 100644

> --- a/net/sched/sch_atm.c

> +++ b/net/sched/sch_atm.c

> @@ -466,10 +466,11 @@ drop: __maybe_unused

>   * non-ATM interfaces.

>   */

>  

> -static void sch_atm_dequeue(unsigned long data)

> +static void sch_atm_dequeue(struct tasklet_struct *t)

>  {

> -	struct Qdisc *sch = (struct Qdisc *)data;

> -	struct atm_qdisc_data *p = qdisc_priv(sch);

> +	struct atm_qdisc_data *p = from_tasklet(p, t, task);

> +	struct Qdisc *sch = (struct Qdisc *)((char *) p -

> +					     QDISC_ALIGN(sizeof(struct Qdisc)));


Oh well. I would rather get rid of QDISC_ALIGN() completely, instead
of spreading it all over the places.

I have sent https://patchwork.ozlabs.org/project/netdev/patch/20201007165111.172419-1-eric.dumazet@gmail.com/
diff mbox series

Patch

diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c
index 1c281cc81..0a4452178 100644
--- a/net/sched/sch_atm.c
+++ b/net/sched/sch_atm.c
@@ -466,10 +466,11 @@  drop: __maybe_unused
  * non-ATM interfaces.
  */
 
-static void sch_atm_dequeue(unsigned long data)
+static void sch_atm_dequeue(struct tasklet_struct *t)
 {
-	struct Qdisc *sch = (struct Qdisc *)data;
-	struct atm_qdisc_data *p = qdisc_priv(sch);
+	struct atm_qdisc_data *p = from_tasklet(p, t, task);
+	struct Qdisc *sch = (struct Qdisc *)((char *) p -
+					     QDISC_ALIGN(sizeof(struct Qdisc)));
 	struct atm_flow_data *flow;
 	struct sk_buff *skb;
 
@@ -563,7 +564,7 @@  static int atm_tc_init(struct Qdisc *sch, struct nlattr *opt,
 	if (err)
 		return err;
 
-	tasklet_init(&p->task, sch_atm_dequeue, (unsigned long)sch);
+	tasklet_setup(&p->task, sch_atm_dequeue);
 	return 0;
 }