if (err)
return err;
- sch_tree_lock(sch);
- cl->quantum = quantum;
- sch_tree_unlock(sch);
+ WRITE_ONCE(cl->quantum, quantum);
ets_offload_change(sch);
return 0;
if (!nest)
goto nla_put_failure;
if (!ets_class_is_strict(q, cl)) {
- if (nla_put_u32(skb, TCA_ETS_QUANTA_BAND, cl->quantum))
+ if (nla_put_u32(skb, TCA_ETS_QUANTA_BAND, READ_ONCE(cl->quantum)))
goto nla_put_failure;
}
return nla_nest_end(skb, nest);
if (!cl_is_active(cl) && !ets_class_is_strict(q, cl)) {
list_add_tail(&cl->alist, &q->active);
- cl->deficit = cl->quantum;
+ cl->deficit = READ_ONCE(cl->quantum);
}
qstats_backlog_add(sch, len);
return ets_qdisc_dequeue_skb(sch, skb);
}
- cl->deficit += cl->quantum;
+ cl->deficit += READ_ONCE(cl->quantum);
list_move_tail(&cl->alist, &q->active);
}
out: