Message ID | 20201007101219.356499-7-allen.lkml@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | net: convert tasklets to use new | expand |
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 --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; }