> -----Original Message-----
> From: Roman Mashak [mailto:[email protected]]
> Sent: Monday, October 30, 2017 2:47 PM
> To: Jiri Pirko <[email protected]>
> Cc: [email protected]; [email protected]; Nogah Frankel 
> <[email protected]>;
> [email protected]; [email protected]; mlxsw <[email protected]>;
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; Saeed Mahameed
> <[email protected]>; Matan Barak <[email protected]>; Leon Romanovsky
> <[email protected]>; Ido Schimmel <[email protected]>;
> [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; Or Gerlitz <[email protected]>;
> [email protected]
> Subject: Re: [patch net-next RFC 1/9] net_sch: red: Add offload ability to 
> RED qdisc
> 
> Jiri Pirko <[email protected]> writes:
> 
> 
> [...]
> 
> > +static void red_unoffload(struct Qdisc *sch)
> > +{
> > +   struct net_device *dev = qdisc_dev(sch);
> > +   struct tc_red_qopt_offload opt = {
> > +           .handle = sch->handle,
> > +           .command = TC_RED_DESTROY,
> > +           .parent = sch->parent,
> > +   };
> > +
> > +   if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc)
> > +           return;
> > +
> > +   dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_QDISC_RED,  &opt);
> > +}
> > +
> 
> > @@ -162,6 +179,28 @@ static const struct nla_policy red_policy[TCA_RED_MAX 
> > + 1] = {
> >     [TCA_RED_MAX_P] = { .type = NLA_U32 },
> >  };
> >
> > +static int red_offload(struct Qdisc *sch)
> > +{
> > +   struct red_sched_data *q = qdisc_priv(sch);
> > +   struct net_device *dev = qdisc_dev(sch);
> > +   struct tc_red_qopt_offload opt = {
> > +           .handle = sch->handle,
> > +           .command = TC_RED_REPLACE,
> > +           .parent = sch->parent,
> > +           .set = {
> > +                   .min = q->parms.qth_min >> q->parms.Wlog,
> > +                   .max = q->parms.qth_max >> q->parms.Wlog,
> > +                   .probability = q->parms.max_P,
> > +                   .is_ecn = red_use_ecn(q),
> > +           },
> > +   };
> > +
> > +   if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc)
> > +           return -EOPNOTSUPP;
> > +
> > +   return dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_QDISC_RED, &opt);
> > +}
> > +
> 
> [...]
> 
> Can't red_unoffload() and red_offload() be unified in a single API? For
> example, red_offload(struct Qdisc *sch, bool enable) ?

I will unify them.
Thanks.

Reply via email to